<?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>210041</bug_id>
          
          <creation_ts>2020-04-05 17:04:24 -0700</creation_ts>
          <short_desc>Should find touch-action elements inside non-composited iframes</short_desc>
          <delta_ts>2020-04-09 16:27:39 -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>UI Events</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=200204</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=200205</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210216</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210311</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>209888</blocked>
    
    <blocked>210278</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637992</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-05 17:04:24 -0700</bug_when>
    <thetext>Consider the following test:

[[
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;body&gt;
&lt;iframe srcdoc=&quot;&lt;input style=&apos;touch-action: none; width: 256px; height: 100px; border:1px solid black&apos;&gt;&lt;/div&gt;&quot;&gt;&lt;/iframe&gt;
&lt;/body&gt;
&lt;/html&gt;
]]

Then there will be **no** touch action region for the &lt;input&gt; because its containing &lt;iframe&gt; is **not** composited. But we should have found the &lt;input&gt;!

Compare to:

[[
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;body&gt;
&lt;iframe srcdoc=&quot;&lt;input style=&apos;touch-action:none; width: 256px; height: 300px; border:1px solid black&apos;&gt;&lt;/div&gt;&quot;&gt;&lt;/iframe&gt;
&lt;/body&gt;
&lt;/html&gt;
]]

Then there **will be** a touch action region for the &lt;input&gt; because its containing &lt;iframe&gt; **is** composited.

**Keep in mind that touch-action regions should also be updated an element&apos;s touch action dynamically changes inside a non-composited  &lt;iframe&gt;***

Also, keep in mind the fix for this bug should **not** be specific to just frame boundaries, but any non-composited things. Though feel free to keep this bug focused on frames and file more bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637993</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-05 17:04:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/61323558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637995</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-05 17:15:06 -0700</bug_when>
    <thetext>Hack patch:

[[
diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp
index 3a038ce8a3a..0a757275505 100644
--- a/Source/WebCore/rendering/RenderLayerCompositor.cpp
+++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp
@@ -738,7 +738,20 @@ bool RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType update
         return false;
     }
 
-    if (!m_compositing &amp;&amp; (m_forceCompositingMode || (isMainFrameCompositor() &amp;&amp; page().pageOverlayController().overlayCount())))
+    auto needsCompositingToUpdateEventRegion = [&amp;] {
+        auto&amp; document = m_renderView.document();
+#if PLATFORM(IOS_FAMILY)
+        if (document.mayHaveElementsWithNonAutoTouchAction())
+            return true;
+#endif
+#if ENABLE(EDITABLE_REGION)
+        if (document.mayHaveEditableElements())
+            return true;
+#endif
+        return false;
+    };
+
+    if (!m_compositing &amp;&amp; (m_forceCompositingMode || needsCompositingToUpdateEventRegion() || (isMainFrameCompositor() &amp;&amp; page().pageOverlayController().overlayCount())))
         enableCompositingMode(true);
 
     bool isPageScroll = !updateRoot || updateRoot == &amp;rootRenderLayer();
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638005</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-05 18:13:54 -0700</bug_when>
    <thetext>The event-region paint doesn&apos;t propagate into the iframe.

Also, we don&apos;t have an invalidation code path for touch-action changes inside non-composited (potentially nested) iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638664</commentid>
    <comment_count>4</comment_count>
      <attachid>395713</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-07 11:21:53 -0700</bug_when>
    <thetext>Created attachment 395713
First attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638667</commentid>
    <comment_count>5</comment_count>
      <attachid>395713</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-07 11:25:54 -0700</bug_when>
    <thetext>Comment on attachment 395713
First attempt

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

&gt; Source/WebCore/rendering/RenderWidget.cpp:300
&gt; +    // FIXME: Ensure layout performed if need to update event region.
&gt; +    if (paintInfo.phase == PaintPhase::EventRegion &amp;&amp; is&lt;FrameView&gt;(m_widget) &amp;&amp; downcast&lt;FrameView&gt;(*m_widget).needsLayout())

I got to get rid of this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638668</commentid>
    <comment_count>6</comment_count>
      <attachid>395713</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-07 11:31:35 -0700</bug_when>
    <thetext>Comment on attachment 395713
First attempt

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

&gt;&gt; Source/WebCore/rendering/RenderWidget.cpp:300
&gt;&gt; +    if (paintInfo.phase == PaintPhase::EventRegion &amp;&amp; is&lt;FrameView&gt;(m_widget) &amp;&amp; downcast&lt;FrameView&gt;(*m_widget).needsLayout())
&gt; 
&gt; I got to get rid of this...

Yeah, this is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638669</commentid>
    <comment_count>7</comment_count>
      <attachid>395714</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-07 11:32:32 -0700</bug_when>
    <thetext>Created attachment 395714
First attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638796</commentid>
    <comment_count>8</comment_count>
      <attachid>395714</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-07 14:18:42 -0700</bug_when>
    <thetext>Comment on attachment 395714
First attempt

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

&gt; Source/WebCore/page/FrameView.cpp:1262
&gt; +    auto&amp; document = *frame().document();

RefPtr&lt;&gt;? Who knows what cache-&gt;postNotification() does.

&gt; Source/WebCore/page/FrameView.cpp:1263
&gt; +    if (!renderView()-&gt;isComposited()) {

This renderView()-&gt;isComposited() implies knowledge about how event regions are generated, which isn&apos;t great. It would be better to delegate this to the compositor() perhaps. It also warrants a comment.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1258
&gt; +        bool needsTraverseDescendants = hasVisualOverflow() || containsFloats() || !paintInfo.eventRegionContext-&gt;contains(enclosingIntRect(borderRect)) || view().needsEventRegionUpdateForNonCompositedDescendant();

That&apos;s unfortunate and awkward. Not sure of a better way.

&gt; Source/WebCore/rendering/RenderLayer.cpp:6447
&gt; +void RenderLayer::eventRegionsChanged()

Why do we need both this and invalidateEventRegion()?

&gt; Source/WebCore/rendering/RenderLayer.cpp:6452
&gt; +        compositingLayer-&gt;renderer().view().setNeedsEventRegionUpdateForNonCompositedDescendant();

This part still bothers me.

&gt; Source/WebCore/rendering/RenderLayer.cpp:6453
&gt; +        compositingLayer-&gt;renderer().view().setNeedsRepaintAfterCompositingLayerUpdate();

I don&apos;t know why we&apos;d need this.

&gt; Source/WebCore/rendering/RenderLayer.cpp:-7006
&gt; -    auto maintainsEventRegion = [&amp;] {
&gt; -        // UI side scroll overlap testing.
&gt; -        if (!compositingLayer-&gt;isRenderViewLayer())
&gt; -            return true;
&gt; -        // UI side touch-action resolution.
&gt; -        if (renderer().document().mayHaveElementsWithNonAutoTouchAction())
&gt; -            return true;
&gt; -        if (renderer().document().mayHaveEditableElements())
&gt; -            return true;
&gt; -        return false;
&gt; -    };

Why remove this logic?

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1621
&gt; +    bool needsEventRegionUpdateForNonCompositedDescendant = renderer().view().needsEventRegionUpdateForNonCompositedDescendant();

The &quot;descendant&quot; here needs to be explicit that it&apos;s about Frames.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:862
&gt; +        m_renderView.repaintRootContents();

Just to trigger event region generation? That&apos;s a huge perf hit.

&gt; Source/WebCore/rendering/RenderWidget.cpp:252
&gt; +        TransformationMatrix transform;

AffineTransform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638801</commentid>
    <comment_count>9</comment_count>
      <attachid>395714</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-07 14:29:36 -0700</bug_when>
    <thetext>Comment on attachment 395714
First attempt

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

Thank for the comments!

&gt;&gt; Source/WebCore/page/FrameView.cpp:1262
&gt;&gt; +    auto&amp; document = *frame().document();
&gt; 
&gt; RefPtr&lt;&gt;? Who knows what cache-&gt;postNotification() does.

OK.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:6447
&gt;&gt; +void RenderLayer::eventRegionsChanged()
&gt; 
&gt; Why do we need both this and invalidateEventRegion()?

Yeah, I&apos;m going to push all this into invalidateEventRegion() conditioned on a new enumeration argument due to needing setNeedsEventRegionUpdateForNonCompositedDescendant() and setNeedsRepaintAfterCompositingLayerUpdate().

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:6452
&gt;&gt; +        compositingLayer-&gt;renderer().view().setNeedsEventRegionUpdateForNonCompositedDescendant();
&gt; 
&gt; This part still bothers me.

Need more info on how to proceed here.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:6453
&gt;&gt; +        compositingLayer-&gt;renderer().view().setNeedsRepaintAfterCompositingLayerUpdate();
&gt; 
&gt; I don&apos;t know why we&apos;d need this.

Without this then debug overlays are not painted until something triggers a paint.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:-7006
&gt;&gt; -    };
&gt; 
&gt; Why remove this logic?

May have jumped the gun.... will revert and patch up to consult renderer().view().needsEventRegionUpdateForNonCompositedDescendant()()

&gt;&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1621
&gt;&gt; +    bool needsEventRegionUpdateForNonCompositedDescendant = renderer().view().needsEventRegionUpdateForNonCompositedDescendant();
&gt; 
&gt; The &quot;descendant&quot; here needs to be explicit that it&apos;s about Frames.

okiedokkie

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:862
&gt;&gt; +        m_renderView.repaintRootContents();
&gt; 
&gt; Just to trigger event region generation? That&apos;s a huge perf hit.

No, not for event generation. Just to paint the debug paint overlays.

&gt;&gt; Source/WebCore/rendering/RenderWidget.cpp:252
&gt;&gt; +        TransformationMatrix transform;
&gt; 
&gt; AffineTransform

yep, ahead of you here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638808</commentid>
    <comment_count>10</comment_count>
      <attachid>395714</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-07 14:37:19 -0700</bug_when>
    <thetext>Comment on attachment 395714
First attempt

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:6453
&gt;&gt;&gt; +        compositingLayer-&gt;renderer().view().setNeedsRepaintAfterCompositingLayerUpdate();
&gt;&gt; 
&gt;&gt; I don&apos;t know why we&apos;d need this.
&gt; 
&gt; Without this then debug overlays are not painted until something triggers a paint.

Could condition this on the debug overlay setting being enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638947</commentid>
    <comment_count>11</comment_count>
      <attachid>395772</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-07 23:26:17 -0700</bug_when>
    <thetext>Created attachment 395772
Second attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638953</commentid>
    <comment_count>12</comment_count>
      <attachid>395774</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 00:07:18 -0700</bug_when>
    <thetext>Created attachment 395774
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638957</commentid>
    <comment_count>13</comment_count>
      <attachid>395776</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 00:24:28 -0700</bug_when>
    <thetext>Created attachment 395776
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638959</commentid>
    <comment_count>14</comment_count>
      <attachid>395778</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 00:31:34 -0700</bug_when>
    <thetext>Created attachment 395778
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638961</commentid>
    <comment_count>15</comment_count>
      <attachid>395779</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 00:45:17 -0700</bug_when>
    <thetext>Created attachment 395779
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638967</commentid>
    <comment_count>16</comment_count>
      <attachid>395781</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 01:14:24 -0700</bug_when>
    <thetext>Created attachment 395781
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639075</commentid>
    <comment_count>17</comment_count>
      <attachid>395815</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 08:43:35 -0700</bug_when>
    <thetext>Created attachment 395815
Patch and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639126</commentid>
    <comment_count>18</comment_count>
      <attachid>395815</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-08 10:18:13 -0700</bug_when>
    <thetext>Comment on attachment 395815
Patch and tests

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

&gt; Source/WebCore/dom/Document.cpp:4237
&gt; +void Document::invalidateEventRegionsForIFrame(HTMLFrameOwnerElement&amp; element)

This might be a Frame too so call it invalidateEventRegionsForFrame()

&gt; Source/WebCore/dom/Document.cpp:4247
&gt; +    if (auto* ownerElement = this-&gt;ownerElement())
&gt; +        ownerElement-&gt;document().invalidateEventRegionsForIFrame(*ownerElement);

You should always find a layer above (the RenderVIew always has one) so I don&apos;t think you need this clause, and it takes brainspace.

&gt; Source/WebCore/page/Frame.cpp:309
&gt; +#if PLATFORM(IOS)

We don&apos;t like platform #ifdefs.

Also async overflow scrolling on macOS uses event regions so this is wrong.

&gt; Source/WebCore/page/Frame.cpp:314
&gt; +    if (!m_doc-&gt;renderView()-&gt;compositor().viewNeedsToInvalidateEventRegionOfEnclosingCompositingLayerForRepaint())

Should probably null-check m_doc-&gt;renderView().

&gt; Source/WebCore/page/Frame.cpp:317
&gt; +    if (m_ownerElement)
&gt; +        m_ownerElement-&gt;document().invalidateEventRegionsForIFrame(*m_ownerElement);

Actually why doesn&apos;t compositor() just do this part.

&gt; Source/WebCore/page/FrameView.cpp:1265
&gt; +    frame().invalidateContentEventRegionsIfNeeded();

Please move this down next to invalidateRenderingDependentRegions() because they are related.

&gt; Source/WebCore/rendering/RenderLayer.cpp:7011
&gt;  #if PLATFORM(IOS_FAMILY)

Possible a wrong #ifdef.

&gt; Source/WebCore/rendering/RenderLayer.cpp:7032
&gt; +        compositingLayer-&gt;renderer().view().setNeedsEventRegionUpdateForNonCompositedIFrame();

compositingLayer-&gt;renderer().view() is always just renderer().view(); fetch it once.

&gt; Source/WebCore/rendering/RenderLayer.cpp:7035
&gt; +        compositingLayer-&gt;compositor().scheduleCompositingLayerUpdate();

This can be view-&gt;compositior()

&gt; Source/WebCore/rendering/RenderLayer.h:928
&gt; +    bool invalidateEventRegion(EventRegionInvalidationReason);

What does the return value mean? Add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639158</commentid>
    <comment_count>19</comment_count>
      <attachid>395815</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 11:00:28 -0700</bug_when>
    <thetext>Comment on attachment 395815
Patch and tests

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

&gt;&gt; Source/WebCore/dom/Document.cpp:4247
&gt;&gt; +        ownerElement-&gt;document().invalidateEventRegionsForIFrame(*ownerElement);
&gt; 
&gt; You should always find a layer above (the RenderVIew always has one) so I don&apos;t think you need this clause, and it takes brainspace.

I don&apos;t understand. No need to recurse on ownerElement? If so, then there is a bug in enclosingCompositingLayerForRepaint() because it can return null for a the middle iframe in pointerevents/ios/touch-action-none-inside-nested-iframe.html. If not, then you mean no need for owner element null check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639228</commentid>
    <comment_count>20</comment_count>
      <attachid>395815</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 12:28:12 -0700</bug_when>
    <thetext>Comment on attachment 395815
Patch and tests

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

&gt;&gt; Source/WebCore/dom/Document.cpp:4237
&gt;&gt; +void Document::invalidateEventRegionsForIFrame(HTMLFrameOwnerElement&amp; element)
&gt; 
&gt; This might be a Frame too so call it invalidateEventRegionsForFrame()

yep

&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:4247
&gt;&gt;&gt; +        ownerElement-&gt;document().invalidateEventRegionsForIFrame(*ownerElement);
&gt;&gt; 
&gt;&gt; You should always find a layer above (the RenderVIew always has one) so I don&apos;t think you need this clause, and it takes brainspace.
&gt; 
&gt; I don&apos;t understand. No need to recurse on ownerElement? If so, then there is a bug in enclosingCompositingLayerForRepaint() because it can return null for a the middle iframe in pointerevents/ios/touch-action-none-inside-nested-iframe.html. If not, then you mean no need for owner element null check?

Clarified with Simon on stash. Code correct as-is.

&gt;&gt; Source/WebCore/page/Frame.cpp:309
&gt;&gt; +#if PLATFORM(IOS)
&gt; 
&gt; We don&apos;t like platform #ifdefs.
&gt; 
&gt; Also async overflow scrolling on macOS uses event regions so this is wrong.

OK, removed #ifdef. Will need to audit RenderLayer::invalidateEventRegion() though....

&gt;&gt; Source/WebCore/page/Frame.cpp:314
&gt;&gt; +    if (!m_doc-&gt;renderView()-&gt;compositor().viewNeedsToInvalidateEventRegionOfEnclosingCompositingLayerForRepaint())
&gt; 
&gt; Should probably null-check m_doc-&gt;renderView().

yep

&gt;&gt; Source/WebCore/page/Frame.cpp:317
&gt;&gt; +        m_ownerElement-&gt;document().invalidateEventRegionsForIFrame(*m_ownerElement);
&gt; 
&gt; Actually why doesn&apos;t compositor() just do this part.

I hope you don&apos;t mind that I defer this for now.

&gt;&gt; Source/WebCore/page/FrameView.cpp:1265
&gt;&gt; +    frame().invalidateContentEventRegionsIfNeeded();
&gt; 
&gt; Please move this down next to invalidateRenderingDependentRegions() because they are related.

OK

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:7011
&gt;&gt;  #if PLATFORM(IOS_FAMILY)
&gt; 
&gt; Possible a wrong #ifdef.

I hope you don&apos;t mind I do this in a follow up because it likely requires an audit of this code. I might post an experiment patch shortly.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:7032
&gt;&gt; +        compositingLayer-&gt;renderer().view().setNeedsEventRegionUpdateForNonCompositedIFrame();
&gt; 
&gt; compositingLayer-&gt;renderer().view() is always just renderer().view(); fetch it once.

OK

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:7035
&gt;&gt; +        compositingLayer-&gt;compositor().scheduleCompositingLayerUpdate();
&gt; 
&gt; This can be view-&gt;compositior()

OK

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:928
&gt;&gt; +    bool invalidateEventRegion(EventRegionInvalidationReason);
&gt; 
&gt; What does the return value mean? Add a comment.

Comment added:

// Invalidation can fail if there is no enclosing compositing layer (e.g. nested iframe)
// or the layer does not maintain an event region.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639229</commentid>
    <comment_count>21</comment_count>
      <attachid>395854</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 12:30:05 -0700</bug_when>
    <thetext>Created attachment 395854
To land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639237</commentid>
    <comment_count>22</comment_count>
      <attachid>395855</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 12:47:56 -0700</bug_when>
    <thetext>Created attachment 395855
[Alt] To Land w/fix guards in RenderLayer::invalidateEventRegion()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639278</commentid>
    <comment_count>23</comment_count>
      <attachid>395866</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 13:58:17 -0700</bug_when>
    <thetext>Created attachment 395866
[Alt] Baseline: Just change RenderLayer::invalidateEventRegion()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639316</commentid>
    <comment_count>24</comment_count>
      <attachid>395854</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 15:26:16 -0700</bug_when>
    <thetext>Comment on attachment 395854
To land

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

&gt; Source/WebCore/rendering/RenderWidget.cpp:295
&gt; +    if (paintInfo.phase != PaintPhase::Foreground &amp;&amp; paintInfo.phase != PaintPhase::EventRegion)

This is wrong. Need to ensure view() doesn&apos;t need layout if phase is EventRegion. Otherwise, will hit assertion in FrameView::paintContents(). Note if view().needsEventRegionUpdateForNonCompositedFrame() is set and painting EventRegion then we are guaranteed to have done a layout of this frame (because that bit was set from FrameView::didLayout()).

Changing code to:

[[
if (paintInfo.phase != PaintPhase::Foreground &amp;&amp; (paintInfo.phase != PaintPhase::EventRegion || view().needsLayout()))
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639323</commentid>
    <comment_count>25</comment_count>
      <attachid>395877</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 15:37:45 -0700</bug_when>
    <thetext>Created attachment 395877
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639324</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-08 15:38:41 -0700</bug_when>
    <thetext>Committed r259761: &lt;https://trac.webkit.org/changeset/259761&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395713</attachid>
            <date>2020-04-07 11:21:53 -0700</date>
            <delta_ts>2020-04-07 11:32:32 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>FirstAttempt.patch</filename>
            <type>text/plain</type>
            <size>29955</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBiNWMwMDNmYTQwOWVhNDE1NDdjNjk4YjkxZGRmOTA5OTMxMzUwZWUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDcgQXByIDIwMjAgMTE6MTY6MDUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBGaXJzdCBw
YXNzIGF0IGV2ZW50IHJlZ2lvbiB1cGRhdGUgZm9yIG5vbi1jb21wb3NpdGVkCiBkZXNjZW5kYW50
cwoKLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAgICAgICAgICAgfCAg
OCArKysrCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAgICAgICAgICAgICAgICAgfCAg
MiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgfCAgNiAr
KysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCAgICAgICAgICAgICAgICAgICB8ICAyICsK
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICB8IDIwICsrKysr
Ky0tLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggICAgICAgICAgICAgICB8ICAz
ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCAgICAgICAgfCAgNiAr
LS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICB8ICA1ICsr
LQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCAgICAgICAgIHwgIDIgKy0K
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oICAgICAgICAgICB8ICAyICstCiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwICAgICAgICAgICAgfCAgMiArLQogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggICAgICAgICAgICAgIHwgIDMgKy0KIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gICAgICB8ICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tICAgICAgfCAgMiArLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgICAgICB8IDM4ICsrKysrKysrKy0tLS0tLS0t
LS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oICAgICAgICB8ICA0ICst
CiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCAgfCAgNiArKy0K
IC4uLi9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCAgICAgICB8ICA1ICsrKwog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAgIHwgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaCAgICB8ICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oICAgICAgICAgfCAgOCArKysrCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAyMiArKysrKysrKysr
LQogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgIHwgIDIgKy0K
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCB8ICAyICstCiAy
NSBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTI2ZDBkZmMzZGEuLjAxNDFlYjZhMWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMzQsNiArNDIzNCwxNCBAQCB2b2lkIERvY3VtZW50Ojpl
bGVtZW50SW5BY3RpdmVDaGFpbkRpZERldGFjaChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBt
X2FjdGl2ZUVsZW1lbnQgPSBtX2FjdGl2ZUVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKIH0KIAor
dm9pZCBEb2N1bWVudDo6ZXZlbnRSZWdpb25zQ2hhbmdlZEZvcklGcmFtZShIVE1MRnJhbWVPd25l
ckVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5y
ZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiBsYXllciA9IHJlbmRlcmVyLT5lbmNsb3Np
bmdMYXllcigpKQorICAgICAgICAgICAgbGF5ZXItPmV2ZW50UmVnaW9uc0NoYW5nZWQoKTsKKyAg
ICB9Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdp
b25zKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA2ZjhlYzRjOGE0ZS4uYjE1NmFiMDA4ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xMTQxLDYgKzExNDEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CiAKKyAgICB2b2lkIGV2ZW50
UmVnaW9uc0NoYW5nZWRGb3JJRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50Jik7CisKICAgICB2
b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIHN2Z0V4dGVuc2lvbnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggNTE5ZjNlZmJmNzMuLjYxZWNjMTk3MzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtMzAzLDYgKzMwMywxMiBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChSZWZQdHI8
RG9jdW1lbnQ+JiYgbmV3RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVudElzQmVpbmdSZXBsYWNlZCA9
IGZhbHNlOwogfQogCit2b2lkIEZyYW1lOjpjb250ZW50RXZlbnRSZWdpb25zQ2hhbmdlZCgpCit7
CisgICAgaWYgKG1fb3duZXJFbGVtZW50KQorICAgICAgICBtX293bmVyRWxlbWVudC0+ZG9jdW1l
bnQoKS5ldmVudFJlZ2lvbnNDaGFuZ2VkRm9ySUZyYW1lKCptX293bmVyRWxlbWVudCk7Cit9CisK
ICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogdm9pZCBGcmFtZTo6b3JpZW50YXRpb25D
aGFuZ2VkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA2ZmRmYTY4YmY0Yy4uZWQwZWU2ZTU4YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKQEAgLTI5OSw2ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQcmV3YXJtTG9jYWxTdG9yYWdl
KCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbnRlbnRFdmVudFJlZ2lvbnNDaGFuZ2VkKCk7CisKIC8v
ID09PT09PT09CiAKICAgICB2b2lkIHNlbGZPbmx5UmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKaW5kZXggNDUwMjM5Mzg3NTYuLjdmZDMwYjMzZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xMjU5LDE0ICsxMjU5LDIwIEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlv
dXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRSb290KQogICAgIGF1dG8qIGxheW91dFJv
b3RFbmNsb3NpbmdMYXllciA9IGxheW91dFJvb3QtPmVuY2xvc2luZ0xheWVyKCk7CiAgICAgbGF5
b3V0Um9vdEVuY2xvc2luZ0xheWVyLT51cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyTGF5b3V0KCFp
czxSZW5kZXJWaWV3PigqbGF5b3V0Um9vdCksIGxheW91dENvbnRleHQoKS5uZWVkc0Z1bGxSZXBh
aW50KCkpOwogCisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUoKS5kb2N1bWVudCgpOworICAg
IGlmICghcmVuZGVyVmlldygpLT5pc0NvbXBvc2l0ZWQoKSkgeworICAgICAgICBpZiAoZG9jdW1l
bnQubWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpIHx8IGRvY3VtZW50Lm1h
eUhhdmVFZGl0YWJsZUVsZW1lbnRzKCkpCisgICAgICAgICAgICBmcmFtZSgpLmNvbnRlbnRFdmVu
dFJlZ2lvbnNDaGFuZ2VkKCk7CisgICAgfQorCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNB
ZnRlckxheW91dCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwg
UExBVEZPUk0oR1RLKQotICAgIGlmIChhdXRvKiBjYWNoZSA9IGZyYW1lKCkuZG9jdW1lbnQoKS0+
ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgaWYgKGF1dG8qIGNhY2hlID0gZG9jdW1lbnQu
ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9u
KGxheW91dFJvb3QuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUpOwogI2Vu
ZGlmCiAKLSAgICBmcmFtZSgpLmRvY3VtZW50KCktPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRl
bnRSZWdpb25zKCk7CisgICAgZG9jdW1lbnQuaW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJl
Z2lvbnMoKTsKIAogICAgIHVwZGF0ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKQEAg
LTEyNzQsMTAgKzEyODAsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJl
bmRlckVsZW1lbnQ+IGxheW91dFJvb3QpCiAKICAgICBoYW5kbGVEZWZlcnJlZFNjcm9sbGJhcnNV
cGRhdGVBZnRlckRpcmVjdGlvbkNoYW5nZSgpOwogCi0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQo
KS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQor
ICAgIGlmIChkb2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6Ok9WRVJGTE9XQ0hBTkdF
RF9MSVNURU5FUikpCiAgICAgICAgIHVwZGF0ZU92ZXJmbG93U3RhdHVzKGxheW91dFdpZHRoKCkg
PCBjb250ZW50c1dpZHRoKCksIGxheW91dEhlaWdodCgpIDwgY29udGVudHNIZWlnaHQoKSk7CiAK
LSAgICBmcmFtZSgpLmRvY3VtZW50KCktPm1hcmtlcnMoKS5pbnZhbGlkYXRlUmVjdHNGb3JBbGxN
YXJrZXJzKCk7CisgICAgZG9jdW1lbnQubWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1h
cmtlcnMoKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0
ZXJDb250ZW50U2l6ZUNoYW5nZSgpCkBAIC00MTA3LDcgKzQxMTMsNyBAQCB2b2lkIEZyYW1lVmll
dzo6ZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UgogICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgRnJhbWVW
aWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogI2lm
bmRlZiBOREVCVUcKICAgICBib29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDE3MCw4ICs0
MTc2LDggQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QKICAgICB3aGlsZSAoaXM8UmVuZGVySW5s
aW5lPihyZW5kZXJlcikgJiYgIWRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKS5maXJz
dExpbmVCb3goKSkKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAKLSAg
ICByb290TGF5ZXItPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3Bh
aW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7IH0sIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPT0g
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA6IFJlbmRlckxheWVyOjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7Ci0gICAgaWYgKHJvb3RMYXll
ci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkpCisgICAgcm9vdExheWVyLT5wYWlu
dChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNpemUoKSwgbV9wYWludEJlaGF2aW9yLCByZW5k
ZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6
QWNjZXNzaWJsZU9yaWdpbk9ubHksIGV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgaWYgKHJvb3RM
YXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29u
dGV4dCkKICAgICAgICAgcm9vdExheWVyLT5wYWludE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQs
IGRpcnR5UmVjdCwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlcik7CiAKICAgICBkaWRQYWludENv
bnRlbnRzKGNvbnRleHQsIGRpcnR5UmVjdCwgcGFpbnRpbmdTdGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAppbmRleCBjMjJlNGU1OGMxNC4uYzIwNDlmYjQwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaApAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFY
T2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0Owog
Y2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1l
bnQ7CkBAIC0zNDcsNyArMzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRPYmpl
Y3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1iZWRk
ZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWlu
dENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9y
aWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgc3RydWN0
IFBhaW50aW5nU3RhdGUgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRC
ZWhhdmlvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMmZkMTVm
N2IzMDEuLjQ2OTY1MTFkNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cApAQCAtMTIzNiwxNCArMTIzNiwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xs
SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgY29udGV4dC5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBTY3JvbGxWaWV3
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRS
ZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAgICAgaWYgKHBsYXRmb3JtV2lk
Z2V0KCkpIHsKICAgICAgICAgV2lkZ2V0OjpwYWludChjb250ZXh0LCByZWN0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAmJiAh
Y29udGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSkKKyAgICBpZiAoY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkgJiYgIWNvbnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9u
KCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbm90aWZ5
UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpOwpAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QsIFNlY3VyaXR5T3IKICAgICAgICAgICAgIGNvbnRleHQuY2xpcCh2aXNpYmxlQ29u
dGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSk7CisgICAgICAgIHBhaW50Q29udGVudHMoY29udGV4dCwgZG9jdW1l
bnREaXJ0eVJlY3QsIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIGV2ZW50UmVnaW9uQ29udGV4
dCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCmluZGV4IDRjYzJiYjRjMGJjLi5hZDhiNDE4YWNjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNTcsNiArNTcsNyBAQCBPQkpDX0NMQVNTIFdB
S1ZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0
OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIExlZ2FjeVRpbGVDYWNoZTsKIGNsYXNzIFNjcm9s
bGJhcjsKQEAgLTM1MCw3ICszNTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBh
cyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikg
ZmluYWw7CiAgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIg
Y2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBn
ZXQgc2hvd24gYW5kIGhpZGRlbi4KQEAgLTM4OCw3ICszODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
U2Nyb2xsVmlldygpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xl
KGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
dmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IDEyOTNlMmQ3OTMxLi5hNmI1ODA3Mzg5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xNDAsNyArMTQwLDcg
QEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRlVGh1
bWIoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5KQordm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGlu
Z0NvbnRyb2xUaW50cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAg
ICAgICBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGNi
OTUwZTIzZjdhLi5lZDM4OTZjOWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJv
cG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJl
c3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9CiAKLSAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
bikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBu
dWxscHRyKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5jcHAKaW5kZXggZTlmNWQ4MWUwM2EuLmE3ZmUzODBmM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdpZGdldDo6
c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVu
dFJlZ2lvbkNvbnRleHQqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5oCmluZGV4IDFjZjkzMWMxMjIzLi40ZjMwMmFiYmYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDdXJzb3I7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNs
YXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwpAQCAtMTA5LDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJl
Z2lvbkNvbnRleHQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZhbGlk
YXRlUmVjdChib3VuZHNSZWN0KCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0
KGNvbnN0IEludFJlY3QmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XaWRnZXRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0
SU9TLm1tCmluZGV4IDNlMDljMTFiNDYzLi40ZTA3YmQ3NTE2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgTlNWaWV3KiBXaWRn
ZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZvaWQgV2lk
Z2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBw
LCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lv
bkNvbnRleHQqKQogewogICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggMjY2YjA0
MmUwNmYuLjMwNDU4ODhhMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KQEAgLTE4Niw3ICsxODYsNyBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0ZXJWaWV3KCkg
Y29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkK
K3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAg
aWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBlZWVlMjNlMTk5OS4uZTBkYWQ3MjVhNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTI1NSw3ICsx
MjU1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgfQogCiAgICAgICAgIC8v
IE5vIG5lZWQgdG8gY2hlY2sgZGVzY2VuZGFudHMgaWYgd2UgZG9uJ3QgaGF2ZSBvdmVyZmxvdyBh
bmQgdGhlIGFyZWEgaXMgYWxyZWFkeSBjb3ZlcmVkLgotICAgICAgICBib29sIG5lZWRzVHJhdmVy
c2VEZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8
fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVj
dChib3JkZXJSZWN0KSk7CisgICAgICAgIGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0g
aGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBjb250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZl
bnRSZWdpb25Db250ZXh0LT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8
fCB2aWV3KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWREZXNjZW5kYW50
KCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbmVlZHNUcmF2ZXJzZURlc2Nl
bmRhbnRzID0gbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzIHx8IGRvY3VtZW50KCkubWF5SGF2ZUVs
ZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpIHx8IGRvY3VtZW50KCkubWF5SGF2ZUVkaXRh
YmxlRWxlbWVudHMoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggZTI2NjlkZTE0ZTEuLmE5N2QyN2ExYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQxOTAsMTEgKzQxOTAsMTUgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFy
aXR5IGdyYW51bGFyaXQKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbChkaXJlY3Rp
b24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgT3B0aW9u
U2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
IHBhaW50UG9saWN5KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBz
dWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJl
bmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBw
YWludEZsYWdzLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHBhaW50UG9saWN5LCBFdmVudFJl
Z2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uQ29udGV4dCkKIHsKICAgICBPdmVybGFwVGVzdFJlcXVl
c3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKIAogICAgIExheWVyUGFpbnRpbmdJbmZvIHBhaW50
aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3QpLCBwYWludEJlaGF2aW9y
LCBzdWJwaXhlbE9mZnNldCwgc3VidHJlZVBhaW50Um9vdCwgJm92ZXJsYXBUZXN0UmVxdWVzdHMs
IHBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmln
aW5Pbmx5KTsKKyAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgICAgIHBhaW50aW5n
SW5mby5ldmVudFJlZ2lvbkNvbnRleHQgPSBldmVudFJlZ2lvbkNvbnRleHQ7CisgICAgICAgIHBh
aW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyQ29sbGVjdGluZ0V2ZW50UmVnaW9u
KTsKKyAgICB9CiAgICAgcGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50Rmxh
Z3MpOwogCiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBvdmVybGFwVGVzdFJlcXVlc3RzLmtleXMo
KSkKQEAgLTY0NDAsNiArNjQ0NCwxNiBAQCBib29sIFJlbmRlckxheWVyOjpsaXN0QmFja2dyb3Vu
ZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheWVyTGlzdCYgbGlzdCwgYwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAordm9pZCBSZW5kZXJMYXllcjo6ZXZlbnRSZWdpb25zQ2hhbmdlZCgp
Cit7CisgICAgaWYgKGF1dG8qIGNvbXBvc2l0aW5nTGF5ZXIgPSBlbmNsb3NpbmdDb21wb3NpdGlu
Z0xheWVyRm9yUmVwYWludCgpKSB7CisgICAgICAgIGNvbXBvc2l0aW5nTGF5ZXItPnNldE5lZWRz
Q29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7CisgICAgICAgIGNvbXBvc2l0aW5nTGF5
ZXItPmNvbXBvc2l0b3IoKS5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUoKTsKKyAgICAg
ICAgY29tcG9zaXRpbmdMYXllci0+cmVuZGVyZXIoKS52aWV3KCkuc2V0TmVlZHNFdmVudFJlZ2lv
blVwZGF0ZUZvck5vbkNvbXBvc2l0ZWREZXNjZW5kYW50KCk7CisgICAgICAgIGNvbXBvc2l0aW5n
TGF5ZXItPnJlbmRlcmVyKCkudmlldygpLnNldE5lZWRzUmVwYWludEFmdGVyQ29tcG9zaXRpbmdM
YXllclVwZGF0ZSgpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJMYXllcjo6cmVwYWludEluY2x1
ZGluZ0Rlc2NlbmRhbnRzKCkKIHsKICAgICByZW5kZXJlcigpLnJlcGFpbnQoKTsKQEAgLTY5ODks
MjYgKzcwMDMsOCBAQCBib29sIFJlbmRlckxheWVyOjppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1Bh
cmVudEZyYW1lcygpIGNvbnN0CiB2b2lkIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdp
b24oKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYXV0byogY29tcG9zaXRpbmdM
YXllciA9IGVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCk7Ci0gICAgaWYgKCFj
b21wb3NpdGluZ0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG1haW50YWluc0V2
ZW50UmVnaW9uID0gWyZdIHsKLSAgICAgICAgLy8gVUkgc2lkZSBzY3JvbGwgb3ZlcmxhcCB0ZXN0
aW5nLgotICAgICAgICBpZiAoIWNvbXBvc2l0aW5nTGF5ZXItPmlzUmVuZGVyVmlld0xheWVyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgLy8gVUkgc2lkZSB0b3VjaC1hY3Rp
b24gcmVzb2x1dGlvbi4KLSAgICAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5tYXlIYXZl
RWxlbWVudHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5tYXlIYXZlRWRpdGFibGVFbGVt
ZW50cygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9OwotCi0gICAgaWYgKCFtYWludGFpbnNFdmVudFJlZ2lvbigpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjb21wb3NpdGluZ0xheWVyLT5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJh
dGlvblVwZGF0ZSgpOworICAgIGlmIChhdXRvKiBjb21wb3NpdGluZ0xheWVyID0gZW5jbG9zaW5n
Q29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQoKSkKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+
c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDk2ZDM5ZWY0YmZiLi40MmE1
NTJlMGU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTQwMCw2
ICs0MDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcGFpbnRJbmNsdWRpbmdEZXNjZW5kYW50
cygpOwogCisgICAgdm9pZCBldmVudFJlZ2lvbnNDaGFuZ2VkKCk7CisKICAgICAvLyBJbmRpY2F0
ZSB0aGF0IHRoZSBsYXllciBjb250ZW50cyBuZWVkIHRvIGJlIHJlcGFpbnRlZC4gT25seSBoYXMg
YW4gZWZmZWN0CiAgICAgLy8gaWYgbGF5ZXIgY29tcG9zaXRpbmcgaXMgYmVpbmcgdXNlZC4KICAg
ICB2b2lkIHNldEJhY2tpbmdOZWVkc1JlcGFpbnQoR3JhcGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRv
TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpDbGlwVG9MYXllcik7CkBAIC02OTIsNyArNjk0LDcgQEAg
cHVibGljOgogICAgIC8vIGZyb250LiAgVGhlIGhpdFRlc3QgbWV0aG9kIGxvb2tzIGZvciBtb3Vz
ZSBldmVudHMgYnkgd2Fsa2luZwogICAgIC8vIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgcG9p
bnQgZnJvbSBmcm9udCB0byBiYWNrLgogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxP
ZmZzZXQgPSBMYXlvdXRTaXplKCksIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiA9IFBhaW50QmVo
YXZpb3I6Ok5vcm1hbCwKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0g
bnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAg
ICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIE9wdGlvblNldDxQ
YWludExheWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxs
cHRyKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0Jik7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiwgSGl0VGVzdFJlc3VsdCYpOwogICAgIHZvaWQgcGFpbnRPdmVybGF5U2Ny
b2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBP
cHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9
IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBmOTBiYjVhYTljYy4uZWQ3ZWE5ZmMwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNjE4LDEzICsxNjE4
LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJlZ2lvbigpCiAgICAg
aWYgKHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZERlc2NlbmRhbnQg
PSByZW5kZXJlcigpLnZpZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRl
ZERlc2NlbmRhbnQoKTsKICAgICBib29sIGhhc1RvdWNoQWN0aW9uRWxlbWVudHMgPSBmYWxzZTsK
ICAgICBib29sIGhhc0VkaXRhYmxlRWxlbWVudHMgPSBmYWxzZTsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGhhc1RvdWNoQWN0aW9uRWxlbWVudHMgPSByZW5kZXJlcigpLmRvY3VtZW50
KCkubWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpOwogICAgIGhhc0VkaXRh
YmxlRWxlbWVudHMgPSByZW5kZXJlcigpLmRvY3VtZW50KCkubWF5SGF2ZUVkaXRhYmxlRWxlbWVu
dHMoKTsKICNlbmRpZgotICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cyAmJiAhaGFzRWRp
dGFibGVFbGVtZW50cykgeworICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cyAmJiAhaGFz
RWRpdGFibGVFbGVtZW50cyAmJiAhbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0
ZWREZXNjZW5kYW50KSB7CiAgICAgICAgIGlmIChtX293bmluZ0xheWVyLmlzUmVuZGVyVmlld0xh
eWVyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE2NjgsNiArMTY2OSw5IEBAIHZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJlZ2lvbigpCiAKICAgICBpZiAobV9zY3Jv
bGxlZENvbnRlbnRzTGF5ZXIpCiAgICAgICAgIHVwZGF0ZUV2ZW50UmVnaW9uRm9yTGF5ZXIoKm1f
c2Nyb2xsZWRDb250ZW50c0xheWVyKTsKKworICAgIGlmIChuZWVkc0V2ZW50UmVnaW9uVXBkYXRl
Rm9yTm9uQ29tcG9zaXRlZERlc2NlbmRhbnQpCisgICAgICAgIHJlbmRlcmVyKCkudmlldygpLnNl
dE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRGVzY2VuZGFudChmYWxzZSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCAzYTAzOGNlOGEzYS4uMTYyMWQxNTI0N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBA
IC04NTgsNiArODU4LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21w
b3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRlCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZSgmcGFnZSgpKTsKIAorICAgIGlm
IChtX3JlbmRlclZpZXcubmVlZHNSZXBhaW50QWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlKCkp
IHsKKyAgICAgICAgbV9yZW5kZXJWaWV3LnJlcGFpbnRSb290Q29udGVudHMoKTsKKyAgICAgICAg
bV9yZW5kZXJWaWV3LnNldE5lZWRzUmVwYWludEFmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZShm
YWxzZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggMGNhMmRhMDkyNzQuLjVlMzZkMWE3
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpzdHlsZUNoYW5nZWQoKQog
ICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFy
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0
KikKIHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMoKSkgewogICAg
ICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oCmluZGV4IGVhMzU4ZGZkYmJjLi5iYTE3MjM1YjE3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtNjgsNyArNjgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRIb3Zl
cmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXNzZWRQYXJ0
KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKaW5kZXggOTE0ZWJiYzdkZDMuLjEyNTRlN2U2ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgKQEAgLTY4LDYgKzY4LDEyIEBAIHB1YmxpYzoKIAogICAgIEZyYW1lVmll
dyYgZnJhbWVWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVZpZXc7IH0KIAorICAgIGJvb2wg
bmVlZHNSZXBhaW50QWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc1JlcGFpbnRBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGU7IH07CisgICAgdm9pZCBz
ZXROZWVkc1JlcGFpbnRBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUoYm9vbCB2YWx1ZSA9IHRy
dWUpIHsgbV9uZWVkc1JlcGFpbnRBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUgPSB2YWx1ZTsg
fQorCisgICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZERlc2Nl
bmRhbnQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21w
b3NpdGVkRGVzY2VuZGFudDsgfQorICAgIHZvaWQgc2V0TmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZv
ck5vbkNvbXBvc2l0ZWREZXNjZW5kYW50KGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNFdmVu
dFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWREZXNjZW5kYW50ID0gdmFsdWU7IH0KKwogICAg
IE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZp
c2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBhaW50Um9vdENv
bnRlbnRzKCk7CiAgICAgdm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0
JikgY29uc3Q7CkBAIC0yNTUsNiArMjYxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU29m
dHdhcmVGaWx0ZXJzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9uZWVkc1JlcGFpbnRBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZERlc2Nl
bmRhbnQgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxSZW5kZXJFbGVtZW50KiwgVmVjdG9yPENh
Y2hlZEltYWdlKj4+IG1fcmVuZGVyZXJzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uOwogICAgIEhh
c2hTZXQ8UmVuZGVyRWxlbWVudCo+IG1fdmlzaWJsZUluVmlld3BvcnRSZW5kZXJlcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDNmNmYzM2I3NTJiLi5l
MGMyZDJkYTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC0yNDYsOCArMjQ3LDE4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgcGFp
bnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICB9CisKKyAgICBpZiAocGFpbnRJ
bmZvLmV2ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm07CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGVSaWdodChjb250ZW50UGFpbnRP
ZmZzZXQueCgpLCBjb250ZW50UGFpbnRPZmZzZXQueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmV2
ZW50UmVnaW9uQ29udGV4dC0+cHVzaFRyYW5zZm9ybSh0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zv
cm0oKSk7CisgICAgfQorCiAgICAgLy8gRklYTUU6IFJlbW92ZSByZXBhaW50cmVjdCBlbmNsb3Np
bmcvaW50ZWdyYWwgc25hcHBpbmcgd2hlbiBSZW5kZXJXaWRnZXQgYmVjb21lcyBkZXZpY2UgcGl4
ZWwgc25hcHBlZC4KLSAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25h
cHBlZEludFJlY3QocGFpbnRSZWN0KSwgcGFpbnRJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFj
Y2Vzc0ZvcldpZGdldHMgPyBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vz
c2libGVPcmlnaW5Pbmx5IDogV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlP
cmlnaW4pOworICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVk
SW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNz
Rm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJs
ZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biwgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCk7CisKKyAgICBpZiAocGFpbnRJbmZvLmV2
ZW50UmVnaW9uQ29udGV4dCkKKyAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+
cG9wVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQog
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQp
OwpAQCAtMjgyLDcgKzI5MywxMSBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlOjpTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpKQogICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUo
KSkpOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5k
KQorICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBFbnN1cmUgbGF5b3V0IHBlcmZvcm1lZCBpZiBuZWVkIHRvIHVw
ZGF0ZSBldmVudCByZWdpb24uCisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
OjpFdmVudFJlZ2lvbiAmJiBpczxGcmFtZVZpZXc+KG1fd2lkZ2V0KSAmJiBkb3duY2FzdDxGcmFt
ZVZpZXc+KCptX3dpZGdldCkubmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHsKQEAgLTMwNCw2ICszMTksOSBAQCB2b2lk
IFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAKKyAgICBpZiAocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQorICAgICAgICByZXR1cm47CisKICAg
ICAvLyBQYWludCBhIHBhcnRpYWxseSB0cmFuc3BhcmVudCB3YXNoIG92ZXIgc2VsZWN0ZWQgd2lk
Z2V0cy4KICAgICBpZiAoaXNTZWxlY3RlZCgpICYmICFkb2N1bWVudCgpLnByaW50aW5nKCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IHNlbGVjdGlvblJlY3QoKSBpcyBpbiBhYnNvbHV0ZSwgbm90IHBh
aW50aW5nIGNvb3JkaW5hdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCBiNjA1YTI4OTEzYi4uYzdmYmFlY2EyMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03ODMs
NyArNzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQ
bHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IC8qZGlydHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQg
UGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50
UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVk
IHx8IG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6
UmVzdGFydGluZykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDg0ZDQyNjRjZTBkLi4wM2E5MWJjYjlhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTcz
LDcgKzE3Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpXaWRnZXQKICAgICB2b2lk
IHNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBXZWJDb3JlOjpXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFdl
YkNvcmU6OkV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0
ZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Rm9j
dXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRl
OwotLSAKMi4yNC4xIChBcHBsZSBHaXQtMTI2KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395714</attachid>
            <date>2020-04-07 11:32:32 -0700</date>
            <delta_ts>2020-04-07 23:26:17 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>FirstAttempt_1.patch</filename>
            <type>text/plain</type>
            <size>29734</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAzNzgzMTEyMTZlZTljYzA5MDUzODAyNWU2YmRjOWRiYjRjZTAwMTczIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDcgQXByIDIwMjAgMTE6MTY6MDUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBGaXJzdCBw
YXNzIGF0IGV2ZW50IHJlZ2lvbiB1cGRhdGUgZm9yIG5vbi1jb21wb3NpdGVkCiBkZXNjZW5kYW50
cwoKLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAgICAgICAgICAgfCAg
OCArKysrCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAgICAgICAgICAgICAgICAgfCAg
MiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgfCAgNiAr
KysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCAgICAgICAgICAgICAgICAgICB8ICAyICsK
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICB8IDIwICsrKysr
Ky0tLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggICAgICAgICAgICAgICB8ICAz
ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCAgICAgICAgfCAgNiAr
LS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICB8ICA1ICsr
LQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCAgICAgICAgIHwgIDIgKy0K
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oICAgICAgICAgICB8ICAyICstCiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwICAgICAgICAgICAgfCAgMiArLQogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggICAgICAgICAgICAgIHwgIDMgKy0KIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gICAgICB8ICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tICAgICAgfCAgMiArLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgICAgICB8IDM4ICsrKysrKysrKy0tLS0tLS0t
LS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oICAgICAgICB8ICA0ICst
CiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCAgfCAgNiArKy0K
IC4uLi9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCAgICAgICB8ICA1ICsrKwog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAgIHwgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaCAgICB8ICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oICAgICAgICAgfCAgOCArKysrCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAxOCArKysrKysrKy0K
IC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwICB8ICAyICstCiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggfCAgMiArLQogMjUg
ZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGUyNmQwZGZjM2RhLi4wMTQxZWI2YTFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC00MjM0LDYgKzQyMzQsMTQgQEAgdm9pZCBEb2N1bWVudDo6ZWxl
bWVudEluQWN0aXZlQ2hhaW5EaWREZXRhY2goRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgbV9h
Y3RpdmVFbGVtZW50ID0gbV9hY3RpdmVFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiB9CiAKK3Zv
aWQgRG9jdW1lbnQ6OmV2ZW50UmVnaW9uc0NoYW5nZWRGb3JJRnJhbWUoSFRNTEZyYW1lT3duZXJF
bGVtZW50JiBlbGVtZW50KQoreworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVu
ZGVyZXIoKSkgeworICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5n
TGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5ldmVudFJlZ2lvbnNDaGFuZ2VkKCk7CisgICAg
fQorfQorCiB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9u
cygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNmY4ZWM0YzhhNGUuLmIxNTZhYjAwOGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMTE0MSw2ICsxMTQxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBp
bnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpOwogCisgICAgdm9pZCBldmVudFJl
Z2lvbnNDaGFuZ2VkRm9ySUZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYpOworCiAgICAgdm9p
ZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBzdmdFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCmluZGV4IDUxOWYzZWZiZjczLi42MWVjYzE5NzM2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTMwMyw2ICszMDMsMTIgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQoUmVmUHRyPERv
Y3VtZW50PiYmIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRJc0JlaW5nUmVwbGFjZWQgPSBm
YWxzZTsKIH0KIAordm9pZCBGcmFtZTo6Y29udGVudEV2ZW50UmVnaW9uc0NoYW5nZWQoKQorewor
ICAgIGlmIChtX293bmVyRWxlbWVudCkKKyAgICAgICAgbV9vd25lckVsZW1lbnQtPmRvY3VtZW50
KCkuZXZlbnRSZWdpb25zQ2hhbmdlZEZvcklGcmFtZSgqbV9vd25lckVsZW1lbnQpOworfQorCiAj
aWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKIHZvaWQgRnJhbWU6Om9yaWVudGF0aW9uQ2hh
bmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNmZkZmE2OGJmNGMuLmVkMGVlNmU1OGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCkBAIC0yOTksNiArMjk5LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UHJld2FybUxvY2FsU3RvcmFnZSgpOwogICAgIGJvb2wgbWF5UHJld2FybUxvY2FsU3RvcmFnZSgp
IGNvbnN0OwogCisgICAgdm9pZCBjb250ZW50RXZlbnRSZWdpb25zQ2hhbmdlZCgpOworCiAvLyA9
PT09PT09PQogCiAgICAgdm9pZCBzZWxmT25seVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDQ1MDIzOTM4NzU2Li43ZmQzMGIzM2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtMTI1OSwxNCArMTI1OSwyMCBAQCB2b2lkIEZyYW1lVmlldzo6ZGlkTGF5b3V0
KFdlYWtQdHI8UmVuZGVyRWxlbWVudD4gbGF5b3V0Um9vdCkKICAgICBhdXRvKiBsYXlvdXRSb290
RW5jbG9zaW5nTGF5ZXIgPSBsYXlvdXRSb290LT5lbmNsb3NpbmdMYXllcigpOwogICAgIGxheW91
dFJvb3RFbmNsb3NpbmdMYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckxheW91dCghaXM8
UmVuZGVyVmlldz4oKmxheW91dFJvb3QpLCBsYXlvdXRDb250ZXh0KCkubmVlZHNGdWxsUmVwYWlu
dCgpKTsKIAorICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBp
ZiAoIXJlbmRlclZpZXcoKS0+aXNDb21wb3NpdGVkKCkpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50
Lm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKSB8fCBkb2N1bWVudC5tYXlI
YXZlRWRpdGFibGVFbGVtZW50cygpKQorICAgICAgICAgICAgZnJhbWUoKS5jb250ZW50RXZlbnRS
ZWdpb25zQ2hhbmdlZCgpOworICAgIH0KKwogICAgIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0
ZXJMYXlvdXQoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pIHx8IFBM
QVRGT1JNKEdUSykKLSAgICBpZiAoYXV0byogY2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCktPmV4
aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgIGlmIChhdXRvKiBjYWNoZSA9IGRvY3VtZW50LmV4
aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihs
YXlvdXRSb290LmdldCgpLCBBWE9iamVjdENhY2hlOjpBWExheW91dENvbXBsZXRlKTsKICNlbmRp
ZgogCi0gICAgZnJhbWUoKS5kb2N1bWVudCgpLT5pbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50
UmVnaW9ucygpOworICAgIGRvY3VtZW50LmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdp
b25zKCk7CiAKICAgICB1cGRhdGVDYW5CbGl0T25TY3JvbGxSZWN1cnNpdmVseSgpOwogCkBAIC0x
Mjc0LDEwICsxMjgwLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5k
ZXJFbGVtZW50PiBsYXlvdXRSb290KQogCiAgICAgaGFuZGxlRGVmZXJyZWRTY3JvbGxiYXJzVXBk
YXRlQWZ0ZXJEaXJlY3Rpb25DaGFuZ2UoKTsKIAotICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKKyAg
ICBpZiAoZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURf
TElTVEVORVIpKQogICAgICAgICB1cGRhdGVPdmVyZmxvd1N0YXR1cyhsYXlvdXRXaWR0aCgpIDwg
Y29udGVudHNXaWR0aCgpLCBsYXlvdXRIZWlnaHQoKSA8IGNvbnRlbnRzSGVpZ2h0KCkpOwogCi0g
ICAgZnJhbWUoKS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFy
a2VycygpOworICAgIGRvY3VtZW50Lm1hcmtlcnMoKS5pbnZhbGlkYXRlUmVjdHNGb3JBbGxNYXJr
ZXJzKCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVy
Q29udGVudFNpemVDaGFuZ2UoKQpAQCAtNDEwNyw3ICs0MTEzLDcgQEAgdm9pZCBGcmFtZVZpZXc6
OmRpZFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVIKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIEZyYW1lVmll
dzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50
UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uQ29udGV4dCkKIHsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFdhcm5pbmdDb2xvcjsKQEAgLTQxNzAsOCArNDE3
Niw4IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgd2hpbGUgKGlzPFJlbmRlcklubGlu
ZT4ocmVuZGVyZXIpICYmICFkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpyZW5kZXJlcikuZmlyc3RM
aW5lQm94KCkpCiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwogCi0gICAg
cm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNpemUoKSwgbV9wYWlu
dEJlaGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID09IFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxheWVyOjpTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkpOwotICAgIGlmIChyb290TGF5ZXIt
PmNvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycygpKQorICAgIHJvb3RMYXllci0+cGFpbnQo
Y29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVy
ZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFj
Y2Vzc2libGVPcmlnaW5Pbmx5LCBldmVudFJlZ2lvbkNvbnRleHQpOworICAgIGlmIChyb290TGF5
ZXItPmNvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycygpICYmICFldmVudFJlZ2lvbkNvbnRl
eHQpCiAgICAgICAgIHJvb3RMYXllci0+cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhjb250ZXh0LCBk
aXJ0eVJlY3QsIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIpOwogCiAgICAgZGlkUGFpbnRDb250
ZW50cyhjb250ZXh0LCBkaXJ0eVJlY3QsIHBhaW50aW5nU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggYzIyZTRlNThjMTQuLmMyMDQ5ZmI0MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBWE9i
amVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNs
YXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50
OwpAQCAtMzQ3LDcgKzM0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVtYmVkZGVkT2JqZWN0
VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKICAgICB2b2lkIHJlbW92ZUVtYmVkZGVk
T2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5OjpBbnlPcmlnaW4pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIHN0cnVjdCBQ
YWludGluZ1N0YXRlIHsKICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVo
YXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDJmZDE1Zjdi
MzAxLi40Njk2NTExZDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
QEAgLTEyMzYsMTQgKzEyMzYsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNj
cm9sbEljb24sIGljb25HQ1BvaW50KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgU2Nyb2xsVmlldzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdl
dCgpKSB7CiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWNv
bnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkpCisgICAgaWYgKGNvbnRleHQucGFp
bnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigp
ICYmICFldmVudFJlZ2lvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG5vdGlmeVBh
Z2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKTsKQEAgLTEyNjgsNyArMTI2OCw3IEBAIHZvaWQg
U2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0LCBTZWN1cml0eU9yCiAgICAgICAgICAgICBjb250ZXh0LmNsaXAodmlzaWJsZUNvbnRl
bnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHBhaW50Q29udGVudHMoY29udGV4dCwgZG9jdW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3kpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50
RGlydHlSZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBldmVudFJlZ2lvbkNvbnRleHQp
OwogICAgIH0KIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAppbmRleCA0Y2MyYmI0YzBiYy4uYWQ4YjQxOGFjYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTU3LDYgKzU3LDcgQEAgT0JKQ19DTEFTUyBXQUtW
aWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsK
IGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBMZWdhY3lUaWxlQ2FjaGU7CiBjbGFzcyBTY3JvbGxi
YXI7CkBAIC0zNTAsNyArMzUxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFdpZGdldCBv
dmVycmlkZS4gSGFuZGxlcyBwYWludGluZyBvZiB0aGUgY29udGVudHMgb2YgdGhlIHZpZXcgYXMg
d2VsbCBhcyB0aGUgc2Nyb2xsYmFycy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZp
bmFsOwogICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmKTsKIAogICAgIC8vIFdpZGdldCBvdmVycmlkZXMgdG8gZW5zdXJlIHRoYXQgb3VyIGNo
aWxkcmVuJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaXMga2VwdCB1cCB0byBkYXRlIHdoZW4gd2UgZ2V0
IHNob3duIGFuZCBoaWRkZW4uCkBAIC0zODgsNyArMzg5LDcgQEAgcHJvdGVjdGVkOgogICAgIFNj
cm9sbFZpZXcoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCAxMjkzZTJkNzkzMS4uYTZiNTgwNzM4OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IHZvaWQgU2Nyb2xsYmFyOjp1cGRhdGVUaHVtYlByb3BvcnRpb24oKQogICAgIHVwZGF0ZVRodW1i
KCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSkKK3ZvaWQgU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdD
b250cm9sVGludHMoKSAmJiB0aGVtZSgpLnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAg
ICAgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAppbmRleCBjYjk1
MGUyM2Y3YS4uZWQzODk2YzlkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3Bv
cnRpb24oaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNz
ZWRQb3MoaW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsgfQogCi0gICAgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4p
IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVs
bHB0cikgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuY3BwCmluZGV4IGU5ZjVkODFlMDNhLi5hN2ZlMzgwZjNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXaWRnZXQ6OnNl
dEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jiwg
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRS
ZWdpb25Db250ZXh0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuaAppbmRleCAxY2Y5MzFjMTIyMy4uNGYzMDJhYmJmMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3Vyc29yOwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFz
cyBGb250Q2FzY2FkZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
QEAgLTEwOSw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3kgeyBBbnlPcmlnaW4sIEFjY2Vzc2libGVPcmlnaW5Pbmx5IH07CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5OjpBbnlPcmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdp
b25Db250ZXh0KiA9IG51bGxwdHIpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0
ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChj
b25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElP
Uy5tbQppbmRleCAzZTA5YzExYjQ2My4uNGUwN2JkNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dpZGdldElPUy5tbQpAQCAtMTQ2LDcgKzE0Niw3IEBAIE5TVmlldyogV2lkZ2V0
OjpnZXRPdXRlclZpZXcoKSBjb25zdAogICAgIHJldHVybiB2aWV3OwogfQogCi12b2lkIFdpZGdl
dDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwg
Y29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25D
b250ZXh0KikKIHsKICAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IDI2NmIwNDJl
MDZmLi4zMDQ1ODg4YTM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFj
Lm1tCkBAIC0xODYsNyArMTg2LDcgQEAgTlNWaWV3ICpXaWRnZXQ6OmdldE91dGVyVmlldygpIGNv
bnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2
b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlm
IChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZWVlZTIzZTE5OTkuLmUwZGFkNzI1YTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEyNTUsNyArMTI1
NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIH0KIAogICAgICAgICAvLyBO
byBuZWVkIHRvIGNoZWNrIGRlc2NlbmRhbnRzIGlmIHdlIGRvbid0IGhhdmUgb3ZlcmZsb3cgYW5k
IHRoZSBhcmVhIGlzIGFscmVhZHkgY292ZXJlZC4KLSAgICAgICAgYm9vbCBuZWVkc1RyYXZlcnNl
RGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVyZmxvdygpIHx8IGNvbnRhaW5zRmxvYXRzKCkgfHwg
IXBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3Qo
Ym9yZGVyUmVjdCkpOworICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhh
c1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50
UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSkgfHwg
dmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRGVzY2VuZGFudCgp
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIG5lZWRzVHJhdmVyc2VEZXNjZW5k
YW50cyA9IG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyB8fCBkb2N1bWVudCgpLm1heUhhdmVFbGVt
ZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKSB8fCBkb2N1bWVudCgpLm1heUhhdmVFZGl0YWJs
ZUVsZW1lbnRzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IGUyNjY5ZGUxNGUxLi5hOTdkMjdhMWFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MTkwLDExICs0MTkwLDE1IEBAIGJvb2wgUmVuZGVy
TGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0aW9u
LCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwg
Y29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9y
PiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNl
dDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBw
YWludFBvbGljeSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3Vi
cGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5k
ZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFp
bnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSwgRXZlbnRSZWdp
b25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0
TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKICAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGlu
Z0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwg
c3VicGl4ZWxPZmZzZXQsIHN1YnRyZWVQYWludFJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RzLCBw
YWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2lu
T25seSk7CisgICAgaWYgKGV2ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICBwYWludGluZ0lu
Zm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZlbnRSZWdpb25Db250ZXh0OworICAgICAgICBwYWlu
dEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckNvbGxlY3RpbmdFdmVudFJlZ2lvbik7
CisgICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdz
KTsKIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogb3ZlcmxhcFRlc3RSZXF1ZXN0cy5rZXlzKCkp
CkBAIC02NDQwLDYgKzY0NDQsMTYgQEAgYm9vbCBSZW5kZXJMYXllcjo6bGlzdEJhY2tncm91bmRJ
c0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXllckxpc3QmIGxpc3QsIGMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXI6OmV2ZW50UmVnaW9uc0NoYW5nZWQoKQor
eworICAgIGlmIChhdXRvKiBjb21wb3NpdGluZ0xheWVyID0gZW5jbG9zaW5nQ29tcG9zaXRpbmdM
YXllckZvclJlcGFpbnQoKSkgeworICAgICAgICBjb21wb3NpdGluZ0xheWVyLT5zZXROZWVkc0Nv
bXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOworICAgICAgICBjb21wb3NpdGluZ0xheWVy
LT5jb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CisgICAgICAg
IGNvbXBvc2l0aW5nTGF5ZXItPnJlbmRlcmVyKCkudmlldygpLnNldE5lZWRzRXZlbnRSZWdpb25V
cGRhdGVGb3JOb25Db21wb3NpdGVkRGVzY2VuZGFudCgpOworICAgICAgICBjb21wb3NpdGluZ0xh
eWVyLT5yZW5kZXJlcigpLnZpZXcoKS5zZXROZWVkc1JlcGFpbnRBZnRlckNvbXBvc2l0aW5nTGF5
ZXJVcGRhdGUoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRJbmNsdWRp
bmdEZXNjZW5kYW50cygpCiB7CiAgICAgcmVuZGVyZXIoKS5yZXBhaW50KCk7CkBAIC02OTg5LDI2
ICs3MDAzLDggQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNUcmFuc3BhcmVudFJlc3BlY3RpbmdQYXJl
bnRGcmFtZXMoKSBjb25zdAogdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9u
KCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGF1dG8qIGNvbXBvc2l0aW5nTGF5
ZXIgPSBlbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpOwotICAgIGlmICghY29t
cG9zaXRpbmdMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBtYWludGFpbnNFdmVu
dFJlZ2lvbiA9IFsmXSB7Ci0gICAgICAgIC8vIFVJIHNpZGUgc2Nyb2xsIG92ZXJsYXAgdGVzdGlu
Zy4KLSAgICAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyLT5pc1JlbmRlclZpZXdMYXllcigpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIC8vIFVJIHNpZGUgdG91Y2gtYWN0aW9u
IHJlc29sdXRpb24uCi0gICAgICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkubWF5SGF2ZUVs
ZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGlmIChyZW5kZXJlcigpLmRvY3VtZW50KCkubWF5SGF2ZUVkaXRhYmxlRWxlbWVu
dHMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfTsKLQotICAgIGlmICghbWFpbnRhaW5zRXZlbnRSZWdpb24oKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgY29tcG9zaXRpbmdMYXllci0+c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRp
b25VcGRhdGUoKTsKKyAgICBpZiAoYXV0byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0Nv
bXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkpCisgICAgICAgIGNvbXBvc2l0aW5nTGF5ZXItPnNl
dE5lZWRzQ29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA5NmQzOWVmNGJmYi4uNDJhNTUy
ZTBlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00MDAsNiAr
NDAwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBhaW50SW5jbHVkaW5nRGVzY2VuZGFudHMo
KTsKIAorICAgIHZvaWQgZXZlbnRSZWdpb25zQ2hhbmdlZCgpOworCiAgICAgLy8gSW5kaWNhdGUg
dGhhdCB0aGUgbGF5ZXIgY29udGVudHMgbmVlZCB0byBiZSByZXBhaW50ZWQuIE9ubHkgaGFzIGFu
IGVmZmVjdAogICAgIC8vIGlmIGxheWVyIGNvbXBvc2l0aW5nIGlzIGJlaW5nIHVzZWQuCiAgICAg
dm9pZCBzZXRCYWNraW5nTmVlZHNSZXBhaW50KEdyYXBoaWNzTGF5ZXI6OlNob3VsZENsaXBUb0xh
eWVyID0gR3JhcGhpY3NMYXllcjo6Q2xpcFRvTGF5ZXIpOwpAQCAtNjkyLDcgKzY5NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2Ug
ZXZlbnRzIGJ5IHdhbGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50
IGZyb20gZnJvbnQgdG8gYmFjay4KICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zm
c2V0ID0gTGF5b3V0U2l6ZSgpLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gPSBQYWludEJlaGF2
aW9yOjpOb3JtYWwsCi0gICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51
bGxwdHIsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pOworICAgICAg
ICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFp
bnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0
cik7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9s
bGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgT3B0
aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggZjkwYmI1YWE5Y2MuLmVkN2VhOWZjMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTYxOCwxMyArMTYxOCwx
NCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpb24oKQogICAgIGlm
IChwYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGJvb2wgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWREZXNjZW5kYW50ID0g
cmVuZGVyZXIoKS52aWV3KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRE
ZXNjZW5kYW50KCk7CiAgICAgYm9vbCBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gZmFsc2U7CiAg
ICAgYm9vbCBoYXNFZGl0YWJsZUVsZW1lbnRzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgp
Lm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKTsKICAgICBoYXNFZGl0YWJs
ZUVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLm1heUhhdmVFZGl0YWJsZUVsZW1lbnRz
KCk7CiAjZW5kaWYKLSAgICBpZiAoIWhhc1RvdWNoQWN0aW9uRWxlbWVudHMgJiYgIWhhc0VkaXRh
YmxlRWxlbWVudHMpIHsKKyAgICBpZiAoIWhhc1RvdWNoQWN0aW9uRWxlbWVudHMgJiYgIWhhc0Vk
aXRhYmxlRWxlbWVudHMgJiYgIW5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVk
RGVzY2VuZGFudCkgewogICAgICAgICBpZiAobV9vd25pbmdMYXllci5pc1JlbmRlclZpZXdMYXll
cigpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjY4LDYgKzE2NjksOSBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpb24oKQogCiAgICAgaWYgKG1fc2Nyb2xs
ZWRDb250ZW50c0xheWVyKQogICAgICAgICB1cGRhdGVFdmVudFJlZ2lvbkZvckxheWVyKCptX3Nj
cm9sbGVkQ29udGVudHNMYXllcik7CisKKyAgICBpZiAobmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZv
ck5vbkNvbXBvc2l0ZWREZXNjZW5kYW50KQorICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5zZXRO
ZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZERlc2NlbmRhbnQoZmFsc2UpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggM2EwMzhjZThhM2EuLjE2MjFkMTUyNDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAt
ODU4LDYgKzg1OCwxMSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9z
aXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UoJnBhZ2UoKSk7CiAKKyAgICBpZiAo
bV9yZW5kZXJWaWV3Lm5lZWRzUmVwYWludEFmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpKSB7
CisgICAgICAgIG1fcmVuZGVyVmlldy5yZXBhaW50Um9vdENvbnRlbnRzKCk7CisgICAgICAgIG1f
cmVuZGVyVmlldy5zZXROZWVkc1JlcGFpbnRBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUoZmFs
c2UpOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDBjYTJkYTA5Mjc0Li41ZTM2ZDFhNzYy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKCkKICAg
ICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBX
aWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFJlbmRlclNjcm9sbGJhcjo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCop
CiB7CiAgICAgaWYgKGNvbnRleHQuaW52YWxpZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKICAgICAg
ICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuaAppbmRleCBlYTM1OGRmZGJiYy4uYmExNzIzNWIxN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3kpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0SG92ZXJl
ZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmVzc2VkUGFydChT
Y3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CmluZGV4IDkxNGViYmM3ZGQzLi4xMjU0ZTdlNmY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCkBAIC02OCw2ICs2OCwxMiBAQCBwdWJsaWM6CiAKICAgICBGcmFtZVZpZXcm
IGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKKyAgICBib29sIG5l
ZWRzUmVwYWludEFmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmVlZHNSZXBhaW50QWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlOyB9OworICAgIHZvaWQgc2V0
TmVlZHNSZXBhaW50QWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlKGJvb2wgdmFsdWUgPSB0cnVl
KSB7IG1fbmVlZHNSZXBhaW50QWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlID0gdmFsdWU7IH0K
KworICAgIGJvb2wgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWREZXNjZW5k
YW50KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9z
aXRlZERlc2NlbmRhbnQ7IH0KKyAgICB2b2lkIHNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JO
b25Db21wb3NpdGVkRGVzY2VuZGFudChib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzRXZlbnRS
ZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRGVzY2VuZGFudCA9IHZhbHVlOyB9CisKICAgICBP
cHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBM
YXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNp
YmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVwYWludFJvb3RDb250
ZW50cygpOwogICAgIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYp
IGNvbnN0OwpAQCAtMjU1LDYgKzI2MSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NvZnR3
YXJlRmlsdGVycyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXNGaXJzdExpbmVSdWxlcyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3VzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fbmVlZHNSZXBhaW50QWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlIHsgZmFsc2UgfTsK
KyAgICBib29sIG1fbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWREZXNjZW5k
YW50IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8UmVuZGVyRWxlbWVudCosIFZlY3RvcjxDYWNo
ZWRJbWFnZSo+PiBtX3JlbmRlcmVyc1dpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbjsKICAgICBIYXNo
U2V0PFJlbmRlckVsZW1lbnQqPiBtX3Zpc2libGVJblZpZXdwb3J0UmVuZGVyZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAzZjZmMzNiNzUyYi4uNTc1
MDVkOTc1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAt
MjQ2LDggKzI0NywxOCBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnRyYW5zbGF0ZSh3aWRnZXRQYWludE9mZnNldCk7CiAgICAgICAgIHBhaW50
UmVjdC5tb3ZlKC13aWRnZXRQYWludE9mZnNldCk7CiAgICAgfQorCisgICAgaWYgKHBhaW50SW5m
by5ldmVudFJlZ2lvbkNvbnRleHQpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJh
bnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQoY29udGVudFBhaW50T2Zm
c2V0LngoKSwgY29udGVudFBhaW50T2Zmc2V0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQtPnB1c2hUcmFuc2Zvcm0odHJhbnNmb3JtLnRvQWZmaW5lVHJhbnNmb3Jt
KCkpOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jbG9zaW5n
L2ludGVncmFsIHNuYXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBpeGVs
IHNuYXBwZWQuCi0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBw
ZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nl
c3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3Np
YmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZElu
dFJlY3QocGFpbnRSZWN0KSwgcGFpbnRJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0Zv
cldpZGdldHMgPyBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVP
cmlnaW5Pbmx5IDogV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4s
IHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworCisgICAgaWYgKHBhaW50SW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpCisgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnBv
cFRyYW5zZm9ybSgpOwogCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXdpZGdldFBhaW50T2Zmc2V0KTsK
QEAgLTI4Miw3ICsyOTMsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlOjpTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpKQogICAgICAgICBwYWludE91
dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkp
OwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kKQor
ICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSB7CkBAIC0zMDQsNiArMzE1LDkg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVz
KCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCisgICAgaWYgKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKKyAgICAgICAgcmV0dXJu
OworCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVj
dGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmludGlu
ZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1dGUs
IG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjYwNWEyODkxM2IuLmM3ZmJhZWNhMjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAgdmlld0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9CiAK
LXZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kp
Cit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0
aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVs
ZW1lbnQ6OlJlc3RhcnRpbmcpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4NGQ0MjY0Y2UwZC4uMDNhOTFiY2I5
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
QEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6V2lkZ2V0CiAg
ICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5LCBXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGlu
dmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBv
dmVycmlkZTsKLS0gCjIuMjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395772</attachid>
            <date>2020-04-07 23:26:17 -0700</date>
            <delta_ts>2020-04-08 00:07:18 -0700</delta_ts>
            <desc>Second attempt</desc>
            <filename>SecondAttempt_rebased_1.patch</filename>
            <type>text/plain</type>
            <size>40108</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA3ZGE4MmY1NTA0ZjM3MGU1YmE2OTFjOTAzZDZlNDE4MmZhNDdkNGFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDcgQXByIDIwMjAgMTc6MDA6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBTZWNvbmQg
cGFzcyBhdCBlZGl0YWJsZSByZWdpb24gd2l0aCBub24tY29tcG9zaXRlZCBpZnJhbWVzIC0KIHJl
YmFzZWQKCi0tLQogLi4udWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0
IHwgMjIgKysrKysrKysrKysrKysrKysKIC4uLm1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUuaHRtbCB8IDIyICsrKysrKysrKysrKysrKysrCiAuLi4vdG91Y2gtYWN0aW9uLW5v
bmUtaW5zaWRlLWlmcmFtZS5odG1sICAgICAgfCAgNiArKysrKwogLi4udWNoLWFjdGlvbi1ub25l
LWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0IHwgMjIgKysrKysrKysrKysrKysrKysKIC4uLi9p
b3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sICB8IDIxICsrKysrKysrKysr
KysrKysKIC4uLmlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dCB8IDIy
ICsrKysrKysrKysrKysrKysrCiAuLi5vdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZy
YW1lLmh0bWwgfCAyMiArKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggICAgICAgICAgICAgICAgIHwgIDEgKwogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgICAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrKwogU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oICAgICAgICAgICAgICAgICAgIHwgIDIgKysKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICB8IDE3ICsrKysrKystLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggICAgICAgICAgICAgICB8ICAzICsrLQogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgICAgICAgIHwgIDYgKystLS0KIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICB8ICA1ICsrLS0KIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCAgICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5oICAgICAgICAgICAgICB8ICAzICsrLQogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbSAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0gICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwICAgICAgfCAgMyArLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcCAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwICAgICAgfCAyNCArKysrKysrKysrKysrKy0tLS0tCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCAgICAgICAgfCAgNSArKy0tCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCAgfCAxMCArKysrKy0tLQogLi4u
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwICAgICAgIHwgMTMgKysrKysrKysr
KwogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIHwgIDIgKysK
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwICB8ICAyICstCiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggICAgfCAgMiArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCAgICAgICAgIHwgIDggKysrKysrKwog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwgMTkgKysrKysr
KysrKysrLS0tCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCAg
fCAgMiArLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIHwg
IDIgKy0KIDM0IGZpbGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9n
cmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0
aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1u
b25lLWluc2lkZS1pZnJhbWUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3Bv
aW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcG9p
bnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRt
bAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRp
Yy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uN2Y3MzQzNDUwOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCisoR3JhcGhpY3NMYXllcgorICAoYW5jaG9y
IDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAg
IChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY29u
dGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5k
Q29sb3IgI0ZGRkZGRikKKyAgICAgIChldmVudCByZWdpb24KKyAgICAgICAgKHJlY3QgKDAsMCkg
d2lkdGg9ODAwIGhlaWdodD02MDApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAo
bm9uZSAgICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICgxOCwxOCkgd2lkdGg9MTAyIGhlaWdo
dD0xMDIpCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45NWM4OTQ1NmZmMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1t
YXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyMiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0idGVzdEZyYW1l
IiBzcmNkb2M9IjxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYm9yZGVy
OjFweCBzb2xpZCBibGFjayc+PC9kaXY+IiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8
cHJlIGlkPSJyZXN1bHRzIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdGVzdEZyYW1lLmNvbnRl
bnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKS5zdHlsZS50b3VjaEFjdGlvbiA9ICJub25l
IjsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgcmVzdWx0cy5pbm5lclRleHQg
PSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJfVFJF
RV9JTkNMVURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19S
T09UX0xBWUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOTc4MzA4YmMxNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIHNyY2RvYz0iPGRpdiBzdHlsZT0n
dG91Y2gtYWN0aW9uOiBub25lOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjox
cHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2FkPSJ3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5w
YXJlbnQuZHVtcFJlZ2lvbigpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmNzM0MzQ1MDlkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCisoR3JhcGhpY3NMYXllcgorICAo
YW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAg
ICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNr
Z3JvdW5kQ29sb3IgI0ZGRkZGRikKKyAgICAgIChldmVudCByZWdpb24KKyAgICAgICAgKHJlY3Qg
KDAsMCkgd2lkdGg9ODAwIGhlaWdodD02MDApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAg
ICAgICAobm9uZSAgICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICgxOCwxOCkgd2lkdGg9MTAy
IGhlaWdodD0xMDIpCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICAp
CispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMv
aW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2I3NGVlYzI3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZy
YW1lLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5
PgorPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3RvdWNoLWFjdGlv
bjogbm9uZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJs
YWNrJz48L2Rpdj4iIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3Vs
dHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgcmVzdWx0cy5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50
LCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5hbHMu
TEFZRVJfVFJFRV9JTkNMVURFU19ST09UX0xBWUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNzMzM2FmOGZkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFt
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCisoR3JhcGhpY3NMYXllcgorICAoYW5j
aG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQor
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAo
Y29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3Jv
dW5kQ29sb3IgI0ZGRkZGRikKKyAgICAgIChldmVudCByZWdpb24KKyAgICAgICAgKHJlY3QgKDAs
MCkgd2lkdGg9ODAwIGhlaWdodD02MDApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAg
ICAobm9uZSAgICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICgyOCwyOCkgd2lkdGg9MTAyIGhl
aWdodD0xMDIpCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCisp
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZl
bnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MzUxZjI4NzAyYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25l
LWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNl
cy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorPHByZSBp
ZD0icmVzdWx0cyI+PC9wcmU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIGR1bXBSZWdpb24oKQoreworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1Rl
eHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8
IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCAzZWY5NDU5MDBiYS4uYzc3MzAzYTU2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNDIzNCw2ICs0MjM0LDE5IEBAIHZvaWQgRG9jdW1lbnQ6OmVsZW1lbnRJbkFjdGl2ZUNo
YWluRGlkRGV0YWNoKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fYWN0aXZlRWxlbWVudCA9
IG1fYWN0aXZlRWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogfQogCit2b2lkIERvY3VtZW50Ojpp
bnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxl
bWVudCkKK3sKKyAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGxheWVyID0gcmVu
ZGVyZXItPmVuY2xvc2luZ0xheWVyKCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pbnZhbGlkYXRl
RXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpO
b25Db21wb3NpdGVkSUZyYW1lKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KGF1dG8qIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgpKQorICAgICAgICBvd25l
ckVsZW1lbnQtPmRvY3VtZW50KCkuaW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZSgqb3du
ZXJFbGVtZW50KTsKK30KKwogdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVu
ZGVudFJlZ2lvbnMoKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDgzOWFmY2Q1OGJhLi5lNzkwYThlMTJl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExNDAsNiArMTE0MCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhj
b25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVu
ZGVudFJlZ2lvbnMoKTsKKyAgICB2b2lkIGludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50Jik7CiAKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVu
ZXJzKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMDUxZmRiM2VlNWMuLjExMGMx
YTM3MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzA0LDYgKzMwNCwxOCBAQCB2b2lkIEZy
YW1lOjpzZXREb2N1bWVudChSZWZQdHI8RG9jdW1lbnQ+JiYgbmV3RG9jdW1lbnQpCiAgICAgbV9k
b2N1bWVudElzQmVpbmdSZXBsYWNlZCA9IGZhbHNlOwogfQogCit2b2lkIEZyYW1lOjppbnZhbGlk
YXRlQ29udGVudEV2ZW50UmVnaW9ucygpCit7CisgICAgaWYgKCFtX3BhZ2UgfHwgIW1fZG9jKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvYy0+bWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1
dG9Ub3VjaEFjdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvYy0+cmVuZGVy
VmlldygpLT5jb21wb3NpdG9yKCkudmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdpb25PZkVu
Y2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAobV9vd25lckVsZW1lbnQpCisgICAgICAgIG1fb3duZXJFbGVtZW50LT5kb2N1bWVudCgp
LmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoKm1fb3duZXJFbGVtZW50KTsKK30KKwog
I2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCiB2b2lkIEZyYW1lOjpvcmllbnRhdGlvbkNo
YW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI1MjBlMDM3YTU0Li5kMzNjMjEwNzUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaApAQCAtMzAzLDYgKzMwMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKICAgICBib29sIG1heVByZXdhcm1Mb2NhbFN0b3JhZ2Uo
KSBjb25zdDsKIAorICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnMoKTsKKwog
Ly8gPT09PT09PT0KIAogICAgIHZvaWQgc2VsZk9ubHlSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCBjNjhmNWQzOGM2ZS4uOTFjNjEwNzM2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTEyNjEsMTIgKzEyNjEsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZExh
eW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxheW91dFJvb3QpCiAKICAgICB1cGRhdGVDb21w
b3NpdGluZ0xheWVyc0FmdGVyTGF5b3V0KCk7CiAKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJl
ZigqZnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBmcmFtZSgpLmludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zKCk7CisKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQ
TEFURk9STShHVEspCi0gICAgaWYgKGF1dG8qIGNhY2hlID0gZnJhbWUoKS5kb2N1bWVudCgpLT5l
eGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICBpZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudC0+
ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9u
KGxheW91dFJvb3QuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUpOwogI2Vu
ZGlmCiAKLSAgICBmcmFtZSgpLmRvY3VtZW50KCktPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRl
bnRSZWdpb25zKCk7CisgICAgZG9jdW1lbnQtPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRS
ZWdpb25zKCk7CiAKICAgICB1cGRhdGVDYW5CbGl0T25TY3JvbGxSZWN1cnNpdmVseSgpOwogCkBA
IC0xMjc0LDEwICsxMjc3LDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxS
ZW5kZXJFbGVtZW50PiBsYXlvdXRSb290KQogCiAgICAgaGFuZGxlRGVmZXJyZWRTY3JvbGxiYXJz
VXBkYXRlQWZ0ZXJEaXJlY3Rpb25DaGFuZ2UoKTsKIAotICAgIGlmIChmcmFtZSgpLmRvY3VtZW50
KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkK
KyAgICBpZiAoZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6T1ZFUkZMT1dDSEFO
R0VEX0xJU1RFTkVSKSkKICAgICAgICAgdXBkYXRlT3ZlcmZsb3dTdGF0dXMobGF5b3V0V2lkdGgo
KSA8IGNvbnRlbnRzV2lkdGgoKSwgbGF5b3V0SGVpZ2h0KCkgPCBjb250ZW50c0hlaWdodCgpKTsK
IAotICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFs
bE1hcmtlcnMoKTsKKyAgICBkb2N1bWVudC0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFs
bE1hcmtlcnMoKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRl
QWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpCkBAIC00MjI1LDcgKzQyMjgsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6ZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UgogICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgRnJh
bWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewog
I2lmbmRlZiBOREVCVUcKICAgICBib29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDI4OCw4
ICs0MjkxLDggQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QKICAgICB3aGlsZSAoaXM8UmVuZGVy
SW5saW5lPihyZW5kZXJlcikgJiYgIWRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKS5m
aXJzdExpbmVCb3goKSkKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAK
LSAgICByb290TGF5ZXItPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBt
X3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7IH0sIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kg
PT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA6IFJlbmRlckxheWVyOjpTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7Ci0gICAgaWYgKHJvb3RM
YXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkpCisgICAgcm9vdExheWVyLT5w
YWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNpemUoKSwgbV9wYWludEJlaGF2aW9yLCBy
ZW5kZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eTo6QWNjZXNzaWJsZU9yaWdpbk9ubHksIGV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgaWYgKHJv
b3RMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9u
Q29udGV4dCkKICAgICAgICAgcm9vdExheWVyLT5wYWludE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRl
eHQsIGRpcnR5UmVjdCwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlcik7CiAKICAgICBkaWRQYWlu
dENvbnRlbnRzKGNvbnRleHQsIGRpcnR5UmVjdCwgcGFpbnRpbmdTdGF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAppbmRleCBiYjk1Nzg1Y2M4MS4uMTMzZDkwNTllY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0
OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ7CkBAIC0zNTEsNyArMzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRP
YmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwg
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFu
eU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgc3Ry
dWN0IFBhaW50aW5nU3RhdGUgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFp
bnRCZWhhdmlvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMmZk
MTVmN2IzMDEuLjQ2OTY1MTFkNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcApAQCAtMTIzNiwxNCArMTIzNiwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50UGFuU2Ny
b2xsSWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
cGFuU2Nyb2xsSWNvbiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBTY3JvbGxW
aWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZl
bnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAgICAgaWYgKHBsYXRmb3Jt
V2lkZ2V0KCkpIHsKICAgICAgICAgV2lkZ2V0OjpwYWludChjb250ZXh0LCByZWN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAm
JiAhY29udGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSkKKyAgICBpZiAoY29udGV4
dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWNvbnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0
aW9uKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbm90
aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpOwpAQCAtMTI2OCw3ICsxMjY4LDcgQEAg
dm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIFNlY3VyaXR5T3IKICAgICAgICAgICAgIGNvbnRleHQuY2xpcCh2aXNpYmxl
Q29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSk7CisgICAgICAgIHBhaW50Q29udGVudHMoY29udGV4dCwgZG9j
dW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIGV2ZW50UmVnaW9uQ29u
dGV4dCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGI2NGFhM2JhMDY2Li43YWQ1MDQ5ZjE4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNTcsNiArNTcsNyBAQCBPQkpDX0NMQVNT
IFdBS1ZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRXZlbnRSZWdpb25Db250
ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIExlZ2FjeVRpbGVDYWNoZTsKIGNsYXNzIFNj
cm9sbGJhcjsKQEAgLTM1MCw3ICszNTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lk
Z2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmll
dyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0
cikgZmluYWw7CiAgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBv
dXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3
ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KQEAgLTM4OCw3ICszODksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgU2Nyb2xsVmlldygpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFu
Z2xlKGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IDEyOTNlMmQ3OTMxLi5hNmI1ODA3
Mzg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xNDAsNyArMTQw
LDcgQEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRl
VGh1bWIoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5KQordm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRh
dGluZ0NvbnRyb2xUaW50cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewog
ICAgICAgICBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4
IGNiOTUwZTIzZjdhLi5lZDM4OTZjOWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0
UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9CiAKLSAgICB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9y
aWdpbikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCog
PSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5jcHAKaW5kZXggZTlmNWQ4MWUwM2EuLmE3ZmUzODBmM2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdpZGdl
dDo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBF
dmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5oCmluZGV4IDFjZjkzMWMxMjIzLi40ZjMwMmFiYmYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsK
IGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwpAQCAtMTA5LDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVu
dFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZh
bGlkYXRlUmVjdChib3VuZHNSZWN0KCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVS
ZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lk
Z2V0SU9TLm1tCmluZGV4IDNlMDljMTFiNDYzLi40ZTA3YmQ3NTE2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgTlNWaWV3KiBX
aWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZvaWQg
V2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJl
Z2lvbkNvbnRleHQqKQogewogICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggMjY2
YjA0MmUwNmYuLjMwNDU4ODhhMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0KQEAgLTE4Niw3ICsxODYsNyBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0ZXJWaWV3
KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3Qm
IHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAg
ICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBlYzZmZDhjZmZlNi4uZGJhYTUxNzM5
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTI1NSw4
ICsxMjU1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgICAgIHBhaW50SW5m
by5ldmVudFJlZ2lvbkNvbnRleHQtPnVuaXRlKGJvcmRlclJlZ2lvbiwgc3R5bGUoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGRlc2NlbmRhbnRzIGlmIHdlIGRv
bid0IGhhdmUgb3ZlcmZsb3cgYW5kIGRvbid0IGNvbnRhaW4gZmxvYXRzIGFuZCB0aGUgYXJlYSBp
cyBhbHJlYWR5IGNvdmVyZWQuCi0gICAgICAgIGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRz
ID0gaGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBjb250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8u
ZXZlbnRSZWdpb25Db250ZXh0LT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3Qp
KTsKKyAgICAgICAgYm9vbCBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVy
ZmxvdygpIHx8IGNvbnRhaW5zRmxvYXRzKCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQtPmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVjdCkpIHx8IHZpZXcoKS5uZWVk
c0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSgpOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IG5lZWRzVHJh
dmVyc2VEZXNjZW5kYW50cyB8fCBkb2N1bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRv
VG91Y2hBY3Rpb24oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IDg3N2Y0ODA2YTdjLi41ZWEwOWE1MDZmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSYgbmV3CiAgICAgICAgIGlmIChuZWVkc0ludmFsaWRhdGVFdmVudFJlZ2lv
bigpKSB7CiAgICAgICAgICAgICAvLyBVc3VhbGx5IHRoZSBldmVudCByZWdpb24gZ2V0cyB1cGRh
dGVkIGFzIGEgcmVzdWx0IG9mIHBhaW50IGludmFsaWRhdGlvbi4gSGVyZSB3ZSBuZWVkIHRvIHJl
cXVlc3QgYW4gdXBkYXRlIGV4cGxpY2l0bHkuCiAgICAgICAgICAgICBpZiAoYXV0byogbGF5ZXIg
PSBlbmNsb3NpbmdMYXllcigpKQotICAgICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZl
bnRSZWdpb24oKTsKKyAgICAgICAgICAgICAgICBsYXllci0+aW52YWxpZGF0ZUV2ZW50UmVnaW9u
KFJlbmRlckxheWVyOjpFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6U3R5bGUpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1fcGFyZW50ICYmIChuZXdTdHlsZS5vdXRsaW5lU2l6ZSgp
IDwgbV9zdHlsZS5vdXRsaW5lU2l6ZSgpIHx8IHNob3VsZFJlcGFpbnRGb3JTdHlsZURpZmZlcmVu
Y2UoZGlmZikpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
MjFmNTJiOTdkN2YuLmI5MTBjYjFkZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDE5IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5
cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCkBAIC00
MjA0LDExICs0MjA0LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rp
b24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxP
ZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmpl
Y3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFn
cywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSkKK3ZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWlu
dEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3Qs
IE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBwYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRl
eHQpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAK
ICAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVj
dChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1YnRyZWVQYWlu
dFJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7CisgICAgaWYgKGV2ZW50UmVnaW9u
Q29udGV4dCkgeworICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZl
bnRSZWdpb25Db250ZXh0OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFp
bnRMYXllckNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CisgICAgfQogICAgIHBhaW50TGF5ZXIoY29u
dGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAogICAgIGZvciAoYXV0byYgd2lkZ2V0
IDogb3ZlcmxhcFRlc3RSZXF1ZXN0cy5rZXlzKCkpCkBAIC03MDAyLDEyICs3MDA2LDEyIEBAIGJv
b2wgUmVuZGVyTGF5ZXI6OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVF
dmVudFJlZ2lvbigpCitib29sIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZl
bnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb24gcmVhc29uKQogewogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYXV0byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0NvbXBvc2l0aW5n
TGF5ZXJGb3JSZXBhaW50KCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRhaW5zRXZlbnRS
ZWdpb24gPSBbJl0gewogICAgICAgICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFwIHRlc3Rpbmcu
CkBAIC03MDE5LDEwICs3MDIzLDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVu
dFJlZ2lvbigpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYgKCFtYWlu
dGFpbnNFdmVudFJlZ2lvbigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNvbiAhPSBF
dmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZElGcmFtZSAmJiAhbWFp
bnRhaW5zRXZlbnRSZWdpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29tcG9z
aXRpbmdMYXllci0+c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKKwor
ICAgICBpZiAocmVhc29uID09IEV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpOb25Db21w
b3NpdGVkSUZyYW1lKSB7CisgICAgICAgICBjb21wb3NpdGluZ0xheWVyLT5yZW5kZXJlcigpLnZp
ZXcoKS5zZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSgpOwor
ICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc2V0dGluZ3MoKS52aXNpYmxlRGVidWdPdmVybGF5UmVn
aW9ucygpICYgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAgICAgICAgY29tcG9zaXRp
bmdMYXllci0+cmVuZGVyZXIoKS52aWV3KCkuc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9z
aXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KCk7CisgICAgICAgICBjb21wb3Np
dGluZ0xheWVyLT5jb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7
CisgICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCmluZGV4IGQxMTM5M2UwN2RlLi4wM2UzMjc1Y2EyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY5NSw3ICs2OTUsNyBAQCBwdWJs
aWM6CiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2
ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBm
cm9tIGZyb250IHRvIGJhY2suCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNl
dCA9IExheW91dFNpemUoKSwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+ID0gUGFpbnRCZWhhdmlv
cjo6Tm9ybWFsLAotICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxs
cHRyLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKTsKKyAgICAgICAg
UmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50
TGF5ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIp
OwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
KTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxi
YXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIE9wdGlv
blNldDxQYWludEJlaGF2aW9yPiwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVs
bHB0cik7CkBAIC05MjQsNyArOTI0LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OwogCi0gICAg
dm9pZCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBlbnVtIGNsYXNzIEV2ZW50UmVnaW9u
SW52YWxpZGF0aW9uUmVhc29uIHsgUGFpbnQsIFN0eWxlLCBOb25Db21wb3NpdGVkSUZyYW1lIH07
CisgICAgYm9vbCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25JbnZhbGlkYXRpb25S
ZWFzb24pOwogCiBwcml2YXRlOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDA4MWQ0Yzc2NDAzLi4wZDJiMGY1MjQ3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2
MTgsMTEgKzE2MTgsMTIgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVn
aW9uKCkKICAgICBpZiAocGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBib29sIG5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVk
SUZyYW1lID0gcmVuZGVyZXIoKS52aWV3KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNv
bXBvc2l0ZWRJRnJhbWUoKTsKICAgICBib29sIGhhc1RvdWNoQWN0aW9uRWxlbWVudHMgPSBmYWxz
ZTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGhhc1RvdWNoQWN0aW9uRWxlbWVudHMg
PSByZW5kZXJlcigpLmRvY3VtZW50KCkubWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFj
dGlvbigpOwogI2VuZGlmCi0gICAgaWYgKCFoYXNUb3VjaEFjdGlvbkVsZW1lbnRzKSB7CisgICAg
aWYgKCFoYXNUb3VjaEFjdGlvbkVsZW1lbnRzICYmICFuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9y
Tm9uQ29tcG9zaXRlZElGcmFtZSkgewogICAgICAgICBpZiAobV9vd25pbmdMYXllci5pc1JlbmRl
clZpZXdMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjY2LDYgKzE2NjcsOSBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpb24oKQogCiAgICAgaWYg
KG1fc2Nyb2xsZWRDb250ZW50c0xheWVyKQogICAgICAgICB1cGRhdGVFdmVudFJlZ2lvbkZvckxh
eWVyKCptX3Njcm9sbGVkQ29udGVudHNMYXllcik7CisKKyAgICBpZiAobmVlZHNFdmVudFJlZ2lv
blVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUpCisgICAgICAgIHJlbmRlcmVyKCkudmlldygp
LnNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKGZhbHNlKTsK
IH0KICNlbmRpZgogCkBAIC0yNzgxLDcgKzI3ODUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6c2V0Q29udGVudHNOZWVkRGlzcGxheShHcmFwaGljc0xheWVyOjpTaG91bGRDbGlwVG9MYXll
cgogICAgIGlmICghbV9vd25pbmdMYXllci5pc1JlbmRlclZpZXdMYXllcigpKQogICAgICAgICBt
X293bmluZ0xheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7CiAK
LSAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVFdmVudFJlZ2lvbigpOworICAgIG1fb3duaW5n
TGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKFJlbmRlckxheWVyOjpFdmVudFJlZ2lvbkludmFs
aWRhdGlvblJlYXNvbjo6UGFpbnQpOwogCiAgICAgYXV0byYgZnJhbWVWaWV3ID0gcmVuZGVyZXIo
KS52aWV3KCkuZnJhbWVWaWV3KCk7CiAgICAgaWYgKG1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5
ZXIgJiYgZnJhbWVWaWV3LmlzVHJhY2tpbmdSZXBhaW50cygpKQpAQCAtMjgyMSw3ICsyODI1LDcg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgciwgR3JhcGgKICAgICBpZiAoIW1fb3duaW5nTGF5ZXIuaXNSZW5k
ZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5n
Q29uZmlndXJhdGlvblVwZGF0ZSgpOwogCi0gICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZl
bnRSZWdpb24oKTsKKyAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5k
ZXJMYXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246OlBhaW50KTsKIAogICAgIEZs
b2F0UmVjdCBwaXhlbFNuYXBwZWRSZWN0Rm9yUGFpbnRpbmcgPSBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKHIsIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRl
cmVyKCkudmlldygpLmZyYW1lVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAzYTAzOGNlOGEzYS4uNzg3MzA1NDgy
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC04NTgsNiArODU4LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRlCiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZSgmcGFnZSgp
KTsKIAorICAgIGlmIChtX3JlbmRlclZpZXcubmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRp
bmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KCkpIHsKKyAgICAgICAgbV9yZW5kZXJW
aWV3LnJlcGFpbnRSb290Q29udGVudHMoKTsKKyAgICAgICAgbV9yZW5kZXJWaWV3LnNldE5lZWRz
UmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25s
eShmYWxzZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM3MjUsNiArMzcz
MCwxNCBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVy
Rm9yRm9vdGVyKGJvb2wgd2FudHNMYXllcikKIAogI2VuZGlmCiAKK2Jvb2wgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29t
cG9zaXRpbmdMYXllckZvclJlcGFpbnQoKSBjb25zdAoreworICAgIC8vIEV2ZW50IHJlZ2lvbnMg
YXJlIG9ubHkgdXBkYXRlZCBvbiBjb21wb3NpdGluZyBsYXllcnMuIE5vbi1jb21wb3NpdGVkIGxh
eWVycyBtdXN0CisgICAgLy8gZGVsZWdhdGUgdG8gdGhlaXIgZW5jbG9zaW5nIGNvbXBvc2l0aW5n
IGxheWVyIGZvciByZXBhaW50IHRvIHVwZGF0ZSB0aGUgZXZlbnQgcmVnaW9uCisgICAgLy8gZm9y
IGVsZW1lbnRzIGluc2lkZSB0aGVtLgorICAgIHJldHVybiAhbV9yZW5kZXJWaWV3LmlzQ29tcG9z
aXRlZCgpOworfQorCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dmlld0hhc1RyYW5zcGFy
ZW50QmFja2dyb3VuZChDb2xvciogYmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIGlmICht
X3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaXNUcmFuc3BhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggOTQ2ZGZjNGEy
NmUuLjdjZTYzOGM5NDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCkBAIC0zNTgsNiArMzU4LDggQEAgcHVibGljOgogCiAgICAgYm9v
bCB2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IgPSBu
dWxscHRyKSBjb25zdDsKIAorICAgIGJvb2wgdmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdp
b25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkgY29uc3Q7CisKICAgICBi
b29sIGhhc05vbk1haW5MYXllcnNXaXRoVGlsZWRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllcnNXaXRoVGlsZWRCYWNraW5nQ291bnQ7IH0KIAogICAgIE9wdGlvblNldDxDb21wb3NpdGlu
Z1JlYXNvbj4gcmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDBj
YTJkYTA5Mjc0Li41ZTM2ZDFhNzYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJh
cjo6c3R5bGVDaGFuZ2VkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwogfQogCi12b2lk
IFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2
b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ks
IEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKGNvbnRleHQuaW52YWxpZGF0aW5nQ29u
dHJvbFRpbnRzKCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAppbmRleCBlYTM1OGRmZGJiYy4uYmEx
NzIzNWIxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBX
aWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpIG92ZXJyaWRlOworICAgIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDkxNGViYmM3ZGQzLi5lNjRhMDJiNDc2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC02OCw2ICs2OCwxMiBAQCBwdWJs
aWM6CiAKICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVW
aWV3OyB9CiAKKyAgICBib29sIG5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJV
cGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBhaW50
SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5OyB9Owor
ICAgIHZvaWQgc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZv
ckRlYnVnT3ZlcmxheXNPbmx5KGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNSZXBhaW50SGFj
a0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5ID0gdmFsdWU7
IH0KKworICAgIGJvb2wgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3Np
dGVkSUZyYW1lOyB9CisgICAgdm9pZCBzZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29t
cG9zaXRlZElGcmFtZShib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzRXZlbnRSZWdpb25VcGRh
dGVGb3JOb25Db21wb3NpdGVkSUZyYW1lID0gdmFsdWU7IH0KKwogICAgIE9wdGlvbmFsPExheW91
dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4
dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBhaW50Um9vdENvbnRlbnRzKCk7CiAgICAg
dm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CkBAIC0y
NTUsNiArMjYxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU29mdHdhcmVGaWx0ZXJzIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fdXNlc0ZpcnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc1Jl
cGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9z
aXRlZElGcmFtZSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFJlbmRlckVsZW1lbnQqLCBWZWN0
b3I8Q2FjaGVkSW1hZ2UqPj4gbV9yZW5kZXJlcnNXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb247CiAg
ICAgSGFzaFNldDxSZW5kZXJFbGVtZW50Kj4gbV92aXNpYmxlSW5WaWV3cG9ydFJlbmRlcmVyczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2Y2ZjMzYjc1
MmIuLjczOWU1YjYyYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTI0Niw4ICsyNDYsMTggQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAgICBwYWlu
dFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgIH0KKworICAgIGlmIChwYWludElu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm07CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudFBhaW50T2Zmc2V0KTsKKyAg
ICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVzaFRyYW5zZm9ybSh0cmFuc2Zv
cm0pOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jbG9zaW5n
L2ludGVncmFsIHNuYXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBpeGVs
IHNuYXBwZWQuCi0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBw
ZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nl
c3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3Np
YmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZElu
dFJlY3QocGFpbnRSZWN0KSwgcGFpbnRJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0Zv
cldpZGdldHMgPyBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVP
cmlnaW5Pbmx5IDogV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4s
IHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworCisgICAgaWYgKHBhaW50SW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpCisgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnBv
cFRyYW5zZm9ybSgpOwogCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXdpZGdldFBhaW50T2Zmc2V0KTsK
QEAgLTI4Miw3ICsyOTIsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlOjpTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpKQogICAgICAgICBwYWludE91
dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkp
OwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kKQor
ICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSB7CkBAIC0zMDQsNiArMzE0LDkg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVz
KCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCisgICAgaWYgKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKKyAgICAgICAgcmV0dXJu
OworCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVj
dGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmludGlu
ZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1dGUs
IG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjYwNWEyODkxM2IuLmM3ZmJhZWNhMjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAgdmlld0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9CiAK
LXZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kp
Cit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0
aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVs
ZW1lbnQ6OlJlc3RhcnRpbmcpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4NGQ0MjY0Y2UwZC4uMDNhOTFiY2I5
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
QEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6V2lkZ2V0CiAg
ICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5LCBXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGlu
dmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBv
dmVycmlkZTsKLS0gCjIuMjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395774</attachid>
            <date>2020-04-08 00:07:18 -0700</date>
            <delta_ts>2020-04-08 00:24:25 -0700</delta_ts>
            <desc>For the bots</desc>
            <filename>ForBots.patch</filename>
            <type>text/plain</type>
            <size>51460</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA4Yjg1YjkwY2RjMDRlY2YxZDI3Njk5ODE0YzhjNDU3YjA0YTExNjY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDggQXByIDIwMjAgMDA6MDY6MjUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBTaG91bGQg
ZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkCiBpZnJhbWVz
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEKIDxyZGFyOi8v
cHJvYmxlbS82MTMyMzU1OD4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL1dl
YkNvcmU6CgpUZXN0czogcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAogICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gt
YWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCiAgICAgICBwb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCgoqIGRvbS9Eb2N1bWVu
dC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFt
ZSk6IEFkZGVkLiBUcnkgdG8gaW52YWxpZGF0ZSB0aGUgZXZlbnQgcmVnaW9uLgpUaGlzIG1heSBm
YWlsIGlmIHRoZSBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIGFuIGVuY2xvc2luZyBjb21wb3NpdGlu
ZyBsYXllciBmb3IgcmVwYWludCAoZS5nLiBuZXN0ZWQKY29tcG9zaXRlZCBpZnJhbWVzIC0gc2Vl
IHRlc3QgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1p
ZnJhbWUuaHRtbCkuIElmCnRoaXMgaGFwcGVucyB0aGVuIHJlY3Vyc2l2ZSBvbiBvdXIgb3duZXIg
ZWxlbWVudCdzIGRvY3VtZW50LiBSZWN1cnNpb24gaXMgdXNlZCBpbnN0ZWFkIG9mIGEgbG9vcAp0
byBmdXR1cmUgcHJvb2YgdGhpcyBjb2RlIGZvciBvdXQtb2YtcHJvY2VzcyAoT09QKSBpZnJhbWVz
LCB3aGljaCB3aWxsIGxpa2VseSBpbnRyb2R1Y2UgZG9jdW1lbnQgcHJveHkgb2JqZWN0cy4KKiBk
b20vRG9jdW1lbnQuaDoKKiBwYWdlL0ZyYW1lLmNwcDoKKFdlYkNvcmU6OkZyYW1lOjppbnZhbGlk
YXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKTogQWRkZWQuIENoZWNrIGlmIG91ciBkb2N1
bWVudCBoYXMgYW55IGVsZW1lbnRzIHdpdGgKYSBub24tYXV0byB0b3VjaC1hY3Rpb24uIElmIGl0
IGRvZXMgdGhlbiBhc2sgdGhlIGNvbXBvc2l0b3IgaWYgdGhlIGVuY2xvc2luZyBjb21wb3NpdGlu
ZyBsYXllciBmb3IKcmVwYWludCdzIGV2ZW50IHJlZ2lvbiBtdXN0IGJlIGludmFsaWRhdGVkIC0g
aXQgd2lsbCBvbmx5IHJlcGx5IHRydWUgaWYgdGhpcyBpcyBhIG5vbi1jb21wb3NpdGVkIGlmcmFt
ZS4KSWYgaXQgZG9lcyB0aGVuIGZvcndhcmQgdGhpcyBpbnZhbGlkYXRpb24gcmVxdWVzdCB0byB0
aGUgZG9jdW1lbnQuIFRoZSByZWFzb24gSSBkZWxlZ2F0ZSB0byB0aGUgZG9jdW1lbnQKaW5zdGVh
ZCBvZiBoYW5kbGluZyB0aGUgbG9naWMgaGVyZSBpcyB0byBmdXR1cmUgcHJvb2YgdGhpcyBjb2Rl
IGZvciBPT1AgaWZyYW1lcy4KKiBwYWdlL0ZyYW1lLmg6CiogcGFnZS9GcmFtZVZpZXcuY3BwOgoo
V2ViQ29yZTo6RnJhbWVWaWV3OjpkaWRMYXlvdXQpOiBDYWxsIEZyYW1lOjppbnZhbGlkYXRlQ29u
dGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKCkuIEFsc28gd2hpbGUKSSBhbSBoZXJlIHRha2Ugb3V0
IGEgcmVmIG9uIHRoZSBkb2N1bWVudCB0byBlbnN1cmUgaXQgbGl2ZXMgdGhyb3VnaCB0aGUgZW5k
IG9mIHRoaXMgZnVuY3Rpb24sIGluY2x1ZGluZwp0aHJvdWdoIHRoZSBhY2Nlc3NpYmlsaXR5J3Mg
cG9zdE5vdGlmaWNhdGlvbigpIGNvZGUgdGhhdCBjYWxscyBvdXQgdG8gdGhlIGVtYmVkZGluZyBj
bGllbnQuCgooV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKiBwYWdlL0ZyYW1l
Vmlldy5oOgoqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgooV2ViQ29yZTo6U2Nyb2xsVmlldzo6
cGFpbnQpOgoqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
OgooV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWludCk6CiogcGxhdGZvcm0vU2Nyb2xsYmFyLmg6Ciog
cGxhdGZvcm0vV2lkZ2V0LmNwcDoKKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgoqIHBsYXRmb3Jt
L1dpZGdldC5oOgoqIHBsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW06CihXZWJDb3JlOjpXaWRnZXQ6
OnBhaW50KToKKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgooV2ViQ29yZTo6V2lkZ2V0Ojpw
YWludCk6CiogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpwYWludE9iamVjdCk6ClBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2guCgoqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxl
V2lsbENoYW5nZSk6IFVwZGF0ZSBjb2RlIG5vdyB0aGF0IFJlbmRlTGF5ZXI6OmludmFsaWRhdGVF
dmVudFJlZ2lvbigpCnRha2VzIGEgcmVhc29uLgoqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOiBQYXNzIHRoZSBFdmVudFJlZ2lvbkNvbnRl
eHQgdGhyb3VnaC4gSWYgYXJlIHBhc3NlZCBvbmUgdGhlbiB1cGRhdGUKcGFpbnQgZmxhZ3MgdG8g
Y29sbGVjdCBldmVudCByZWdpb24uCihXZWJDb3JlOjpSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2
ZW50UmVnaW9uKTogQ2hhbmdlZCByZXR1cm4gdmFsdWUgZnJvbSB2b2lkIHRvIGJvb2wgc28gYXMg
dG8gaW5kaWNhdGUKdG8gdGhlIGNhbGxlciB3aGV0aGVyIHRoZSBldmVudCByZWdpb24gd2FzIGFj
dHVhbGx5IGludmFsaWRhdGVkLiBBbHNvIG1hZGUgaXQgdGFrZSBhbiBhcmd1bWVudCBhcwp0byB0
aGUgcmVhc29uIGZvciB0aGUgaW52YWxpZGF0aW9uLiBJZiBpbnZhbGlkYXRpb24gaXMgZHVlIHRv
IGEgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lIHRoZW4gc2V0cyBzb21lCnN0YXRlIGFuZCBzY2hlZHVs
ZSBhIGNvbXBvc2l0aW5nIGxheWVyIHVwZGF0ZS4KCiogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHA6CihXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9u
KToKKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheSk6
CihXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJl
Y3QpOgoqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgooV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6ClBhc3MgYW4gRXZl
bnRSZWdpb25Db250ZXh0IHRocm91Z2gKCihXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xh
eWVyRm9yUmVwYWludCBjb25zdCk6IEFkZGVkLgoKKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmg6CiogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CihXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXI6OnBhaW50KToKKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CiogcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaDoKUGFzcyBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdGhyb3VnaC4K
CiogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBh
aW50Q29udGVudHMpOiBUcmFuc2xhdGUgdGhlIGV2ZW50IHJlZ2lvbiBieSBvdXIgY29udGVudCBw
YWludCBvZmZzZXQuCihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KTogVXBkYXRlIGZvciBF
dmVudFJlZ29uLgoKU291cmNlL1dlYktpdDoKClBhc3MgRXZlbnRSZWdpb25Db250ZXh0IHRocm91
Z2guIEl0IGlzIHVudXNlZCBhcyBpdCdzIG5vdCBhcHBsaWNhYmxlIGZvciBwbHVnaW4gcGFpbnRp
bmcuCgoqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKFdlYktpdDo6UGx1Z2lu
Vmlldzo6cGFpbnQpOgoqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CgpMYXlvdXRU
ZXN0czoKCkFkZCBtb3JlIHRlc3RzLgoKKiBwb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMt
dG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIHBv
aW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZy
YW1lLmh0bWw6IEFkZGVkLgoqIHBvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rp
b24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWw6IEFkZGVkLgoqIHBvaW50ZXJldmVudHMvaW9zL3Rv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBwb2lu
dGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWw6IEFkZGVk
LgoqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZy
YW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9u
LW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKwogLi4udWNoLWFjdGlv
bi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0IHwgMjIgKysrKysKIC4uLm1hdGljLXRv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbCB8IDIyICsrKysrCiAuLi4vdG91Y2gt
YWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sICAgICAgfCAgNiArKwogLi4udWNoLWFjdGlv
bi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0IHwgMjIgKysrKysKIC4uLi9pb3MvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sICB8IDIxICsrKysrCiAuLi5pb24tbm9u
ZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQgfCAyMiArKysrKwogLi4ub3VjaC1h
Y3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sIHwgMjIgKysrKysKIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICB8IDgyICsrKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgICAgICAgICAgICAgICB8IDEz
ICsrKwogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggICAgICAgICAgICAgICAgIHwgIDEg
KwogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgICAgICAgICAgICAgICAgIHwgMTQgKysr
KwogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oICAgICAgICAgICAgICAgICAgIHwgIDIgKwog
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwICAgICAgICAgICAgIHwgMTcgKystLQog
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCAgICAgICAgICAgICAgIHwgIDMgKy0KIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwICAgICAgICB8ICA2ICstCiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggICAgICAgICAgfCAgNSArLQogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwICAgICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2lkZ2V0LmggICAgICAgICAgICAgIHwgIDMgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgIHwgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcCAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwICAgICAgfCAyNCArKysrLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oICAgICAgICB8ICA1ICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcCAgfCAxMCArKy0KIC4uLi9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcCAgICAgICB8IDEzICsrKwogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oIHwgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5jcHAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuaCAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oICAgICAgICAgfCAgOCArKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAgICAgIHwgMTkgKysrKy0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICB8IDE0ICsrKysKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwICB8ICAyICstCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmggfCAgMiArLQogMzcgZmlsZXMgY2hhbmdlZCwgMzc5IGluc2VydGlvbnMoKyks
IDQwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BvaW50ZXJldmVudHMv
aW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9yZXNvdXJjZXMv
dG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlm
cmFtZS1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9u
ZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVz
dGVkLWlmcmFtZS5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkYzNmZTJmNTYyLi41MDJlZjAyYmZkYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDIwLTA0LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5zaWRl
IG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1v
cmUgdGVzdHMuCisKKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3Jlc291
cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rp
b24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVu
dHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUt
aW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDMtMjUgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFNob3VsZCBzaG93IGlu
cHV0IHZpZXcgd2hlbiBiZWNhbWUgZmlyc3QgcmVzcG9uZGVyIGlmIGtleWJvYXJkIHdhcyBzaG93
aW5nIHdoZW4gdGhlIHZpZXcgd2FzIHJlc2lnbmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlm
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFt
bWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmNzM0MzQ1MDlkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNo
LWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAK
KworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAwLjAw
IDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5k
cyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3ND
b250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQg
cmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAg
ICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAo
cmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAgICAg
KQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2lu
dGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNo
LWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uOTVjODk0NTZmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRl
LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIgb25s
b2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIHRlc3RGcmFtZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2
Iikuc3R5bGUudG91Y2hBY3Rpb24gPSAibm9uZSI7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChk
b2N1bWVudCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfRVZFTlRfUkVHSU9OIHwgaW50
ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUk9PVF9MQVlFUl9QUk9QRVJUSUVTKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL2lvcy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uYTk3ODMwOGJjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL2lvcy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
PGlmcmFtZSBzcmNkb2M9IjxkaXYgc3R5bGU9J3RvdWNoLWFjdGlvbjogbm9uZTsgd2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrJz48L2Rpdj4iIG9ubG9h
ZD0id2luZG93LnBhcmVudCAmJiB3aW5kb3cucGFyZW50LmR1bXBSZWdpb24oKSI+PC9pZnJhbWU+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRz
L2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43Zjcz
NDM0NTA5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9z
L3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMg
ODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
KGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAo
ZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAo
ZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQor
ICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAg
ICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
aWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNiNzRl
ZWMyNzAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3Mv
dG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3Jj
ZG9jPSI8ZGl2IHN0eWxlPSd0b3VjaC1hY3Rpb246IG5vbmU7IHdpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsgYm9yZGVyOjFweCBzb2xpZCBibGFjayc+PC9kaXY+IiBvbmxvYWQ9InJ1blRlc3Qo
KSI+PC9pZnJhbWU+Cis8cHJlIGlkPSJyZXN1bHRzIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gaW50ZXJu
YWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVE
RVNfRVZFTlRfUkVHSU9OIHwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUk9PVF9MQVlF
Ul9QUk9QRVJUSUVTKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1p
bnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZl
bnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjczMzNhZjhmZGU5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0
aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAw
LjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJv
dW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJh
d3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZl
bnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAg
ICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAg
ICAocmVjdCAoMjgsMjgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5z
aWRlLW5lc3RlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uNTM1MWYyODcwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCkBA
IC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUg
aWQ9InRlc3RGcmFtZSIgc3JjPSJyZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlm
cmFtZS5odG1sIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBkdW1wUmVnaW9u
KCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgcmVzdWx0cy5pbm5lclRl
eHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJf
VFJFRV9JTkNMVURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURF
U19ST09UX0xBWUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ1NTQ5NzQzNTAzLi4xZmIxZGEwYzFlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDg1IEBACisyMDIwLTA0LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5z
aWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEzMjM1
NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHM6IHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlcmV2ZW50
cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRtbAorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnZh
bGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKTogQWRkZWQuIFRyeSB0byBpbnZhbGlkYXRlIHRo
ZSBldmVudCByZWdpb24uCisgICAgICAgIFRoaXMgbWF5IGZhaWwgaWYgdGhlIGRvY3VtZW50IGRv
ZXMgbm90IGhhdmUgYW4gZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIGZvciByZXBhaW50IChl
LmcuIG5lc3RlZAorICAgICAgICBjb21wb3NpdGVkIGlmcmFtZXMgLSBzZWUgdGVzdCBwb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sKS4g
SWYKKyAgICAgICAgdGhpcyBoYXBwZW5zIHRoZW4gcmVjdXJzaXZlIG9uIG91ciBvd25lciBlbGVt
ZW50J3MgZG9jdW1lbnQuIFJlY3Vyc2lvbiBpcyB1c2VkIGluc3RlYWQgb2YgYSBsb29wCisgICAg
ICAgIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIG91dC1vZi1wcm9jZXNzIChPT1ApIGlm
cmFtZXMsIHdoaWNoIHdpbGwgbGlrZWx5IGludHJvZHVjZSBkb2N1bWVudCBwcm94eSBvYmplY3Rz
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZO
ZWVkZWQpOiBBZGRlZC4gQ2hlY2sgaWYgb3VyIGRvY3VtZW50IGhhcyBhbnkgZWxlbWVudHMgd2l0
aAorICAgICAgICBhIG5vbi1hdXRvIHRvdWNoLWFjdGlvbi4gSWYgaXQgZG9lcyB0aGVuIGFzayB0
aGUgY29tcG9zaXRvciBpZiB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIGZvcgorICAg
ICAgICByZXBhaW50J3MgZXZlbnQgcmVnaW9uIG11c3QgYmUgaW52YWxpZGF0ZWQgLSBpdCB3aWxs
IG9ubHkgcmVwbHkgdHJ1ZSBpZiB0aGlzIGlzIGEgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lLgorICAg
ICAgICBJZiBpdCBkb2VzIHRoZW4gZm9yd2FyZCB0aGlzIGludmFsaWRhdGlvbiByZXF1ZXN0IHRv
IHRoZSBkb2N1bWVudC4gVGhlIHJlYXNvbiBJIGRlbGVnYXRlIHRvIHRoZSBkb2N1bWVudAorICAg
ICAgICBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZSBsb2dpYyBoZXJlIGlzIHRvIGZ1dHVyZSBwcm9v
ZiB0aGlzIGNvZGUgZm9yIE9PUCBpZnJhbWVzLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmRpZExheW91dCk6IENhbGwgRnJhbWU6OmludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZO
ZWVkZWQoKS4gQWxzbyB3aGlsZQorICAgICAgICBJIGFtIGhlcmUgdGFrZSBvdXQgYSByZWYgb24g
dGhlIGRvY3VtZW50IHRvIGVuc3VyZSBpdCBsaXZlcyB0aHJvdWdoIHRoZSBlbmQgb2YgdGhpcyBm
dW5jdGlvbiwgaW5jbHVkaW5nCisgICAgICAgIHRocm91Z2ggdGhlIGFjY2Vzc2liaWxpdHkncyBw
b3N0Tm90aWZpY2F0aW9uKCkgY29kZSB0aGF0IGNhbGxzIG91dCB0byB0aGUgZW1iZWRkaW5nIGNs
aWVudC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyLmg6CisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1dpZGdldC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpXaWRn
ZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludE9iamVjdCk6Cisg
ICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2guCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjpzdHlsZVdpbGxDaGFuZ2UpOiBVcGRhdGUgY29kZSBub3cgdGhhdCBSZW5kZUxheWVyOjpp
bnZhbGlkYXRlRXZlbnRSZWdpb24oKQorICAgICAgICB0YWtlcyBhIHJlYXNvbi4gCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludCk6IFBhc3MgdGhlIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJZiBhcmUg
cGFzc2VkIG9uZSB0aGVuIHVwZGF0ZQorICAgICAgICBwYWludCBmbGFncyB0byBjb2xsZWN0IGV2
ZW50IHJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZl
bnRSZWdpb24pOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBmcm9tIHZvaWQgdG8gYm9vbCBzbyBhcyB0
byBpbmRpY2F0ZQorICAgICAgICB0byB0aGUgY2FsbGVyIHdoZXRoZXIgdGhlIGV2ZW50IHJlZ2lv
biB3YXMgYWN0dWFsbHkgaW52YWxpZGF0ZWQuIEFsc28gbWFkZSBpdCB0YWtlIGFuIGFyZ3VtZW50
IGFzCisgICAgICAgIHRvIHRoZSByZWFzb24gZm9yIHRoZSBpbnZhbGlkYXRpb24uIElmIGludmFs
aWRhdGlvbiBpcyBkdWUgdG8gYSBub24tY29tcG9zaXRlZCBpZnJhbWUgdGhlbiBzZXRzIHNvbWUK
KyAgICAgICAgc3RhdGUgYW5kIHNjaGVkdWxlIGEgY29tcG9zaXRpbmcgbGF5ZXIgdXBkYXRlLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3Bs
YXlJblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3Np
dGluZ0xheWVycyk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2gK
KworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3TmVlZHNUb0lu
dmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQg
Y29uc3QpOiBBZGRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAg
ICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6
OnBhaW50Q29udGVudHMpOiBUcmFuc2xhdGUgdGhlIGV2ZW50IHJlZ2lvbiBieSBvdXIgY29udGVu
dCBwYWludCBvZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KTog
VXBkYXRlIGZvciBFdmVudFJlZ29uLgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFj
IENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDNlZjk0NTkw
MGJhLi5jNzczMDNhNTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MjM0LDYgKzQy
MzQsMTkgQEAgdm9pZCBEb2N1bWVudDo6ZWxlbWVudEluQWN0aXZlQ2hhaW5EaWREZXRhY2goRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgbV9hY3RpdmVFbGVtZW50ID0gbV9hY3RpdmVFbGVtZW50
LT5wYXJlbnRFbGVtZW50KCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVFdmVudFJl
Z2lvbnNGb3JJRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1
dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5n
TGF5ZXIoKSkgeworICAgICAgICBpZiAobGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5k
ZXJMYXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5vbkNvbXBvc2l0ZWRJRnJh
bWUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYXV0byogb3duZXJFbGVt
ZW50ID0gdGhpcy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIG93bmVyRWxlbWVudC0+ZG9jdW1l
bnQoKS5pbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKCpvd25lckVsZW1lbnQpOworfQor
CiB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpCiB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggODM5YWZjZDU4YmEuLmU3OTBhOGUxMmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtMTE0MCw2ICsxMTQwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpOwor
ICAgIHZvaWQgaW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZShIVE1MRnJhbWVPd25lckVs
ZW1lbnQmKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAwNTFmZGIzZWU1Yy4uNGEyMWNmODZhOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0zMDQsNiArMzA0LDIwIEBAIHZvaWQgRnJhbWU6OnNldERvY3VtZW50
KFJlZlB0cjxEb2N1bWVudD4mJiBuZXdEb2N1bWVudCkKICAgICBtX2RvY3VtZW50SXNCZWluZ1Jl
cGxhY2VkID0gZmFsc2U7CiB9CiAKK3ZvaWQgRnJhbWU6OmludmFsaWRhdGVDb250ZW50RXZlbnRS
ZWdpb25zSWZOZWVkZWQoKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoIW1fcGFnZSB8
fCAhbV9kb2MpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fZG9jLT5tYXlIYXZlRWxlbWVu
dHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1f
ZG9jLT5yZW5kZXJWaWV3KCktPmNvbXBvc2l0b3IoKS52aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVu
dFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChtX293bmVyRWxlbWVudCkKKyAgICAgICAgbV9vd25lckVsZW1lbnQt
PmRvY3VtZW50KCkuaW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZSgqbV9vd25lckVsZW1l
bnQpOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogdm9pZCBG
cmFtZTo6b3JpZW50YXRpb25DaGFuZ2VkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCAyNTIwZTAz
N2E1NC4uYmJkODIyZTE3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMwMyw2ICszMDMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQ
cmV3YXJtTG9jYWxTdG9yYWdlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGludmFsaWRhdGVDb250ZW50
RXZlbnRSZWdpb25zSWZOZWVkZWQoKTsKKwogLy8gPT09PT09PT0KIAogICAgIHZvaWQgc2VsZk9u
bHlSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjNjhmNWQzOGM2ZS4uMjhi
ZTc2ZTBmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyNjEsMTIgKzEyNjEs
MTUgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxh
eW91dFJvb3QpCiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyTGF5b3V0KCk7CiAK
KyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBm
cmFtZSgpLmludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKTsKKwogI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKLSAgICBpZiAo
YXV0byogY2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgp
KQorICAgIGlmIChhdXRvKiBjYWNoZSA9IGRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUo
KSkKICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24obGF5b3V0Um9vdC5nZXQoKSwgQVhP
YmplY3RDYWNoZTo6QVhMYXlvdXRDb21wbGV0ZSk7CiAjZW5kaWYKIAotICAgIGZyYW1lKCkuZG9j
dW1lbnQoKS0+aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKKyAgICBkb2N1
bWVudC0+aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKIAogICAgIHVwZGF0
ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKQEAgLTEyNzQsMTAgKzEyNzcsMTAgQEAg
dm9pZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxheW91dFJv
b3QpCiAKICAgICBoYW5kbGVEZWZlcnJlZFNjcm9sbGJhcnNVcGRhdGVBZnRlckRpcmVjdGlvbkNo
YW5nZSgpOwogCi0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERv
Y3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQorICAgIGlmIChkb2N1bWVudC0+aGFz
TGlzdGVuZXJUeXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQogICAgICAg
ICB1cGRhdGVPdmVyZmxvd1N0YXR1cyhsYXlvdXRXaWR0aCgpIDwgY29udGVudHNXaWR0aCgpLCBs
YXlvdXRIZWlnaHQoKSA8IGNvbnRlbnRzSGVpZ2h0KCkpOwogCi0gICAgZnJhbWUoKS5kb2N1bWVu
dCgpLT5tYXJrZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOworICAgIGRvY3Vt
ZW50LT5tYXJrZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOwogfQogCiBib29s
IEZyYW1lVmlldzo6c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdl
KCkKQEAgLTQyMjUsNyArNDIyOCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSCiAgICAgfQog
fQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBz
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdp
b25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJv
b2wgZmlsbFdpdGhXYXJuaW5nQ29sb3I7CkBAIC00Mjg4LDggKzQyOTEsOCBAQCB2b2lkIEZyYW1l
Vmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdAogICAgIHdoaWxlIChpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSAmJiAh
ZG93bmNhc3Q8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpLmZpcnN0TGluZUJveCgpKQogICAgICAg
ICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKIAotICAgIHJvb3RMYXllci0+cGFpbnQo
Y29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVy
ZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFj
Y2Vzc2libGVPcmlnaW5Pbmx5KTsKLSAgICBpZiAocm9vdExheWVyLT5jb250YWluc0RpcnR5T3Zl
cmxheVNjcm9sbGJhcnMoKSkKKyAgICByb290TGF5ZXItPnBhaW50KGNvbnRleHQsIGRpcnR5UmVj
dCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7IH0sIHNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2lu
ID8gUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA6IFJl
bmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25s
eSwgZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICBpZiAocm9vdExheWVyLT5jb250YWluc0RpcnR5
T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQogICAgICAgICByb290
TGF5ZXItPnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0LCBtX3BhaW50
QmVoYXZpb3IsIHJlbmRlcmVyKTsKIAogICAgIGRpZFBhaW50Q29udGVudHMoY29udGV4dCwgZGly
dHlSZWN0LCBwYWludGluZ1N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGJiOTU3
ODVjYzgxLi4xMzNkOTA1OWVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Nyw2ICs1
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNz
IEVsZW1lbnQ7CitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKQEAgLTM1MSw3ICszNTIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVt
YmVkZGVkT2JqZWN0Jik7CiAgICAgdm9pZCByZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJl
bmRlckVtYmVkZGVkT2JqZWN0Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2lu
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNv
bnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAKICAgICBzdHJ1Y3QgUGFpbnRpbmdTdGF0ZSB7CiAg
ICAgICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAyZmQxNWY3YjMwMS4uNDY5NjUxMWQ2MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMjM2LDE0ICsxMjM2
LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKICAgICBjb250ZXh0LmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBpY29uR0NQ
b2ludCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50
UmVnaW9uQ29udGV4dCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICBX
aWRnZXQ6OnBhaW50KGNvbnRleHQsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQ
YWludEludmFsaWRhdGlvbigpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAm
JiAhY29udGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSAmJiAhZXZlbnRSZWdpb25D
b250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVh
V2lsbFBhaW50KCk7CkBAIC0xMjY4LDcgKzEyNjgsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlP
cgogICAgICAgICAgICAgY29udGV4dC5jbGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NE
b2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgICAgIH0KIAotICAgICAgICBwYWludENvbnRlbnRz
KGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KTsK
KyAgICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSwgZXZlbnRSZWdpb25Db250ZXh0KTsKICAgICB9CiAKICNpZiBF
TkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggYjY0YWEzYmEwNjYuLjdhZDUwNDlmMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCkBAIC01Nyw2ICs1Nyw3IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBIb3N0V2luZG93
OwogY2xhc3MgTGVnYWN5VGlsZUNhY2hlOwogY2xhc3MgU2Nyb2xsYmFyOwpAQCAtMzUwLDcgKzM1
MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMg
cGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9s
bGJhcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBXaWRnZXQ6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlP
cmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICAgICB2b2lkIHBh
aW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAv
LyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxp
dHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVu
LgpAQCAtMzg4LDcgKzM4OSw3IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3KCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBo
b3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5jcHAKaW5kZXggMTI5M2UyZDc5MzEuLmE2YjU4MDczODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFNjcm9sbGJhcjo6
dXBkYXRlVGh1bWJQcm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwogfQogCi12b2lkIFNj
cm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFNjcm9s
bGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1h
Z2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29u
dGV4dCopCiB7CiAgICAgaWYgKGNvbnRleHQuaW52YWxpZGF0aW5nQ29udHJvbFRpbnRzKCkgJiYg
dGhlbWUoKS5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggY2I5NTBlMjNmN2EuLmVkMzg5NmM5
ZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODMsNyArODMsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9uKGludCB2aXNpYmxl
U2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGludCBwKSB7IG1f
cHJlc3NlZFBvcyA9IHA7IH0KIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdp
ZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApp
bmRleCBlOWY1ZDgxZTAzYS4uYTdmZTM4MGYzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0
LmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXgg
MWNmOTMxYzEyMjMuLjRmMzAyYWJiZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaApAQCAt
NjAsNiArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKIGNsYXNz
IEV2ZW50OworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRm9udENhc2NhZGU7CiBj
bGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CkBAIC0xMDksNyArMTEwLDcg
QEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHsg
QW55T3JpZ2luLCBBY2Nlc3NpYmxlT3JpZ2luT25seSB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxs
cHRyKTsKICAgICB2b2lkIGludmFsaWRhdGUoKSB7IGludmFsaWRhdGVSZWN0KGJvdW5kc1JlY3Qo
KSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KaW5kZXggM2UwOWMx
MWI0NjMuLjRlMDdiZDc1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2lkZ2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJ
T1MubW0KQEAgLTE0Niw3ICsxNDYsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0ZXJWaWV3KCkg
Y29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkK
K3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAg
aWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCAyNjZiMDQyZTA2Zi4uMzA0NTg4OGEzNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTg2LDcgKzE4
Niw3IEBAIE5TVmlldyAqV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25zdAogICAgIHJldHVybiB2
aWV3OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJ
bnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKICAgICBpZiAocC5wYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IGVjNmZkOGNmZmU2Li5kYmFhNTE3Mzk1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMjU1LDggKzEyNTUsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+
dW5pdGUoYm9yZGVyUmVnaW9uLCBzdHlsZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIE5v
IG5lZWQgdG8gY2hlY2sgZGVzY2VuZGFudHMgaWYgd2UgZG9uJ3QgaGF2ZSBvdmVyZmxvdyBhbmQg
ZG9uJ3QgY29udGFpbiBmbG9hdHMgYW5kIHRoZSBhcmVhIGlzIGFscmVhZHkgY292ZXJlZC4KLSAg
ICAgICAgYm9vbCBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVyZmxvdygp
IHx8IGNvbnRhaW5zRmxvYXRzKCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPmNv
bnRhaW5zKGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVjdCkpOworICAgICAgICBib29sIG5lZWRz
VHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9h
dHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5n
SW50UmVjdChib3JkZXJSZWN0KSkgfHwgdmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JO
b25Db21wb3NpdGVkSUZyYW1lKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
bmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzIHx8IGRv
Y3VtZW50KCkubWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggODc3ZjQ4
MDZhN2MuLjVlYTA5YTUwNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdp
bGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXcKICAg
ICAgICAgaWYgKG5lZWRzSW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkpIHsKICAgICAgICAgICAgIC8v
IFVzdWFsbHkgdGhlIGV2ZW50IHJlZ2lvbiBnZXRzIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YgcGFp
bnQgaW52YWxpZGF0aW9uLiBIZXJlIHdlIG5lZWQgdG8gcmVxdWVzdCBhbiB1cGRhdGUgZXhwbGlj
aXRseS4KICAgICAgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGVuY2xvc2luZ0xheWVyKCkpCi0g
ICAgICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbigpOworICAgICAgICAg
ICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVn
aW9uSW52YWxpZGF0aW9uUmVhc29uOjpTdHlsZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxlLm91dGxpbmVTaXpl
KCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyMWY1MmI5N2Q3Zi4uYjkxMGNiMWRl
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWRvYmUuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2Fw
ZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KQEAgLTQyMDQsMTEgKzQyMDQsMTUgQEAgYm9v
bCBSZW5kZXJMYXllcjo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdy
YW51bGFyaXR5IGdyYW51bGFyaXQKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbChk
aXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1h
Z2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50
QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwg
T3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5IHBhaW50UG9saWN5KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRT
aXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZp
b3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJG
bGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHBhaW50UG9saWN5LCBF
dmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uQ29udGV4dCkKIHsKICAgICBPdmVybGFwVGVz
dFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKIAogICAgIExheWVyUGFpbnRpbmdJbmZv
IHBhaW50aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3QpLCBwYWludEJl
aGF2aW9yLCBzdWJwaXhlbE9mZnNldCwgc3VidHJlZVBhaW50Um9vdCwgJm92ZXJsYXBUZXN0UmVx
dWVzdHMsIHBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2li
bGVPcmlnaW5Pbmx5KTsKKyAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgICAgIHBh
aW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQgPSBldmVudFJlZ2lvbkNvbnRleHQ7CisgICAg
ICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyQ29sbGVjdGluZ0V2ZW50
UmVnaW9uKTsKKyAgICB9CiAgICAgcGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBh
aW50RmxhZ3MpOwogCiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBvdmVybGFwVGVzdFJlcXVlc3Rz
LmtleXMoKSkKQEAgLTcwMDIsMTIgKzcwMDYsMTIgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNUcmFu
c3BhcmVudFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkKK2Jvb2wgUmVu
ZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbihFdmVudFJlZ2lvbkludmFsaWRhdGlvblJl
YXNvbiByZWFzb24pCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvKiBjb21w
b3NpdGluZ0xheWVyID0gZW5jbG9zaW5nQ29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQoKTsKICAg
ICBpZiAoIWNvbXBvc2l0aW5nTGF5ZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYXV0byBtYWludGFpbnNFdmVudFJlZ2lvbiA9IFsmXSB7CiAgICAgICAg
IC8vIFVJIHNpZGUgc2Nyb2xsIG92ZXJsYXAgdGVzdGluZy4KQEAgLTcwMTksMTAgKzcwMjMsMTgg
QEAgdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH07CiAKLSAgICBpZiAoIW1haW50YWluc0V2ZW50UmVnaW9uKCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAocmVhc29uICE9IEV2ZW50UmVnaW9uSW52YWxpZGF0aW9u
UmVhc29uOjpOb25Db21wb3NpdGVkSUZyYW1lICYmICFtYWludGFpbnNFdmVudFJlZ2lvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb21wb3NpdGluZ0xheWVyLT5zZXROZWVkc0Nv
bXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOworCisgICAgIGlmIChyZWFzb24gPT0gRXZl
bnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5vbkNvbXBvc2l0ZWRJRnJhbWUpIHsKKyAgICAg
ICAgIGNvbXBvc2l0aW5nTGF5ZXItPnJlbmRlcmVyKCkudmlldygpLnNldE5lZWRzRXZlbnRSZWdp
b25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKCk7CisgICAgICAgICBpZiAocmVuZGVyZXIo
KS5zZXR0aW5ncygpLnZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zKCkgJiBOb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbikKKyAgICAgICAgICAgICBjb21wb3NpdGluZ0xheWVyLT5yZW5kZXJlcigpLnZp
ZXcoKS5zZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVi
dWdPdmVybGF5c09ubHkoKTsKKyAgICAgICAgIGNvbXBvc2l0aW5nTGF5ZXItPmNvbXBvc2l0b3Io
KS5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUoKTsKKyAgICAgfQorICAgIHJldHVybiB0
cnVlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5k
ZXggZDExMzkzZTA3ZGUuLjAzZTMyNzVjYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaApAQCAtNjk1LDcgKzY5NSw3IEBAIHB1YmxpYzoKICAgICAvLyBmcm9udC4gIFRo
ZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2UgZXZlbnRzIGJ5IHdhbGtpbmcKICAgICAv
LyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50IGZyb20gZnJvbnQgdG8gYmFjay4KICAg
ICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJl
Y3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0ID0gTGF5b3V0U2l6ZSgpLCBPcHRp
b25TZXQ8UGFpbnRCZWhhdmlvcj4gPSBQYWludEJlaGF2aW9yOjpOb3JtYWwsCi0gICAgICAgIFJl
bmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIE9wdGlvblNldDxQYWludExh
eWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5OjpBbnlPcmlnaW4pOworICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQ
YWludFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0geyB9LCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CiAgICAgYm9vbCBoaXRUZXN0KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwogICAgIGJvb2wgaGl0VGVzdChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIEhpdFRlc3RSZXN1
bHQmKTsKICAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+LCBS
ZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyKTsKQEAgLTkyNCw3ICs5MjQs
OCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVHJhbnNwYXJlbnRSZXNw
ZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3Q7CiAKLSAgICB2b2lkIGludmFsaWRhdGVFdmVudFJl
Z2lvbigpOworICAgIGVudW0gY2xhc3MgRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb24geyBQ
YWludCwgU3R5bGUsIE5vbkNvbXBvc2l0ZWRJRnJhbWUgfTsKKyAgICBib29sIGludmFsaWRhdGVF
dmVudFJlZ2lvbihFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbik7CiAKIHByaXZhdGU6CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5k
ZXggMDgxZDRjNzY0MDMuLjBkMmIwZjUyNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTYxOCwxMSArMTYxOCwxMiBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRXZlbnRSZWdpb24oKQogICAgIGlmIChwYWludHNJ
bnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGJvb2wgbmVl
ZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUgPSByZW5kZXJlcigpLnZp
ZXcoKS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSgpOwogICAg
IGJvb2wgaGFzVG91Y2hBY3Rpb25FbGVtZW50cyA9IGZhbHNlOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaGFzVG91Y2hBY3Rpb25FbGVtZW50cyA9IHJlbmRlcmVyKCkuZG9jdW1lbnQo
KS5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9uKCk7CiAjZW5kaWYKLSAgICBp
ZiAoIWhhc1RvdWNoQWN0aW9uRWxlbWVudHMpIHsKKyAgICBpZiAoIWhhc1RvdWNoQWN0aW9uRWxl
bWVudHMgJiYgIW5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKSB7
CiAgICAgICAgIGlmIChtX293bmluZ0xheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTE2NjYsNiArMTY2Nyw5IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVFdmVudFJlZ2lvbigpCiAKICAgICBpZiAobV9zY3JvbGxlZENvbnRlbnRzTGF5
ZXIpCiAgICAgICAgIHVwZGF0ZUV2ZW50UmVnaW9uRm9yTGF5ZXIoKm1fc2Nyb2xsZWRDb250ZW50
c0xheWVyKTsKKworICAgIGlmIChuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRl
ZElGcmFtZSkKKyAgICAgICAgcmVuZGVyZXIoKS52aWV3KCkuc2V0TmVlZHNFdmVudFJlZ2lvblVw
ZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoZmFsc2UpOwogfQogI2VuZGlmCiAKQEAgLTI3ODEs
NyArMjc4NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNw
bGF5KEdyYXBoaWNzTGF5ZXI6OlNob3VsZENsaXBUb0xheWVyCiAgICAgaWYgKCFtX293bmluZ0xh
eWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVlZHND
b21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotICAgIG1fb3duaW5nTGF5ZXIuaW52
YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRS
ZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpQYWludCk7
CiAKICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsK
ICAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBmcmFtZVZpZXcuaXNUcmFj
a2luZ1JlcGFpbnRzKCkpCkBAIC0yODIxLDcgKzI4MjUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBH
cmFwaAogICAgIGlmICghbV9vd25pbmdMYXllci5pc1JlbmRlclZpZXdMYXllcigpKQogICAgICAg
ICBtX293bmluZ0xheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7
CiAKLSAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVFdmVudFJlZ2lvbigpOworICAgIG1fb3du
aW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKFJlbmRlckxheWVyOjpFdmVudFJlZ2lvbklu
dmFsaWRhdGlvblJlYXNvbjo6UGFpbnQpOwogCiAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZFJl
Y3RGb3JQYWludGluZyA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMociwgZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgYXV0byYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCmluZGV4IDNhMDM4Y2U4YTNhLi43ODczMDU0ODI2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTg1OCw2ICs4
NTgsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5
ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUKIAogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCZwYWdlKCkpOwogCisgICAgaWYgKG1fcmVuZGVy
Vmlldy5uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdP
dmVybGF5c09ubHkoKSkgeworICAgICAgICBtX3JlbmRlclZpZXcucmVwYWludFJvb3RDb250ZW50
cygpOworICAgICAgICBtX3JlbmRlclZpZXcuc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9z
aXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGZhbHNlKTsKKyAgICB9CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcyNSw2ICszNzMwLDE0IEBAIEdyYXBoaWNzTGF5ZXIq
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xh
eWVyKQogCiAjZW5kaWYKIAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpZXdOZWVkc1Rv
SW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWlu
dCgpIGNvbnN0Cit7CisgICAgLy8gRXZlbnQgcmVnaW9ucyBhcmUgb25seSB1cGRhdGVkIG9uIGNv
bXBvc2l0aW5nIGxheWVycy4gTm9uLWNvbXBvc2l0ZWQgbGF5ZXJzIG11c3QKKyAgICAvLyBkZWxl
Z2F0ZSB0byB0aGVpciBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yIHJlcGFpbnQgdG8g
dXBkYXRlIHRoZSBldmVudCByZWdpb24KKyAgICAvLyBmb3IgZWxlbWVudHMgaW5zaWRlIHRoZW0u
CisgICAgcmV0dXJuICFtX3JlbmRlclZpZXcuaXNDb21wb3NpdGVkKCk7Cit9CisKIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBi
YWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXco
KS5pc1RyYW5zcGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA5NDZkZmM0YTI2ZS4uN2NlNjM4Yzk0NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAg
LTM1OCw2ICszNTgsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHZpZXdIYXNUcmFuc3BhcmVudEJh
Y2tncm91bmQoQ29sb3IqIGJhY2tncm91bmRDb2xvciA9IG51bGxwdHIpIGNvbnN0OwogCisgICAg
Ym9vbCB2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9zaXRp
bmdMYXllckZvclJlcGFpbnQoKSBjb25zdDsKKwogICAgIGJvb2wgaGFzTm9uTWFpbkxheWVyc1dp
dGhUaWxlZEJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2xheWVyc1dpdGhUaWxlZEJhY2tpbmdD
b3VudDsgfQogCiAgICAgT3B0aW9uU2V0PENvbXBvc2l0aW5nUmVhc29uPiByZWFzb25zRm9yQ29t
cG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggMGNhMmRhMDkyNzQuLjVlMzZkMWE3NjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpzdHlsZUNoYW5nZWQoKQogICAg
IHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdp
ZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikK
IHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAg
ICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5oCmluZGV4IGVhMzU4ZGZkYmJjLi5iYTE3MjM1YjE3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRIb3ZlcmVk
UGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXNzZWRQYXJ0KFNj
cm9sbGJhclBhcnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgK
aW5kZXggOTE0ZWJiYzdkZDMuLmU2NGEwMmI0NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKQEAgLTY4LDYgKzY4LDEyIEBAIHB1YmxpYzoKIAogICAgIEZyYW1lVmlldyYg
ZnJhbWVWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVZpZXc7IH0KIAorICAgIGJvb2wgbmVl
ZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNP
bmx5KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xh
eWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHk7IH07CisgICAgdm9pZCBzZXROZWVkc1JlcGFp
bnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoYm9v
bCB2YWx1ZSA9IHRydWUpIHsgbV9uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVy
VXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBuZWVkc0V2
ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWU7IH0KKyAgICB2b2lk
IHNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKGJvb2wgdmFs
dWUgPSB0cnVlKSB7IG1fbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJh
bWUgPSB2YWx1ZTsgfQorCiAgICAgT3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVS
ZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIHJlcGFpbnRSb290Q29udGVudHMoKTsKICAgICB2b2lkIHJlcGFpbnRWaWV3UmVjdGFu
Z2xlKGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKQEAgLTI1NSw2ICsyNjEsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNTb2Z0d2FyZUZpbHRlcnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91
c2VzRmlyc3RMaW5lUnVsZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VzRmlyc3RMZXR0ZXJS
dWxlcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX25lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0
aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lIHsgZmFsc2UgfTsK
IAogICAgIEhhc2hNYXA8UmVuZGVyRWxlbWVudCosIFZlY3RvcjxDYWNoZWRJbWFnZSo+PiBtX3Jl
bmRlcmVyc1dpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbjsKICAgICBIYXNoU2V0PFJlbmRlckVsZW1l
bnQqPiBtX3Zpc2libGVJblZpZXdwb3J0UmVuZGVyZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAzZjZmMzNiNzUyYi4uNzM5ZTViNjJiMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICog
Q29weXJpZ2h0IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQ2LDggKzI0NiwxOCBAQCB2b2lk
IFJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50TwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0
ZSh3aWRnZXRQYWludE9mZnNldCk7CiAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWlu
dE9mZnNldCk7CiAgICAgfQorCisgICAgaWYgKHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQp
IHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZShjb250ZW50UGFpbnRPZmZzZXQpOworICAgICAgICBwYWludEluZm8uZXZlbnRS
ZWdpb25Db250ZXh0LT5wdXNoVHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgfQorCiAgICAgLy8g
RklYTUU6IFJlbW92ZSByZXBhaW50cmVjdCBlbmNsb3NpbmcvaW50ZWdyYWwgc25hcHBpbmcgd2hl
biBSZW5kZXJXaWRnZXQgYmVjb21lcyBkZXZpY2UgcGl4ZWwgc25hcHBlZC4KLSAgICBtX3dpZGdl
dC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwg
cGFpbnRJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHMgPyBXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5IDogV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pOworICAgIG1fd2lkZ2V0LT5w
YWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBwYWlu
dEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyA/IFdpZGdldDo6U2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dCk7CisKKyAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkKKyAgICAg
ICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CiAKICAgICBp
ZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQogICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwpAQCAtMjgyLDcgKzI5Miw3IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2U6Ok91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5l
KSAmJiBoYXNPdXRsaW5lKCkpCiAgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91
dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CiAKLSAgICBpZiAocGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQpCisgICAgaWYgKHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpFdmVudFJlZ2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHN0eWxlKCkuaGFz
Qm9yZGVyUmFkaXVzKCkpIHsKQEAgLTMwNCw2ICszMTQsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCkKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5yZXN0b3JlKCk7CiAKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2U6OkV2ZW50UmVnaW9uKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBQYWludCBhIHBh
cnRpYWxseSB0cmFuc3BhcmVudCB3YXNoIG92ZXIgc2VsZWN0ZWQgd2lkZ2V0cy4KICAgICBpZiAo
aXNTZWxlY3RlZCgpICYmICFkb2N1bWVudCgpLnByaW50aW5nKCkpIHsKICAgICAgICAgLy8gRklY
TUU6IHNlbGVjdGlvblJlY3QoKSBpcyBpbiBhYnNvbHV0ZSwgbm90IHBhaW50aW5nIGNvb3JkaW5h
dGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBmODhmOWZjYmI4MC4uMzUwZDY4N2VjOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMjAtMDQtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9u
LWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIEV2ZW50
UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJdCBpcyB1bnVzZWQgYXMgaXQncyBub3QgYXBwbGljYWJs
ZSBmb3IgcGx1Z2luIHBhaW50aW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwogMjAyMC0wMy0yNSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hvdWxkIHNo
b3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNwb25kZXIgaWYga2V5Ym9hcmQgd2Fz
IHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYjYwNWEyODkxM2IuLmM3ZmJh
ZWNhMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcApAQCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0RnJhbWVSZWN0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAgdmlld0dlb21ldHJ5RGlkQ2hhbmdl
KCk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kpCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmICghbV9wbHVnaW4gfHwg
IW1faXNJbml0aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRN
TFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA4NGQ0MjY0Y2UwZC4u
MDNhOTFiY2I5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6
V2lkZ2V0CiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5LCBXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVSZWN0c0No
YW5nZWQoKSBvdmVycmlkZTsKLS0gCjIuMjQuMSAoQXBwbGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395776</attachid>
            <date>2020-04-08 00:24:28 -0700</date>
            <delta_ts>2020-04-08 00:31:32 -0700</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-210041-20200408002428.patch</filename>
            <type>text/plain</type>
            <size>46085</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU1NDk3NDM1MDNkZDU3
OGM2OGE0Zjc1MDllMTM2MTFhNzk3MmM1ZC4uMWZiMWRhMGMxZTZkNjYyYTcxNmJkMzhmOWY1OTAy
N2JhY2U2NmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIwLTA0LTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3Vj
aC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50
ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKTogQWRkZWQu
IFRyeSB0byBpbnZhbGlkYXRlIHRoZSBldmVudCByZWdpb24uCisgICAgICAgIFRoaXMgbWF5IGZh
aWwgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4gZW5jbG9zaW5nIGNvbXBvc2l0aW5n
IGxheWVyIGZvciByZXBhaW50IChlLmcuIG5lc3RlZAorICAgICAgICBjb21wb3NpdGVkIGlmcmFt
ZXMgLSBzZWUgdGVzdCBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
bmVzdGVkLWlmcmFtZS5odG1sKS4gSWYKKyAgICAgICAgdGhpcyBoYXBwZW5zIHRoZW4gcmVjdXJz
aXZlIG9uIG91ciBvd25lciBlbGVtZW50J3MgZG9jdW1lbnQuIFJlY3Vyc2lvbiBpcyB1c2VkIGlu
c3RlYWQgb2YgYSBsb29wCisgICAgICAgIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIG91
dC1vZi1wcm9jZXNzIChPT1ApIGlmcmFtZXMsIHdoaWNoIHdpbGwgbGlrZWx5IGludHJvZHVjZSBk
b2N1bWVudCBwcm94eSBvYmplY3RzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQpOiBBZGRlZC4gQ2hlY2sgaWYgb3VyIGRvY3VtZW50
IGhhcyBhbnkgZWxlbWVudHMgd2l0aAorICAgICAgICBhIG5vbi1hdXRvIHRvdWNoLWFjdGlvbi4g
SWYgaXQgZG9lcyB0aGVuIGFzayB0aGUgY29tcG9zaXRvciBpZiB0aGUgZW5jbG9zaW5nIGNvbXBv
c2l0aW5nIGxheWVyIGZvcgorICAgICAgICByZXBhaW50J3MgZXZlbnQgcmVnaW9uIG11c3QgYmUg
aW52YWxpZGF0ZWQgLSBpdCB3aWxsIG9ubHkgcmVwbHkgdHJ1ZSBpZiB0aGlzIGlzIGEgbm9uLWNv
bXBvc2l0ZWQgaWZyYW1lLgorICAgICAgICBJZiBpdCBkb2VzIHRoZW4gZm9yd2FyZCB0aGlzIGlu
dmFsaWRhdGlvbiByZXF1ZXN0IHRvIHRoZSBkb2N1bWVudC4gVGhlIHJlYXNvbiBJIGRlbGVnYXRl
IHRvIHRoZSBkb2N1bWVudAorICAgICAgICBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZSBsb2dpYyBo
ZXJlIGlzIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIE9PUCBpZnJhbWVzLgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZExheW91dCk6IENhbGwgRnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKS4gQWxzbyB3aGlsZQorICAgICAgICBJIGFtIGhl
cmUgdGFrZSBvdXQgYSByZWYgb24gdGhlIGRvY3VtZW50IHRvIGVuc3VyZSBpdCBsaXZlcyB0aHJv
dWdoIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwgaW5jbHVkaW5nCisgICAgICAgIHRocm91Z2gg
dGhlIGFjY2Vzc2liaWxpdHkncyBwb3N0Tm90aWZpY2F0aW9uKCkgY29kZSB0aGF0IGNhbGxzIG91
dCB0byB0aGUgZW1iZWRkaW5nIGNsaWVudC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWludCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmg6CisgICAgICAgICogcGxhdGZvcm0vV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRo
cm91Z2guCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOiBVcGRhdGUgY29kZSBu
b3cgdGhhdCBSZW5kZUxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oKQorICAgICAgICB0YWtl
cyBhIHJlYXNvbi4gCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6IFBhc3MgdGhlIEV2ZW50UmVnaW9uQ29u
dGV4dCB0aHJvdWdoLiBJZiBhcmUgcGFzc2VkIG9uZSB0aGVuIHVwZGF0ZQorICAgICAgICBwYWlu
dCBmbGFncyB0byBjb2xsZWN0IGV2ZW50IHJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24pOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBmcm9t
IHZvaWQgdG8gYm9vbCBzbyBhcyB0byBpbmRpY2F0ZQorICAgICAgICB0byB0aGUgY2FsbGVyIHdo
ZXRoZXIgdGhlIGV2ZW50IHJlZ2lvbiB3YXMgYWN0dWFsbHkgaW52YWxpZGF0ZWQuIEFsc28gbWFk
ZSBpdCB0YWtlIGFuIGFyZ3VtZW50IGFzCisgICAgICAgIHRvIHRoZSByZWFzb24gZm9yIHRoZSBp
bnZhbGlkYXRpb24uIElmIGludmFsaWRhdGlvbiBpcyBkdWUgdG8gYSBub24tY29tcG9zaXRlZCBp
ZnJhbWUgdGhlbiBzZXRzIHNvbWUKKyAgICAgICAgc3RhdGUgYW5kIHNjaGVkdWxlIGEgY29tcG9z
aXRpbmcgbGF5ZXIgdXBkYXRlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2
ZW50UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29u
dGVudHNOZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRS
ZWdpb25Db250ZXh0IHRocm91Z2gKKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9z
aXRpbmdMYXllckZvclJlcGFpbnQgY29uc3QpOiBBZGRlZC4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5oOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJv
dWdoLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOiBUcmFuc2xhdGUgdGhlIGV2ZW50
IHJlZ2lvbiBieSBvdXIgY29udGVudCBwYWludCBvZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnBhaW50KTogVXBkYXRlIGZvciBFdmVudFJlZ29uLgorCiAyMDE5LTA5LTEz
ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1
aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjg4
ZjlmY2JiODA3MzMwM2EyMDU5OTIzODFjNzEyYzEyNmM4MzQ3MC4uMzUwZDY4N2VjOTQyODg1ZjJj
ZTM2OTQ1ZjQzOGQ1NWFkMDllZDc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0w
NC0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdWxk
IGZpbmQgdG91Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24tY29tcG9zaXRlZCBpZnJhbWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzIzNTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgRXZlbnRSZWdpb25Db250ZXh0IHRocm91
Z2guIEl0IGlzIHVudXNlZCBhcyBpdCdzIG5vdCBhcHBsaWNhYmxlIGZvciBwbHVnaW4gcGFpbnRp
bmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oOgorCiAyMDIwLTAzLTI1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTaG91bGQgc2hvdyBpbnB1dCB2aWV3IHdoZW4g
YmVjYW1lIGZpcnN0IHJlc3BvbmRlciBpZiBrZXlib2FyZCB3YXMgc2hvd2luZyB3aGVuIHRoZSB2
aWV3IHdhcyByZXNpZ25lZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggM2VmOTQ1OTAwYmE4
ZjI0ZTAyZjVlY2YyMGRlY2ZjNzA4YmZkODJhMC4uYzc3MzAzYTU2NmJkZjFiMWNlYzVkMGRhNzIw
NmE5YmZiZTY4Nzk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MjM0LDYgKzQyMzQs
MTkgQEAgdm9pZCBEb2N1bWVudDo6ZWxlbWVudEluQWN0aXZlQ2hhaW5EaWREZXRhY2goRWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgbV9hY3RpdmVFbGVtZW50ID0gbV9hY3RpdmVFbGVtZW50LT5w
YXJlbnRFbGVtZW50KCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVFdmVudFJlZ2lv
bnNGb3JJRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8q
IHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5
ZXIoKSkgeworICAgICAgICBpZiAobGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJM
YXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5vbkNvbXBvc2l0ZWRJRnJhbWUp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYXV0byogb3duZXJFbGVtZW50
ID0gdGhpcy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIG93bmVyRWxlbWVudC0+ZG9jdW1lbnQo
KS5pbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKCpvd25lckVsZW1lbnQpOworfQorCiB2
b2lkIERvY3VtZW50OjppbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpCiB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggODM5YWZjZDU4YmFhMzFhNzJlOWZhNWYxZTY1NzkyNjNmODdmMmJjMS4u
ZTc5MGE4ZTEyZWQ1MzM4MDI5MGNiYWJiOGMxYTQ1N2FiY2NmMTlmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKQEAgLTExNDAsNiArMTE0MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBjb25z
dDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKKyAg
ICB2b2lkIGludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50Jik7CiAKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggMDUxZmRiM2VlNWM1YzMzZTY4YjFiNmQwZDAwYzFkMDkwM2I3
OWQ1Ni4uNGEyMWNmODZhOWJhYzMyNDMxMjM4YTdhY2NmYmI4MzM4MDllOGNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTMwNCw2ICszMDQsMjAgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQo
UmVmUHRyPERvY3VtZW50PiYmIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRJc0JlaW5nUmVw
bGFjZWQgPSBmYWxzZTsKIH0KIAordm9pZCBGcmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJl
Z2lvbnNJZk5lZWRlZCgpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghbV9wYWdlIHx8
ICFtX2RvYykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9kb2MtPm1heUhhdmVFbGVtZW50
c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9k
b2MtPnJlbmRlclZpZXcoKS0+Y29tcG9zaXRvcigpLnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50
UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG1fb3duZXJFbGVtZW50KQorICAgICAgICBtX293bmVyRWxlbWVudC0+
ZG9jdW1lbnQoKS5pbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKCptX293bmVyRWxlbWVu
dCk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCiB2b2lkIEZy
YW1lOjpvcmllbnRhdGlvbkNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI1MjBlMDM3
YTU0OTMwZmExZTFiZjcwZTFjYzJhYTE4MzZiNTdiODguLmJiZDgyMmUxNzUxYmFlYjBmM2JhZWI4
N2Q4Y2Q3NzQ3NDczYzAwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMwMyw2ICszMDMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQ
cmV3YXJtTG9jYWxTdG9yYWdlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGludmFsaWRhdGVDb250ZW50
RXZlbnRSZWdpb25zSWZOZWVkZWQoKTsKKwogLy8gPT09PT09PT0KIAogICAgIHZvaWQgc2VsZk9u
bHlSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjNjhmNWQzOGM2ZTUxZTA0
ODg4NzA5NGM1N2ViZmYwN2FhZjAxY2ViLi4yOGJlNzZlMGY3MTZkM2I4MGYzOGNmZDIwZjA5NDU3
NjI1OTJiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjYxLDEyICsxMjYx
LDE1IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBs
YXlvdXRSb290KQogCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlckxheW91dCgpOwog
CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAg
ZnJhbWUoKS5pbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKCk7CisKICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShHVEspCi0gICAgaWYg
KGF1dG8qIGNhY2hlID0gZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUo
KSkKKyAgICBpZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hl
KCkpCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGxheW91dFJvb3QuZ2V0KCksIEFY
T2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUpOwogI2VuZGlmCiAKLSAgICBmcmFtZSgpLmRv
Y3VtZW50KCktPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CisgICAgZG9j
dW1lbnQtPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CiAKICAgICB1cGRh
dGVDYW5CbGl0T25TY3JvbGxSZWN1cnNpdmVseSgpOwogCkBAIC0xMjc0LDEwICsxMjc3LDEwIEBA
IHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRS
b290KQogCiAgICAgaGFuZGxlRGVmZXJyZWRTY3JvbGxiYXJzVXBkYXRlQWZ0ZXJEaXJlY3Rpb25D
aGFuZ2UoKTsKIAotICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShE
b2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKKyAgICBpZiAoZG9jdW1lbnQtPmhh
c0xpc3RlbmVyVHlwZShEb2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKICAgICAg
ICAgdXBkYXRlT3ZlcmZsb3dTdGF0dXMobGF5b3V0V2lkdGgoKSA8IGNvbnRlbnRzV2lkdGgoKSwg
bGF5b3V0SGVpZ2h0KCkgPCBjb250ZW50c0hlaWdodCgpKTsKIAotICAgIGZyYW1lKCkuZG9jdW1l
bnQoKS0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKKyAgICBkb2N1
bWVudC0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKIH0KIAogYm9v
bCBGcmFtZVZpZXc6OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5n
ZSgpCkBAIC00MjI1LDcgKzQyMjgsNyBAQCB2b2lkIEZyYW1lVmlldzo6ZGlkUGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UgogICAgIH0K
IH0KIAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kg
c2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDI4OCw4ICs0MjkxLDggQEAgdm9pZCBGcmFt
ZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QKICAgICB3aGlsZSAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikgJiYg
IWRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKS5maXJzdExpbmVCb3goKSkKICAgICAg
ICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAKLSAgICByb290TGF5ZXItPnBhaW50
KGNvbnRleHQsIGRpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRl
cmVyLCB7IH0sIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeTo6QW55T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFueU9yaWdpbiA6IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpB
Y2Nlc3NpYmxlT3JpZ2luT25seSk7Ci0gICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92
ZXJsYXlTY3JvbGxiYXJzKCkpCisgICAgcm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJl
Y3QsIExheW91dFNpemUoKSwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0
eU9yaWdpblBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biA/IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBS
ZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9u
bHksIGV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0
eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKICAgICAgICAgcm9v
dExheWVyLT5wYWludE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQsIGRpcnR5UmVjdCwgbV9wYWlu
dEJlaGF2aW9yLCByZW5kZXJlcik7CiAKICAgICBkaWRQYWludENvbnRlbnRzKGNvbnRleHQsIGRp
cnR5UmVjdCwgcGFpbnRpbmdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiYjk1
Nzg1Y2M4MTI3YTM3ZmY2MTUwNmZmNjgxNjJmNDgxNTdkZGY0Li4xMzNkOTA1OWVjYjVkNjkwM2Zh
ZmZmZDkwYTFlYTZiYTY3MDJkMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU3LDYg
KzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xh
c3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZsb2F0U2l6ZTsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwpAQCAtMzUxLDcgKzM1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVy
RW1iZWRkZWRPYmplY3QmKTsKICAgICB2b2lkIHJlbW92ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUo
UmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9u
Q29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsK
ICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDJmZDE1ZjdiMzAxN2IxYzdlZTdhMjFj
ODYxODY1NGI5NTExMDkyMjcuLjQ2OTY1MTFkNjFhMWJkYzQxMjZmMjE5ODBkOTMwOTVhYjMwNmNj
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMjM2LDE0ICsx
MjM2LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0LmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBpY29u
R0NQb2ludCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2
ZW50UmVnaW9uQ29udGV4dCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAg
ICBXaWRnZXQ6OnBhaW50KGNvbnRleHQsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1p
bmdQYWludEludmFsaWRhdGlvbigpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSAmJiAhZXZlbnRSZWdp
b25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRB
cmVhV2lsbFBhaW50KCk7CkBAIC0xMjY4LDcgKzEyNjgsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJp
dHlPcgogICAgICAgICAgICAgY29udGV4dC5jbGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgICAgIH0KIAotICAgICAgICBwYWludENvbnRl
bnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5
KTsKKyAgICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSwgZXZlbnRSZWdpb25Db250ZXh0KTsKICAgICB9CiAKICNp
ZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
aW5kZXggYjY0YWEzYmEwNjZjOWNkYWQ5MGExZmNiYTFhMTU0YjIwMzBiYjUxZS4uN2FkNTA0OWYx
ODg5MmNlYjk1MzU4YWQwOGI0NzI0MGQxMjVkNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaApAQCAtNTcsNiArNTcsNyBAQCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgSG9zdFdp
bmRvdzsKIGNsYXNzIExlZ2FjeVRpbGVDYWNoZTsKIGNsYXNzIFNjcm9sbGJhcjsKQEAgLTM1MCw3
ICszNTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5k
bGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBz
Y3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6
QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAgICAgdm9p
ZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNp
YmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhp
ZGRlbi4KQEAgLTM4OCw3ICszODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsVmlldygpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwg
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFu
eU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFu
Z0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwCmluZGV4IDEyOTNlMmQ3OTMxM2Y4NmI5ZTg2YzhiYzBiMjU3Nzk2ZGZkNWQ2
MjkuLmE2YjU4MDczODk5NDYyNmM5NzVhNmM3MjkwYjAzNDFmMWZiZWM1OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU2Nyb2xs
YmFyOjp1cGRhdGVUaHVtYlByb3BvcnRpb24oKQogICAgIHVwZGF0ZVRodW1iKCk7CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQg
U2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdp
b25Db250ZXh0KikKIHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMo
KSAmJiB0aGVtZSgpLnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgaW52YWxpZGF0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAppbmRleCBjYjk1MGUyM2Y3YTc2NWUw
NzI5MDhkNWIzNjZiMTZjY2JmMGQzNGQyLi5lZDM4OTZjOWQyYzkxYzEyZDczNDZmNDZiNjU2NDNh
MDdhYTQ0NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9uKGludCB2
aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGludCBw
KSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0
LmNwcAppbmRleCBlOWY1ZDgxZTAzYWU2MjNiYTliM2FkN2Y1ZmVmYTM1M2RmMmFiNjhkLi5hN2Zl
MzgwZjNmZDJkOWNhNmNmODI4YjgyZWEzZDQ2ZGQ1MzdlOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRl
eHQqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CmluZGV4IDFjZjkzMWMxMjIzNzAwMjhmNWFmMDZjNTdkNDU4OGE2ZjJmYzU0YWYuLjRmMzAyYWJi
ZjEwZWFiOTAwYjMwYzYzMzlhYjg4MDQ3MGI3YTdmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdl
dC5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29y
OwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBGb250Q2Fz
Y2FkZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKQEAgLTEwOSw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgeyBBbnlPcmlnaW4sIEFjY2Vzc2libGVPcmlnaW5Pbmx5IH07CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
OjpBbnlPcmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0
KiA9IG51bGxwdHIpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91
bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lk
Z2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRl
eCAzZTA5YzExYjQ2MzI3YjQwMTY5N2E1ZGUwZGQ3NjE5NWMxYjNkYWM1Li40ZTA3YmQ3NTE2ODlm
Y2E1MmNiM2E2YzFhMDY3OWM0ZmEyMGM3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XaWRnZXRJT1MubW0KQEAgLTE0Niw3ICsxNDYsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0
ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IElu
dFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCop
CiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCAyNjZiMDQyZTA2ZmQ3ZGIz
ZjI3MTVhNDYxZDg0Y2UwYTc3OTBkNTE0Li4zMDQ1ODg4YTM0NDRjNTdmY2ExNGUxYTNiMjMxZTJk
MmQ2ZTA0ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KQEAg
LTE4Niw3ICsxODYsNyBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAg
ICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
cCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lk
Z2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBlYzZmZDhjZmZlNjcxZmY4OGVmMjUzZWRiMjk5ZjkzNDA1
NGJmMWM3Li5kYmFhNTE3Mzk1ZWI3NWM5Zjk1NDEzMGZjY2M1YzQ0MTcxYWU3NDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEyNTUsOCArMTI1NSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdp
b25Db250ZXh0LT51bml0ZShib3JkZXJSZWdpb24sIHN0eWxlKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBkZXNjZW5kYW50cyBpZiB3ZSBkb24ndCBoYXZlIG92
ZXJmbG93IGFuZCBkb24ndCBjb250YWluIGZsb2F0cyBhbmQgdGhlIGFyZWEgaXMgYWxyZWFkeSBj
b3ZlcmVkLgotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3Vh
bE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSk7CisgICAgICAg
IGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBj
b250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5jb250YWlu
cyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3KCkubmVlZHNFdmVudFJlZ2lv
blVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1RyYXZlcnNlRGVzY2Vu
ZGFudHMgfHwgZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9u
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApp
bmRleCA4NzdmNDgwNmE3Yzc2YmIyYWZlODQzY2E0OGNjNmYyMTViMmFmZDRiLi41ZWEwOWE1MDZm
ZTZlNTQ4YzFlOTdjNWM0MWM0NDAxZDI2NDg1YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXcKICAgICAgICAgaWYgKG5lZWRzSW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkpIHsKICAg
ICAgICAgICAgIC8vIFVzdWFsbHkgdGhlIGV2ZW50IHJlZ2lvbiBnZXRzIHVwZGF0ZWQgYXMgYSBy
ZXN1bHQgb2YgcGFpbnQgaW52YWxpZGF0aW9uLiBIZXJlIHdlIG5lZWQgdG8gcmVxdWVzdCBhbiB1
cGRhdGUgZXhwbGljaXRseS4KICAgICAgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGVuY2xvc2lu
Z0xheWVyKCkpCi0gICAgICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbigp
OworICAgICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5
ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpTdHlsZSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxl
Lm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyMWY1MmI5N2Q3
ZmNlNDY3YTc0Mjg2ZDc1YzhkMTZiZTcyNzI5NTRjLi4zZDkyN2U1OTRmYmZkMTU4YjI1MDhmZjZj
OGFlMzBjZTQyYTA0YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE5IEFkb2Jl
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMp
IDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCkBAIC00MjA0LDExICs0
MjA0LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVB
cmVhOjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9w
dGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRy
ZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwg
Y29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9y
PiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNl
dDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBw
YWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAg
ICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKICAgICBMYXll
clBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VS
ZWN0KSwgcGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1YnRyZWVQYWludFJvb3QsICZv
dmVybGFwVGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7CisgICAgaWYgKGV2ZW50UmVnaW9uQ29udGV4dCkg
eworICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZlbnRSZWdpb25D
b250ZXh0OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckNv
bGxlY3RpbmdFdmVudFJlZ2lvbik7CisgICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFp
bnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogb3Zlcmxh
cFRlc3RSZXF1ZXN0cy5rZXlzKCkpCkBAIC03MDAyLDEyICs3MDA2LDEyIEBAIGJvb2wgUmVuZGVy
TGF5ZXI6OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lv
bigpCitib29sIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25J
bnZhbGlkYXRpb25SZWFzb24gcmVhc29uKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYXV0byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JS
ZXBhaW50KCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRhaW5zRXZlbnRSZWdpb24gPSBb
Jl0gewogICAgICAgICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFwIHRlc3RpbmcuCkBAIC03MDE5
LDEwICs3MDIzLDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYgKCFtYWludGFpbnNFdmVu
dFJlZ2lvbigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNvbiAhPSBFdmVudFJlZ2lv
bkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZElGcmFtZSAmJiAhbWFpbnRhaW5zRXZl
bnRSZWdpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29tcG9zaXRpbmdMYXll
ci0+c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKKworICAgIGlmIChy
ZWFzb24gPT0gRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5vbkNvbXBvc2l0ZWRJRnJh
bWUpIHsKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+cmVuZGVyZXIoKS52aWV3KCkuc2V0TmVl
ZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKKyAgICAgICAgaWYg
KHJlbmRlcmVyKCkuc2V0dGluZ3MoKS52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpICYgTm9u
RmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAgICAgICBjb21wb3NpdGluZ0xheWVyLT5yZW5k
ZXJlcigpLnZpZXcoKS5zZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBk
YXRlRm9yRGVidWdPdmVybGF5c09ubHkoKTsKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+Y29t
cG9zaXRvcigpLnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZDExMzkzZTA3ZGViYWFjYjg1YmEz
MTI0OTJmY2IwNGRjZGU1N2ZjMS4uMDNlMzI3NWNhMmU5MmM0MWFiOTc4NDdjNzE0M2FlMzU3ODYw
NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY5NSw3ICs2
OTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3Mg
Zm9yIG1vdXNlIGV2ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0
IHRoZSBwb2ludCBmcm9tIGZyb250IHRvIGJhY2suCiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBz
dWJwaXhlbE9mZnNldCA9IExheW91dFNpemUoKSwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+ID0g
UGFpbnRCZWhhdmlvcjo6Tm9ybWFsLAotICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWlu
dFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2lu
KTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0
aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0
KiA9IG51bGxwdHIpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgdm9pZCBwYWludE92
ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFn
ZVJlY3QsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFp
bnRSb290ID0gbnVsbHB0cik7CkBAIC05MjQsNyArOTI0LDggQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNv
bnN0OwogCi0gICAgdm9pZCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBlbnVtIGNsYXNz
IEV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uIHsgUGFpbnQsIFN0eWxlLCBOb25Db21wb3Np
dGVkSUZyYW1lIH07CisgICAgYm9vbCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25J
bnZhbGlkYXRpb25SZWFzb24pOwogCiBwcml2YXRlOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDA4MWQ0Yzc2NDAzYThlYmJlMDA3
OWRhMjEyNTNjYTJmZTBiYWNiZDIuLjBkMmIwZjUyNDcyNzEwNWZkMTRlMTVkNTZjZWExMWNmMTVk
YmU5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0xNjE4LDExICsxNjE4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVFdmVudFJlZ2lvbigpCiAgICAgaWYgKHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3Io
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9y
Tm9uQ29tcG9zaXRlZElGcmFtZSA9IHJlbmRlcmVyKCkudmlldygpLm5lZWRzRXZlbnRSZWdpb25V
cGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKCk7CiAgICAgYm9vbCBoYXNUb3VjaEFjdGlvbkVs
ZW1lbnRzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBoYXNUb3VjaEFj
dGlvbkVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhO
b25BdXRvVG91Y2hBY3Rpb24oKTsKICNlbmRpZgotICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVt
ZW50cykgeworICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cyAmJiAhbmVlZHNFdmVudFJl
Z2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUpIHsKICAgICAgICAgaWYgKG1fb3duaW5n
TGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTY2
Niw2ICsxNjY3LDkgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9u
KCkKIAogICAgIGlmIChtX3Njcm9sbGVkQ29udGVudHNMYXllcikKICAgICAgICAgdXBkYXRlRXZl
bnRSZWdpb25Gb3JMYXllcigqbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOworCisgICAgaWYgKG5l
ZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKQorICAgICAgICByZW5k
ZXJlcigpLnZpZXcoKS5zZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElG
cmFtZShmYWxzZSk7CiB9CiAjZW5kaWYKIApAQCAtMjc4MSw3ICsyNzg1LDcgQEAgdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXkoR3JhcGhpY3NMYXllcjo6U2hv
dWxkQ2xpcFRvTGF5ZXIKICAgICBpZiAoIW1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIo
KSkKICAgICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlv
blVwZGF0ZSgpOwogCi0gICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsK
KyAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJMYXllcjo6RXZl
bnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246OlBhaW50KTsKIAogICAgIGF1dG8mIGZyYW1lVmll
dyA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpOwogICAgIGlmIChtX2lzTWFpbkZyYW1l
UmVuZGVyVmlld0xheWVyICYmIGZyYW1lVmlldy5pc1RyYWNraW5nUmVwYWludHMoKSkKQEAgLTI4
MjEsNyArMjgyNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWRE
aXNwbGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiAgICAgaWYgKCFtX293bmlu
Z0xheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVl
ZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotICAgIG1fb3duaW5nTGF5ZXIu
aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZl
bnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpQYWlu
dCk7CiAKICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdEZvclBhaW50aW5nID0gc25hcFJl
Y3RUb0RldmljZVBpeGVscyhyLCBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBhdXRvJiBmcmFt
ZVZpZXcgPSByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggM2EwMzhjZThh
M2EyZTg3ODAxMTNiNGRlMGMxNjdlNDEwZDE3YTI3My4uNzg3MzA1NDgyNmYxODEwMzEwYTI0ZDZl
ZmMwOGM5YjhmZjg4ZjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTg1OCw2ICs4NTgsMTEgQEAgYm9vbCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRl
VHlwZSB1cGRhdGUKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlk
Q2hhbmdlKCZwYWdlKCkpOwogCisgICAgaWYgKG1fcmVuZGVyVmlldy5uZWVkc1JlcGFpbnRIYWNr
QWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKSkgeworICAg
ICAgICBtX3JlbmRlclZpZXcucmVwYWludFJvb3RDb250ZW50cygpOworICAgICAgICBtX3JlbmRl
clZpZXcuc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRl
YnVnT3ZlcmxheXNPbmx5KGZhbHNlKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMzcyNSw2ICszNzMwLDE0IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQogCiAjZW5kaWYKIAorYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVnaW9u
T2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpIGNvbnN0Cit7CisgICAgLy8g
RXZlbnQgcmVnaW9ucyBhcmUgb25seSB1cGRhdGVkIG9uIGNvbXBvc2l0aW5nIGxheWVycy4gTm9u
LWNvbXBvc2l0ZWQgbGF5ZXJzIG11c3QKKyAgICAvLyBkZWxlZ2F0ZSB0byB0aGVpciBlbmNsb3Np
bmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yIHJlcGFpbnQgdG8gdXBkYXRlIHRoZSBldmVudCByZWdp
b24KKyAgICAvLyBmb3IgZWxlbWVudHMgaW5zaWRlIHRoZW0uCisgICAgcmV0dXJuICFtX3JlbmRl
clZpZXcuaXNDb21wb3NpdGVkKCk7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2
aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0
CiB7CiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pc1RyYW5zcGFyZW50KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApp
bmRleCA5NDZkZmM0YTI2ZTcxODYwYzQ0ZDI5YzhjODcwZGM4YzJiMjViMjIzLi43Y2U2MzhjOTQ1
ZmIzMTRlMzZiOTM5Njk2ZDcwNTllMDY5NWIzOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0zNTgsNiArMzU4LDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCB2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNr
Z3JvdW5kQ29sb3IgPSBudWxscHRyKSBjb25zdDsKIAorICAgIGJvb2wgdmlld05lZWRzVG9JbnZh
bGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkg
Y29uc3Q7CisKICAgICBib29sIGhhc05vbk1haW5MYXllcnNXaXRoVGlsZWRCYWNraW5nKCkgY29u
c3QgeyByZXR1cm4gbV9sYXllcnNXaXRoVGlsZWRCYWNraW5nQ291bnQ7IH0KIAogICAgIE9wdGlv
blNldDxDb21wb3NpdGluZ1JlYXNvbj4gcmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRl
ckxheWVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwCmluZGV4IDBjYTJkYTA5Mjc0ZjYyNmJhOTY2ZjYzNGVlYTdmNDQ5NTY0YzY4NjIuLjVl
MzZkMWE3NjI4OWExZGY3YjBkMmE0M2YyNTY1NzQyODUzYTM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBSZW5kZXJTY3JvbGxiYXI6OnN0eWxlQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2Nyb2xsYmFyUGFy
dHMoKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0
LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhclBh
cnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXgg
ZWEzNThkZmRiYmM1NTUwYzIzODU1ZmE5Zjk3ZWU3YzYzMmYzNWNjMC4uYmExNzIzNWIxN2M0YmY1
NTUxM2I0OGFiMTRhNDFmYWNjNzMwOTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
UGFyZW50KFNjcm9sbFZpZXcqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1h
Z2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29u
dGV4dCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggOTE0ZWJiYzdkZDNl
ODI1YWQ1YWQxNDEwMGY1NjQxZGViYzZiODdiMi4uZTY0YTAyYjQ3NjRmNTg3YjBjZGExYTg0Y2Iz
OGYxZDQ5NGMwNWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC02
OCw2ICs2OCwxMiBAQCBwdWJsaWM6CiAKICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKKyAgICBib29sIG5lZWRzUmVwYWludEhhY2tBZnRl
ckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVn
T3ZlcmxheXNPbmx5OyB9OworICAgIHZvaWQgc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9z
aXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGJvb2wgdmFsdWUgPSB0cnVlKSB7
IG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3Zl
cmxheXNPbmx5ID0gdmFsdWU7IH0KKworICAgIGJvb2wgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZv
ck5vbkNvbXBvc2l0ZWRJRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25V
cGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lOyB9CisgICAgdm9pZCBzZXROZWVkc0V2ZW50UmVn
aW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZShib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25l
ZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lID0gdmFsdWU7IH0KKwog
ICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNv
bnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIs
IFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBhaW50Um9v
dENvbnRlbnRzKCk7CiAgICAgdm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRS
ZWN0JikgY29uc3Q7CkBAIC0yNTUsNiArMjYxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFz
U29mdHdhcmVGaWx0ZXJzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGluZVJ1bGVz
IHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9y
RGVidWdPdmVybGF5c09ubHkgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc0V2ZW50UmVnaW9u
VXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFJl
bmRlckVsZW1lbnQqLCBWZWN0b3I8Q2FjaGVkSW1hZ2UqPj4gbV9yZW5kZXJlcnNXaXRoUGF1c2Vk
SW1hZ2VBbmltYXRpb247CiAgICAgSGFzaFNldDxSZW5kZXJFbGVtZW50Kj4gbV92aXNpYmxlSW5W
aWV3cG9ydFJlbmRlcmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHAKaW5kZXggM2Y2ZjMzYjc1MmI1Yjg2Mzc5N2M0YTFhODIyNzg1ZDJjMzRkODVhYS4uNzM5ZTVi
NjJiMThlZGZjNmQ5OWEzYmVkMzY2MjE4YWQwZDk1ZTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yNDYsOCArMjQ2LDE4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0Ojpw
YWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHdpZGdldFBhaW50T2Zm
c2V0KTsKICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICB9
CisKKyAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRl
bnRQYWludE9mZnNldCk7CisgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnB1
c2hUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB9CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHJl
cGFpbnRyZWN0IGVuY2xvc2luZy9pbnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBi
ZWNvbWVzIGRldmljZSBwaXhlbCBzbmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludElu
Zm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWly
ZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5j
b250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2Vj
dXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeTo6QW55T3JpZ2luLCBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKworICAg
IGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICBwYWludEluZm8uZXZl
bnRSZWdpb25Db250ZXh0LT5wb3BUcmFuc2Zvcm0oKTsKIAogICAgIGlmICghd2lkZ2V0UGFpbnRP
ZmZzZXQuaXNaZXJvKCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC13
aWRnZXRQYWludE9mZnNldCk7CkBAIC0yODIsNyArMjkyLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCiAgICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6T3V0bGluZSB8fCBw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUo
KSkKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBh
aW50T2Zmc2V0LCBzaXplKCkpKTsKIAotICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZTo6Rm9yZWdyb3VuZCkKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6
OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9u
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkg
ewpAQCAtMzA0LDYgKzMxNCw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIGlmIChzdHls
ZSgpLmhhc0JvcmRlclJhZGl1cygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3Rv
cmUoKTsKIAorICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdp
b24pCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFy
ZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYg
IWRvY3VtZW50KCkucHJpbnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0aW9uUmVj
dCgpIGlzIGluIGFic29sdXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGI2MDVhMjg5
MTNiMzhmZWVjYzQ0MzAwMjk2M2NkNTliM2Y2YjdiYjguLmM3ZmJhZWNhMjM0ZGMxYzE4OWZlYTY5
NjBlZjk1NmU4MWE4YmY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC03ODMsNyArNzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpz
ZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0
cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKCFt
X3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkIHx8IG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0
YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZykKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDg0
ZDQyNjRjZTBkMDY4ODZjMzk5Yzg1NjQ4ZDI1YTljYTFlYjgxNjYuLjAzYTkxYmNiOWE4MDM2YTUy
ZjlhNWNiMGMyNTdlZWRhNTc1NjU5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gV2ViQ29yZTo6V2lkZ2V0CiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBv
dmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZnJhbWVSZWN0c0NoYW5nZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZGMzZmUyZjU2MjlmNDkwMDNl
MmFiODhiNDdmYzI3MDEzNDdmNjdiLi41MDJlZjAyYmZkYjcwNDgxNzkxNjRlNzM2MmE1YmI1OTNh
MDgzMTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDQtMDcgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBl
bGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbW9yZSB0ZXN0cy4KKworICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3By
b2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2
ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5z
aWRlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVudHMv
aW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy90b3Vj
aC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0w
My0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
U2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNwb25kZXIgaWYga2V5
Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24t
bm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVu
dHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZjczNDM0NTA5ZGQ3MDQyYjg1NzgwZDUxNjRjM2M5ODQ2ZmEz
NTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJv
Z3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisg
IChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEp
CisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYp
CisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWln
aHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAg
CisgICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5v
bmUtaW5zaWRlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJv
Z3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NWM4OTQ1NmZmMjllZGNiMjM2ZTE2ZmE0NzkxOWJmMmNlMjg0N2IyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyY2RvYz0iPGRp
diBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJs
YWNrJz48L2Rpdj4iIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3Vs
dHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoImRpdiIpLnN0eWxlLnRvdWNoQWN0aW9uID0gIm5vbmUiOworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCA9IGludGVybmFscy5s
YXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VW
RU5UX1JFR0lPTiB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJP
UEVSVElFUyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1u
b25lLWluc2lkZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jl
c291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTk3ODMwOGJjMTdjMDYyNWIyYjgzMGQ3OGQ3NTA1Y2IyNWNhMmIyMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24t
bm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIHNyY2RvYz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0aW9u
OiBub25lOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxh
Y2snPjwvZGl2PiIgb25sb2FkPSJ3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnQuZHVtcFJl
Z2lvbigpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5v
bmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y3MzQzNDUwOWRkNzA0
MmI4NTc4MGQ1MTY0YzNjOTg0NmZhMzU3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAw
IDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRz
T3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9y
ICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRo
PTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUg
ICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAy
KQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1p
bnNpZGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1h
Y3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3NGVlYzI3MDM4Nzc3
ZmY3ZDI3YTQ5NTkzN2Y5YjUyYjRhMmI1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1l
IGlkPSJ0ZXN0RnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0aW9uOiBub25lOyB3
aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2
PiIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXN1bHRz
LmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFs
cy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8IGludGVybmFscy5MQVlFUl9UUkVF
X0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3Mv
dG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzNhZjhmZGU5ZWIzYWQ5YWVjYTk2
NDk1M2ZiZTVkNTc4NGU1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCisoR3JhcGhpY3NMYXllcgorICAoYW5jaG9yIDAuMDAg
MC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFw
aGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY29udGVudHNP
cGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3Ig
I0ZGRkZGRikKKyAgICAgIChldmVudCByZWdpb24KKyAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9
ODAwIGhlaWdodD02MDApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAobm9uZSAg
ICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICgyOCwyOCkgd2lkdGg9MTAyIGhlaWdodD0xMDIp
CisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUz
NTFmMjg3MDJjZTBkODM3Yjk4OWI5YjkyMWY2NjllZjI4NzA4MTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
bmVzdGVkLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJyZXNvdXJjZXMvdG91Y2gt
YWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3Vs
dHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiBkdW1wUmVnaW9uKCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgcmVzdWx0cy5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3Vt
ZW50LCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5h
bHMuTEFZRVJfVFJFRV9JTkNMVURFU19ST09UX0xBWUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395778</attachid>
            <date>2020-04-08 00:31:34 -0700</date>
            <delta_ts>2020-04-08 00:45:15 -0700</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-210041-20200408003133.patch</filename>
            <type>text/plain</type>
            <size>46112</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU1NDk3NDM1MDNkZDU3
OGM2OGE0Zjc1MDllMTM2MTFhNzk3MmM1ZC4uMWZiMWRhMGMxZTZkNjYyYTcxNmJkMzhmOWY1OTAy
N2JhY2U2NmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIwLTA0LTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3Vj
aC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50
ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKTogQWRkZWQu
IFRyeSB0byBpbnZhbGlkYXRlIHRoZSBldmVudCByZWdpb24uCisgICAgICAgIFRoaXMgbWF5IGZh
aWwgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4gZW5jbG9zaW5nIGNvbXBvc2l0aW5n
IGxheWVyIGZvciByZXBhaW50IChlLmcuIG5lc3RlZAorICAgICAgICBjb21wb3NpdGVkIGlmcmFt
ZXMgLSBzZWUgdGVzdCBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
bmVzdGVkLWlmcmFtZS5odG1sKS4gSWYKKyAgICAgICAgdGhpcyBoYXBwZW5zIHRoZW4gcmVjdXJz
aXZlIG9uIG91ciBvd25lciBlbGVtZW50J3MgZG9jdW1lbnQuIFJlY3Vyc2lvbiBpcyB1c2VkIGlu
c3RlYWQgb2YgYSBsb29wCisgICAgICAgIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIG91
dC1vZi1wcm9jZXNzIChPT1ApIGlmcmFtZXMsIHdoaWNoIHdpbGwgbGlrZWx5IGludHJvZHVjZSBk
b2N1bWVudCBwcm94eSBvYmplY3RzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQpOiBBZGRlZC4gQ2hlY2sgaWYgb3VyIGRvY3VtZW50
IGhhcyBhbnkgZWxlbWVudHMgd2l0aAorICAgICAgICBhIG5vbi1hdXRvIHRvdWNoLWFjdGlvbi4g
SWYgaXQgZG9lcyB0aGVuIGFzayB0aGUgY29tcG9zaXRvciBpZiB0aGUgZW5jbG9zaW5nIGNvbXBv
c2l0aW5nIGxheWVyIGZvcgorICAgICAgICByZXBhaW50J3MgZXZlbnQgcmVnaW9uIG11c3QgYmUg
aW52YWxpZGF0ZWQgLSBpdCB3aWxsIG9ubHkgcmVwbHkgdHJ1ZSBpZiB0aGlzIGlzIGEgbm9uLWNv
bXBvc2l0ZWQgaWZyYW1lLgorICAgICAgICBJZiBpdCBkb2VzIHRoZW4gZm9yd2FyZCB0aGlzIGlu
dmFsaWRhdGlvbiByZXF1ZXN0IHRvIHRoZSBkb2N1bWVudC4gVGhlIHJlYXNvbiBJIGRlbGVnYXRl
IHRvIHRoZSBkb2N1bWVudAorICAgICAgICBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZSBsb2dpYyBo
ZXJlIGlzIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIE9PUCBpZnJhbWVzLgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZExheW91dCk6IENhbGwgRnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKS4gQWxzbyB3aGlsZQorICAgICAgICBJIGFtIGhl
cmUgdGFrZSBvdXQgYSByZWYgb24gdGhlIGRvY3VtZW50IHRvIGVuc3VyZSBpdCBsaXZlcyB0aHJv
dWdoIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwgaW5jbHVkaW5nCisgICAgICAgIHRocm91Z2gg
dGhlIGFjY2Vzc2liaWxpdHkncyBwb3N0Tm90aWZpY2F0aW9uKCkgY29kZSB0aGF0IGNhbGxzIG91
dCB0byB0aGUgZW1iZWRkaW5nIGNsaWVudC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWludCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmg6CisgICAgICAgICogcGxhdGZvcm0vV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRo
cm91Z2guCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOiBVcGRhdGUgY29kZSBu
b3cgdGhhdCBSZW5kZUxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oKQorICAgICAgICB0YWtl
cyBhIHJlYXNvbi4gCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6IFBhc3MgdGhlIEV2ZW50UmVnaW9uQ29u
dGV4dCB0aHJvdWdoLiBJZiBhcmUgcGFzc2VkIG9uZSB0aGVuIHVwZGF0ZQorICAgICAgICBwYWlu
dCBmbGFncyB0byBjb2xsZWN0IGV2ZW50IHJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24pOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBmcm9t
IHZvaWQgdG8gYm9vbCBzbyBhcyB0byBpbmRpY2F0ZQorICAgICAgICB0byB0aGUgY2FsbGVyIHdo
ZXRoZXIgdGhlIGV2ZW50IHJlZ2lvbiB3YXMgYWN0dWFsbHkgaW52YWxpZGF0ZWQuIEFsc28gbWFk
ZSBpdCB0YWtlIGFuIGFyZ3VtZW50IGFzCisgICAgICAgIHRvIHRoZSByZWFzb24gZm9yIHRoZSBp
bnZhbGlkYXRpb24uIElmIGludmFsaWRhdGlvbiBpcyBkdWUgdG8gYSBub24tY29tcG9zaXRlZCBp
ZnJhbWUgdGhlbiBzZXRzIHNvbWUKKyAgICAgICAgc3RhdGUgYW5kIHNjaGVkdWxlIGEgY29tcG9z
aXRpbmcgbGF5ZXIgdXBkYXRlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2
ZW50UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29u
dGVudHNOZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRS
ZWdpb25Db250ZXh0IHRocm91Z2gKKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9z
aXRpbmdMYXllckZvclJlcGFpbnQgY29uc3QpOiBBZGRlZC4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5oOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJv
dWdoLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOiBUcmFuc2xhdGUgdGhlIGV2ZW50
IHJlZ2lvbiBieSBvdXIgY29udGVudCBwYWludCBvZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnBhaW50KTogVXBkYXRlIGZvciBFdmVudFJlZ29uLgorCiAyMDE5LTA5LTEz
ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1
aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjg4
ZjlmY2JiODA3MzMwM2EyMDU5OTIzODFjNzEyYzEyNmM4MzQ3MC4uMzUwZDY4N2VjOTQyODg1ZjJj
ZTM2OTQ1ZjQzOGQ1NWFkMDllZDc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0w
NC0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdWxk
IGZpbmQgdG91Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24tY29tcG9zaXRlZCBpZnJhbWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzIzNTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgRXZlbnRSZWdpb25Db250ZXh0IHRocm91
Z2guIEl0IGlzIHVudXNlZCBhcyBpdCdzIG5vdCBhcHBsaWNhYmxlIGZvciBwbHVnaW4gcGFpbnRp
bmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oOgorCiAyMDIwLTAzLTI1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTaG91bGQgc2hvdyBpbnB1dCB2aWV3IHdoZW4g
YmVjYW1lIGZpcnN0IHJlc3BvbmRlciBpZiBrZXlib2FyZCB3YXMgc2hvd2luZyB3aGVuIHRoZSB2
aWV3IHdhcyByZXNpZ25lZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggM2VmOTQ1OTAwYmE4
ZjI0ZTAyZjVlY2YyMGRlY2ZjNzA4YmZkODJhMC4uYzc3MzAzYTU2NmJkZjFiMWNlYzVkMGRhNzIw
NmE5YmZiZTY4Nzk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MjM0LDYgKzQyMzQs
MTkgQEAgdm9pZCBEb2N1bWVudDo6ZWxlbWVudEluQWN0aXZlQ2hhaW5EaWREZXRhY2goRWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgbV9hY3RpdmVFbGVtZW50ID0gbV9hY3RpdmVFbGVtZW50LT5w
YXJlbnRFbGVtZW50KCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVFdmVudFJlZ2lv
bnNGb3JJRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8q
IHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5
ZXIoKSkgeworICAgICAgICBpZiAobGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJM
YXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5vbkNvbXBvc2l0ZWRJRnJhbWUp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYXV0byogb3duZXJFbGVtZW50
ID0gdGhpcy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIG93bmVyRWxlbWVudC0+ZG9jdW1lbnQo
KS5pbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKCpvd25lckVsZW1lbnQpOworfQorCiB2
b2lkIERvY3VtZW50OjppbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpCiB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggODM5YWZjZDU4YmFhMzFhNzJlOWZhNWYxZTY1NzkyNjNmODdmMmJjMS4u
ZTc5MGE4ZTEyZWQ1MzM4MDI5MGNiYWJiOGMxYTQ1N2FiY2NmMTlmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKQEAgLTExNDAsNiArMTE0MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBjb25z
dDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKKyAg
ICB2b2lkIGludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50Jik7CiAKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggMDUxZmRiM2VlNWM1YzMzZTY4YjFiNmQwZDAwYzFkMDkwM2I3
OWQ1Ni4uNGEyMWNmODZhOWJhYzMyNDMxMjM4YTdhY2NmYmI4MzM4MDllOGNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTMwNCw2ICszMDQsMjAgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQo
UmVmUHRyPERvY3VtZW50PiYmIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRJc0JlaW5nUmVw
bGFjZWQgPSBmYWxzZTsKIH0KIAordm9pZCBGcmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJl
Z2lvbnNJZk5lZWRlZCgpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghbV9wYWdlIHx8
ICFtX2RvYykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9kb2MtPm1heUhhdmVFbGVtZW50
c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9k
b2MtPnJlbmRlclZpZXcoKS0+Y29tcG9zaXRvcigpLnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50
UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG1fb3duZXJFbGVtZW50KQorICAgICAgICBtX293bmVyRWxlbWVudC0+
ZG9jdW1lbnQoKS5pbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKCptX293bmVyRWxlbWVu
dCk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCiB2b2lkIEZy
YW1lOjpvcmllbnRhdGlvbkNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI1MjBlMDM3
YTU0OTMwZmExZTFiZjcwZTFjYzJhYTE4MzZiNTdiODguLmJiZDgyMmUxNzUxYmFlYjBmM2JhZWI4
N2Q4Y2Q3NzQ3NDczYzAwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMwMyw2ICszMDMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQ
cmV3YXJtTG9jYWxTdG9yYWdlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGludmFsaWRhdGVDb250ZW50
RXZlbnRSZWdpb25zSWZOZWVkZWQoKTsKKwogLy8gPT09PT09PT0KIAogICAgIHZvaWQgc2VsZk9u
bHlSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjNjhmNWQzOGM2ZTUxZTA0
ODg4NzA5NGM1N2ViZmYwN2FhZjAxY2ViLi4yOGJlNzZlMGY3MTZkM2I4MGYzOGNmZDIwZjA5NDU3
NjI1OTJiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjYxLDEyICsxMjYx
LDE1IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBs
YXlvdXRSb290KQogCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlckxheW91dCgpOwog
CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAg
ZnJhbWUoKS5pbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKCk7CisKICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShHVEspCi0gICAgaWYg
KGF1dG8qIGNhY2hlID0gZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUo
KSkKKyAgICBpZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hl
KCkpCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGxheW91dFJvb3QuZ2V0KCksIEFY
T2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUpOwogI2VuZGlmCiAKLSAgICBmcmFtZSgpLmRv
Y3VtZW50KCktPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CisgICAgZG9j
dW1lbnQtPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CiAKICAgICB1cGRh
dGVDYW5CbGl0T25TY3JvbGxSZWN1cnNpdmVseSgpOwogCkBAIC0xMjc0LDEwICsxMjc3LDEwIEBA
IHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRS
b290KQogCiAgICAgaGFuZGxlRGVmZXJyZWRTY3JvbGxiYXJzVXBkYXRlQWZ0ZXJEaXJlY3Rpb25D
aGFuZ2UoKTsKIAotICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShE
b2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKKyAgICBpZiAoZG9jdW1lbnQtPmhh
c0xpc3RlbmVyVHlwZShEb2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKICAgICAg
ICAgdXBkYXRlT3ZlcmZsb3dTdGF0dXMobGF5b3V0V2lkdGgoKSA8IGNvbnRlbnRzV2lkdGgoKSwg
bGF5b3V0SGVpZ2h0KCkgPCBjb250ZW50c0hlaWdodCgpKTsKIAotICAgIGZyYW1lKCkuZG9jdW1l
bnQoKS0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKKyAgICBkb2N1
bWVudC0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKIH0KIAogYm9v
bCBGcmFtZVZpZXc6OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5n
ZSgpCkBAIC00MjI1LDcgKzQyMjgsNyBAQCB2b2lkIEZyYW1lVmlldzo6ZGlkUGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UgogICAgIH0K
IH0KIAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kg
c2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDI4OCw4ICs0MjkxLDggQEAgdm9pZCBGcmFt
ZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QKICAgICB3aGlsZSAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikgJiYg
IWRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKS5maXJzdExpbmVCb3goKSkKICAgICAg
ICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAKLSAgICByb290TGF5ZXItPnBhaW50
KGNvbnRleHQsIGRpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRl
cmVyLCB7IH0sIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeTo6QW55T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFueU9yaWdpbiA6IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpB
Y2Nlc3NpYmxlT3JpZ2luT25seSk7Ci0gICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92
ZXJsYXlTY3JvbGxiYXJzKCkpCisgICAgcm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJl
Y3QsIExheW91dFNpemUoKSwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0
eU9yaWdpblBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biA/IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBS
ZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9u
bHksIGV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0
eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKICAgICAgICAgcm9v
dExheWVyLT5wYWludE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQsIGRpcnR5UmVjdCwgbV9wYWlu
dEJlaGF2aW9yLCByZW5kZXJlcik7CiAKICAgICBkaWRQYWludENvbnRlbnRzKGNvbnRleHQsIGRp
cnR5UmVjdCwgcGFpbnRpbmdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiYjk1
Nzg1Y2M4MTI3YTM3ZmY2MTUwNmZmNjgxNjJmNDgxNTdkZGY0Li4xMzNkOTA1OWVjYjVkNjkwM2Zh
ZmZmZDkwYTFlYTZiYTY3MDJkMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU3LDYg
KzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xh
c3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZsb2F0U2l6ZTsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwpAQCAtMzUxLDcgKzM1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVy
RW1iZWRkZWRPYmplY3QmKTsKICAgICB2b2lkIHJlbW92ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUo
UmVuZGVyRW1iZWRkZWRPYmplY3QmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9u
Q29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsK
ICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDJmZDE1ZjdiMzAxN2IxYzdlZTdhMjFj
ODYxODY1NGI5NTExMDkyMjcuLjQ2OTY1MTFkNjFhMWJkYzQxMjZmMjE5ODBkOTMwOTVhYjMwNmNj
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMjM2LDE0ICsx
MjM2LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0LmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBpY29u
R0NQb2ludCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2
ZW50UmVnaW9uQ29udGV4dCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAg
ICBXaWRnZXQ6OnBhaW50KGNvbnRleHQsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1p
bmdQYWludEludmFsaWRhdGlvbigpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSAmJiAhZXZlbnRSZWdp
b25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRB
cmVhV2lsbFBhaW50KCk7CkBAIC0xMjY4LDcgKzEyNjgsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJp
dHlPcgogICAgICAgICAgICAgY29udGV4dC5jbGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgICAgIH0KIAotICAgICAgICBwYWludENvbnRl
bnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5
KTsKKyAgICAgICAgcGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSwgZXZlbnRSZWdpb25Db250ZXh0KTsKICAgICB9CiAKICNp
ZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
aW5kZXggYjY0YWEzYmEwNjZjOWNkYWQ5MGExZmNiYTFhMTU0YjIwMzBiYjUxZS4uN2FkNTA0OWYx
ODg5MmNlYjk1MzU4YWQwOGI0NzI0MGQxMjVkNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaApAQCAtNTcsNiArNTcsNyBAQCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgSG9zdFdp
bmRvdzsKIGNsYXNzIExlZ2FjeVRpbGVDYWNoZTsKIGNsYXNzIFNjcm9sbGJhcjsKQEAgLTM1MCw3
ICszNTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5k
bGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBz
Y3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6
QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAgICAgdm9p
ZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNp
YmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhp
ZGRlbi4KQEAgLTM4OCw3ICszODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsVmlldygpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwg
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFu
eU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFu
Z0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwCmluZGV4IDEyOTNlMmQ3OTMxM2Y4NmI5ZTg2YzhiYzBiMjU3Nzk2ZGZkNWQ2
MjkuLmE2YjU4MDczODk5NDYyNmM5NzVhNmM3MjkwYjAzNDFmMWZiZWM1OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU2Nyb2xs
YmFyOjp1cGRhdGVUaHVtYlByb3BvcnRpb24oKQogICAgIHVwZGF0ZVRodW1iKCk7CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQg
U2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdp
b25Db250ZXh0KikKIHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMo
KSAmJiB0aGVtZSgpLnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgaW52YWxpZGF0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAppbmRleCBjYjk1MGUyM2Y3YTc2NWUw
NzI5MDhkNWIzNjZiMTZjY2JmMGQzNGQyLi5lZDM4OTZjOWQyYzkxYzEyZDczNDZmNDZiNjU2NDNh
MDdhYTQ0NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9uKGludCB2
aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGludCBw
KSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0
LmNwcAppbmRleCBlOWY1ZDgxZTAzYWU2MjNiYTliM2FkN2Y1ZmVmYTM1M2RmMmFiNjhkLi5hN2Zl
MzgwZjNmZDJkOWNhNmNmODI4YjgyZWEzZDQ2ZGQ1MzdlOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRl
eHQqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CmluZGV4IDFjZjkzMWMxMjIzNzAwMjhmNWFmMDZjNTdkNDU4OGE2ZjJmYzU0YWYuLjRmMzAyYWJi
ZjEwZWFiOTAwYjMwYzYzMzlhYjg4MDQ3MGI3YTdmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdl
dC5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29y
OwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBGb250Q2Fz
Y2FkZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKQEAgLTEwOSw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgeyBBbnlPcmlnaW4sIEFjY2Vzc2libGVPcmlnaW5Pbmx5IH07CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
OjpBbnlPcmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0
KiA9IG51bGxwdHIpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91
bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lk
Z2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRl
eCAzZTA5YzExYjQ2MzI3YjQwMTY5N2E1ZGUwZGQ3NjE5NWMxYjNkYWM1Li40ZTA3YmQ3NTE2ODlm
Y2E1MmNiM2E2YzFhMDY3OWM0ZmEyMGM3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XaWRnZXRJT1MubW0KQEAgLTE0Niw3ICsxNDYsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0
ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IElu
dFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCop
CiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCAyNjZiMDQyZTA2ZmQ3ZGIz
ZjI3MTVhNDYxZDg0Y2UwYTc3OTBkNTE0Li4zMDQ1ODg4YTM0NDRjNTdmY2ExNGUxYTNiMjMxZTJk
MmQ2ZTA0ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KQEAg
LTE4Niw3ICsxODYsNyBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAg
ICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
cCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lk
Z2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBlYzZmZDhjZmZlNjcxZmY4OGVmMjUzZWRiMjk5ZjkzNDA1
NGJmMWM3Li5kYmFhNTE3Mzk1ZWI3NWM5Zjk1NDEzMGZjY2M1YzQ0MTcxYWU3NDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEyNTUsOCArMTI1NSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdp
b25Db250ZXh0LT51bml0ZShib3JkZXJSZWdpb24sIHN0eWxlKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBkZXNjZW5kYW50cyBpZiB3ZSBkb24ndCBoYXZlIG92
ZXJmbG93IGFuZCBkb24ndCBjb250YWluIGZsb2F0cyBhbmQgdGhlIGFyZWEgaXMgYWxyZWFkeSBj
b3ZlcmVkLgotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3Vh
bE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9u
Q29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSk7CisgICAgICAg
IGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBj
b250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5jb250YWlu
cyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3KCkubmVlZHNFdmVudFJlZ2lv
blVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1RyYXZlcnNlRGVzY2Vu
ZGFudHMgfHwgZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9u
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApp
bmRleCA4NzdmNDgwNmE3Yzc2YmIyYWZlODQzY2E0OGNjNmYyMTViMmFmZDRiLi41ZWEwOWE1MDZm
ZTZlNTQ4YzFlOTdjNWM0MWM0NDAxZDI2NDg1YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXcKICAgICAgICAgaWYgKG5lZWRzSW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkpIHsKICAg
ICAgICAgICAgIC8vIFVzdWFsbHkgdGhlIGV2ZW50IHJlZ2lvbiBnZXRzIHVwZGF0ZWQgYXMgYSBy
ZXN1bHQgb2YgcGFpbnQgaW52YWxpZGF0aW9uLiBIZXJlIHdlIG5lZWQgdG8gcmVxdWVzdCBhbiB1
cGRhdGUgZXhwbGljaXRseS4KICAgICAgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGVuY2xvc2lu
Z0xheWVyKCkpCi0gICAgICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbigp
OworICAgICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5
ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpTdHlsZSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxl
Lm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyMWY1MmI5N2Q3
ZmNlNDY3YTc0Mjg2ZDc1YzhkMTZiZTcyNzI5NTRjLi4yOTY4MTc0NGRiYzYyMWUyZWMzY2I0MmVh
ODEyYmJmOTNjZGE4ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE5IEFkb2Jl
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMp
IDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCkBAIC00MjA0LDExICs0
MjA0LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVB
cmVhOjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9w
dGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRy
ZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwg
Y29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9y
PiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNl
dDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBw
YWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAg
ICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKICAgICBMYXll
clBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VS
ZWN0KSwgcGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1YnRyZWVQYWludFJvb3QsICZv
dmVybGFwVGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7CisgICAgaWYgKGV2ZW50UmVnaW9uQ29udGV4dCkg
eworICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZlbnRSZWdpb25D
b250ZXh0OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckNv
bGxlY3RpbmdFdmVudFJlZ2lvbik7CisgICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFp
bnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogb3Zlcmxh
cFRlc3RSZXF1ZXN0cy5rZXlzKCkpCkBAIC03MDAyLDEyICs3MDA2LDEyIEBAIGJvb2wgUmVuZGVy
TGF5ZXI6OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lv
bigpCitib29sIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25J
bnZhbGlkYXRpb25SZWFzb24gcmVhc29uKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYXV0byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JS
ZXBhaW50KCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRhaW5zRXZlbnRSZWdpb24gPSBb
Jl0gewogICAgICAgICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFwIHRlc3RpbmcuCkBAIC03MDE5
LDEwICs3MDIzLDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYgKCFtYWludGFpbnNFdmVu
dFJlZ2lvbigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNvbiAhPSBFdmVudFJlZ2lv
bkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZElGcmFtZSAmJiAhbWFpbnRhaW5zRXZl
bnRSZWdpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29tcG9zaXRpbmdMYXll
ci0+c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKKworICAgIGlmIChy
ZWFzb24gPT0gRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5vbkNvbXBvc2l0ZWRJRnJh
bWUpIHsKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+cmVuZGVyZXIoKS52aWV3KCkuc2V0TmVl
ZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKKyAgICAgICAgaWYg
KHJlbmRlcmVyKCkuc2V0dGluZ3MoKS52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpICYgTm9u
RmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAgICAgICBjb21wb3NpdGluZ0xheWVyLT5yZW5k
ZXJlcigpLnZpZXcoKS5zZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBk
YXRlRm9yRGVidWdPdmVybGF5c09ubHkoKTsKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+Y29t
cG9zaXRvcigpLnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CisgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
aW5kZXggZDExMzkzZTA3ZGViYWFjYjg1YmEzMTI0OTJmY2IwNGRjZGU1N2ZjMS4uMDNlMzI3NWNh
MmU5MmM0MWFiOTc4NDdjNzE0M2FlMzU3ODYwNDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKQEAgLTY5NSw3ICs2OTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbnQu
ICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50cyBieSB3YWxraW5nCiAg
ICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBmcm9tIGZyb250IHRvIGJhY2su
CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1h
Z2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCA9IExheW91dFNpemUoKSwg
T3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+ID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsLAotICAgICAg
ICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFp
bnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0
cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiA9IHsgfSwg
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFu
eU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpOwogICAgIGJvb2wgaGl0VGVz
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRl
c3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0
UmVzdWx0Jik7CiAgICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIE9wdGlvblNldDxQYWludEJlaGF2aW9y
PiwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0cik7CkBAIC05MjQsNyAr
OTI0LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1RyYW5zcGFyZW50
UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OwogCi0gICAgdm9pZCBpbnZhbGlkYXRlRXZl
bnRSZWdpb24oKTsKKyAgICBlbnVtIGNsYXNzIEV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29u
IHsgUGFpbnQsIFN0eWxlLCBOb25Db21wb3NpdGVkSUZyYW1lIH07CisgICAgYm9vbCBpbnZhbGlk
YXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb24pOwogCiBwcml2YXRl
OgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDA4MWQ0Yzc2NDAzYThlYmJlMDA3OWRhMjEyNTNjYTJmZTBiYWNiZDIuLjBkMmIwZjUy
NDcyNzEwNWZkMTRlMTVkNTZjZWExMWNmMTVkYmU5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNjE4LDExICsxNjE4LDEyIEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJlZ2lvbigpCiAgICAgaWYgKHBh
aW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9v
bCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSA9IHJlbmRlcmVy
KCkudmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKCk7
CiAgICAgYm9vbCBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1
bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKTsKICNlbmRpZgot
ICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cykgeworICAgIGlmICghaGFzVG91Y2hBY3Rp
b25FbGVtZW50cyAmJiAhbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJh
bWUpIHsKICAgICAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTY2Niw2ICsxNjY3LDkgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkKIAogICAgIGlmIChtX3Njcm9sbGVkQ29udGVu
dHNMYXllcikKICAgICAgICAgdXBkYXRlRXZlbnRSZWdpb25Gb3JMYXllcigqbV9zY3JvbGxlZENv
bnRlbnRzTGF5ZXIpOworCisgICAgaWYgKG5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21w
b3NpdGVkSUZyYW1lKQorICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5zZXROZWVkc0V2ZW50UmVn
aW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZShmYWxzZSk7CiB9CiAjZW5kaWYKIApAQCAt
Mjc4MSw3ICsyNzg1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVl
ZERpc3BsYXkoR3JhcGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRvTGF5ZXIKICAgICBpZiAoIW1fb3du
aW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgbV9vd25pbmdMYXllci5zZXRO
ZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOwogCi0gICAgbV9vd25pbmdMYXll
ci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVF
dmVudFJlZ2lvbihSZW5kZXJMYXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246OlBh
aW50KTsKIAogICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmll
dygpOwogICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVyICYmIGZyYW1lVmlldy5p
c1RyYWNraW5nUmVwYWludHMoKSkKQEAgLTI4MjEsNyArMjgyNSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3Qm
IHIsIEdyYXBoCiAgICAgaWYgKCFtX293bmluZ0xheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAg
ICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRh
dGUoKTsKIAotICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAg
bV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVn
aW9uSW52YWxpZGF0aW9uUmVhc29uOjpQYWludCk7CiAKICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFw
cGVkUmVjdEZvclBhaW50aW5nID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhyLCBkZXZpY2VTY2Fs
ZUZhY3RvcigpKTsKICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlcigpLnZpZXcoKS5mcmFt
ZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggM2EwMzhjZThhM2EyZTg3ODAxMTNiNGRlMGMxNjdlNDEwZDE3YTI3
My4uNzg3MzA1NDgyNmYxODEwMzEwYTI0ZDZlZmMwOGM5YjhmZjg4ZjVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTg1
OCw2ICs4NTgsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0
aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUKIAogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCZwYWdlKCkpOwogCisgICAgaWYgKG1f
cmVuZGVyVmlldy5uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9y
RGVidWdPdmVybGF5c09ubHkoKSkgeworICAgICAgICBtX3JlbmRlclZpZXcucmVwYWludFJvb3RD
b250ZW50cygpOworICAgICAgICBtX3JlbmRlclZpZXcuc2V0TmVlZHNSZXBhaW50SGFja0FmdGVy
Q29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGZhbHNlKTsKKyAgICB9
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcyNSw2ICszNzMwLDE0IEBAIEdyYXBoaWNz
TGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3
YW50c0xheWVyKQogCiAjZW5kaWYKIAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpZXdO
ZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9y
UmVwYWludCgpIGNvbnN0Cit7CisgICAgLy8gRXZlbnQgcmVnaW9ucyBhcmUgb25seSB1cGRhdGVk
IG9uIGNvbXBvc2l0aW5nIGxheWVycy4gTm9uLWNvbXBvc2l0ZWQgbGF5ZXJzIG11c3QKKyAgICAv
LyBkZWxlZ2F0ZSB0byB0aGVpciBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yIHJlcGFp
bnQgdG8gdXBkYXRlIHRoZSBldmVudCByZWdpb24KKyAgICAvLyBmb3IgZWxlbWVudHMgaW5zaWRl
IHRoZW0uCisgICAgcmV0dXJuICFtX3JlbmRlclZpZXcuaXNDb21wb3NpdGVkKCk7Cit9CisKIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENv
bG9yKiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFt
ZVZpZXcoKS5pc1RyYW5zcGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA5NDZkZmM0YTI2ZTcxODYwYzQ0ZDI5Yzhj
ODcwZGM4YzJiMjViMjIzLi43Y2U2MzhjOTQ1ZmIzMTRlMzZiOTM5Njk2ZDcwNTllMDY5NWIzOWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5oCkBAIC0zNTgsNiArMzU4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCB2aWV3SGFzVHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IgPSBudWxscHRyKSBjb25zdDsK
IAorICAgIGJvb2wgdmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0Nv
bXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkgY29uc3Q7CisKICAgICBib29sIGhhc05vbk1haW5M
YXllcnNXaXRoVGlsZWRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcnNXaXRoVGlsZWRC
YWNraW5nQ291bnQ7IH0KIAogICAgIE9wdGlvblNldDxDb21wb3NpdGluZ1JlYXNvbj4gcmVhc29u
c0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDBjYTJkYTA5Mjc0ZjYyNmJh
OTY2ZjYzNGVlYTdmNDQ5NTY0YzY4NjIuLjVlMzZkMWE3NjI4OWExZGY3YjBkMmE0M2YyNTY1NzQy
ODUzYTM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnN0eWxlQ2hhbmdl
ZCgpCiAgICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxi
YXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBSZW5kZXJTY3Jv
bGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNv
bnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpKSB7
CiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZWEzNThkZmRiYmM1NTUwYzIzODU1ZmE5Zjk3ZWU3
YzYzMmYzNWNjMC4uYmExNzIzNWIxN2M0YmY1NTUxM2I0OGFiMTRhNDFmYWNjNzMwOTdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtNjgsNyArNjgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXNz
ZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKaW5kZXggOTE0ZWJiYzdkZDNlODI1YWQ1YWQxNDEwMGY1NjQxZGViYzZiODdiMi4u
ZTY0YTAyYjQ3NjRmNTg3YjBjZGExYTg0Y2IzOGYxZDQ5NGMwNWJlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC02OCw2ICs2OCwxMiBAQCBwdWJsaWM6CiAKICAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKKyAg
ICBib29sIG5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1
Z092ZXJsYXlzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29t
cG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5OyB9OworICAgIHZvaWQgc2V0
TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3Zlcmxh
eXNPbmx5KGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9z
aXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5ID0gdmFsdWU7IH0KKworICAgIGJv
b2wgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lOyB9
CisgICAgdm9pZCBzZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFt
ZShib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21w
b3NpdGVkSUZyYW1lID0gdmFsdWU7IH0KKwogICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1
dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXBhaW50Um9vdENvbnRlbnRzKCk7CiAgICAgdm9pZCByZXBhaW50
Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CkBAIC0yNTUsNiArMjYxLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU29mdHdhcmVGaWx0ZXJzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0Zp
cnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc1JlcGFpbnRIYWNrQWZ0
ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSB7
IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFJlbmRlckVsZW1lbnQqLCBWZWN0b3I8Q2FjaGVkSW1h
Z2UqPj4gbV9yZW5kZXJlcnNXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb247CiAgICAgSGFzaFNldDxS
ZW5kZXJFbGVtZW50Kj4gbV92aXNpYmxlSW5WaWV3cG9ydFJlbmRlcmVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2Y2ZjMzYjc1MmI1Yjg2Mzc5N2M0
YTFhODIyNzg1ZDJjMzRkODVhYS4uNzM5ZTViNjJiMThlZGZjNmQ5OWEzYmVkMzY2MjE4YWQwZDk1
ZTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTEs
NyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNDYsOCArMjQ2
LDE4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkudHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgcGFpbnRSZWN0Lm1vdmUo
LXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICB9CisKKyAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVn
aW9uQ29udGV4dCkgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRQYWludE9mZnNldCk7CisgICAgICAgIHBhaW50
SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnB1c2hUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB9
CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVuY2xvc2luZy9pbnRlZ3JhbCBz
bmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmljZSBwaXhlbCBzbmFwcGVkLgot
ICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChw
YWludFJlY3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0
cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9u
bHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAg
bV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50
UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzID8g
V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSA6
IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBwYWludEluZm8u
ZXZlbnRSZWdpb25Db250ZXh0KTsKKworICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250
ZXh0KQorICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wb3BUcmFuc2Zvcm0o
KTsKIAogICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpCiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7CkBAIC0yODIsNyAr
MjkyLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZTo6T3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6
U2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSkKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50
SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIAotICAgIGlm
IChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkKKyAgICBpZiAocGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
c3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgewpAQCAtMzA0LDYgKzMxNCw5IEBAIHZvaWQgUmVu
ZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQogICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAorICAgIGlmIChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIC8v
IFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRz
LgogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYgIWRvY3VtZW50KCkucHJpbnRpbmcoKSkgewogICAg
ICAgICAvLyBGSVhNRTogc2VsZWN0aW9uUmVjdCgpIGlzIGluIGFic29sdXRlLCBub3QgcGFpbnRp
bmcgY29vcmRpbmF0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGI2MDVhMjg5MTNiMzhmZWVjYzQ0MzAwMjk2M2NkNTliM2Y2Yjdi
YjguLmM3ZmJhZWNhMjM0ZGMxYzE4OWZlYTY5NjBlZjk1NmU4MWE4YmY0YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03ODMsNyAr
NzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbHVn
aW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8q
ZGlydHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUGx1
Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAv
KmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkIHx8
IG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVz
dGFydGluZykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDg0ZDQyNjRjZTBkMDY4ODZjMzk5Yzg1NjQ4ZDI1YTlj
YTFlYjgxNjYuLjAzYTkxYmNiOWE4MDM2YTUyZjlhNWNiMGMyNTdlZWRhNTc1NjU5NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE3Myw3
ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6V2lkZ2V0CiAgICAgdm9pZCBz
ZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBXZWJD
b3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGVS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEZvY3Vz
KGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZGMzZmUyZjU2MjlmNDkwMDNlMmFiODhiNDdmYzI3MDEzNDdmNjdiLi41MDJlZjAy
YmZkYjcwNDgxNzkxNjRlNzM2MmE1YmI1OTNhMDgzMTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMjAtMDQtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQg
aWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW9yZSB0ZXN0cy4KKworICAg
ICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1p
bnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50
cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50
cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0
aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlm
cmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJl
Y2FtZSBmaXJzdCByZXNwb25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmll
dyB3YXMgcmVzaWduZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9z
L3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rp
b24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjczNDM0NTA5
ZGQ3MDQyYjg1NzgwZDUxNjRjM2M5ODQ2ZmEzNTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5
ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNo
aWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAg
ICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAg
IChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9u
CisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdp
ZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAg
ICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9w
cm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWM4OTQ1NmZmMjllZGNiMjM2ZTE2ZmE0Nzkx
OWJmMmNlMjg0N2IyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50
cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1l
IGlkPSJ0ZXN0RnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrJz48L2Rpdj4iIG9ubG9hZD0icnVuVGVzdCgp
Ij48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB0
ZXN0RnJhbWUuY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpLnN0eWxlLnRvdWNo
QWN0aW9uID0gIm5vbmUiOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXN1
bHRzLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVy
bmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8IGludGVybmFscy5MQVlFUl9U
UkVFX0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9p
b3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbCBiL0xheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk3ODMwOGJjMTdjMDYyNWIyYjgzMGQ3OGQ3NTA1
Y2IyNWNhMmIyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMv
aW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKQEAgLTAs
MCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIHNyY2Rv
Yz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0aW9uOiBub25lOyB3aWR0aDogMTAwcHg7IGhlaWdodDog
MTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2FkPSJ3aW5kb3cucGFy
ZW50ICYmIHdpbmRvdy5wYXJlbnQuZHVtcFJlZ2lvbigpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRl
cmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Y3MzQzNDUwOWRkNzA0MmI4NTc4MGQ1MTY0YzNjOTg0NmZhMzU3NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdy
YXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4w
MCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAu
MDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50
IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9u
CisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91
Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAo
MTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZl
bnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2I3NGVlYzI3MDM4Nzc3ZmY3ZDI3YTQ5NTkzN2Y5YjUyYjRhMmI1MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyY2RvYz0iPGRpdiBz
dHlsZT0ndG91Y2gtYWN0aW9uOiBub25lOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJv
cmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZyYW1l
PgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRy
ZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JF
R0lPTiB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJPUEVSVElF
Uyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjczMzNhZjhmZGU5ZWIzYWQ5YWVjYTk2NDk1M2ZiZTVkNTc4NGU1MDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1p
bnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCisoR3Jh
cGhpY3NMYXllcgorICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCisgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQg
MSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikKKyAgICAgIChldmVudCByZWdpb24K
KyAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9ODAwIGhlaWdodD02MDApCisgICAgICAgICh0b3Vj
aC1hY3Rpb24KKyAgICAgICAgICAobm9uZSAgICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICgy
OCwyOCkgd2lkdGg9MTAyIGhlaWdodD0xMDIpCisgICAgICAgICAgKQorICAgICAgICApCisgICAg
ICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVu
dHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVk
LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNTFmMjg3MDJjZTBkODM3Yjk4OWI5YjkyMWY2Njll
ZjI4NzA4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEs
MjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RG
cmFtZSIgc3JjPSJyZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1s
Ij48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBkdW1wUmVnaW9uKCkKK3sKKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgcmVzdWx0cy5pbm5lclRleHQgPSBpbnRl
cm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNM
VURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19ST09UX0xB
WUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395779</attachid>
            <date>2020-04-08 00:45:17 -0700</date>
            <delta_ts>2020-04-08 01:14:23 -0700</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-210041-20200408004516.patch</filename>
            <type>text/plain</type>
            <size>48980</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU1NDk3NDM1MDNkZDU3
OGM2OGE0Zjc1MDllMTM2MTFhNzk3MmM1ZC4uY2U1ZGU3ZjUwNzM3ZjhjZDJiYWE0ZTYyYWJkM2U2
YjE2YWRmMDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTA0LTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3Vj
aC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50
ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKTogQWRkZWQu
IFRyeSB0byBpbnZhbGlkYXRlIHRoZSBldmVudCByZWdpb24uCisgICAgICAgIFRoaXMgbWF5IGZh
aWwgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4gZW5jbG9zaW5nIGNvbXBvc2l0aW5n
IGxheWVyIGZvciByZXBhaW50IChlLmcuIG5lc3RlZAorICAgICAgICBjb21wb3NpdGVkIGlmcmFt
ZXMgLSBzZWUgdGVzdCBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
bmVzdGVkLWlmcmFtZS5odG1sKS4gSWYKKyAgICAgICAgdGhpcyBoYXBwZW5zIHRoZW4gcmVjdXJz
aXZlIG9uIG91ciBvd25lciBlbGVtZW50J3MgZG9jdW1lbnQuIFJlY3Vyc2lvbiBpcyB1c2VkIGlu
c3RlYWQgb2YgYSBsb29wCisgICAgICAgIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIG91
dC1vZi1wcm9jZXNzIChPT1ApIGlmcmFtZXMsIHdoaWNoIHdpbGwgbGlrZWx5IGludHJvZHVjZSBk
b2N1bWVudCBwcm94eSBvYmplY3RzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQpOiBBZGRlZC4gQ2hlY2sgaWYgb3VyIGRvY3VtZW50
IGhhcyBhbnkgZWxlbWVudHMgd2l0aAorICAgICAgICBhIG5vbi1hdXRvIHRvdWNoLWFjdGlvbi4g
SWYgaXQgZG9lcyB0aGVuIGFzayB0aGUgY29tcG9zaXRvciBpZiB0aGUgZW5jbG9zaW5nIGNvbXBv
c2l0aW5nIGxheWVyIGZvcgorICAgICAgICByZXBhaW50J3MgZXZlbnQgcmVnaW9uIG11c3QgYmUg
aW52YWxpZGF0ZWQgLSBpdCB3aWxsIG9ubHkgcmVwbHkgdHJ1ZSBpZiB0aGlzIGlzIGEgbm9uLWNv
bXBvc2l0ZWQgaWZyYW1lLgorICAgICAgICBJZiBpdCBkb2VzIHRoZW4gZm9yd2FyZCB0aGlzIGlu
dmFsaWRhdGlvbiByZXF1ZXN0IHRvIHRoZSBkb2N1bWVudC4gVGhlIHJlYXNvbiBJIGRlbGVnYXRl
IHRvIHRoZSBkb2N1bWVudAorICAgICAgICBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZSBsb2dpYyBo
ZXJlIGlzIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIE9PUCBpZnJhbWVzLgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZExheW91dCk6IENhbGwgRnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKS4gQWxzbyB3aGlsZQorICAgICAgICBJIGFtIGhl
cmUgdGFrZSBvdXQgYSByZWYgb24gdGhlIGRvY3VtZW50IHRvIGVuc3VyZSBpdCBsaXZlcyB0aHJv
dWdoIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwgaW5jbHVkaW5nCisgICAgICAgIHRocm91Z2gg
dGhlIGFjY2Vzc2liaWxpdHkncyBwb3N0Tm90aWZpY2F0aW9uKCkgY29kZSB0aGF0IGNhbGxzIG91
dCB0byB0aGUgZW1iZWRkaW5nIGNsaWVudC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWludCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmg6CisgICAgICAgICogcGxhdGZvcm0vV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorICAg
ICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6c3R5bGVXaWxsQ2hhbmdlKTogVXBkYXRlIGNvZGUgbm93IHRoYXQgUmVuZGVMYXllcjo6aW52
YWxpZGF0ZUV2ZW50UmVnaW9uKCkKKyAgICAgICAgdGFrZXMgYSByZWFzb24uIAorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOiBQYXNzIHRoZSBFdmVudFJlZ2lvbkNvbnRleHQgdGhyb3VnaC4gSWYgYXJlIHBh
c3NlZCBvbmUgdGhlbiB1cGRhdGUKKyAgICAgICAgcGFpbnQgZmxhZ3MgdG8gY29sbGVjdCBldmVu
dCByZWdpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50
UmVnaW9uKTogQ2hhbmdlZCByZXR1cm4gdmFsdWUgZnJvbSB2b2lkIHRvIGJvb2wgc28gYXMgdG8g
aW5kaWNhdGUKKyAgICAgICAgdG8gdGhlIGNhbGxlciB3aGV0aGVyIHRoZSBldmVudCByZWdpb24g
d2FzIGFjdHVhbGx5IGludmFsaWRhdGVkLiBBbHNvIG1hZGUgaXQgdGFrZSBhbiBhcmd1bWVudCBh
cworICAgICAgICB0byB0aGUgcmVhc29uIGZvciB0aGUgaW52YWxpZGF0aW9uLiBJZiBpbnZhbGlk
YXRpb24gaXMgZHVlIHRvIGEgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lIHRoZW4gc2V0cyBzb21lCisg
ICAgICAgIHN0YXRlIGFuZCBzY2hlZHVsZSBhIGNvbXBvc2l0aW5nIGxheWVyIHVwZGF0ZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJlZ2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5
SW5SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRp
bmdMYXllcnMpOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoCisK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dmlld05lZWRzVG9JbnZh
bGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50IGNv
bnN0KTogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAg
ICAgUGFzcyBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdGhyb3VnaC4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojpw
YWludENvbnRlbnRzKTogVHJhbnNsYXRlIHRoZSBldmVudCByZWdpb24gYnkgb3VyIGNvbnRlbnQg
cGFpbnQgb2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6IFVw
ZGF0ZSBmb3IgRXZlbnRSZWdvbi4KKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBD
YXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4OGY5ZmNiYjgwNzMzMDNhMjA1OTkyMzgx
YzcxMmMxMjZjODM0NzAuLjM1MGQ2ODdlYzk0Mjg4NWYyY2UzNjk0NWY0MzhkNTVhZDA5ZWQ3NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQtMDcgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVt
ZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJdCBpcyB1bnVzZWQgYXMgaXQn
cyBub3QgYXBwbGljYWJsZSBmb3IgcGx1Z2luIHBhaW50aW5nLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpwYWludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwog
MjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNwb25kZXIg
aWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBmYTNhNTc2ZWM1YzgwOGU0YzYwMTc4NWQ3ODFiOGQw
Y2FiZDA3N2RjLi5mYmQzMzYwODc2ZTE3MDc1MmFlODUwNWQwMzJlNzNkNDg3NGRmZmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMDggIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRv
dWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJdCBp
cyB1bnVzZWQgYXMgaXQncyBub3QgYXBwbGljYWJsZSBmb3IgcGx1Z2luIHBhaW50aW5nLgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXc6OnBhaW50KToKKwogMjAyMC0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gbWFrZSBXS1VzZXJTY3Jp
cHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAz
ZWY5NDU5MDBiYThmMjRlMDJmNWVjZjIwZGVjZmM3MDhiZmQ4MmEwLi5jNzczMDNhNTY2YmRmMWIx
Y2VjNWQwZGE3MjA2YTliZmJlNjg3OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQy
MzQsNiArNDIzNCwxOSBAQCB2b2lkIERvY3VtZW50OjplbGVtZW50SW5BY3RpdmVDaGFpbkRpZERl
dGFjaChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBtX2FjdGl2ZUVsZW1lbnQgPSBtX2FjdGl2
ZUVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6aW52YWxpZGF0
ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQpCit7
CisgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5k
ZXJlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvKiBsYXllciA9IHJlbmRlcmVyLT5l
bmNsb3NpbmdMYXllcigpKSB7CisgICAgICAgIGlmIChsYXllci0+aW52YWxpZGF0ZUV2ZW50UmVn
aW9uKFJlbmRlckxheWVyOjpFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9z
aXRlZElGcmFtZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChhdXRvKiBv
d25lckVsZW1lbnQgPSB0aGlzLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgb3duZXJFbGVtZW50
LT5kb2N1bWVudCgpLmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoKm93bmVyRWxlbWVu
dCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdp
b25zKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4MzlhZmNkNThiYWEzMWE3MmU5ZmE1ZjFlNjU3OTI2
M2Y4N2YyYmMxLi5lNzkwYThlMTJlZDUzMzgwMjkwY2JhYmI4YzFhNDU3YWJjY2YxOWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTE0MCw2ICsxMTQwLDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVn
aW9ucygpOworICAgIHZvaWQgaW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZShIVE1MRnJh
bWVPd25lckVsZW1lbnQmKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAwNTFmZGIzZWU1YzVjMzNlNjhiMWI2ZDBk
MDBjMWQwOTAzYjc5ZDU2Li40YTIxY2Y4NmE5YmFjMzI0MzEyMzhhN2FjY2ZiYjgzMzgwOWU4Y2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIEZyYW1lOjpz
ZXREb2N1bWVudChSZWZQdHI8RG9jdW1lbnQ+JiYgbmV3RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVu
dElzQmVpbmdSZXBsYWNlZCA9IGZhbHNlOwogfQogCit2b2lkIEZyYW1lOjppbnZhbGlkYXRlQ29u
dGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKCkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYg
KCFtX3BhZ2UgfHwgIW1fZG9jKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvYy0+bWF5
SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKCFtX2RvYy0+cmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkudmlld05lZWRzVG9JbnZh
bGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9vd25lckVsZW1lbnQpCisgICAgICAgIG1fb3du
ZXJFbGVtZW50LT5kb2N1bWVudCgpLmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoKm1f
b3duZXJFbGVtZW50KTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5U
UykKIHZvaWQgRnJhbWU6Om9yaWVudGF0aW9uQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggMjUyMGUwMzdhNTQ5MzBmYTFlMWJmNzBlMWNjMmFhMTgzNmI1N2I4OC4uYmJkODIyZTE3NTFi
YWViMGYzYmFlYjg3ZDhjZDc3NDc0NzNjMDA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMzAzLDYg
KzMwMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKICAg
ICBib29sIG1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSBjb25zdDsKIAorICAgIHZvaWQgaW52YWxp
ZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCgpOworCiAvLyA9PT09PT09PQogCiAgICAg
dm9pZCBzZWxmT25seVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM2OGY1
ZDM4YzZlNTFlMDQ4ODg3MDk0YzU3ZWJmZjA3YWFmMDFjZWIuLjI4YmU3NmUwZjcxNmQzYjgwZjM4
Y2ZkMjBmMDk0NTc2MjU5MmJlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEy
NjEsMTIgKzEyNjEsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRl
ckVsZW1lbnQ+IGxheW91dFJvb3QpCiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVy
TGF5b3V0KCk7CiAKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUoKS5kb2N1bWVu
dCgpKTsKKyAgICBmcmFtZSgpLmludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQo
KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdU
SykKLSAgICBpZiAoYXV0byogY2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhP
YmplY3RDYWNoZSgpKQorICAgIGlmIChhdXRvKiBjYWNoZSA9IGRvY3VtZW50LT5leGlzdGluZ0FY
T2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24obGF5b3V0Um9v
dC5nZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhMYXlvdXRDb21wbGV0ZSk7CiAjZW5kaWYKIAotICAg
IGZyYW1lKCkuZG9jdW1lbnQoKS0+aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMo
KTsKKyAgICBkb2N1bWVudC0+aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsK
IAogICAgIHVwZGF0ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKQEAgLTEyNzQsMTAg
KzEyNzcsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1l
bnQ+IGxheW91dFJvb3QpCiAKICAgICBoYW5kbGVEZWZlcnJlZFNjcm9sbGJhcnNVcGRhdGVBZnRl
ckRpcmVjdGlvbkNoYW5nZSgpOwogCi0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+aGFzTGlz
dGVuZXJUeXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQorICAgIGlmIChk
b2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVO
RVIpKQogICAgICAgICB1cGRhdGVPdmVyZmxvd1N0YXR1cyhsYXlvdXRXaWR0aCgpIDwgY29udGVu
dHNXaWR0aCgpLCBsYXlvdXRIZWlnaHQoKSA8IGNvbnRlbnRzSGVpZ2h0KCkpOwogCi0gICAgZnJh
bWUoKS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2Vycygp
OworICAgIGRvY3VtZW50LT5tYXJrZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2Vycygp
OwogfQogCiBib29sIEZyYW1lVmlldzo6c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRl
bnRTaXplQ2hhbmdlKCkKQEAgLTQyMjUsNyArNDIyOCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRQ
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGly
dHlSCiAgICAgfQogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBGcmFtZVZpZXc6OnBh
aW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAjaWZuZGVmIE5E
RUJVRwogICAgIGJvb2wgZmlsbFdpdGhXYXJuaW5nQ29sb3I7CkBAIC00Mjg4LDggKzQyOTEsOCBA
QCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgIHdoaWxlIChpczxSZW5kZXJJbmxpbmU+KHJl
bmRlcmVyKSAmJiAhZG93bmNhc3Q8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpLmZpcnN0TGluZUJv
eCgpKQogICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKIAotICAgIHJvb3RM
YXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhh
dmlvciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9PSBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5KTsKLSAgICBpZiAocm9vdExheWVyLT5jb250
YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSkKKyAgICByb290TGF5ZXItPnBhaW50KGNvbnRl
eHQsIGRpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7
IH0sIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eTo6QW55T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFu
eU9yaWdpbiA6IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3Np
YmxlT3JpZ2luT25seSwgZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICBpZiAocm9vdExheWVyLT5j
b250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQog
ICAgICAgICByb290TGF5ZXItPnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlS
ZWN0LCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyKTsKIAogICAgIGRpZFBhaW50Q29udGVudHMo
Y29udGV4dCwgZGlydHlSZWN0LCBwYWludGluZ1N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CmluZGV4IGJiOTU3ODVjYzgxMjdhMzdmZjYxNTA2ZmY2ODE2MmY0ODE1N2RkZjQuLjEzM2Q5MDU5
ZWNiNWQ2OTAzZmFmZmZkOTBhMWVhNmJhNjcwMmQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aApAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFYT2JqZWN0
Q2FjaGU7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3Mg
RmxvYXRTaXplOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CkBA
IC0zNTEsNyArMzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRPYmplY3RUb1Vw
ZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1iZWRkZWRPYmpl
Y3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3k6OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwg
RXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50
aW5nU3RhdGUgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMmZkMTVmN2IzMDE3
YjFjN2VlN2EyMWM4NjE4NjU0Yjk1MTEwOTIyNy4uNDY5NjUxMWQ2MWExYmRjNDEyNmYyMTk4MGQ5
MzA5NWFiMzA2Y2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAg
LTEyMzYsMTQgKzEyMzYsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9s
bEljb24sIGljb25HQ1BvaW50KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9u
Q29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgp
KSB7CiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWNvbnRl
eHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRp
bmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYm
ICFldmVudFJlZ2lvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG5vdGlmeVBhZ2VU
aGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKTsKQEAgLTEyNjgsNyArMTI2OCw3IEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTZWN1cml0eU9yCiAgICAgICAgICAgICBjb250ZXh0LmNsaXAodmlzaWJsZUNvbnRlbnRS
ZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHBhaW50Q29udGVudHMoY29udGV4dCwgZG9jdW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3kpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGly
dHlSZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBldmVudFJlZ2lvbkNvbnRleHQpOwog
ICAgIH0KIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaAppbmRleCBiNjRhYTNiYTA2NmM5Y2RhZDkwYTFmY2JhMWExNTRiMjAzMGJiNTFl
Li43YWQ1MDQ5ZjE4ODkyY2ViOTUzNThhZDA4YjQ3MjQwZDEyNWQ3OTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC01Nyw2ICs1Nyw3IEBAIE9CSkNfQ0xBU1MgV0FLVmll
dzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBj
bGFzcyBIb3N0V2luZG93OwogY2xhc3MgTGVnYWN5VGlsZUNhY2hlOwogY2xhc3MgU2Nyb2xsYmFy
OwpAQCAtMzUwLDcgKzM1MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3Zl
cnJpZGUuIEhhbmRsZXMgcGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdl
bGwgYXMgdGhlIHNjcm9sbGJhcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBmaW5h
bDsKICAgICB2b2lkIHBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0Jik7CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGls
ZHJlbidzIHZpc2liaWxpdHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBz
aG93biBhbmQgaGlkZGVuLgpAQCAtMzg4LDcgKzM4OSw3IEBAIHByb3RlY3RlZDoKICAgICBTY3Jv
bGxWaWV3KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29u
c3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0
aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggMTI5M2UyZDc5MzEzZjg2YjllODZjOGJjMGIy
NTc3OTZkZmQ1ZDYyOS4uYTZiNTgwNzM4OTk0NjI2Yzk3NWE2YzcyOTBiMDM0MWYxZmJlYzU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAg
dm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRlVGh1bWIo
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5KQordm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0Nv
bnRyb2xUaW50cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAg
ICBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGNiOTUw
ZTIzZjdhNzY1ZTA3MjkwOGQ1YjM2NmIxNmNjYmYwZDM0ZDIuLmVkMzg5NmM5ZDJjOTFjMTJkNzM0
NmY0NmI2NTY0M2EwN2FhNDQ0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3Bv
cnRpb24oaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNz
ZWRQb3MoaW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsgfQogCi0gICAgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4p
IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVs
bHB0cikgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuY3BwCmluZGV4IGU5ZjVkODFlMDNhZTYyM2JhOWIzYWQ3ZjVmZWZhMzUzZGYy
YWI2OGQuLmE3ZmUzODBmM2ZkMmQ5Y2E2Y2Y4MjhiODJlYTNkNDZkZDUzN2U5NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgV2lkZ2V0Ojpz
ZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50
UmVnaW9uQ29udGV4dCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2lkZ2V0LmgKaW5kZXggMWNmOTMxYzEyMjM3MDAyOGY1YWYwNmM1N2Q0NTg4YTZmMmZjNTRh
Zi4uNGYzMDJhYmJmMTBlYWI5MDBiMzBjNjMzOWFiODgwNDcwYjdhN2Y4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDdXJzb3I7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNs
YXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwpAQCAtMTA5LDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJl
Z2lvbkNvbnRleHQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZhbGlk
YXRlUmVjdChib3VuZHNSZWN0KCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0
KGNvbnN0IEludFJlY3QmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdl
dEd0ay5jcHAKaW5kZXggNjkxOWVlNDJiYTBjNDU5Y2I3YTMwYTlhNzBiNzJkMjhjMjc5OTliYy4u
N2M0NWRjZjc5YjE1MmY5NTdiMmNiOGZiMDQzYzgzZmQwZjVjZjQxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXaWRn
ZXQ6OmhpZGUoKQogICAgIHNldFNlbGZWaXNpYmxlKGZhbHNlKTsKIH0KIAotdm9pZCBXaWRnZXQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCAzZTA5
YzExYjQ2MzI3YjQwMTY5N2E1ZGUwZGQ3NjE5NWMxYjNkYWM1Li40ZTA3YmQ3NTE2ODlmY2E1MmNi
M2E2YzFhMDY3OWM0ZmEyMGM3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2lkZ2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRn
ZXRJT1MubW0KQEAgLTE0Niw3ICsxNDYsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0ZXJWaWV3
KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3Qm
IHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAg
ICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCAyNjZiMDQyZTA2ZmQ3ZGIzZjI3MTVh
NDYxZDg0Y2UwYTc3OTBkNTE0Li4zMDQ1ODg4YTM0NDRjNTdmY2ExNGUxYTNiMjMxZTJkMmQ2ZTA0
ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KQEAgLTE4Niw3
ICsxODYsNyBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1
cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29u
c3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0Ojpw
YWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
aWRnZXRXaW4uY3BwCmluZGV4IGZmZDg2YTA0NDAzNmVmOGNlYTE0NGQwNjMxZTNmMTI1ZTg0MDFl
Y2QuLjk2NWRmODM4M2ZiZGJlMzU3OWIwODExOGM0YmU2ZWQzMzdjNjdkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
V2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiAgICAgdmlldy0+aG9zdFdp
bmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQor
dm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBlYzZmZDhjZmZlNjcxZmY4
OGVmMjUzZWRiMjk5ZjkzNDA1NGJmMWM3Li5kYmFhNTE3Mzk1ZWI3NWM5Zjk1NDEzMGZjY2M1YzQ0
MTcxYWU3NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTEyNTUsOCArMTI1NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgICAgICBw
YWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT51bml0ZShib3JkZXJSZWdpb24sIHN0eWxlKCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBkZXNjZW5kYW50cyBp
ZiB3ZSBkb24ndCBoYXZlIG92ZXJmbG93IGFuZCBkb24ndCBjb250YWluIGZsb2F0cyBhbmQgdGhl
IGFyZWEgaXMgYWxyZWFkeSBjb3ZlcmVkLgotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNj
ZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFp
bnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3Jk
ZXJSZWN0KSk7CisgICAgICAgIGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFzVmlz
dWFsT3ZlcmZsb3coKSB8fCBjb250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRSZWdp
b25Db250ZXh0LT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3
KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBu
ZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgfHwgZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRo
Tm9uQXV0b1RvdWNoQWN0aW9uKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAppbmRleCA4NzdmNDgwNmE3Yzc2YmIyYWZlODQzY2E0OGNjNmYyMTVi
MmFmZDRiLi41ZWEwOWE1MDZmZTZlNTQ4YzFlOTdjNWM0MWM0NDAxZDI2NDg1YjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcg
QEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXcKICAgICAgICAgaWYgKG5lZWRzSW52YWxpZGF0ZUV2
ZW50UmVnaW9uKCkpIHsKICAgICAgICAgICAgIC8vIFVzdWFsbHkgdGhlIGV2ZW50IHJlZ2lvbiBn
ZXRzIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YgcGFpbnQgaW52YWxpZGF0aW9uLiBIZXJlIHdlIG5l
ZWQgdG8gcmVxdWVzdCBhbiB1cGRhdGUgZXhwbGljaXRseS4KICAgICAgICAgICAgIGlmIChhdXRv
KiBsYXllciA9IGVuY2xvc2luZ0xheWVyKCkpCi0gICAgICAgICAgICAgICAgbGF5ZXItPmludmFs
aWRhdGVFdmVudFJlZ2lvbigpOworICAgICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZl
bnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpTdHls
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxp
bmVTaXplKCkgPCBtX3N0eWxlLm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxl
RGlmZmVyZW5jZShkaWZmKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCAyMWY1MmI5N2Q3ZmNlNDY3YTc0Mjg2ZDc1YzhkMTZiZTcyNzI5NTRjLi4yOTY4MTc0
NGRiYzYyMWUyZWMzY2I0MmVhODEyYmJmOTNjZGE4ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDE5IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25z
IGFyZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRp
b24uCkBAIC00MjA0LDExICs0MjA0LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3Jv
bGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAg
cmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVs
dGlwbGllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYg
c3VicGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBS
ZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4g
cGFpbnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSkKK3ZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlv
blNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQ
YWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJl
Z2lvbkNvbnRleHQpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVx
dWVzdHM7CiAKICAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9z
aW5nSW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1
YnRyZWVQYWludFJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7CisgICAgaWYgKGV2
ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250
ZXh0ID0gZXZlbnRSZWdpb25Db250ZXh0OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJM
YXllcjo6UGFpbnRMYXllckNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CisgICAgfQogICAgIHBhaW50
TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAogICAgIGZvciAoYXV0
byYgd2lkZ2V0IDogb3ZlcmxhcFRlc3RSZXF1ZXN0cy5rZXlzKCkpCkBAIC03MDAyLDEyICs3MDA2
LDEyIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJh
bWVzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6Omlu
dmFsaWRhdGVFdmVudFJlZ2lvbigpCitib29sIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRS
ZWdpb24oRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb24gcmVhc29uKQogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgYXV0byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0Nv
bXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRh
aW5zRXZlbnRSZWdpb24gPSBbJl0gewogICAgICAgICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFw
IHRlc3RpbmcuCkBAIC03MDE5LDEwICs3MDIzLDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFs
aWRhdGVFdmVudFJlZ2lvbigpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAg
aWYgKCFtYWludGFpbnNFdmVudFJlZ2lvbigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJl
YXNvbiAhPSBFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZElGcmFt
ZSAmJiAhbWFpbnRhaW5zRXZlbnRSZWdpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgY29tcG9zaXRpbmdMYXllci0+c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRh
dGUoKTsKKworICAgIGlmIChyZWFzb24gPT0gRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246
Ok5vbkNvbXBvc2l0ZWRJRnJhbWUpIHsKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+cmVuZGVy
ZXIoKS52aWV3KCkuc2V0TmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJh
bWUoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkuc2V0dGluZ3MoKS52aXNpYmxlRGVidWdPdmVy
bGF5UmVnaW9ucygpICYgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAgICAgICBjb21w
b3NpdGluZ0xheWVyLT5yZW5kZXJlcigpLnZpZXcoKS5zZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJD
b21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKTsKKyAgICAgICAgY29t
cG9zaXRpbmdMYXllci0+Y29tcG9zaXRvcigpLnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0
ZSgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJl
YXNvbik7CisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKaW5kZXggZDExMzkzZTA3ZGViYWFjYjg1YmEzMTI0OTJmY2IwNGRj
ZGU1N2ZjMS4uMDNlMzI3NWNhMmU5MmM0MWFiOTc4NDdjNzE0M2FlMzU3ODYwNDJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY5NSw3ICs2OTUsNyBAQCBwdWJs
aWM6CiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2
ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBm
cm9tIGZyb250IHRvIGJhY2suCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNl
dCA9IExheW91dFNpemUoKSwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+ID0gUGFpbnRCZWhhdmlv
cjo6Tm9ybWFsLAotICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxs
cHRyLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKTsKKyAgICAgICAg
UmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50
TGF5ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIp
OwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
KTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxi
YXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIE9wdGlv
blNldDxQYWludEJlaGF2aW9yPiwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVs
bHB0cik7CkBAIC05MjQsNyArOTI0LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OwogCi0gICAg
dm9pZCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBlbnVtIGNsYXNzIEV2ZW50UmVnaW9u
SW52YWxpZGF0aW9uUmVhc29uIHsgUGFpbnQsIFN0eWxlLCBOb25Db21wb3NpdGVkSUZyYW1lIH07
CisgICAgYm9vbCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25JbnZhbGlkYXRpb25S
ZWFzb24pOwogCiBwcml2YXRlOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDA4MWQ0Yzc2NDAzYThlYmJlMDA3OWRhMjEyNTNjYTJm
ZTBiYWNiZDIuLjBkMmIwZjUyNDcyNzEwNWZkMTRlMTVkNTZjZWExMWNmMTVkYmU5OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0x
NjE4LDExICsxNjE4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJl
Z2lvbigpCiAgICAgaWYgKHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRl
ZElGcmFtZSA9IHJlbmRlcmVyKCkudmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25D
b21wb3NpdGVkSUZyYW1lKCk7CiAgICAgYm9vbCBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gZmFs
c2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBoYXNUb3VjaEFjdGlvbkVsZW1lbnRz
ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hB
Y3Rpb24oKTsKICNlbmRpZgotICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cykgeworICAg
IGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cyAmJiAhbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZv
ck5vbkNvbXBvc2l0ZWRJRnJhbWUpIHsKICAgICAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaXNSZW5k
ZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTY2Niw2ICsxNjY3LDkg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkKIAogICAgIGlm
IChtX3Njcm9sbGVkQ29udGVudHNMYXllcikKICAgICAgICAgdXBkYXRlRXZlbnRSZWdpb25Gb3JM
YXllcigqbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOworCisgICAgaWYgKG5lZWRzRXZlbnRSZWdp
b25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKQorICAgICAgICByZW5kZXJlcigpLnZpZXco
KS5zZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZShmYWxzZSk7
CiB9CiAjZW5kaWYKIApAQCAtMjc4MSw3ICsyNzg1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXkoR3JhcGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRvTGF5
ZXIKICAgICBpZiAoIW1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAg
bV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOwog
Ci0gICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBtX293bmlu
Z0xheWVyLmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJMYXllcjo6RXZlbnRSZWdpb25JbnZh
bGlkYXRpb25SZWFzb246OlBhaW50KTsKIAogICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVy
KCkudmlldygpLmZyYW1lVmlldygpOwogICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xh
eWVyICYmIGZyYW1lVmlldy5pc1RyYWNraW5nUmVwYWludHMoKSkKQEAgLTI4MjEsNyArMjgyNSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0
KGNvbnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiAgICAgaWYgKCFtX293bmluZ0xheWVyLmlzUmVu
ZGVyVmlld0xheWVyKCkpCiAgICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVlZHNDb21wb3NpdGlu
Z0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2
ZW50UmVnaW9uKCk7CisgICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVu
ZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpQYWludCk7CiAKICAgICBG
bG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdEZvclBhaW50aW5nID0gc25hcFJlY3RUb0RldmljZVBp
eGVscyhyLCBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5k
ZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggM2EwMzhjZThhM2EyZTg3ODAxMTNi
NGRlMGMxNjdlNDEwZDE3YTI3My4uNzg3MzA1NDgyNmYxODEwMzEwYTI0ZDZlZmMwOGM5YjhmZjg4
ZjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKQEAgLTg1OCw2ICs4NTgsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUK
IAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCZwYWdl
KCkpOwogCisgICAgaWYgKG1fcmVuZGVyVmlldy5uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3Np
dGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKSkgeworICAgICAgICBtX3JlbmRl
clZpZXcucmVwYWludFJvb3RDb250ZW50cygpOworICAgICAgICBtX3JlbmRlclZpZXcuc2V0TmVl
ZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNP
bmx5KGZhbHNlKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcyNSw2ICsz
NzMwLDE0IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5
ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQogCiAjZW5kaWYKIAorYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdD
b21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpIGNvbnN0Cit7CisgICAgLy8gRXZlbnQgcmVnaW9u
cyBhcmUgb25seSB1cGRhdGVkIG9uIGNvbXBvc2l0aW5nIGxheWVycy4gTm9uLWNvbXBvc2l0ZWQg
bGF5ZXJzIG11c3QKKyAgICAvLyBkZWxlZ2F0ZSB0byB0aGVpciBlbmNsb3NpbmcgY29tcG9zaXRp
bmcgbGF5ZXIgZm9yIHJlcGFpbnQgdG8gdXBkYXRlIHRoZSBldmVudCByZWdpb24KKyAgICAvLyBm
b3IgZWxlbWVudHMgaW5zaWRlIHRoZW0uCisgICAgcmV0dXJuICFtX3JlbmRlclZpZXcuaXNDb21w
b3NpdGVkKCk7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgaWYg
KG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pc1RyYW5zcGFyZW50KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA5NDZkZmM0
YTI2ZTcxODYwYzQ0ZDI5YzhjODcwZGM4YzJiMjViMjIzLi43Y2U2MzhjOTQ1ZmIzMTRlMzZiOTM5
Njk2ZDcwNTllMDY5NWIzOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0zNTgsNiArMzU4LDggQEAgcHVibGljOgogCiAgICAg
Ym9vbCB2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3Ig
PSBudWxscHRyKSBjb25zdDsKIAorICAgIGJvb2wgdmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRS
ZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkgY29uc3Q7CisKICAg
ICBib29sIGhhc05vbk1haW5MYXllcnNXaXRoVGlsZWRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllcnNXaXRoVGlsZWRCYWNraW5nQ291bnQ7IH0KIAogICAgIE9wdGlvblNldDxDb21wb3Np
dGluZ1JlYXNvbj4gcmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyJikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4
IDBjYTJkYTA5Mjc0ZjYyNmJhOTY2ZjYzNGVlYTdmNDQ5NTY0YzY4NjIuLjVlMzZkMWE3NjI4OWEx
ZGY3YjBkMmE0M2YyNTY1NzQyODUzYTM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW5kZXJTY3Jv
bGxiYXI6OnN0eWxlQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKIH0KIAot
dm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGlu
Z0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZWEzNThkZmRiYmM1
NTUwYzIzODU1ZmE5Zjk3ZWU3YzYzMmYzNWNjMC4uYmExNzIzNWIxN2M0YmY1NTUxM2I0OGFiMTRh
NDFmYWNjNzMwOTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFyZW50KFNjcm9s
bFZpZXcqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRn
ZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggOTE0ZWJiYzdkZDNlODI1YWQ1YWQxNDEw
MGY1NjQxZGViYzZiODdiMi4uZTY0YTAyYjQ3NjRmNTg3YjBjZGExYTg0Y2IzOGYxZDQ5NGMwNWJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC02OCw2ICs2OCwxMiBA
QCBwdWJsaWM6CiAKICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVWaWV3OyB9CiAKKyAgICBib29sIG5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5n
TGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNS
ZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5
OyB9OworICAgIHZvaWQgc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVw
ZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNSZXBh
aW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5ID0g
dmFsdWU7IH0KKworICAgIGJvb2wgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0
ZWRJRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25D
b21wb3NpdGVkSUZyYW1lOyB9CisgICAgdm9pZCBzZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9y
Tm9uQ29tcG9zaXRlZElGcmFtZShib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzRXZlbnRSZWdp
b25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lID0gdmFsdWU7IH0KKwogICAgIE9wdGlvbmFs
PExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBhaW50Um9vdENvbnRlbnRzKCk7
CiAgICAgdm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7
CkBAIC0yNTUsNiArMjYxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU29mdHdhcmVGaWx0
ZXJzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fdXNlc0ZpcnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9u
ZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5
c09ubHkgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9u
Q29tcG9zaXRlZElGcmFtZSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFJlbmRlckVsZW1lbnQq
LCBWZWN0b3I8Q2FjaGVkSW1hZ2UqPj4gbV9yZW5kZXJlcnNXaXRoUGF1c2VkSW1hZ2VBbmltYXRp
b247CiAgICAgSGFzaFNldDxSZW5kZXJFbGVtZW50Kj4gbV92aXNpYmxlSW5WaWV3cG9ydFJlbmRl
cmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2Y2
ZjMzYjc1MmI1Yjg2Mzc5N2M0YTFhODIyNzg1ZDJjMzRkODVhYS4uNzM5ZTViNjJiMThlZGZjNmQ5
OWEzYmVkMzY2MjE4YWQwZDk1ZTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRGlyayBNdWVs
bGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yNDYsOCArMjQ2LDE4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRz
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAg
ICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICB9CisKKyAgICBpZiAo
cGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRQYWludE9mZnNl
dCk7CisgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnB1c2hUcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKKyAgICB9CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVu
Y2xvc2luZy9pbnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmlj
ZSBwaXhlbCBzbmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgp
LCBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3Jp
Z2luQWNjZXNzRm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6
QWNjZXNzaWJsZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6
OkFueU9yaWdpbik7CisgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNu
YXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5B
Y2Nlc3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nl
c3NpYmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55
T3JpZ2luLCBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKworICAgIGlmIChwYWludElu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250
ZXh0LT5wb3BUcmFuc2Zvcm0oKTsKIAogICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJv
KCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC13aWRnZXRQYWludE9m
ZnNldCk7CkBAIC0yODIsNyArMjkyLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYg
KChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6T3V0bGluZSB8fCBwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSkKICAgICAgICAg
cGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBz
aXplKCkpKTsKIAotICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdy
b3VuZCkKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQg
JiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgewpAQCAtMzA0LDYg
KzMxNCw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRl
clJhZGl1cygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAorICAg
IGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAg
IHJldHVybjsKKwogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3Zl
ciBzZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYgIWRvY3VtZW50KCku
cHJpbnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0aW9uUmVjdCgpIGlzIGluIGFi
c29sdXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGI2MDVhMjg5MTNiMzhmZWVjYzQ0
MzAwMjk2M2NkNTliM2Y2YjdiYjguLmM3ZmJhZWNhMjM0ZGMxYzE4OWZlYTY5NjBlZjk1NmU4MWE4
YmY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC03ODMsNyArNzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3Qo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2Uo
KTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSkKK3ZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAh
bV9pc0luaXRpYWxpemVkIHx8IG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1M
UGx1Z0luRWxlbWVudDo6UmVzdGFydGluZykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDg0ZDQyNjRjZTBkMDY4
ODZjMzk5Yzg1NjQ4ZDI1YTljYTFlYjgxNjYuLjAzYTkxYmNiOWE4MDM2YTUyZjlhNWNiMGMyNTdl
ZWRhNTc1NjU5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6
V2lkZ2V0CiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5LCBXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVSZWN0c0No
YW5nZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDUyMDQ1OTRhYjZmODRkNTcwMDA0MGRmZDI5ODFjM2Y1
NjNlZGZmM2EuLmI2M2I2YTZiMTlmMTIxZjYyN2Q4NzA1YzUwOTY5ZmJlMWFjZDlmMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApA
QCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnRXaW5kb3dlZFBsdWdpbklu
dG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICNlbmRpZgogfQogCi12
b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBQbHVn
aW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0
KikKIHsKICAgICBpZiAoIW1faXNTdGFydGVkKSB7CiAgICAgICAgIC8vIERyYXcgdGhlICJtaXNz
aW5nIHBsdWdpbiIgaW1hZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZGMzZmUyZjU2MjlmNDkwMDNlMmFiODhiNDdmYzI3
MDEzNDdmNjdiLi41MDJlZjAyYmZkYjcwNDgxNzkxNjRlNzM2MmE1YmI1OTNhMDgzMTQ5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDQtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNp
ZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
bW9yZSB0ZXN0cy4KKworICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcmVz
b3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2
ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9u
ZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yNSAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hvdWxkIHNob3cg
aW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNwb25kZXIgaWYga2V5Ym9hcmQgd2FzIHNo
b3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
aWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dy
YW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZjczNDM0NTA5ZGQ3MDQyYjg1NzgwZDUxNjRjM2M5ODQ2ZmEzNTc3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAw
LjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJv
dW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJh
d3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZl
bnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAg
ICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAg
ICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWM4OTQ1NmZm
MjllZGNiMjM2ZTE2ZmE0NzkxOWJmMmNlMjg0N2IyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lk
dGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrJz48L2Rpdj4i
IG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImRpdiIpLnN0eWxlLnRvdWNoQWN0aW9uID0gIm5vbmUiOworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1Rl
eHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8
IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1p
ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3Vj
aC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk3ODMwOGJjMTdj
MDYyNWIyYjgzMGQ3OGQ3NTA1Y2IyNWNhMmIyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
aWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8aWZyYW1lIHNyY2RvYz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0aW9uOiBub25lOyB3aWR0
aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIg
b25sb2FkPSJ3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnQuZHVtcFJlZ2lvbigpIj48L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlm
cmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y3MzQzNDUwOWRkNzA0MmI4NTc4MGQ1MTY0
YzNjOTg0NmZhMzU3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVu
dHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChi
b3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisg
ICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisg
ICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9
NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisg
ICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1p
bnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3NGVlYzI3MDM4Nzc3ZmY3ZDI3YTQ5NTkz
N2Y5YjUyYjRhMmI1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVu
dHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJh
bWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0aW9uOiBub25lOyB3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2FkPSJy
dW5UZXN0KCkiPjwvaWZyYW1lPgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCA9
IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVF
X0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JP
T1RfTEFZRVJfUFJPUEVSVElFUyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9u
LW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9p
bnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzNhZjhmZGU5ZWIzYWQ5YWVjYTk2NDk1M2ZiZTVkNTc4
NGU1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMiBAQAorCisoR3JhcGhpY3NMYXllcgorICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJv
dW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAg
ICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikKKyAg
ICAgIChldmVudCByZWdpb24KKyAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9ODAwIGhlaWdodD02
MDApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAobm9uZSAgICAgICAgICAKKyAg
ICAgICAgICAgIChyZWN0ICgyOCwyOCkgd2lkdGg9MTAyIGhlaWdodD0xMDIpCisgICAgICAgICAg
KQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQt
aWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24t
bm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNTFmMjg3MDJjZTBk
ODM3Yjk4OWI5YjkyMWY2NjllZjI4NzA4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJyZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUt
aW5zaWRlLWlmcmFtZS5odG1sIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBk
dW1wUmVnaW9uKCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgcmVzdWx0
cy5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5h
bHMuTEFZRVJfVFJFRV9JTkNMVURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5hbHMuTEFZRVJfVFJF
RV9JTkNMVURFU19ST09UX0xBWUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395781</attachid>
            <date>2020-04-08 01:14:24 -0700</date>
            <delta_ts>2020-04-08 08:43:33 -0700</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-210041-20200408011423.patch</filename>
            <type>text/plain</type>
            <size>49838</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU1NDk3NDM1MDNkZDU3
OGM2OGE0Zjc1MDllMTM2MTFhNzk3MmM1ZC4uY2U1ZGU3ZjUwNzM3ZjhjZDJiYWE0ZTYyYWJkM2U2
YjE2YWRmMDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTA0LTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3Vj
aC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50
ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9ySUZyYW1lKTogQWRkZWQu
IFRyeSB0byBpbnZhbGlkYXRlIHRoZSBldmVudCByZWdpb24uCisgICAgICAgIFRoaXMgbWF5IGZh
aWwgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4gZW5jbG9zaW5nIGNvbXBvc2l0aW5n
IGxheWVyIGZvciByZXBhaW50IChlLmcuIG5lc3RlZAorICAgICAgICBjb21wb3NpdGVkIGlmcmFt
ZXMgLSBzZWUgdGVzdCBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
bmVzdGVkLWlmcmFtZS5odG1sKS4gSWYKKyAgICAgICAgdGhpcyBoYXBwZW5zIHRoZW4gcmVjdXJz
aXZlIG9uIG91ciBvd25lciBlbGVtZW50J3MgZG9jdW1lbnQuIFJlY3Vyc2lvbiBpcyB1c2VkIGlu
c3RlYWQgb2YgYSBsb29wCisgICAgICAgIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIG91
dC1vZi1wcm9jZXNzIChPT1ApIGlmcmFtZXMsIHdoaWNoIHdpbGwgbGlrZWx5IGludHJvZHVjZSBk
b2N1bWVudCBwcm94eSBvYmplY3RzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQpOiBBZGRlZC4gQ2hlY2sgaWYgb3VyIGRvY3VtZW50
IGhhcyBhbnkgZWxlbWVudHMgd2l0aAorICAgICAgICBhIG5vbi1hdXRvIHRvdWNoLWFjdGlvbi4g
SWYgaXQgZG9lcyB0aGVuIGFzayB0aGUgY29tcG9zaXRvciBpZiB0aGUgZW5jbG9zaW5nIGNvbXBv
c2l0aW5nIGxheWVyIGZvcgorICAgICAgICByZXBhaW50J3MgZXZlbnQgcmVnaW9uIG11c3QgYmUg
aW52YWxpZGF0ZWQgLSBpdCB3aWxsIG9ubHkgcmVwbHkgdHJ1ZSBpZiB0aGlzIGlzIGEgbm9uLWNv
bXBvc2l0ZWQgaWZyYW1lLgorICAgICAgICBJZiBpdCBkb2VzIHRoZW4gZm9yd2FyZCB0aGlzIGlu
dmFsaWRhdGlvbiByZXF1ZXN0IHRvIHRoZSBkb2N1bWVudC4gVGhlIHJlYXNvbiBJIGRlbGVnYXRl
IHRvIHRoZSBkb2N1bWVudAorICAgICAgICBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZSBsb2dpYyBo
ZXJlIGlzIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIE9PUCBpZnJhbWVzLgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZExheW91dCk6IENhbGwgRnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKS4gQWxzbyB3aGlsZQorICAgICAgICBJIGFtIGhl
cmUgdGFrZSBvdXQgYSByZWYgb24gdGhlIGRvY3VtZW50IHRvIGVuc3VyZSBpdCBsaXZlcyB0aHJv
dWdoIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwgaW5jbHVkaW5nCisgICAgICAgIHRocm91Z2gg
dGhlIGFjY2Vzc2liaWxpdHkncyBwb3N0Tm90aWZpY2F0aW9uKCkgY29kZSB0aGF0IGNhbGxzIG91
dCB0byB0aGUgZW1iZWRkaW5nIGNsaWVudC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYWludCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmg6CisgICAgICAgICogcGxhdGZvcm0vV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorICAg
ICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6c3R5bGVXaWxsQ2hhbmdlKTogVXBkYXRlIGNvZGUgbm93IHRoYXQgUmVuZGVMYXllcjo6aW52
YWxpZGF0ZUV2ZW50UmVnaW9uKCkKKyAgICAgICAgdGFrZXMgYSByZWFzb24uIAorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOiBQYXNzIHRoZSBFdmVudFJlZ2lvbkNvbnRleHQgdGhyb3VnaC4gSWYgYXJlIHBh
c3NlZCBvbmUgdGhlbiB1cGRhdGUKKyAgICAgICAgcGFpbnQgZmxhZ3MgdG8gY29sbGVjdCBldmVu
dCByZWdpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50
UmVnaW9uKTogQ2hhbmdlZCByZXR1cm4gdmFsdWUgZnJvbSB2b2lkIHRvIGJvb2wgc28gYXMgdG8g
aW5kaWNhdGUKKyAgICAgICAgdG8gdGhlIGNhbGxlciB3aGV0aGVyIHRoZSBldmVudCByZWdpb24g
d2FzIGFjdHVhbGx5IGludmFsaWRhdGVkLiBBbHNvIG1hZGUgaXQgdGFrZSBhbiBhcmd1bWVudCBh
cworICAgICAgICB0byB0aGUgcmVhc29uIGZvciB0aGUgaW52YWxpZGF0aW9uLiBJZiBpbnZhbGlk
YXRpb24gaXMgZHVlIHRvIGEgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lIHRoZW4gc2V0cyBzb21lCisg
ICAgICAgIHN0YXRlIGFuZCBzY2hlZHVsZSBhIGNvbXBvc2l0aW5nIGxheWVyIHVwZGF0ZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJlZ2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5
SW5SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRp
bmdMYXllcnMpOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoCisK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dmlld05lZWRzVG9JbnZh
bGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50IGNv
bnN0KTogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAg
ICAgUGFzcyBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdGhyb3VnaC4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojpw
YWludENvbnRlbnRzKTogVHJhbnNsYXRlIHRoZSBldmVudCByZWdpb24gYnkgb3VyIGNvbnRlbnQg
cGFpbnQgb2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6IFVw
ZGF0ZSBmb3IgRXZlbnRSZWdvbi4KKwogMjAxOS0wOS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWlsZGluZyBXZWJLaXQgZm9yIE1hYyBD
YXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4OGY5ZmNiYjgwNzMzMDNhMjA1OTkyMzgx
YzcxMmMxMjZjODM0NzAuLjM1MGQ2ODdlYzk0Mjg4NWYyY2UzNjk0NWY0MzhkNTVhZDA5ZWQ3NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQtMDcgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVt
ZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJdCBpcyB1bnVzZWQgYXMgaXQn
cyBub3QgYXBwbGljYWJsZSBmb3IgcGx1Z2luIHBhaW50aW5nLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpwYWludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwog
MjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNwb25kZXIg
aWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBmYTNhNTc2ZWM1YzgwOGU0YzYwMTc4NWQ3ODFiOGQw
Y2FiZDA3N2RjLi43Yzg3NGM4MWU1MGJkM2ZiYzU4M2QwNWRhYmU4MDg2MmU0MTc1NDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQtMDggIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRv
dWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJdCBp
cyB1bnVzZWQgYXMgaXQncyBub3QgYXBwbGljYWJsZSBmb3IgcGx1Z2luIHBhaW50aW5nLgorCisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5W
aWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBhaW50KToKKwogMjAy
MC0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFkZCBTUEkgdG8gbWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzZWY5NDU5MDBiYThmMjRlMDJmNWVjZjIw
ZGVjZmM3MDhiZmQ4MmEwLi5jNzczMDNhNTY2YmRmMWIxY2VjNWQwZGE3MjA2YTliZmJlNjg3OTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMzQsNiArNDIzNCwxOSBAQCB2b2lkIERv
Y3VtZW50OjplbGVtZW50SW5BY3RpdmVDaGFpbkRpZERldGFjaChFbGVtZW50JiBlbGVtZW50KQog
ICAgICAgICBtX2FjdGl2ZUVsZW1lbnQgPSBtX2FjdGl2ZUVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KTsKIH0KIAordm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZShI
VE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYXV0byogcmVuZGVyZXIgPSBl
bGVtZW50LnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChhdXRvKiBsYXllciA9IHJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpKSB7CisgICAg
ICAgIGlmIChsYXllci0+aW52YWxpZGF0ZUV2ZW50UmVnaW9uKFJlbmRlckxheWVyOjpFdmVudFJl
Z2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZElGcmFtZSkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQgPSB0aGlzLT5vd25l
ckVsZW1lbnQoKSkKKyAgICAgICAgb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmludmFsaWRhdGVF
dmVudFJlZ2lvbnNGb3JJRnJhbWUoKm93bmVyRWxlbWVudCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6
OmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCkKIHsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCA4MzlhZmNkNThiYWEzMWE3MmU5ZmE1ZjFlNjU3OTI2M2Y4N2YyYmMxLi5lNzkwYThlMTJlZDUz
MzgwMjkwY2JhYmI4YzFhNDU3YWJjY2YxOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTE0
MCw2ICsxMTQwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgdm9p
ZCBpbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpOworICAgIHZvaWQgaW52YWxp
ZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmKTsKIAogICAg
IHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAppbmRleCAwNTFmZGIzZWU1YzVjMzNlNjhiMWI2ZDBkMDBjMWQwOTAzYjc5ZDU2Li40YTIxY2Y4
NmE5YmFjMzI0MzEyMzhhN2FjY2ZiYjgzMzgwOWU4Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApA
QCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChSZWZQdHI8RG9jdW1l
bnQ+JiYgbmV3RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVudElzQmVpbmdSZXBsYWNlZCA9IGZhbHNl
OwogfQogCit2b2lkIEZyYW1lOjppbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVk
KCkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFtX3BhZ2UgfHwgIW1fZG9jKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvYy0+bWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9U
b3VjaEFjdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvYy0+cmVuZGVyVmll
dygpLT5jb21wb3NpdG9yKCkudmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdpb25PZkVuY2xv
c2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAobV9vd25lckVsZW1lbnQpCisgICAgICAgIG1fb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmlu
dmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoKm1fb3duZXJFbGVtZW50KTsKKyNlbmRpZgor
fQorCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKIHZvaWQgRnJhbWU6Om9yaWVudGF0
aW9uQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMjUyMGUwMzdhNTQ5MzBmYTFlMWJm
NzBlMWNjMmFhMTgzNmI1N2I4OC4uYmJkODIyZTE3NTFiYWViMGYzYmFlYjg3ZDhjZDc3NDc0NzNj
MDA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMzAzLDYgKzMwMyw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKICAgICBib29sIG1heVByZXdhcm1Mb2NhbFN0
b3JhZ2UoKSBjb25zdDsKIAorICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJ
Zk5lZWRlZCgpOworCiAvLyA9PT09PT09PQogCiAgICAgdm9pZCBzZWxmT25seVJlZigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM2OGY1ZDM4YzZlNTFlMDQ4ODg3MDk0YzU3ZWJm
ZjA3YWFmMDFjZWIuLjI4YmU3NmUwZjcxNmQzYjgwZjM4Y2ZkMjBmMDk0NTc2MjU5MmJlOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyNjEsMTIgKzEyNjEsMTUgQEAgdm9pZCBG
cmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxheW91dFJvb3QpCiAK
ICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyTGF5b3V0KCk7CiAKKyAgICBhdXRvIGRv
Y3VtZW50ID0gbWFrZVJlZigqZnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBmcmFtZSgpLmludmFs
aWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKTsKKwogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKLSAgICBpZiAoYXV0byogY2FjaGUg
PSBmcmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgIGlmIChh
dXRvKiBjYWNoZSA9IGRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAg
Y2FjaGUtPnBvc3ROb3RpZmljYXRpb24obGF5b3V0Um9vdC5nZXQoKSwgQVhPYmplY3RDYWNoZTo6
QVhMYXlvdXRDb21wbGV0ZSk7CiAjZW5kaWYKIAotICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+aW52
YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKKyAgICBkb2N1bWVudC0+aW52YWxp
ZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKIAogICAgIHVwZGF0ZUNhbkJsaXRPblNj
cm9sbFJlY3Vyc2l2ZWx5KCk7CiAKQEAgLTEyNzQsMTAgKzEyNzcsMTAgQEAgdm9pZCBGcmFtZVZp
ZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxheW91dFJvb3QpCiAKICAgICBo
YW5kbGVEZWZlcnJlZFNjcm9sbGJhcnNVcGRhdGVBZnRlckRpcmVjdGlvbkNoYW5nZSgpOwogCi0g
ICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpPVkVS
RkxPV0NIQU5HRURfTElTVEVORVIpKQorICAgIGlmIChkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBl
KERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQogICAgICAgICB1cGRhdGVPdmVy
Zmxvd1N0YXR1cyhsYXlvdXRXaWR0aCgpIDwgY29udGVudHNXaWR0aCgpLCBsYXlvdXRIZWlnaHQo
KSA8IGNvbnRlbnRzSGVpZ2h0KCkpOwogCi0gICAgZnJhbWUoKS5kb2N1bWVudCgpLT5tYXJrZXJz
KCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOworICAgIGRvY3VtZW50LT5tYXJrZXJz
KCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOwogfQogCiBib29sIEZyYW1lVmlldzo6
c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkKQEAgLTQyMjUs
NyArNDIyOCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSCiAgICAgfQogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1cml0eU9yaWdp
blBhaW50UG9saWN5KQordm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBl
dmVudFJlZ2lvbkNvbnRleHQpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgZmlsbFdpdGhX
YXJuaW5nQ29sb3I7CkBAIC00Mjg4LDggKzQyOTEsOCBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dAogICAgIHdoaWxlIChpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSAmJiAhZG93bmNhc3Q8UmVu
ZGVySW5saW5lPigqcmVuZGVyZXIpLmZpcnN0TGluZUJveCgpKQogICAgICAgICByZW5kZXJlciA9
IHJlbmRlcmVyLT5wYXJlbnQoKTsKIAotICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGly
dHlSZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwgc2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlP
cmlnaW4gPyBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2lu
IDogUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmln
aW5Pbmx5KTsKLSAgICBpZiAocm9vdExheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJh
cnMoKSkKKyAgICByb290TGF5ZXItPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCwgTGF5b3V0U2l6
ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7IH0sIHNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luID8gUmVuZGVyTGF5
ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA6IFJlbmRlckxheWVyOjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSwgZXZlbnRSZWdp
b25Db250ZXh0KTsKKyAgICBpZiAocm9vdExheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9s
bGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQogICAgICAgICByb290TGF5ZXItPnBhaW50
T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0LCBtX3BhaW50QmVoYXZpb3IsIHJl
bmRlcmVyKTsKIAogICAgIGRpZFBhaW50Q29udGVudHMoY29udGV4dCwgZGlydHlSZWN0LCBwYWlu
dGluZ1N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGJiOTU3ODVjYzgxMjdhMzdm
ZjYxNTA2ZmY2ODE2MmY0ODE1N2RkZjQuLjEzM2Q5MDU5ZWNiNWQ2OTAzZmFmZmZkOTBhMWVhNmJh
NjcwMmQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNTcsNiArNTcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50Owor
Y2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CkBAIC0zNTEsNyArMzUyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVj
dCYpOwogICAgIHZvaWQgcmVtb3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRl
ZE9iamVjdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51
bGxwdHIpIGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAgICAgICBPcHRp
b25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAKaW5kZXggMmZkMTVmN2IzMDE3YjFjN2VlN2EyMWM4NjE4NjU0Yjk1MTEw
OTIyNy4uNDY5NjUxMWQ2MWExYmRjNDEyNmYyMTk4MGQ5MzA5NWFiMzA2Y2NhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTEyMzYsMTQgKzEyMzYsMTQgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9sbEljb24sIGljb25HQ1BvaW50KTsKIH0K
IAotdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250
ZXh0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgIFdpZGdldDo6cGFp
bnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY29u
dGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWNvbnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxp
ZGF0aW9uKCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0
LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFldmVudFJlZ2lvbkNvbnRleHQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQo
KTsKQEAgLTEyNjgsNyArMTI2OCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yCiAgICAgICAg
ICAgICBjb250ZXh0LmNsaXAodmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50Vmlz
aWJsZVJlY3QpKTsKICAgICAgICAgfQogCi0gICAgICAgIHBhaW50Q29udGVudHMoY29udGV4dCwg
ZG9jdW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpOworICAgICAgICBw
YWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0LCBzZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBldmVudFJlZ2lvbkNvbnRleHQpOwogICAgIH0KIAogI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBiNjRhYTNi
YTA2NmM5Y2RhZDkwYTFmY2JhMWExNTRiMjAzMGJiNTFlLi43YWQ1MDQ5ZjE4ODkyY2ViOTUzNThh
ZDA4YjQ3MjQwZDEyNWQ3OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBA
IC01Nyw2ICs1Nyw3IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3Mg
TGVnYWN5VGlsZUNhY2hlOwogY2xhc3MgU2Nyb2xsYmFyOwpAQCAtMzUwLDcgKzM1MSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMgcGFpbnRpbmcg
b2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9sbGJhcnMuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QW55T3JpZ2luKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBXaWRnZXQ6OlNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2
ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICAgICB2b2lkIHBhaW50U2Nyb2xs
YmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBXaWRnZXQg
b3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxpdHkgc3RhdHVz
IGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVuLgpAQCAtMzg4
LDcgKzM4OSw3IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3KCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5OjpBbnlPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVu
dFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAK
aW5kZXggMTI5M2UyZDc5MzEzZjg2YjllODZjOGJjMGIyNTc3OTZkZmQ1ZDYyOS4uYTZiNTgwNzM4
OTk0NjI2Yzk3NWE2YzcyOTBiMDM0MWYxZmJlYzU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRo
dW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRlVGh1bWIoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBTY3JvbGxiYXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwg
V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQog
ewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpICYmIHRoZW1lKCku
c3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAgICBpbnZhbGlkYXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGNiOTUwZTIzZjdhNzY1ZTA3MjkwOGQ1YjM2NmIx
NmNjYmYwZDM0ZDIuLmVkMzg5NmM5ZDJjOTFjMTJkNzM0NmY0NmI2NTY0M2EwN2FhNDQ0MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBp
bnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9wcmVzc2Vk
UG9zID0gcDsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pIG92ZXJyaWRlOworICAgIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55
T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICBi
b29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCmluZGV4IGU5
ZjVkODFlMDNhZTYyM2JhOWIzYWQ3ZjVmZWZhMzUzZGYyYWI2OGQuLmE3ZmUzODBmM2ZkMmQ5Y2E2
Y2Y4MjhiODJlYTNkNDZkZDUzN2U5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApA
QCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXggMWNmOTMx
YzEyMjM3MDAyOGY1YWYwNmM1N2Q0NTg4YTZmMmZjNTRhZi4uNGYzMDJhYmJmMTBlYWI5MDBiMzBj
NjMzOWFiODgwNDcwYjdhN2Y4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTYwLDYg
KzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBFdmVu
dDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3Mg
RnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMTA5LDcgKzExMCw3IEBAIHB1
YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSB7IEFueU9y
aWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZhbGlkYXRlUmVjdChib3VuZHNSZWN0KCkpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggNjkxOWVlNDJi
YTBjNDU5Y2I3YTMwYTlhNzBiNzJkMjhjMjc5OTliYy4uN2M0NWRjZjc5YjE1MmY5NTdiMmNiOGZi
MDQzYzgzZmQwZjVjZjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dpZGdldEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0
ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXaWRnZXQ6OmhpZGUoKQogICAgIHNldFNlbGZW
aXNpYmxlKGZhbHNlKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCAzZTA5YzExYjQ2MzI3YjQwMTY5N2E1ZGUwZGQ3
NjE5NWMxYjNkYWM1Li40ZTA3YmQ3NTE2ODlmY2E1MmNiM2E2YzFhMDY3OWM0ZmEyMGM3MzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KQEAgLTE0Niw3ICsxNDYs
NyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmll
dzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50
UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChH
cmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1h
Yy5tbQppbmRleCAyNjZiMDQyZTA2ZmQ3ZGIzZjI3MTVhNDYxZDg0Y2UwYTc3OTBkNTE0Li4zMDQ1
ODg4YTM0NDRjNTdmY2ExNGUxYTNiMjMxZTJkMmQ2ZTA0ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0KQEAgLTE4Niw3ICsxODYsNyBAQCBOU1ZpZXcgKldpZGdl
dDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRn
ZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAs
IGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9u
Q29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IGZmZDg2
YTA0NDAzNmVmOGNlYTE0NGQwNjMxZTNmMTI1ZTg0MDFlY2QuLjk2NWRmODM4M2ZiZGJlMzU3OWIw
ODExOGM0YmU2ZWQzMzdjNjdkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRn
ZXRXaW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3Qg
Q3Vyc29yJiBjdXJzb3IpCiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29y
KTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBF
dmVudFJlZ2lvbkNvbnRleHQqKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAppbmRleCBlYzZmZDhjZmZlNjcxZmY4OGVmMjUzZWRiMjk5ZjkzNDA1NGJmMWM3
Li5kYmFhNTE3Mzk1ZWI3NWM5Zjk1NDEzMGZjY2M1YzQ0MTcxYWU3NDZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEyNTUsOCArMTI1NSw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250
ZXh0LT51bml0ZShib3JkZXJSZWdpb24sIHN0eWxlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gTm8gbmVlZCB0byBjaGVjayBkZXNjZW5kYW50cyBpZiB3ZSBkb24ndCBoYXZlIG92ZXJmbG93
IGFuZCBkb24ndCBjb250YWluIGZsb2F0cyBhbmQgdGhlIGFyZWEgaXMgYWxyZWFkeSBjb3ZlcmVk
LgotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJm
bG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSk7CisgICAgICAgIGJvb2wg
bmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBjb250YWlu
c0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5jb250YWlucyhlbmNs
b3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0
ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMg
fHwgZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9uKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA4
NzdmNDgwNmE3Yzc2YmIyYWZlODQzY2E0OGNjNmYyMTViMmFmZDRiLi41ZWEwOWE1MDZmZTZlNTQ4
YzFlOTdjNWM0MWM0NDAxZDI2NDg1YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXcKICAgICAgICAgaWYgKG5lZWRzSW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkpIHsKICAgICAgICAg
ICAgIC8vIFVzdWFsbHkgdGhlIGV2ZW50IHJlZ2lvbiBnZXRzIHVwZGF0ZWQgYXMgYSByZXN1bHQg
b2YgcGFpbnQgaW52YWxpZGF0aW9uLiBIZXJlIHdlIG5lZWQgdG8gcmVxdWVzdCBhbiB1cGRhdGUg
ZXhwbGljaXRseS4KICAgICAgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGVuY2xvc2luZ0xheWVy
KCkpCi0gICAgICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbigpOworICAg
ICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2
ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpTdHlsZSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxlLm91dGxp
bmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyMWY1MmI5N2Q3ZmNlNDY3
YTc0Mjg2ZDc1YzhkMTZiZTcyNzI5NTRjLi4yOTY4MTc0NGRiYzYyMWUyZWMzY2I0MmVhODEyYmJm
OTNjZGE4ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE5IEFkb2JlLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgg
TmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCkBAIC00MjA0LDExICs0MjA0LDE1
IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpz
Y3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWlu
dFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSBwYWludFBvbGljeSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3Qg
TGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWlu
dEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWlu
dExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBwYWludFBv
bGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAgICAgT3Zl
cmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKICAgICBMYXllclBhaW50
aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VSZWN0KSwg
cGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1YnRyZWVQYWludFJvb3QsICZvdmVybGFw
VGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpB
Y2Nlc3NpYmxlT3JpZ2luT25seSk7CisgICAgaWYgKGV2ZW50UmVnaW9uQ29udGV4dCkgeworICAg
ICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZlbnRSZWdpb25Db250ZXh0
OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckNvbGxlY3Rp
bmdFdmVudFJlZ2lvbik7CisgICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzKTsKIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogb3ZlcmxhcFRlc3RS
ZXF1ZXN0cy5rZXlzKCkpCkBAIC03MDAyLDEyICs3MDA2LDEyIEBAIGJvb2wgUmVuZGVyTGF5ZXI6
OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigpCiti
b29sIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25JbnZhbGlk
YXRpb25SZWFzb24gcmVhc29uKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0
byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50
KCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRhaW5zRXZlbnRSZWdpb24gPSBbJl0gewog
ICAgICAgICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFwIHRlc3RpbmcuCkBAIC03MDE5LDEwICs3
MDIzLDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYgKCFtYWludGFpbnNFdmVudFJlZ2lv
bigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNvbiAhPSBFdmVudFJlZ2lvbkludmFs
aWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZElGcmFtZSAmJiAhbWFpbnRhaW5zRXZlbnRSZWdp
b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29tcG9zaXRpbmdMYXllci0+c2V0
TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKKworICAgIGlmIChyZWFzb24g
PT0gRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5vbkNvbXBvc2l0ZWRJRnJhbWUpIHsK
KyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+cmVuZGVyZXIoKS52aWV3KCkuc2V0TmVlZHNFdmVu
dFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKKyAgICAgICAgaWYgKHJlbmRl
cmVyKCkuc2V0dGluZ3MoKS52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpICYgTm9uRmFzdFNj
cm9sbGFibGVSZWdpb24pCisgICAgICAgICAgICBjb21wb3NpdGluZ0xheWVyLT5yZW5kZXJlcigp
LnZpZXcoKS5zZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9y
RGVidWdPdmVybGF5c09ubHkoKTsKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+Y29tcG9zaXRv
cigpLnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXgg
ZDExMzkzZTA3ZGViYWFjYjg1YmEzMTI0OTJmY2IwNGRjZGU1N2ZjMS4uMDNlMzI3NWNhMmU5MmM0
MWFiOTc4NDdjNzE0M2FlMzU3ODYwNDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKQEAgLTY5NSw3ICs2OTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbnQuICBUaGUg
aGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50cyBieSB3YWxraW5nCiAgICAgLy8g
bGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBmcm9tIGZyb250IHRvIGJhY2suCiAgICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCA9IExheW91dFNpemUoKSwgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+ID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsLAotICAgICAgICBSZW5k
ZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFpbnRMYXll
ckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QW55T3JpZ2luKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFp
bnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiA9IHsgfSwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpOwogICAgIGJvb2wgaGl0VGVzdChjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0
Jik7CiAgICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiwgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0cik7CkBAIC05MjQsNyArOTI0LDgg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1RyYW5zcGFyZW50UmVzcGVj
dGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OwogCi0gICAgdm9pZCBpbnZhbGlkYXRlRXZlbnRSZWdp
b24oKTsKKyAgICBlbnVtIGNsYXNzIEV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uIHsgUGFp
bnQsIFN0eWxlLCBOb25Db21wb3NpdGVkSUZyYW1lIH07CisgICAgYm9vbCBpbnZhbGlkYXRlRXZl
bnRSZWdpb24oRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb24pOwogCiBwcml2YXRlOgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IDA4MWQ0Yzc2NDAzYThlYmJlMDA3OWRhMjEyNTNjYTJmZTBiYWNiZDIuLjBkMmIwZjUyNDcyNzEw
NWZkMTRlMTVkNTZjZWExMWNmMTVkYmU5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNjE4LDExICsxNjE4LDEyIEBAIHZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJlZ2lvbigpCiAgICAgaWYgKHBhaW50c0lu
dG9Db21wb3NpdGVkQW5jZXN0b3IoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBuZWVk
c0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSA9IHJlbmRlcmVyKCkudmll
dygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKCk7CiAgICAg
Ym9vbCBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgp
Lm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKTsKICNlbmRpZgotICAgIGlm
ICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cykgeworICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVt
ZW50cyAmJiAhbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUpIHsK
ICAgICAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTY2Niw2ICsxNjY3LDkgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkKIAogICAgIGlmIChtX3Njcm9sbGVkQ29udGVudHNMYXll
cikKICAgICAgICAgdXBkYXRlRXZlbnRSZWdpb25Gb3JMYXllcigqbV9zY3JvbGxlZENvbnRlbnRz
TGF5ZXIpOworCisgICAgaWYgKG5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVk
SUZyYW1lKQorICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5zZXROZWVkc0V2ZW50UmVnaW9uVXBk
YXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZShmYWxzZSk7CiB9CiAjZW5kaWYKIApAQCAtMjc4MSw3
ICsyNzg1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3Bs
YXkoR3JhcGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRvTGF5ZXIKICAgICBpZiAoIW1fb3duaW5nTGF5
ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0Nv
bXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOwogCi0gICAgbV9vd25pbmdMYXllci5pbnZh
bGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVFdmVudFJl
Z2lvbihSZW5kZXJMYXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246OlBhaW50KTsK
IAogICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpOwog
ICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVyICYmIGZyYW1lVmlldy5pc1RyYWNr
aW5nUmVwYWludHMoKSkKQEAgLTI4MjEsNyArMjgyNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIsIEdy
YXBoCiAgICAgaWYgKCFtX293bmluZ0xheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAg
IG1fb3duaW5nTGF5ZXIuc2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsK
IAotICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAgbV9vd25p
bmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52
YWxpZGF0aW9uUmVhc29uOjpQYWludCk7CiAKICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVj
dEZvclBhaW50aW5nID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhyLCBkZXZpY2VTY2FsZUZhY3Rv
cigpKTsKICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKaW5kZXggM2EwMzhjZThhM2EyZTg3ODAxMTNiNGRlMGMxNjdlNDEwZDE3YTI3My4uNzg3
MzA1NDgyNmYxODEwMzEwYTI0ZDZlZmMwOGM5YjhmZjg4ZjVlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTg1OCw2ICs4
NTgsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5
ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUKIAogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCZwYWdlKCkpOwogCisgICAgaWYgKG1fcmVuZGVy
Vmlldy5uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdP
dmVybGF5c09ubHkoKSkgeworICAgICAgICBtX3JlbmRlclZpZXcucmVwYWludFJvb3RDb250ZW50
cygpOworICAgICAgICBtX3JlbmRlclZpZXcuc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9z
aXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGZhbHNlKTsKKyAgICB9CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcyNSw2ICszNzMwLDE0IEBAIEdyYXBoaWNzTGF5ZXIq
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xh
eWVyKQogCiAjZW5kaWYKIAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpZXdOZWVkc1Rv
SW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWlu
dCgpIGNvbnN0Cit7CisgICAgLy8gRXZlbnQgcmVnaW9ucyBhcmUgb25seSB1cGRhdGVkIG9uIGNv
bXBvc2l0aW5nIGxheWVycy4gTm9uLWNvbXBvc2l0ZWQgbGF5ZXJzIG11c3QKKyAgICAvLyBkZWxl
Z2F0ZSB0byB0aGVpciBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yIHJlcGFpbnQgdG8g
dXBkYXRlIHRoZSBldmVudCByZWdpb24KKyAgICAvLyBmb3IgZWxlbWVudHMgaW5zaWRlIHRoZW0u
CisgICAgcmV0dXJuICFtX3JlbmRlclZpZXcuaXNDb21wb3NpdGVkKCk7Cit9CisKIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBi
YWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXco
KS5pc1RyYW5zcGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA5NDZkZmM0YTI2ZTcxODYwYzQ0ZDI5YzhjODcwZGM4
YzJiMjViMjIzLi43Y2U2MzhjOTQ1ZmIzMTRlMzZiOTM5Njk2ZDcwNTllMDY5NWIzOWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBA
IC0zNTgsNiArMzU4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCB2aWV3SGFzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IgPSBudWxscHRyKSBjb25zdDsKIAorICAg
IGJvb2wgdmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0
aW5nTGF5ZXJGb3JSZXBhaW50KCkgY29uc3Q7CisKICAgICBib29sIGhhc05vbk1haW5MYXllcnNX
aXRoVGlsZWRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcnNXaXRoVGlsZWRCYWNraW5n
Q291bnQ7IH0KIAogICAgIE9wdGlvblNldDxDb21wb3NpdGluZ1JlYXNvbj4gcmVhc29uc0ZvckNv
bXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDBjYTJkYTA5Mjc0ZjYyNmJhOTY2ZjYz
NGVlYTdmNDQ5NTY0YzY4NjIuLjVlMzZkMWE3NjI4OWExZGY3YjBkMmE0M2YyNTY1NzQyODUzYTM2
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnN0eWxlQ2hhbmdlZCgpCiAg
ICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwg
V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQq
KQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAg
ICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmgKaW5kZXggZWEzNThkZmRiYmM1NTUwYzIzODU1ZmE5Zjk3ZWU3YzYzMmYz
NWNjMC4uYmExNzIzNWIxN2M0YmY1NTUxM2I0OGFiMTRhNDFmYWNjNzMwOTdmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtNjgsNyArNjgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRIb3Zl
cmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXNzZWRQYXJ0
KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKaW5kZXggOTE0ZWJiYzdkZDNlODI1YWQ1YWQxNDEwMGY1NjQxZGViYzZiODdiMi4uZTY0YTAy
YjQ3NjRmNTg3YjBjZGExYTg0Y2IzOGYxZDQ5NGMwNWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCkBAIC02OCw2ICs2OCwxMiBAQCBwdWJsaWM6CiAKICAgICBGcmFtZVZp
ZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKKyAgICBib29s
IG5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJs
YXlzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRp
bmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5OyB9OworICAgIHZvaWQgc2V0TmVlZHNS
ZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5
KGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdM
YXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5ID0gdmFsdWU7IH0KKworICAgIGJvb2wgbmVl
ZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lOyB9CisgICAg
dm9pZCBzZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZShib29s
IHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVk
SUZyYW1lID0gdmFsdWU7IH0KKwogICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZXBhaW50Um9vdENvbnRlbnRzKCk7CiAgICAgdm9pZCByZXBhaW50Vmlld1Jl
Y3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CkBAIC0yNTUsNiArMjYxLDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFzU29mdHdhcmVGaWx0ZXJzIHsgZmFsc2UgfTsKICAgICBib29s
IG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGV0
dGVyUnVsZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21w
b3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZSB7IGZhbHNl
IH07CiAKICAgICBIYXNoTWFwPFJlbmRlckVsZW1lbnQqLCBWZWN0b3I8Q2FjaGVkSW1hZ2UqPj4g
bV9yZW5kZXJlcnNXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb247CiAgICAgSGFzaFNldDxSZW5kZXJF
bGVtZW50Kj4gbV92aXNpYmxlSW5WaWV3cG9ydFJlbmRlcmVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2Y2ZjMzYjc1MmI1Yjg2Mzc5N2M0YTFhODIy
Nzg1ZDJjMzRkODVhYS4uNzM5ZTViNjJiMThlZGZjNmQ5OWEzYmVkMzY2MjE4YWQwZDk1ZTYzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTEsNyArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNDYsOCArMjQ2LDE4IEBA
IHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJh
bnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdl
dFBhaW50T2Zmc2V0KTsKICAgICB9CisKKyAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29u
dGV4dCkgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRQYWludE9mZnNldCk7CisgICAgICAgIHBhaW50SW5mby5l
dmVudFJlZ2lvbkNvbnRleHQtPnB1c2hUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB9CisKICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVuY2xvc2luZy9pbnRlZ3JhbCBzbmFwcGlu
ZyB3aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmljZSBwaXhlbCBzbmFwcGVkLgotICAgIG1f
d2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludFJl
Y3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyA/IFdp
ZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkgOiBX
aWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAgbV93aWRn
ZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCks
IHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nlc3NGb3JXaWRnZXRzID8gV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSA6IFdpZGdl
dDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBwYWludEluZm8uZXZlbnRS
ZWdpb25Db250ZXh0KTsKKworICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KQor
ICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5wb3BUcmFuc2Zvcm0oKTsKIAog
ICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpCiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkudHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7CkBAIC0yODIsNyArMjkyLDcg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZTo6T3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6U2VsZk91
dGxpbmUpICYmIGhhc091dGxpbmUoKSkKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywg
TGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIAotICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkKKyAgICBpZiAocGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2U6OkV2ZW50UmVnaW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc3R5bGUo
KS5oYXNCb3JkZXJSYWRpdXMoKSkgewpAQCAtMzA0LDYgKzMxNCw5IEBAIHZvaWQgUmVuZGVyV2lk
Z2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQogICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAorICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFBhaW50
IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRzLgogICAg
IGlmIChpc1NlbGVjdGVkKCkgJiYgIWRvY3VtZW50KCkucHJpbnRpbmcoKSkgewogICAgICAgICAv
LyBGSVhNRTogc2VsZWN0aW9uUmVjdCgpIGlzIGluIGFic29sdXRlLCBub3QgcGFpbnRpbmcgY29v
cmRpbmF0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IGI2MDVhMjg5MTNiMzhmZWVjYzQ0MzAwMjk2M2NkNTliM2Y2YjdiYjguLmM3
ZmJhZWNhMjM0ZGMxYzE4OWZlYTY5NjBlZjk1NmU4MWE4YmY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03ODMsNyArNzgzLDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCkKICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlS
ZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUGx1Z2luVmll
dzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5
UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29u
dGV4dCopCiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkIHx8IG1fcGx1
Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGlu
ZykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCmluZGV4IDg0ZDQyNjRjZTBkMDY4ODZjMzk5Yzg1NjQ4ZDI1YTljYTFlYjgx
NjYuLjAzYTkxYmNiOWE4MDM2YTUyZjlhNWNiMGMyNTdlZWRhNTc1NjU5NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE3Myw3ICsxNzMs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6V2lkZ2V0CiAgICAgdm9pZCBzZXRGcmFt
ZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNv
cmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBXZWJDb3JlOjpF
dmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEZvY3VzKGJvb2wp
IG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggYjViNjBhODA5
OTFkNjA3MTBiODcwNjMwMjQwMjFkNjUwOTA2MzJkYS4uZGVlNzZjZDE4ZDczMGUwNjJlMmI4Y2Q1
MjgzNDExNGU4ZTA2ZmNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKQEAgLTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgc2hvdygpIG92
ZXJyaWRlOwogICAgICAgICB2b2lkIGhpZGUoKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBF
dmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBjbGlwUmVjdENoYW5n
ZWQoKSBvdmVycmlkZTsKIAogICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHBsdWdp
bnMgb24gYWxsIHBsYXRmb3JtcyB0byBvYnRhaW4gYSBjbGlwIHJlY3QgdGhhdCBpbmNsdWRlcyBj
bGlwcyBzZXQgYnkgV2ViQ29yZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDUyMDQ1OTRhYjZmODRkNTcwMDA0MGRmZDI5ODFj
M2Y1NjNlZGZmM2EuLmI2M2I2YTZiMTlmMTIxZjYyN2Q4NzA1YzUwOTY5ZmJlMWFjZDlmMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNw
cApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnRXaW5kb3dlZFBsdWdp
bkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICNlbmRpZgogfQog
Ci12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBQ
bHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250
ZXh0KikKIHsKICAgICBpZiAoIW1faXNTdGFydGVkKSB7CiAgICAgICAgIC8vIERyYXcgdGhlICJt
aXNzaW5nIHBsdWdpbiIgaW1hZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZGMzZmUyZjU2MjlmNDkwMDNlMmFiODhiNDdm
YzI3MDEzNDdmNjdiLi41MDJlZjAyYmZkYjcwNDgxNzkxNjRlNzM2MmE1YmI1OTNhMDgzMTQ5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDQtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBp
bnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMy
MzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbW9yZSB0ZXN0cy4KKworICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRp
Yy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25l
LWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3Mv
cmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNo
LWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRl
cmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24t
bm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yNSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hvdWxkIHNo
b3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNwb25kZXIgaWYga2V5Ym9hcmQgd2Fz
IHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3By
b2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZjczNDM0NTA5ZGQ3MDQyYjg1NzgwZDUxNjRjM2M5ODQ2ZmEzNTc3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGlj
LXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMg
ODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
KGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAo
ZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAo
ZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQor
ICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAg
ICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRl
LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGlj
LXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWM4OTQ1
NmZmMjllZGNiMjM2ZTE2ZmE0NzkxOWJmMmNlMjg0N2IyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25l
LWluc2lkZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0n
d2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrJz48L2Rp
dj4iIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJl
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoImRpdiIpLnN0eWxlLnRvdWNoQWN0aW9uID0gIm5vbmUiOworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVB
c1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lP
TiB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk3ODMwOGJj
MTdjMDYyNWIyYjgzMGQ3OGQ3NTA1Y2IyNWNhMmIyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+Cis8aWZyYW1lIHNyY2RvYz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0aW9uOiBub25lOyB3
aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2
PiIgb25sb2FkPSJ3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnQuZHVtcFJlZ2lvbigpIj48
L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50
ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRl
LWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y3MzQzNDUwOWRkNzA0MmI4NTc4MGQ1
MTY0YzNjOTg0NmZhMzU3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisg
IChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEp
CisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYp
CisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWln
aHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAg
CisgICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9u
ZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3NGVlYzI3MDM4Nzc3ZmY3ZDI3YTQ5
NTkzN2Y5YjUyYjRhMmI1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApAQCAtMCwwICsx
LDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0
RnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0aW9uOiBub25lOyB3aWR0aDogMTAw
cHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2Fk
PSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4
dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9U
UkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVT
X1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0
aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzNhZjhmZGU5ZWIzYWQ5YWVjYTk2NDk1M2ZiZTVk
NTc4NGU1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMiBAQAorCisoR3JhcGhpY3NMYXllcgorICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAg
KGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVy
CisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY29udGVudHNPcGFxdWUgMSkK
KyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikK
KyAgICAgIChldmVudCByZWdpb24KKyAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9ODAwIGhlaWdo
dD02MDApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAobm9uZSAgICAgICAgICAK
KyAgICAgICAgICAgIChyZWN0ICgyOCwyOCkgd2lkdGg9MTAyIGhlaWdodD0xMDIpCisgICAgICAg
ICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0
ZWQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rp
b24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNTFmMjg3MDJj
ZTBkODM3Yjk4OWI5YjkyMWY2NjllZjI4NzA4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlm
cmFtZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJyZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5v
bmUtaW5zaWRlLWlmcmFtZS5odG1sIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJl
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biBkdW1wUmVnaW9uKCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgcmVz
dWx0cy5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRl
cm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5hbHMuTEFZRVJf
VFJFRV9JTkNMVURFU19ST09UX0xBWUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395815</attachid>
            <date>2020-04-08 08:43:35 -0700</date>
            <delta_ts>2020-04-08 12:30:03 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-210041-20200408084334.patch</filename>
            <type>text/plain</type>
            <size>51284</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU1NDk3NDM1MDNkZDU3
OGM2OGE0Zjc1MDllMTM2MTFhNzk3MmM1ZC4uMjc0NzMyZWM4MThhY2ViY2IxNGM0NjM3OWM5MTg2
NWI0NTc0NmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMC0wNC0wNyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdWxkIGZpbmQgdG91
Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24tY29tcG9zaXRlZCBpZnJhbWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYxMzIzNTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZpeCB1cCBldmVudCByZWdpb24gY29kZSB0byB0cmF2ZXJzZSBu
b24tY29tcG9zaXRlZCBpZnJhbWVzIHRoYXQgaGF2ZSBlbGVtZW50cyB3aXRoIGEgbm9uLWF1dG8K
KyAgICAgICAgdG91Y2gtYWN0aW9uLiBUaGUgZXZlbnQgcmVnaW9uIGlzIGNvbXB1dGVkIGZvciBl
YWNoIGNvbXBvc2l0ZWQgbGF5ZXIgZHVyaW5nIGEgY29tcG9zaXRpbmcgbGF5ZXIKKyAgICAgICAg
dXBkYXRlIGFuZCB3YXMgcmV0cmljdGVkIHRvIGJlaW5nIHVwZGF0ZWQgaWYgdGhlIGxheWVyJ3Mg
YXNzb2NpYXRlZCBkb2N1bWVudCBtYXkgaGF2ZSBhbiBlbGVtZW50CisgICAgICAgIHdpdGggYSBu
b24tYXV0byB0b3VjaC1hY3Rpb24uIFRvIG1ha2UgdGhpcyB3b3JrIGZvciBub24tY29tcG9zaXRl
ZCBpZnJhbWVzIEkgZmluZCBpdHMgZW5jbG9zaW5nCisgICAgICAgIGNvbXBvc2l0aW5nIGxheWVy
LCBzZXQgYSBzcGVjaWFsIGJpdCB0aGF0IGl0IG5lZWRzIGFuIGV2ZW50IHJlZ2lvbiB1cGRhdGUg
YmVjYXVzZSBvZiB0aGUgbm9uLQorICAgICAgICBjb21wb3NpdGVkIGNoaWxkIGlmcmFtZSBhbmQg
c2NoZWR1bGUgYSBjb21wb3NpdGluZyBsYXllciB1cGRhdGUuIFdoZW4gdGhlIHVwZGF0ZSBoYXBw
ZW5zLCBpdAorICAgICAgICBjaGVja3MgdG8gc2VlIGlmIHRoZSBzcGVjaWFsIGJpdCBpcyBzZXQg
YW5kIGlmIHNvIG92ZXJyaWRlcyBhbnkgcmVzdHJpY3Rpb25zIHRoYXQgd291bGQgaGF2ZQorICAg
ICAgICBwcmV2ZW50ZWQgdGhlIGV2ZW50IHJlZ2lvbiBmcm9tIGJlaW5nIHVwZGF0ZWQuIFRoZSBw
YWludGluZyBjb2RlIGZvciB3aWRnZXRzIGlzIGFsc28gZml4ZWQgdXAgdG8KKyAgICAgICAgcGFz
cyB0aHJvdWdoIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0byB1cGRhdGUgZHVyaW5nIEV2ZW50UmVn
aW9uIHBhaW50aW5nLgorCisgICAgICAgIFRoaXMgc3RyYXRlZ3kgd29ya3Mgd2VsbCBmb3IgdXBk
YXRpbmcgdGhlIGV2ZW50IHJlZ2lvbi4gSG93ZXZlciBkZWJ1ZyBwYWludCBvdmVybGF5cyBhcmUg
bm90CisgICAgICAgIHVwZGF0ZWQgKGkuZS4gUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludERlYnVn
T3ZlcmxheXMoKSBpcyBub3QgY2FsbGVkKSB1bnRpbCB0aGUgZW1iZWRkaW5nIGNsaWVudCdzCisg
ICAgICAgIHZpZXcgaXMgcmVwYWludGVkLiBGb3Igbm93LCB0byBmaXggdGhpcyB1cCBJIGFkZGVk
IGFub3RoZXIgYSBoYWNrLCBhIHNwZWNpYWwgYml0IChSZW5kZXJWaWV3OjpuZWVkc1JlcGFpbnRI
YWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKSkKKyAg
ICAgICAgdGhhdCBpcyBvbmx5IHNldCBpZiBkZWJ1ZyBvdmVybGF5cyBhcmUgdG8gYmUgc2hvd24s
IHRvIGhhdmUgdGhlIGNvbXBvc2l0b3IgcmVwYWludCB0aGUgdmlldyBhZnRlcgorICAgICAgICB1
cGRhdGluZyBjb21wb3NpdGluZyBsYXllcnMuCisKKyAgICAgICAgVGVzdHM6IHBvaW50ZXJldmVu
dHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwK
KyAgICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0
aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRtbAorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdp
b25zRm9ySUZyYW1lKTogQWRkZWQuIFRyeSB0byBpbnZhbGlkYXRlIHRoZSBldmVudCByZWdpb24u
CisgICAgICAgIFRoaXMgbWF5IGZhaWwgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4g
ZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIGZvciByZXBhaW50IChlLmcuIG5lc3RlZAorICAg
ICAgICBjb21wb3NpdGVkIGlmcmFtZXMgLSBzZWUgdGVzdCBwb2ludGVyZXZlbnRzL2lvcy90b3Vj
aC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sKS4gSWYKKyAgICAgICAgdGhp
cyBoYXBwZW5zIHRoZW4gcmVjdXJzaXZlIG9uIG91ciBvd25lciBlbGVtZW50J3MgZG9jdW1lbnQu
IFJlY3Vyc2lvbiBpcyB1c2VkIGluc3RlYWQgb2YgYSBsb29wCisgICAgICAgIHRvIGZ1dHVyZSBw
cm9vZiB0aGlzIGNvZGUgZm9yIG91dC1vZi1wcm9jZXNzIChPT1ApIGlmcmFtZXMsIHdoaWNoIHdp
bGwgbGlrZWx5IGludHJvZHVjZSBkb2N1bWVudCBwcm94eSBvYmplY3RzLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OmludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQpOiBBZGRlZC4g
Q2hlY2sgaWYgb3VyIGRvY3VtZW50IGhhcyBhbnkgZWxlbWVudHMgd2l0aAorICAgICAgICBhIG5v
bi1hdXRvIHRvdWNoLWFjdGlvbi4gSWYgaXQgZG9lcyB0aGVuIGFzayB0aGUgY29tcG9zaXRvciBp
ZiB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIGZvcgorICAgICAgICByZXBhaW50J3Mg
ZXZlbnQgcmVnaW9uIG11c3QgYmUgaW52YWxpZGF0ZWQgLSBpdCB3aWxsIG9ubHkgcmVwbHkgdHJ1
ZSBpZiB0aGlzIGlzIGEgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lLgorICAgICAgICBJZiBpdCBkb2Vz
IHRoZW4gZm9yd2FyZCB0aGlzIGludmFsaWRhdGlvbiByZXF1ZXN0IHRvIHRoZSBkb2N1bWVudC4g
VGhlIHJlYXNvbiBJIGRlbGVnYXRlIHRvIHRoZSBkb2N1bWVudAorICAgICAgICBpbnN0ZWFkIG9m
IGhhbmRsaW5nIHRoZSBsb2dpYyBoZXJlIGlzIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9y
IE9PUCBpZnJhbWVzLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZExheW91dCk6IENh
bGwgRnJhbWU6OmludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKS4gQWxzbyB3
aGlsZQorICAgICAgICBJIGFtIGhlcmUgdGFrZSBvdXQgYSByZWYgb24gdGhlIGRvY3VtZW50IHRv
IGVuc3VyZSBpdCBsaXZlcyB0aHJvdWdoIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwgaW5jbHVk
aW5nCisgICAgICAgIHRocm91Z2ggdGhlIGFjY2Vzc2liaWxpdHkncyBwb3N0Tm90aWZpY2F0aW9u
KCkgY29kZSB0aGF0IGNhbGxzIG91dCB0byB0aGUgZW1iZWRkaW5nIGNsaWVudC4KKworICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZp
ZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9XaWRnZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oldp
ZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lk
Z2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6cGFpbnRPYmplY3QpOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJv
dWdoLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKTogVXBkYXRlIGNvZGUgbm93
IHRoYXQgUmVuZGVMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkKKyAgICAgICAgdGFrZXMg
YSByZWFzb24uIAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOiBQYXNzIHRoZSBFdmVudFJlZ2lvbkNvbnRl
eHQgdGhyb3VnaC4gSWYgYXJlIHBhc3NlZCBvbmUgdGhlbiB1cGRhdGUKKyAgICAgICAgcGFpbnQg
ZmxhZ3MgdG8gY29sbGVjdCBldmVudCByZWdpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uKTogQ2hhbmdlZCByZXR1cm4gdmFsdWUgZnJvbSB2
b2lkIHRvIGJvb2wgc28gYXMgdG8gaW5kaWNhdGUKKyAgICAgICAgdG8gdGhlIGNhbGxlciB3aGV0
aGVyIHRoZSBldmVudCByZWdpb24gd2FzIGFjdHVhbGx5IGludmFsaWRhdGVkLiBBbHNvIG1hZGUg
aXQgdGFrZSBhbiBhcmd1bWVudCBhcworICAgICAgICB0byB0aGUgcmVhc29uIGZvciB0aGUgaW52
YWxpZGF0aW9uLiBJZiBpbnZhbGlkYXRpb24gaXMgZHVlIHRvIGEgbm9uLWNvbXBvc2l0ZWQgaWZy
YW1lIHRoZW4gc2V0cyBzb21lCisgICAgICAgIHN0YXRlIGFuZCBzY2hlZHVsZSBhIGNvbXBvc2l0
aW5nIGxheWVyIHVwZGF0ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVu
dFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRl
bnRzTmVlZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpz
ZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVn
aW9uQ29udGV4dCB0aHJvdWdoCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0
aW5nTGF5ZXJGb3JSZXBhaW50IGNvbnN0KTogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclZpZXcuaDoKKyAgICAgICAgUGFzcyBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdGhyb3Vn
aC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKTogVHJhbnNsYXRlIHRoZSBldmVudCBy
ZWdpb24gYnkgb3VyIGNvbnRlbnQgcGFpbnQgb2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyV2lkZ2V0OjpwYWludCk6IFVwZGF0ZSBmb3IgRXZlbnRSZWdvbi4KKwogMjAxOS0wOS0xMyAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBidWls
ZGluZyBXZWJLaXQgZm9yIE1hYyBDYXRhbHlzdCBmcm9tIFhjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4OGY5
ZmNiYjgwNzMzMDNhMjA1OTkyMzgxYzcxMmMxMjZjODM0NzAuLjM1MGQ2ODdlYzk0Mjg4NWYyY2Uz
Njk0NWY0MzhkNTVhZDA5ZWQ3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDQt
MDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBm
aW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdo
LiBJdCBpcyB1bnVzZWQgYXMgaXQncyBub3QgYXBwbGljYWJsZSBmb3IgcGx1Z2luIHBhaW50aW5n
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaDoKKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJl
Y2FtZSBmaXJzdCByZXNwb25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmll
dyB3YXMgcmVzaWduZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBmYTNhNTc2ZWM1
YzgwOGU0YzYwMTc4NWQ3ODFiOGQwY2FiZDA3N2RjLi43Yzg3NGM4MWU1MGJkM2ZiYzU4M2QwNWRh
YmU4MDg2MmU0MTc1NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBv
c2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIEV2ZW50UmVnaW9u
Q29udGV4dCB0aHJvdWdoLiBJdCBpcyB1bnVzZWQgYXMgaXQncyBub3QgYXBwbGljYWJsZSBmb3Ig
cGx1Z2luIHBhaW50aW5nLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAg
ICAgICogUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnBhaW50KToKKwogMjAyMC0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gbWFrZSBXS1VzZXJTY3JpcHRz
IHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzZWY5
NDU5MDBiYThmMjRlMDJmNWVjZjIwZGVjZmM3MDhiZmQ4MmEwLi5jNzczMDNhNTY2YmRmMWIxY2Vj
NWQwZGE3MjA2YTliZmJlNjg3OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMzQs
NiArNDIzNCwxOSBAQCB2b2lkIERvY3VtZW50OjplbGVtZW50SW5BY3RpdmVDaGFpbkRpZERldGFj
aChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBtX2FjdGl2ZUVsZW1lbnQgPSBtX2FjdGl2ZUVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZUV2
ZW50UmVnaW9uc0ZvcklGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQpCit7Cisg
ICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvKiBsYXllciA9IHJlbmRlcmVyLT5lbmNs
b3NpbmdMYXllcigpKSB7CisgICAgICAgIGlmIChsYXllci0+aW52YWxpZGF0ZUV2ZW50UmVnaW9u
KFJlbmRlckxheWVyOjpFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRl
ZElGcmFtZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChhdXRvKiBvd25l
ckVsZW1lbnQgPSB0aGlzLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgb3duZXJFbGVtZW50LT5k
b2N1bWVudCgpLmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoKm93bmVyRWxlbWVudCk7
Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25z
KCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCA4MzlhZmNkNThiYWEzMWE3MmU5ZmE1ZjFlNjU3OTI2M2Y4
N2YyYmMxLi5lNzkwYThlMTJlZDUzMzgwMjkwY2JhYmI4YzFhNDU3YWJjY2YxOWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMTE0MCw2ICsxMTQwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9u
cygpOworICAgIHZvaWQgaW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvcklGcmFtZShIVE1MRnJhbWVP
d25lckVsZW1lbnQmKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAwNTFmZGIzZWU1YzVjMzNlNjhiMWI2ZDBkMDBj
MWQwOTAzYjc5ZDU2Li40YTIxY2Y4NmE5YmFjMzI0MzEyMzhhN2FjY2ZiYjgzMzgwOWU4Y2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIEZyYW1lOjpzZXRE
b2N1bWVudChSZWZQdHI8RG9jdW1lbnQ+JiYgbmV3RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVudElz
QmVpbmdSZXBsYWNlZCA9IGZhbHNlOwogfQogCit2b2lkIEZyYW1lOjppbnZhbGlkYXRlQ29udGVu
dEV2ZW50UmVnaW9uc0lmTmVlZGVkKCkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFt
X3BhZ2UgfHwgIW1fZG9jKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvYy0+bWF5SGF2
ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKCFtX2RvYy0+cmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkudmlld05lZWRzVG9JbnZhbGlk
YXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAobV9vd25lckVsZW1lbnQpCisgICAgICAgIG1fb3duZXJF
bGVtZW50LT5kb2N1bWVudCgpLmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JJRnJhbWUoKm1fb3du
ZXJFbGVtZW50KTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykK
IHZvaWQgRnJhbWU6Om9yaWVudGF0aW9uQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXgg
MjUyMGUwMzdhNTQ5MzBmYTFlMWJmNzBlMWNjMmFhMTgzNmI1N2I4OC4uYmJkODIyZTE3NTFiYWVi
MGYzYmFlYjg3ZDhjZDc3NDc0NzNjMDA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMzAzLDYgKzMw
Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKICAgICBi
b29sIG1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSBjb25zdDsKIAorICAgIHZvaWQgaW52YWxpZGF0
ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCgpOworCiAvLyA9PT09PT09PQogCiAgICAgdm9p
ZCBzZWxmT25seVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM2OGY1ZDM4
YzZlNTFlMDQ4ODg3MDk0YzU3ZWJmZjA3YWFmMDFjZWIuLjI4YmU3NmUwZjcxNmQzYjgwZjM4Y2Zk
MjBmMDk0NTc2MjU5MmJlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyNjEs
MTIgKzEyNjEsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVs
ZW1lbnQ+IGxheW91dFJvb3QpCiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyTGF5
b3V0KCk7CiAKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUoKS5kb2N1bWVudCgp
KTsKKyAgICBmcmFtZSgpLmludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKTsK
KwogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykK
LSAgICBpZiAoYXV0byogY2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpKQorICAgIGlmIChhdXRvKiBjYWNoZSA9IGRvY3VtZW50LT5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24obGF5b3V0Um9vdC5n
ZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhMYXlvdXRDb21wbGV0ZSk7CiAjZW5kaWYKIAotICAgIGZy
YW1lKCkuZG9jdW1lbnQoKS0+aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsK
KyAgICBkb2N1bWVudC0+aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKIAog
ICAgIHVwZGF0ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKQEAgLTEyNzQsMTAgKzEy
NzcsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+
IGxheW91dFJvb3QpCiAKICAgICBoYW5kbGVEZWZlcnJlZFNjcm9sbGJhcnNVcGRhdGVBZnRlckRp
cmVjdGlvbkNoYW5nZSgpOwogCi0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+aGFzTGlzdGVu
ZXJUeXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQorICAgIGlmIChkb2N1
bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIp
KQogICAgICAgICB1cGRhdGVPdmVyZmxvd1N0YXR1cyhsYXlvdXRXaWR0aCgpIDwgY29udGVudHNX
aWR0aCgpLCBsYXlvdXRIZWlnaHQoKSA8IGNvbnRlbnRzSGVpZ2h0KCkpOwogCi0gICAgZnJhbWUo
KS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOwor
ICAgIGRvY3VtZW50LT5tYXJrZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOwog
fQogCiBib29sIEZyYW1lVmlldzo6c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRT
aXplQ2hhbmdlKCkKQEAgLTQyMjUsNyArNDIyOCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRQYWlu
dENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlS
CiAgICAgfQogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBGcmFtZVZpZXc6OnBhaW50
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwg
RXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAjaWZuZGVmIE5ERUJV
RwogICAgIGJvb2wgZmlsbFdpdGhXYXJuaW5nQ29sb3I7CkBAIC00Mjg4LDggKzQyOTEsOCBAQCB2
b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgIHdoaWxlIChpczxSZW5kZXJJbmxpbmU+KHJlbmRl
cmVyKSAmJiAhZG93bmNhc3Q8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpLmZpcnN0TGluZUJveCgp
KQogICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKIAotICAgIHJvb3RMYXll
ci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlv
ciwgcmVuZGVyZXIsIHsgfSwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9PSBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gPyBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QW55T3JpZ2luIDogUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5KTsKLSAgICBpZiAocm9vdExheWVyLT5jb250YWlu
c0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSkKKyAgICByb290TGF5ZXItPnBhaW50KGNvbnRleHQs
IGRpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7IH0s
IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6
QW55T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9y
aWdpbiA6IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxl
T3JpZ2luT25seSwgZXZlbnRSZWdpb25Db250ZXh0KTsKKyAgICBpZiAocm9vdExheWVyLT5jb250
YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQogICAg
ICAgICByb290TGF5ZXItPnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0
LCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyKTsKIAogICAgIGRpZFBhaW50Q29udGVudHMoY29u
dGV4dCwgZGlydHlSZWN0LCBwYWludGluZ1N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmlu
ZGV4IGJiOTU3ODVjYzgxMjdhMzdmZjYxNTA2ZmY2ODE2MmY0ODE1N2RkZjQuLjEzM2Q5MDU5ZWNi
NWQ2OTAzZmFmZmZkOTBhMWVhNmJhNjcwMmQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApA
QCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFYT2JqZWN0Q2Fj
aGU7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRmxv
YXRTaXplOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CkBAIC0z
NTEsNyArMzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0
ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1iZWRkZWRPYmplY3RU
b1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6
OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZl
bnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5n
U3RhdGUgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMmZkMTVmN2IzMDE3YjFj
N2VlN2EyMWM4NjE4NjU0Yjk1MTEwOTIyNy4uNDY5NjUxMWQ2MWExYmRjNDEyNmYyMTk4MGQ5MzA5
NWFiMzA2Y2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTEy
MzYsMTQgKzEyMzYsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9sbElj
b24sIGljb25HQ1BvaW50KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29u
dGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7
CiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWNvbnRleHQu
cGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdE
aXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFl
dmVudFJlZ2lvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG5vdGlmeVBhZ2VUaGF0
Q29udGVudEFyZWFXaWxsUGFpbnQoKTsKQEAgLTEyNjgsNyArMTI2OCw3IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTZWN1cml0eU9yCiAgICAgICAgICAgICBjb250ZXh0LmNsaXAodmlzaWJsZUNvbnRlbnRSZWN0
KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpKTsKICAgICAgICAgfQogCi0gICAgICAgIHBh
aW50Q29udGVudHMoY29udGV4dCwgZG9jdW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlS
ZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBldmVudFJlZ2lvbkNvbnRleHQpOwogICAg
IH0KIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaAppbmRleCBiNjRhYTNiYTA2NmM5Y2RhZDkwYTFmY2JhMWExNTRiMjAzMGJiNTFlLi43
YWQ1MDQ5ZjE4ODkyY2ViOTUzNThhZDA4YjQ3MjQwZDEyNWQ3OTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCkBAIC01Nyw2ICs1Nyw3IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFz
cyBIb3N0V2luZG93OwogY2xhc3MgTGVnYWN5VGlsZUNhY2hlOwogY2xhc3MgU2Nyb2xsYmFyOwpA
QCAtMzUwLDcgKzM1MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJp
ZGUuIEhhbmRsZXMgcGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwg
YXMgdGhlIHNjcm9sbGJhcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsK
ICAgICB2b2lkIHBhaW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
Jik7CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGlsZHJl
bidzIHZpc2liaWxpdHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBzaG93
biBhbmQgaGlkZGVuLgpAQCAtMzg4LDcgKzM4OSw3IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxW
aWV3KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3Qg
SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kg
PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1h
Z2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggMTI5M2UyZDc5MzEzZjg2YjllODZjOGJjMGIyNTc3
OTZkZmQ1ZDYyOS4uYTZiNTgwNzM4OTk0NjI2Yzk3NWE2YzcyOTBiMDM0MWYxZmJlYzU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9p
ZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRlVGh1bWIoKTsK
IH0KIAotdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
KQordm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBF
dmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRy
b2xUaW50cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAgICBp
bnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGNiOTUwZTIz
ZjdhNzY1ZTA3MjkwOGQ1YjM2NmIxNmNjYmYwZDM0ZDIuLmVkMzg5NmM5ZDJjOTFjMTJkNzM0NmY0
NmI2NTY0M2EwN2FhNDQ0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC04
Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3BvcnRp
b24oaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQ
b3MoaW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0
cikgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuY3BwCmluZGV4IGU5ZjVkODFlMDNhZTYyM2JhOWIzYWQ3ZjVmZWZhMzUzZGYyYWI2
OGQuLmE3ZmUzODBmM2ZkMmQ5Y2E2Y2Y4MjhiODJlYTNkNDZkZDUzN2U5NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2lkZ2V0LmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRG
cmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2lkZ2V0LmgKaW5kZXggMWNmOTMxYzEyMjM3MDAyOGY1YWYwNmM1N2Q0NTg4YTZmMmZjNTRhZi4u
NGYzMDJhYmJmMTBlYWI5MDBiMzBjNjMzOWFiODgwNDcwYjdhN2Y4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2lkZ2V0LmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDdXJzb3I7CiBjbGFzcyBFdmVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNz
IEZvbnRDYXNjYWRlOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpA
QCAtMTA5LDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSB7IEFueU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lv
bkNvbnRleHQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZhbGlkYXRl
UmVjdChib3VuZHNSZWN0KCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNv
bnN0IEludFJlY3QmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9XaWRnZXRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0
ay5jcHAKaW5kZXggNjkxOWVlNDJiYTBjNDU5Y2I3YTMwYTlhNzBiNzJkMjhjMjc5OTliYy4uN2M0
NWRjZjc5YjE1MmY5NTdiMmNiOGZiMDQzYzgzZmQwZjVjZjQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXaWRnZXQ6
OmhpZGUoKQogICAgIHNldFNlbGZWaXNpYmxlKGZhbHNlKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCAzZTA5YzEx
YjQ2MzI3YjQwMTY5N2E1ZGUwZGQ3NjE5NWMxYjNkYWM1Li40ZTA3YmQ3NTE2ODlmY2E1MmNiM2E2
YzFhMDY3OWM0ZmEyMGM3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2lkZ2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJ
T1MubW0KQEAgLTE0Niw3ICsxNDYsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0ZXJWaWV3KCkg
Y29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkK
K3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIs
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAg
aWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCAyNjZiMDQyZTA2ZmQ3ZGIzZjI3MTVhNDYx
ZDg0Y2UwYTc3OTBkNTE0Li4zMDQ1ODg4YTM0NDRjNTdmY2ExNGUxYTNiMjMxZTJkMmQ2ZTA0ODgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KQEAgLTE4Niw3ICsx
ODYsNyBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4g
dmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3Qg
SW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV2lkZ2V0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRn
ZXRXaW4uY3BwCmluZGV4IGZmZDg2YTA0NDAzNmVmOGNlYTE0NGQwNjMxZTNmMTI1ZTg0MDFlY2Qu
Ljk2NWRmODM4M2ZiZGJlMzU3OWIwODExOGM0YmU2ZWQzMzdjNjdkMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2lk
Z2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiAgICAgdmlldy0+aG9zdFdpbmRv
dygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBlYzZmZDhjZmZlNjcxZmY4OGVm
MjUzZWRiMjk5ZjkzNDA1NGJmMWM3Li5kYmFhNTE3Mzk1ZWI3NWM5Zjk1NDEzMGZjY2M1YzQ0MTcx
YWU3NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEy
NTUsOCArMTI1NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgICAgICBwYWlu
dEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT51bml0ZShib3JkZXJSZWdpb24sIHN0eWxlKCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBkZXNjZW5kYW50cyBpZiB3
ZSBkb24ndCBoYXZlIG92ZXJmbG93IGFuZCBkb24ndCBjb250YWluIGZsb2F0cyBhbmQgdGhlIGFy
ZWEgaXMgYWxyZWFkeSBjb3ZlcmVkLgotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5k
YW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJ
bmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJS
ZWN0KSk7CisgICAgICAgIGJvb2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFzVmlzdWFs
T3ZlcmZsb3coKSB8fCBjb250YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRSZWdpb25D
b250ZXh0LT5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3KCku
bmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUoKTsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVk
c1RyYXZlcnNlRGVzY2VuZGFudHMgfHwgZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9u
QXV0b1RvdWNoQWN0aW9uKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcAppbmRleCA4NzdmNDgwNmE3Yzc2YmIyYWZlODQzY2E0OGNjNmYyMTViMmFm
ZDRiLi41ZWEwOWE1MDZmZTZlNTQ4YzFlOTdjNWM0MWM0NDAxZDI2NDg1YjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAg
dm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXcKICAgICAgICAgaWYgKG5lZWRzSW52YWxpZGF0ZUV2ZW50
UmVnaW9uKCkpIHsKICAgICAgICAgICAgIC8vIFVzdWFsbHkgdGhlIGV2ZW50IHJlZ2lvbiBnZXRz
IHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YgcGFpbnQgaW52YWxpZGF0aW9uLiBIZXJlIHdlIG5lZWQg
dG8gcmVxdWVzdCBhbiB1cGRhdGUgZXhwbGljaXRseS4KICAgICAgICAgICAgIGlmIChhdXRvKiBs
YXllciA9IGVuY2xvc2luZ0xheWVyKCkpCi0gICAgICAgICAgICAgICAgbGF5ZXItPmludmFsaWRh
dGVFdmVudFJlZ2lvbigpOworICAgICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZlbnRS
ZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpTdHlsZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVT
aXplKCkgPCBtX3N0eWxlLm91dGxpbmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlm
ZmVyZW5jZShkaWZmKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCAyMWY1MmI5N2Q3ZmNlNDY3YTc0Mjg2ZDc1YzhkMTZiZTcyNzI5NTRjLi4yOTY4MTc0NGRi
YzYyMWUyZWMzY2I0MmVhODEyYmJmOTNjZGE4ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE5IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25zIGFy
ZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24u
CkBAIC00MjA0LDExICs0MjA0LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxE
aXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0
dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlw
bGllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3Vi
cGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5k
ZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFp
bnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBwYWludFBvbGljeSkKK3ZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWlu
dFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSBwYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lv
bkNvbnRleHQpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVz
dHM7CiAKICAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5n
SW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1YnRy
ZWVQYWludFJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSk7CisgICAgaWYgKGV2ZW50
UmVnaW9uQ29udGV4dCkgeworICAgICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0
ID0gZXZlbnRSZWdpb25Db250ZXh0OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXll
cjo6UGFpbnRMYXllckNvbGxlY3RpbmdFdmVudFJlZ2lvbik7CisgICAgfQogICAgIHBhaW50TGF5
ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAogICAgIGZvciAoYXV0byYg
d2lkZ2V0IDogb3ZlcmxhcFRlc3RSZXF1ZXN0cy5rZXlzKCkpCkBAIC03MDAyLDEyICs3MDA2LDEy
IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVz
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmludmFs
aWRhdGVFdmVudFJlZ2lvbigpCitib29sIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdp
b24oRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb24gcmVhc29uKQogewogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgYXV0byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0NvbXBv
c2l0aW5nTGF5ZXJGb3JSZXBhaW50KCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRhaW5z
RXZlbnRSZWdpb24gPSBbJl0gewogICAgICAgICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFwIHRl
c3RpbmcuCkBAIC03MDE5LDEwICs3MDIzLDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRh
dGVFdmVudFJlZ2lvbigpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYg
KCFtYWludGFpbnNFdmVudFJlZ2lvbigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNv
biAhPSBFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZElGcmFtZSAm
JiAhbWFpbnRhaW5zRXZlbnRSZWdpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Y29tcG9zaXRpbmdMYXllci0+c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUo
KTsKKworICAgIGlmIChyZWFzb24gPT0gRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246Ok5v
bkNvbXBvc2l0ZWRJRnJhbWUpIHsKKyAgICAgICAgY29tcG9zaXRpbmdMYXllci0+cmVuZGVyZXIo
KS52aWV3KCkuc2V0TmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJRnJhbWUo
KTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkuc2V0dGluZ3MoKS52aXNpYmxlRGVidWdPdmVybGF5
UmVnaW9ucygpICYgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAgICAgICBjb21wb3Np
dGluZ0xheWVyLT5yZW5kZXJlcigpLnZpZXcoKS5zZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21w
b3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKTsKKyAgICAgICAgY29tcG9z
aXRpbmdMYXllci0+Y29tcG9zaXRvcigpLnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgp
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlYXNv
bik7CisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKaW5kZXggZDExMzkzZTA3ZGViYWFjYjg1YmEzMTI0OTJmY2IwNGRjZGU1
N2ZjMS4uMDNlMzI3NWNhMmU5MmM0MWFiOTc4NDdjNzE0M2FlMzU3ODYwNDJjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY5NSw3ICs2OTUsNyBAQCBwdWJsaWM6
CiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50
cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBmcm9t
IGZyb250IHRvIGJhY2suCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCA9
IExheW91dFNpemUoKSwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+ID0gUGFpbnRCZWhhdmlvcjo6
Tm9ybWFsLAotICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRy
LCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKTsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50TGF5
ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpOwog
ICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsK
ICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0
cik7CkBAIC05MjQsNyArOTI0LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OwogCi0gICAgdm9p
ZCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBlbnVtIGNsYXNzIEV2ZW50UmVnaW9uSW52
YWxpZGF0aW9uUmVhc29uIHsgUGFpbnQsIFN0eWxlLCBOb25Db21wb3NpdGVkSUZyYW1lIH07Cisg
ICAgYm9vbCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFz
b24pOwogCiBwcml2YXRlOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCmluZGV4IDA4MWQ0Yzc2NDAzYThlYmJlMDA3OWRhMjEyNTNjYTJmZTBi
YWNiZDIuLjBkMmIwZjUyNDcyNzEwNWZkMTRlMTVkNTZjZWExMWNmMTVkYmU5OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNjE4
LDExICsxNjE4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVudFJlZ2lv
bigpCiAgICAgaWYgKHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElG
cmFtZSA9IHJlbmRlcmVyKCkudmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21w
b3NpdGVkSUZyYW1lKCk7CiAgICAgYm9vbCBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gZmFsc2U7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0g
cmVuZGVyZXIoKS5kb2N1bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rp
b24oKTsKICNlbmRpZgotICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cykgeworICAgIGlm
ICghaGFzVG91Y2hBY3Rpb25FbGVtZW50cyAmJiAhbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5v
bkNvbXBvc2l0ZWRJRnJhbWUpIHsKICAgICAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaXNSZW5kZXJW
aWV3TGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTY2Niw2ICsxNjY3LDkgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkKIAogICAgIGlmICht
X3Njcm9sbGVkQ29udGVudHNMYXllcikKICAgICAgICAgdXBkYXRlRXZlbnRSZWdpb25Gb3JMYXll
cigqbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOworCisgICAgaWYgKG5lZWRzRXZlbnRSZWdpb25V
cGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lKQorICAgICAgICByZW5kZXJlcigpLnZpZXcoKS5z
ZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZElGcmFtZShmYWxzZSk7CiB9
CiAjZW5kaWYKIApAQCAtMjc4MSw3ICsyNzg1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnNldENvbnRlbnRzTmVlZERpc3BsYXkoR3JhcGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRvTGF5ZXIK
ICAgICBpZiAoIW1fb3duaW5nTGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgbV9v
d25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOwogCi0g
ICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICBtX293bmluZ0xh
eWVyLmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJMYXllcjo6RXZlbnRSZWdpb25JbnZhbGlk
YXRpb25SZWFzb246OlBhaW50KTsKIAogICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyKCku
dmlldygpLmZyYW1lVmlldygpOwogICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVy
ICYmIGZyYW1lVmlldy5pc1RyYWNraW5nUmVwYWludHMoKSkKQEAgLTI4MjEsNyArMjgyNSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNv
bnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiAgICAgaWYgKCFtX293bmluZ0xheWVyLmlzUmVuZGVy
Vmlld0xheWVyKCkpCiAgICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVlZHNDb21wb3NpdGluZ0Nv
bmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50
UmVnaW9uKCk7CisgICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVy
TGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpQYWludCk7CiAKICAgICBGbG9h
dFJlY3QgcGl4ZWxTbmFwcGVkUmVjdEZvclBhaW50aW5nID0gc25hcFJlY3RUb0RldmljZVBpeGVs
cyhyLCBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJl
cigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggM2EwMzhjZThhM2EyZTg3ODAxMTNiNGRl
MGMxNjdlNDEwZDE3YTI3My4uNzg3MzA1NDgyNmYxODEwMzEwYTI0ZDZlZmMwOGM5YjhmZjg4ZjVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKQEAgLTg1OCw2ICs4NTgsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUKIAog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCZwYWdlKCkp
OwogCisgICAgaWYgKG1fcmVuZGVyVmlldy5uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGlu
Z0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKSkgeworICAgICAgICBtX3JlbmRlclZp
ZXcucmVwYWludFJvb3RDb250ZW50cygpOworICAgICAgICBtX3JlbmRlclZpZXcuc2V0TmVlZHNS
ZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5
KGZhbHNlKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcyNSw2ICszNzMw
LDE0IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJG
b3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQogCiAjZW5kaWYKIAorYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdDb21w
b3NpdGluZ0xheWVyRm9yUmVwYWludCgpIGNvbnN0Cit7CisgICAgLy8gRXZlbnQgcmVnaW9ucyBh
cmUgb25seSB1cGRhdGVkIG9uIGNvbXBvc2l0aW5nIGxheWVycy4gTm9uLWNvbXBvc2l0ZWQgbGF5
ZXJzIG11c3QKKyAgICAvLyBkZWxlZ2F0ZSB0byB0aGVpciBlbmNsb3NpbmcgY29tcG9zaXRpbmcg
bGF5ZXIgZm9yIHJlcGFpbnQgdG8gdXBkYXRlIHRoZSBldmVudCByZWdpb24KKyAgICAvLyBmb3Ig
ZWxlbWVudHMgaW5zaWRlIHRoZW0uCisgICAgcmV0dXJuICFtX3JlbmRlclZpZXcuaXNDb21wb3Np
dGVkKCk7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKG1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pc1RyYW5zcGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA5NDZkZmM0YTI2
ZTcxODYwYzQ0ZDI5YzhjODcwZGM4YzJiMjViMjIzLi43Y2U2MzhjOTQ1ZmIzMTRlMzZiOTM5Njk2
ZDcwNTllMDY5NWIzOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCkBAIC0zNTgsNiArMzU4LDggQEAgcHVibGljOgogCiAgICAgYm9v
bCB2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IgPSBu
dWxscHRyKSBjb25zdDsKIAorICAgIGJvb2wgdmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdp
b25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkgY29uc3Q7CisKICAgICBi
b29sIGhhc05vbk1haW5MYXllcnNXaXRoVGlsZWRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllcnNXaXRoVGlsZWRCYWNraW5nQ291bnQ7IH0KIAogICAgIE9wdGlvblNldDxDb21wb3NpdGlu
Z1JlYXNvbj4gcmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDBj
YTJkYTA5Mjc0ZjYyNmJhOTY2ZjYzNGVlYTdmNDQ5NTY0YzY4NjIuLjVlMzZkMWE3NjI4OWExZGY3
YjBkMmE0M2YyNTY1NzQyODUzYTM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxi
YXI6OnN0eWxlQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKIH0KIAotdm9p
ZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQor
dm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0Nv
bnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZWEzNThkZmRiYmM1NTUw
YzIzODU1ZmE5Zjk3ZWU3YzYzMmYzNWNjMC4uYmExNzIzNWIxN2M0YmY1NTUxM2I0OGFiMTRhNDFm
YWNjNzMwOTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
aApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZp
ZXcqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggOTE0ZWJiYzdkZDNlODI1YWQ1YWQxNDEwMGY1
NjQxZGViYzZiODdiMi4uZTY0YTAyYjQ3NjRmNTg3YjBjZGExYTg0Y2IzOGYxZDQ5NGMwNWJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC02OCw2ICs2OCwxMiBAQCBw
dWJsaWM6CiAKICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWVWaWV3OyB9CiAKKyAgICBib29sIG5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5
ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBh
aW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5OyB9
OworICAgIHZvaWQgc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0
ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNSZXBhaW50
SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5ID0gdmFs
dWU7IH0KKworICAgIGJvb2wgbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRJ
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21w
b3NpdGVkSUZyYW1lOyB9CisgICAgdm9pZCBzZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9u
Q29tcG9zaXRlZElGcmFtZShib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzRXZlbnRSZWdpb25V
cGRhdGVGb3JOb25Db21wb3NpdGVkSUZyYW1lID0gdmFsdWU7IH0KKwogICAgIE9wdGlvbmFsPExh
eW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29u
dGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBhaW50Um9vdENvbnRlbnRzKCk7CiAg
ICAgdm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CkBA
IC0yNTUsNiArMjYxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU29mdHdhcmVGaWx0ZXJz
IHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fdXNlc0ZpcnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVk
c1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09u
bHkgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29t
cG9zaXRlZElGcmFtZSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFJlbmRlckVsZW1lbnQqLCBW
ZWN0b3I8Q2FjaGVkSW1hZ2UqPj4gbV9yZW5kZXJlcnNXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb247
CiAgICAgSGFzaFNldDxSZW5kZXJFbGVtZW50Kj4gbV92aXNpYmxlSW5WaWV3cG9ydFJlbmRlcmVy
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2Y2ZjMz
Yjc1MmI1Yjg2Mzc5N2M0YTFhODIyNzg1ZDJjMzRkODVhYS4uNzM5ZTViNjJiMThlZGZjNmQ5OWEz
YmVkMzY2MjE4YWQwZDk1ZTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yNDYsOCArMjQ2LDE4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAg
cGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICB9CisKKyAgICBpZiAocGFp
bnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRQYWludE9mZnNldCk7
CisgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnB1c2hUcmFuc2Zvcm0odHJh
bnNmb3JtKTsKKyAgICB9CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVuY2xv
c2luZy9pbnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmljZSBw
aXhlbCBzbmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBz
bmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8ucmVxdWlyZVNlY3VyaXR5T3JpZ2lu
QWNjZXNzRm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNj
ZXNzaWJsZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFu
eU9yaWdpbik7CisgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBw
ZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nl
c3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3Np
YmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luLCBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0KTsKKworICAgIGlmIChwYWludEluZm8u
ZXZlbnRSZWdpb25Db250ZXh0KQorICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0
LT5wb3BUcmFuc2Zvcm0oKTsKIAogICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkp
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNl
dCk7CkBAIC0yODIsNyArMjkyLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6T3V0bGluZSB8fCBwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZTo6U2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSkKICAgICAgICAgcGFp
bnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXpl
KCkpKTsKIAotICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3Vu
ZCkKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgewpAQCAtMzA0LDYgKzMx
NCw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJh
ZGl1cygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAorICAgIGlm
IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAgIHJl
dHVybjsKKwogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3ZlciBz
ZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYgIWRvY3VtZW50KCkucHJp
bnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0aW9uUmVjdCgpIGlzIGluIGFic29s
dXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGI2MDVhMjg5MTNiMzhmZWVjYzQ0MzAw
Mjk2M2NkNTliM2Y2YjdiYjguLmM3ZmJhZWNhMjM0ZGMxYzE4OWZlYTY5NjBlZjk1NmU4MWE4YmY0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC03ODMsNyArNzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsK
IH0KIAotdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8sIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSkKK3ZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9p
c0luaXRpYWxpemVkIHx8IG1fcGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1
Z0luRWxlbWVudDo6UmVzdGFydGluZykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDg0ZDQyNjRjZTBkMDY4ODZj
Mzk5Yzg1NjQ4ZDI1YTljYTFlYjgxNjYuLjAzYTkxYmNiOWE4MDM2YTUyZjlhNWNiMGMyNTdlZWRh
NTc1NjU5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6V2lk
Z2V0CiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5LCBXZWJDb3JlOjpFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICB2
b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVSZWN0c0NoYW5n
ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmgKaW5kZXggYjViNjBhODA5OTFkNjA3MTBiODcwNjMwMjQwMjFkNjUwOTA2MzJkYS4uZGVl
NzZjZDE4ZDczMGUwNjJlMmI4Y2Q1MjgzNDExNGU4ZTA2ZmNjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE4MSw3ICsxODEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgc2hvdygpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGhpZGUoKSBvdmVycmlk
ZTsKLSAgICAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jiwg
V2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KSBvdmVycmlkZTsKKyAgICAgICAgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBjbGlwUmVjdENoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgICAgICAvLyBUaGlzIG1l
dGhvZCBpcyB1c2VkIGJ5IHBsdWdpbnMgb24gYWxsIHBsYXRmb3JtcyB0byBvYnRhaW4gYSBjbGlw
IHJlY3QgdGhhdCBpbmNsdWRlcyBjbGlwcyBzZXQgYnkgV2ViQ29yZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDUyMDQ1OTRh
YjZmODRkNTcwMDA0MGRmZDI5ODFjM2Y1NjNlZGZmM2EuLmI2M2I2YTZiMTlmMTIxZjYyN2Q4NzA1
YzUwOTY5ZmJlMWFjZDlmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6cGFpbnRXaW5kb3dlZFBsdWdpbkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QKICNlbmRpZgogfQogCi12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5KQordm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKICAgICBpZiAoIW1faXNTdGFydGVkKSB7CiAg
ICAgICAgIC8vIERyYXcgdGhlICJtaXNzaW5nIHBsdWdpbiIgaW1hZ2UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZGMzZmUy
ZjU2MjlmNDkwMDNlMmFiODhiNDdmYzI3MDEzNDdmNjdiLi41MDJlZjAyYmZkYjcwNDgxNzkxNjRl
NzM2MmE1YmI1OTNhMDgzMTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDQtMDcgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRv
dWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbW9yZSB0ZXN0cy4KKworICAgICAgICAqIHBvaW50ZXJl
dmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1h
dGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0
aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBv
aW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRl
LW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZl
bnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBmaXJzdCByZXNw
b25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMgcmVzaWduZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
aWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjczNDM0NTA5ZGQ3MDQyYjg1NzgwZDUx
NjRjM2M5ODQ2ZmEzNTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2
ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAw
LjAwIDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRl
bnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENv
bG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdp
ZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5v
bmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEwMiBoZWlnaHQ9
MTAyKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2
ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NWM4OTQ1NmZmMjllZGNiMjM2ZTE2ZmE0NzkxOWJmMmNlMjg0N2IyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1h
dGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUi
IHNyY2RvYz0iPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6
MXB4IHNvbGlkIGJsYWNrJz48L2Rpdj4iIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxw
cmUgaWQ9InJlc3VsdHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB0ZXN0RnJhbWUuY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpLnN0eWxlLnRvdWNoQWN0aW9uID0gIm5vbmUi
OworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4dCA9
IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVF
X0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JP
T1RfTEFZRVJfUFJPUEVSVElFUyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3Rv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTk3ODMwOGJjMTdjMDYyNWIyYjgzMGQ3OGQ3NTA1Y2IyNWNhMmIyMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aWZyYW1lIHNyY2RvYz0iPGRpdiBzdHlsZT0n
dG91Y2gtYWN0aW9uOiBub25lOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjox
cHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2FkPSJ3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5w
YXJlbnQuZHVtcFJlZ2lvbigpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y3
MzQzNDUwOWRkNzA0MmI4NTc4MGQ1MTY0YzNjOTg0NmZhMzU3NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1p
ZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAg
KGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVu
IDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAg
ICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFj
a2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0
ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9uCisgICAg
ICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdpZHRoPTEw
MiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAg
KQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1h
Y3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRz
L2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3
NGVlYzI3MDM4Nzc3ZmY3ZDI3YTQ5NTkzN2Y5YjUyYjRhMmI1MgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyY2RvYz0iPGRpdiBzdHlsZT0ndG91Y2gtYWN0
aW9uOiBub25lOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQg
YmxhY2snPjwvZGl2PiIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPHByZSBpZD0icmVz
dWx0cyI+PC9wcmU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICByZXN1bHRzLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1l
bnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8IGludGVybmFs
cy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRl
cmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUt
aW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMzNhZjhmZGU5
ZWIzYWQ5YWVjYTk2NDk1M2ZiZTVkNTc4NGU1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCisoR3JhcGhpY3NMYXllcgorICAo
YW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAg
ICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNr
Z3JvdW5kQ29sb3IgI0ZGRkZGRikKKyAgICAgIChldmVudCByZWdpb24KKyAgICAgICAgKHJlY3Qg
KDAsMCkgd2lkdGg9ODAwIGhlaWdodD02MDApCisgICAgICAgICh0b3VjaC1hY3Rpb24KKyAgICAg
ICAgICAobm9uZSAgICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICgyOCwyOCkgd2lkdGg9MTAy
IGhlaWdodD0xMDIpCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICAp
CispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUzNTFmMjg3MDJjZTBkODM3Yjk4OWI5YjkyMWY2NjllZjI4NzA4MTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24t
bm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJyZXNv
dXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sIj48L2lmcmFtZT4KKzxw
cmUgaWQ9InJlc3VsdHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworfQorCitmdW5jdGlvbiBkdW1wUmVnaW9uKCkKK3sKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgcmVzdWx0cy5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVl
QXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19FVkVOVF9SRUdJ
T04gfCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19ST09UX0xBWUVSX1BST1BFUlRJRVMp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395854</attachid>
            <date>2020-04-08 12:30:05 -0700</date>
            <delta_ts>2020-04-08 15:37:43 -0700</delta_ts>
            <desc>To land</desc>
            <filename>bug-210041-20200408123004.patch</filename>
            <type>text/plain</type>
            <size>51763</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU1NDk3NDM1MDNkZDU3
OGM2OGE0Zjc1MDllMTM2MTFhNzk3MmM1ZC4uYTk2N2MzZWMxYzc3NWNjOTc1MzEwNzA4NTliZjk1
MzQ3MTY2Y2JjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMC0wNC0wOCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdWxkIGZpbmQgdG91
Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24tY29tcG9zaXRlZCBpZnJhbWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYxMzIzNTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBGaXggdXAgZXZlbnQgcmVnaW9uIGNvZGUgdG8gdHJhdmVyc2Ugbm9u
LWNvbXBvc2l0ZWQgaWZyYW1lcyB0aGF0IGhhdmUgZWxlbWVudHMgd2l0aCBhIG5vbi1hdXRvCisg
ICAgICAgIHRvdWNoLWFjdGlvbi4gVGhlIGV2ZW50IHJlZ2lvbiBpcyBjb21wdXRlZCBmb3IgZWFj
aCBjb21wb3NpdGVkIGxheWVyIGR1cmluZyBhIGNvbXBvc2l0aW5nIGxheWVyCisgICAgICAgIHVw
ZGF0ZSBhbmQgd2FzIHJldHJpY3RlZCB0byBiZWluZyB1cGRhdGVkIGlmIHRoZSBsYXllcidzIGFz
c29jaWF0ZWQgZG9jdW1lbnQgbWF5IGhhdmUgYW4gZWxlbWVudAorICAgICAgICB3aXRoIGEgbm9u
LWF1dG8gdG91Y2gtYWN0aW9uLiBUbyBtYWtlIHRoaXMgd29yayBmb3Igbm9uLWNvbXBvc2l0ZWQg
aWZyYW1lcyBJIGZpbmQgaXRzIGVuY2xvc2luZworICAgICAgICBjb21wb3NpdGluZyBsYXllciwg
c2V0IGEgc3BlY2lhbCBiaXQgdGhhdCBpdCBuZWVkcyBhbiBldmVudCByZWdpb24gdXBkYXRlIGJl
Y2F1c2Ugb2YgdGhlIG5vbi0KKyAgICAgICAgY29tcG9zaXRlZCBjaGlsZCBpZnJhbWUgYW5kIHNj
aGVkdWxlIGEgY29tcG9zaXRpbmcgbGF5ZXIgdXBkYXRlLiBXaGVuIHRoZSB1cGRhdGUgaGFwcGVu
cywgaXQKKyAgICAgICAgY2hlY2tzIHRvIHNlZSBpZiB0aGUgc3BlY2lhbCBiaXQgaXMgc2V0IGFu
ZCBpZiBzbyBvdmVycmlkZXMgYW55IHJlc3RyaWN0aW9ucyB0aGF0IHdvdWxkIGhhdmUKKyAgICAg
ICAgcHJldmVudGVkIHRoZSBldmVudCByZWdpb24gZnJvbSBiZWluZyB1cGRhdGVkLiBUaGUgcGFp
bnRpbmcgY29kZSBmb3Igd2lkZ2V0cyBpcyBhbHNvIGZpeGVkIHVwIHRvCisgICAgICAgIHBhc3Mg
dGhyb3VnaCBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdG8gdXBkYXRlIGR1cmluZyBFdmVudFJlZ2lv
biBwYWludGluZy4KKworICAgICAgICBUaGlzIHN0cmF0ZWd5IHdvcmtzIHdlbGwgZm9yIHVwZGF0
aW5nIHRoZSBldmVudCByZWdpb24uIEhvd2V2ZXIgZGVidWcgcGFpbnQgb3ZlcmxheXMgYXJlIG5v
dAorICAgICAgICB1cGRhdGVkIChpLmUuIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092
ZXJsYXlzKCkgaXMgbm90IGNhbGxlZCkgdW50aWwgdGhlIGVtYmVkZGluZyBjbGllbnQncworICAg
ICAgICB2aWV3IGlzIHJlcGFpbnRlZC4gRm9yIG5vdywgdG8gZml4IHRoaXMgdXAgSSBhZGRlZCBh
bm90aGVyIGEgaGFjaywgYSBzcGVjaWFsIGJpdCAoUmVuZGVyVmlldzo6bmVlZHNSZXBhaW50SGFj
a0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KCkpCisgICAg
ICAgIHRoYXQgaXMgb25seSBzZXQgaWYgZGVidWcgb3ZlcmxheXMgYXJlIHRvIGJlIHNob3duLCB0
byBoYXZlIHRoZSBjb21wb3NpdG9yIHJlcGFpbnQgdGhlIHZpZXcgYWZ0ZXIKKyAgICAgICAgdXBk
YXRpbmcgY29tcG9zaXRpbmcgbGF5ZXJzLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyZXZlbnRz
L2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCisg
ICAgICAgICAgICAgICBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
aWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZUV2ZW50UmVnaW9u
c0ZvckZyYW1lKTogQWRkZWQuIFRyeSB0byBpbnZhbGlkYXRlIHRoZSBldmVudCByZWdpb24uCisg
ICAgICAgIFRoaXMgbWF5IGZhaWwgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4gZW5j
bG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIGZvciByZXBhaW50IChlLmcuIG5lc3RlZAorICAgICAg
ICBjb21wb3NpdGVkIGlmcmFtZXMgLSBzZWUgdGVzdCBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1h
Y3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sKS4gSWYKKyAgICAgICAgdGhpcyBo
YXBwZW5zIHRoZW4gcmVjdXJzaXZlIG9uIG91ciBvd25lciBlbGVtZW50J3MgZG9jdW1lbnQuIFJl
Y3Vyc2lvbiBpcyB1c2VkIGluc3RlYWQgb2YgYSBsb29wCisgICAgICAgIHRvIGZ1dHVyZSBwcm9v
ZiB0aGlzIGNvZGUgZm9yIG91dC1vZi1wcm9jZXNzIChPT1ApIGZyYW1lcywgd2hpY2ggd2lsbCBs
aWtlbHkgaW50cm9kdWNlIGRvY3VtZW50IHByb3h5IG9iamVjdHMuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCk6IEFkZGVkLiBDaGVj
ayBpZiBvdXIgZG9jdW1lbnQgaGFzIGFueSBlbGVtZW50cyB3aXRoCisgICAgICAgIGEgbm9uLWF1
dG8gdG91Y2gtYWN0aW9uLiBJZiBpdCBkb2VzIHRoZW4gYXNrIHRoZSBjb21wb3NpdG9yIGlmIHRo
ZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yCisgICAgICAgIHJlcGFpbnQncyBldmVu
dCByZWdpb24gbXVzdCBiZSBpbnZhbGlkYXRlZCAtIGl0IHdpbGwgb25seSByZXBseSB0cnVlIGlm
IHRoaXMgaXMgYSBub24tY29tcG9zaXRlZCBpZnJhbWUuCisgICAgICAgIElmIGl0IGRvZXMgdGhl
biBmb3J3YXJkIHRoaXMgaW52YWxpZGF0aW9uIHJlcXVlc3QgdG8gdGhlIGRvY3VtZW50LiBUaGUg
cmVhc29uIEkgZGVsZWdhdGUgdG8gdGhlIGRvY3VtZW50CisgICAgICAgIGluc3RlYWQgb2YgaGFu
ZGxpbmcgdGhlIGxvZ2ljIGhlcmUgaXMgdG8gZnV0dXJlIHByb29mIHRoaXMgY29kZSBmb3IgT09Q
IGlmcmFtZXMuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlkTGF5b3V0KTogQ2FsbCBG
cmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCgpLiBBbHNvIHdoaWxl
CisgICAgICAgIEkgYW0gaGVyZSB0YWtlIG91dCBhIHJlZiBvbiB0aGUgZG9jdW1lbnQgdG8gZW5z
dXJlIGl0IGxpdmVzIHRocm91Z2ggdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLCBpbmNsdWRpbmcK
KyAgICAgICAgdGhyb3VnaCB0aGUgYWNjZXNzaWJpbGl0eSdzIHBvc3ROb3RpZmljYXRpb24oKSBj
b2RlIHRoYXQgY2FsbHMgb3V0IHRvIHRoZSBlbWJlZGRpbmcgY2xpZW50LgorCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9XaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWlu
dCk6CisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1dpZGdldEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0
OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XaWRnZXRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2gu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOiBVcGRhdGUgY29kZSBub3cgdGhh
dCBSZW5kZUxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oKQorICAgICAgICB0YWtlcyBhIHJl
YXNvbi4gCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6IFBhc3MgdGhlIEV2ZW50UmVnaW9uQ29udGV4dCB0
aHJvdWdoLiBJZiBhcmUgcGFzc2VkIG9uZSB0aGVuIHVwZGF0ZQorICAgICAgICBwYWludCBmbGFn
cyB0byBjb2xsZWN0IGV2ZW50IHJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjppbnZhbGlkYXRlRXZlbnRSZWdpb24pOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBmcm9tIHZvaWQg
dG8gYm9vbCBzbyBhcyB0byBpbmRpY2F0ZQorICAgICAgICB0byB0aGUgY2FsbGVyIHdoZXRoZXIg
dGhlIGV2ZW50IHJlZ2lvbiB3YXMgYWN0dWFsbHkgaW52YWxpZGF0ZWQuIEFsc28gbWFkZSBpdCB0
YWtlIGFuIGFyZ3VtZW50IGFzCisgICAgICAgIHRvIHRoZSByZWFzb24gZm9yIHRoZSBpbnZhbGlk
YXRpb24uIElmIGludmFsaWRhdGlvbiBpcyBkdWUgdG8gYSBub24tY29tcG9zaXRlZCBpZnJhbWUg
dGhlbiBzZXRzIHNvbWUKKyAgICAgICAgc3RhdGUgYW5kIHNjaGVkdWxlIGEgY29tcG9zaXRpbmcg
bGF5ZXIgdXBkYXRlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVn
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNO
ZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENv
bnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25D
b250ZXh0IHRocm91Z2gKKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9zaXRpbmdM
YXllckZvclJlcGFpbnQgY29uc3QpOiBBZGRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5oOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOiBUcmFuc2xhdGUgdGhlIGV2ZW50IHJlZ2lv
biBieSBvdXIgY29udGVudCBwYWludCBvZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OnBhaW50KTogVXBkYXRlIGZvciBFdmVudFJlZ29uLgorCiAyMDE5LTA5LTEzICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGJ1aWxkaW5n
IFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjg4ZjlmY2Ji
ODA3MzMwM2EyMDU5OTIzODFjNzEyYzEyNmM4MzQ3MC4uM2NjZGZmZjg2Y2JjMGQzZTY2NzY0NGY5
MjgxYjRhMzNiNTc4ZDQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNC0wOCAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdWxkIGZpbmQg
dG91Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24tY29tcG9zaXRlZCBpZnJhbWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzIzNTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KKworICAgICAgICBQYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJdCBp
cyB1bnVzZWQgYXMgaXQncyBub3QgYXBwbGljYWJsZSBmb3IgcGx1Z2luIHBhaW50aW5nLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaDoKKwogMjAyMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gU2hvdWxkIHNob3cgaW5wdXQgdmlldyB3aGVuIGJlY2FtZSBm
aXJzdCByZXNwb25kZXIgaWYga2V5Ym9hcmQgd2FzIHNob3dpbmcgd2hlbiB0aGUgdmlldyB3YXMg
cmVzaWduZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBmYTNhNTc2ZWM1YzgwOGU0
YzYwMTc4NWQ3ODFiOGQwY2FiZDA3N2RjLi5hN2ZkNzgzZTBjMDQ2OWE4NTI1NmY4YjI3MzI5ZjU4
M2Y5MmEzNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQg
aWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpwYWludCk6CisKKzIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50
cyBpbnNpZGUgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
MTMyMzU1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYXNzIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJdCBpcyB1bnVzZWQgYXMgaXQncyBu
b3QgYXBwbGljYWJsZSBmb3IgcGx1Z2luIHBhaW50aW5nLgorCisgICAgICAgICogUGx1Z2lucy9Q
bHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBhaW50KToKKwogMjAyMC0wNC0wMyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8g
bWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCAzZWY5NDU5MDBiYThmMjRlMDJmNWVjZjIwZGVjZmM3MDhiZmQ4MmEwLi5j
YzA1MGQwMWVjYzNkODYxNmEyYTNmYTcyMmI5ZjMyZjQyYTVjMGIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTQyMzQsNiArNDIzNCwxOSBAQCB2b2lkIERvY3VtZW50OjplbGVtZW50SW5B
Y3RpdmVDaGFpbkRpZERldGFjaChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBtX2FjdGl2ZUVs
ZW1lbnQgPSBtX2FjdGl2ZUVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKIH0KIAordm9pZCBEb2N1
bWVudDo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvckZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVu
dCYgZWxlbWVudCkKK3sKKyAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIGxheWVy
ID0gcmVuZGVyZXItPmVuY2xvc2luZ0xheWVyKCkpIHsKKyAgICAgICAgaWYgKGxheWVyLT5pbnZh
bGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVh
c29uOjpOb25Db21wb3NpdGVkRnJhbWUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoYXV0byogb3duZXJFbGVtZW50ID0gdGhpcy0+b3duZXJFbGVtZW50KCkpCisgICAgICAg
IG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5pbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9yRnJhbWUo
Km93bmVyRWxlbWVudCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVSZW5kZXJpbmdE
ZXBlbmRlbnRSZWdpb25zKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4MzlhZmNkNThiYWEzMWE3MmU5
ZmE1ZjFlNjU3OTI2M2Y4N2YyYmMxLi5iM2UyMTEwMzhmZDBmMzFlNmUwYmQ1NzM5OTI5MTJiMjk1
NWIxM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTE0MCw2ICsxMTQwLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29k
aW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyaW5n
RGVwZW5kZW50UmVnaW9ucygpOworICAgIHZvaWQgaW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvckZy
YW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYpOwogCiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExp
c3RlbmVycygpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDA1MWZkYjNlZTVjNWMz
M2U2OGIxYjZkMGQwMGMxZDA5MDNiNzlkNTYuLjg2MDQ5YmQ1ODBmNTUyN2ZmNGI1Yzc5M2RkZThm
NzUxMzE4ZTA4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0zMDQsNiArMzA0LDIwIEBAIHZv
aWQgRnJhbWU6OnNldERvY3VtZW50KFJlZlB0cjxEb2N1bWVudD4mJiBuZXdEb2N1bWVudCkKICAg
ICBtX2RvY3VtZW50SXNCZWluZ1JlcGxhY2VkID0gZmFsc2U7CiB9CiAKK3ZvaWQgRnJhbWU6Omlu
dmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKQoreworICAgIGlmICghbV9wYWdl
IHx8ICFtX2RvYyB8fCAhbV9kb2MtPnJlbmRlclZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBpZiAoIW1fZG9jLT5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0
b1RvdWNoQWN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIGlmICghbV9kb2Mt
PnJlbmRlclZpZXcoKS0+Y29tcG9zaXRvcigpLnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVn
aW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKG1fb3duZXJFbGVtZW50KQorICAgICAgICBtX293bmVyRWxlbWVudC0+ZG9j
dW1lbnQoKS5pbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9yRnJhbWUoKm1fb3duZXJFbGVtZW50KTsK
K30KKwogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCiB2b2lkIEZyYW1lOjpvcmllbnRh
dGlvbkNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDI1MjBlMDM3YTU0OTMwZmExZTFi
ZjcwZTFjYzJhYTE4MzZiNTdiODguLmJiZDgyMmUxNzUxYmFlYjBmM2JhZWI4N2Q4Y2Q3NzQ3NDcz
YzAwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMwMyw2ICszMDMsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQcmV3YXJtTG9jYWxT
dG9yYWdlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25z
SWZOZWVkZWQoKTsKKwogLy8gPT09PT09PT0KIAogICAgIHZvaWQgc2VsZk9ubHlSZWYoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjNjhmNWQzOGM2ZTUxZTA0ODg4NzA5NGM1N2Vi
ZmYwN2FhZjAxY2ViLi4zYmNiNjBhNWUxNjhlYjkzOTczYmFmZjExMTY0ZDQ5NWExNTY2ZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjYxLDEyICsxMjYxLDE1IEBAIHZvaWQg
RnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRSb290KQog
CiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlckxheW91dCgpOwogCisgICAgYXV0byBk
b2N1bWVudCA9IG1ha2VSZWYoKmZyYW1lKCkuZG9jdW1lbnQoKSk7CisKICNpZiBQTEFURk9STShD
T0NPQSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShHVEspCi0gICAgaWYgKGF1dG8qIGNh
Y2hlID0gZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICBp
ZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAg
ICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGxheW91dFJvb3QuZ2V0KCksIEFYT2JqZWN0Q2Fj
aGU6OkFYTGF5b3V0Q29tcGxldGUpOwogI2VuZGlmCiAKLSAgICBmcmFtZSgpLmRvY3VtZW50KCkt
PmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CisgICAgZnJhbWUoKS5pbnZh
bGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKCk7CisgICAgZG9jdW1lbnQtPmludmFs
aWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CiAKICAgICB1cGRhdGVDYW5CbGl0T25T
Y3JvbGxSZWN1cnNpdmVseSgpOwogCkBAIC0xMjc0LDEwICsxMjc3LDEwIEBAIHZvaWQgRnJhbWVW
aWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRSb290KQogCiAgICAg
aGFuZGxlRGVmZXJyZWRTY3JvbGxiYXJzVXBkYXRlQWZ0ZXJEaXJlY3Rpb25DaGFuZ2UoKTsKIAot
ICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6T1ZF
UkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKKyAgICBpZiAoZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlw
ZShEb2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKICAgICAgICAgdXBkYXRlT3Zl
cmZsb3dTdGF0dXMobGF5b3V0V2lkdGgoKSA8IGNvbnRlbnRzV2lkdGgoKSwgbGF5b3V0SGVpZ2h0
KCkgPCBjb250ZW50c0hlaWdodCgpKTsKIAotICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+bWFya2Vy
cygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKKyAgICBkb2N1bWVudC0+bWFya2Vy
cygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6
OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpCkBAIC00MjI1
LDcgKzQyMjgsNyBAQCB2b2lkIEZyYW1lVmlldzo6ZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UgogICAgIH0KIH0KIAotdm9pZCBG
cmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCog
ZXZlbnRSZWdpb25Db250ZXh0KQogewogI2lmbmRlZiBOREVCVUcKICAgICBib29sIGZpbGxXaXRo
V2FybmluZ0NvbG9yOwpAQCAtNDI4OCw4ICs0MjkxLDggQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QKICAgICB3aGlsZSAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikgJiYgIWRvd25jYXN0PFJl
bmRlcklubGluZT4oKnJlbmRlcmVyKS5maXJzdExpbmVCb3goKSkKICAgICAgICAgcmVuZGVyZXIg
PSByZW5kZXJlci0+cGFyZW50KCk7CiAKLSAgICByb290TGF5ZXItPnBhaW50KGNvbnRleHQsIGRp
cnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7IH0sIHNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55
T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biA6IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3Jp
Z2luT25seSk7Ci0gICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxi
YXJzKCkpCisgICAgcm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNp
emUoKSwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0eU9yaWdpblBhaW50
UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/IFJlbmRlckxh
eWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5kZXJMYXllcjo6
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHksIGV2ZW50UmVn
aW9uQ29udGV4dCk7CisgICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3Jv
bGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKICAgICAgICAgcm9vdExheWVyLT5wYWlu
dE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQsIGRpcnR5UmVjdCwgbV9wYWludEJlaGF2aW9yLCBy
ZW5kZXJlcik7CiAKICAgICBkaWRQYWludENvbnRlbnRzKGNvbnRleHQsIGRpcnR5UmVjdCwgcGFp
bnRpbmdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiYjk1Nzg1Y2M4MTI3YTM3
ZmY2MTUwNmZmNjgxNjJmNDgxNTdkZGY0Li4xMzNkOTA1OWVjYjVkNjkwM2ZhZmZmZDkwYTFlYTZi
YTY3MDJkMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU3LDYgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsK
K2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwpAQCAtMzUxLDcgKzM1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmpl
Y3QmKTsKICAgICB2b2lkIHJlbW92ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRk
ZWRPYmplY3QmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBu
dWxscHRyKSBmaW5hbDsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAgICAgICAgT3B0
aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCmluZGV4IDJmZDE1ZjdiMzAxN2IxYzdlZTdhMjFjODYxODY1NGI5NTEx
MDkyMjcuLjQ2OTY1MTFkNjFhMWJkYzQxMjZmMjE5ODBkOTMwOTVhYjMwNmNjYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMjM2LDE0ICsxMjM2LDE0IEBAIHZv
aWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBjb250ZXh0LmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBpY29uR0NQb2ludCk7CiB9
CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3kpCit2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1
cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uQ29u
dGV4dCkKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICBXaWRnZXQ6OnBh
aW50KGNvbnRleHQsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNv
bnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFs
aWRhdGlvbigpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhY29udGV4
dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50
KCk7CkBAIC0xMjY4LDcgKzEyNjgsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcgogICAgICAg
ICAgICAgY29udGV4dC5jbGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZp
c2libGVSZWN0KSk7CiAgICAgICAgIH0KIAotICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQs
IGRvY3VtZW50RGlydHlSZWN0LCBzZWN1cml0eU9yaWdpblBhaW50UG9saWN5KTsKKyAgICAgICAg
cGFpbnRDb250ZW50cyhjb250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSwgZXZlbnRSZWdpb25Db250ZXh0KTsKICAgICB9CiAKICNpZiBFTkFCTEUoUlVC
QkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggYjY0YWEz
YmEwNjZjOWNkYWQ5MGExZmNiYTFhMTU0YjIwMzBiYjUxZS4uN2FkNTA0OWYxODg5MmNlYjk1MzU4
YWQwOGI0NzI0MGQxMjVkNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApA
QCAtNTcsNiArNTcsNyBAQCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNz
IExlZ2FjeVRpbGVDYWNoZTsKIGNsYXNzIFNjcm9sbGJhcjsKQEAgLTM1MCw3ICszNTEsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5n
IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBF
dmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAgICAgdm9pZCBwYWludFNjcm9s
bGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1
cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KQEAgLTM4
OCw3ICszODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsVmlldygpOwogCiAgICAgdmlydHVh
bCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeTo6QW55T3JpZ2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZl
bnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRh
bE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
CmluZGV4IDEyOTNlMmQ3OTMxM2Y4NmI5ZTg2YzhiYzBiMjU3Nzk2ZGZkNWQ2MjkuLmE2YjU4MDcz
ODk5NDYyNmM5NzVhNmM3MjkwYjAzNDFmMWZiZWM1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU2Nyb2xsYmFyOjp1cGRhdGVU
aHVtYlByb3BvcnRpb24oKQogICAgIHVwZGF0ZVRodW1iKCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgU2Nyb2xsYmFyOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikK
IHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgp
LnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgaW52YWxpZGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAppbmRleCBjYjk1MGUyM2Y3YTc2NWUwNzI5MDhkNWIzNjZi
MTZjY2JmMGQzNGQyLi5lZDM4OTZjOWQyYzkxYzEyZDczNDZmNDZiNjU2NDNhMDdhYTQ0NDM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9wb3J0aW9uKGludCB2aXNpYmxlU2l6ZSwg
aW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGludCBwKSB7IG1fcHJlc3Nl
ZFBvcyA9IHA7IH0KIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6
U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFu
eU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcAppbmRleCBl
OWY1ZDgxZTAzYWU2MjNiYTliM2FkN2Y1ZmVmYTM1M2RmMmFiNjhkLi5hN2ZlMzgwZjNmZDJkOWNh
NmNmODI4YjgyZWEzZDQ2ZGQ1MzdlOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAK
QEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9s
aWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDFjZjkz
MWMxMjIzNzAwMjhmNWFmMDZjNTdkNDU4OGE2ZjJmYzU0YWYuLjRmMzAyYWJiZjEwZWFiOTAwYjMw
YzYzMzlhYjg4MDQ3MGI3YTdmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC02MCw2
ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRXZl
bnQ7CitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNz
IEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKQEAgLTEwOSw3ICsxMTAsNyBAQCBw
dWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgeyBBbnlP
cmlnaW4sIEFjY2Vzc2libGVPcmlnaW5Pbmx5IH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3Jp
Z2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIp
OwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCmluZGV4IDY5MTllZTQy
YmEwYzQ1OWNiN2EzMGE5YTcwYjcyZDI4YzI3OTk5YmMuLjdjNDVkY2Y3OWIxNTJmOTU3YjJjYjhm
YjA0M2M4M2ZkMGY1Y2Y0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9XaWRnZXRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRH
dGsuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICBzZXRTZWxm
VmlzaWJsZShmYWxzZSk7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0
OjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KaW5kZXggM2UwOWMxMWI0NjMyN2I0MDE2OTdhNWRlMGRk
NzYxOTVjMWIzZGFjNS4uNGUwN2JkNzUxNjg5ZmNhNTJjYjNhNmMxYTA2NzljNGZhMjBjNzM1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDYsNyArMTQ2
LDcgQEAgTlNWaWV3KiBXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZp
ZXc7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IElu
dFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChwLnBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KaW5kZXggMjY2YjA0MmUwNmZkN2RiM2YyNzE1YTQ2MWQ4NGNlMGE3NzkwZDUxNC4uMzA0
NTg4OGEzNDQ0YzU3ZmNhMTRlMWEzYjIzMWUyZDJkNmUwNDg4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xODYsNyArMTg2LDcgQEAgTlNWaWV3ICpXaWRn
ZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZvaWQgV2lk
Z2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBw
LCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lv
bkNvbnRleHQqKQogewogICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcAppbmRleCBmZmQ4
NmEwNDQwMzZlZjhjZWExNDRkMDYzMWUzZjEyNWU4NDAxZWNkLi45NjVkZjgzODNmYmRiZTM1Nzli
MDgxMThjNGJlNmVkMzM3YzY3ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vV2lkZ2V0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lk
Z2V0V2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFdpZGdldDo6c2V0Q3Vyc29yKGNvbnN0
IEN1cnNvciYgY3Vyc29yKQogICAgIHZpZXctPmhvc3RXaW5kb3coKS0+c2V0Q3Vyc29yKGN1cnNv
cik7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwg
RXZlbnRSZWdpb25Db250ZXh0KikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggZWM2ZmQ4Y2ZmZTY3MWZmODhlZjI1M2VkYjI5OWY5MzQwNTRiZjFj
Ny4uZjJiMmZkMzY2NWE1Mzk5MTEyMjcxY2VjMTVmMTE0YWMxYzdiNjM4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMjU1LDggKzEyNTUsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29u
dGV4dC0+dW5pdGUoYm9yZGVyUmVnaW9uLCBzdHlsZSgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIE5vIG5lZWQgdG8gY2hlY2sgZGVzY2VuZGFudHMgaWYgd2UgZG9uJ3QgaGF2ZSBvdmVyZmxv
dyBhbmQgZG9uJ3QgY29udGFpbiBmbG9hdHMgYW5kIHRoZSBhcmVhIGlzIGFscmVhZHkgY292ZXJl
ZC4KLSAgICAgICAgYm9vbCBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVy
ZmxvdygpIHx8IGNvbnRhaW5zRmxvYXRzKCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQtPmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVjdCkpOworICAgICAgICBib29s
IG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFp
bnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5j
bG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSkgfHwgdmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRh
dGVGb3JOb25Db21wb3NpdGVkRnJhbWUoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMg
fHwgZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9uKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA4
NzdmNDgwNmE3Yzc2YmIyYWZlODQzY2E0OGNjNmYyMTViMmFmZDRiLi41ZWEwOWE1MDZmZTZlNTQ4
YzFlOTdjNWM0MWM0NDAxZDI2NDg1YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXcKICAgICAgICAgaWYgKG5lZWRzSW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkpIHsKICAgICAgICAg
ICAgIC8vIFVzdWFsbHkgdGhlIGV2ZW50IHJlZ2lvbiBnZXRzIHVwZGF0ZWQgYXMgYSByZXN1bHQg
b2YgcGFpbnQgaW52YWxpZGF0aW9uLiBIZXJlIHdlIG5lZWQgdG8gcmVxdWVzdCBhbiB1cGRhdGUg
ZXhwbGljaXRseS4KICAgICAgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGVuY2xvc2luZ0xheWVy
KCkpCi0gICAgICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbigpOworICAg
ICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2
ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uOjpTdHlsZSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAobV9wYXJlbnQgJiYgKG5ld1N0eWxlLm91dGxpbmVTaXplKCkgPCBtX3N0eWxlLm91dGxp
bmVTaXplKCkgfHwgc2hvdWxkUmVwYWludEZvclN0eWxlRGlmZmVyZW5jZShkaWZmKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyMWY1MmI5N2Q3ZmNlNDY3
YTc0Mjg2ZDc1YzhkMTZiZTcyNzI5NTRjLi40MjQ0YTViNDkwYWYxNTFjZjdiNTQ4ZjZjNTE0ZTBj
OGRhMzRkNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE5IEFkb2JlLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgg
TmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCkBAIC00MjA0LDExICs0MjA0LDE1
IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpz
Y3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWlu
dFJvb3QsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSBwYWludFBvbGljeSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3Qg
TGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQsIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWlu
dEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIE9wdGlvblNldDxQYWlu
dExheWVyRmxhZz4gcGFpbnRGbGFncywgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBwYWludFBv
bGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAgICAgT3Zl
cmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKICAgICBMYXllclBhaW50
aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VSZWN0KSwg
cGFpbnRCZWhhdmlvciwgc3VicGl4ZWxPZmZzZXQsIHN1YnRyZWVQYWludFJvb3QsICZvdmVybGFw
VGVzdFJlcXVlc3RzLCBwYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpB
Y2Nlc3NpYmxlT3JpZ2luT25seSk7CisgICAgaWYgKGV2ZW50UmVnaW9uQ29udGV4dCkgeworICAg
ICAgICBwYWludGluZ0luZm8uZXZlbnRSZWdpb25Db250ZXh0ID0gZXZlbnRSZWdpb25Db250ZXh0
OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllckNvbGxlY3Rp
bmdFdmVudFJlZ2lvbik7CisgICAgfQogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzKTsKIAogICAgIGZvciAoYXV0byYgd2lkZ2V0IDogb3ZlcmxhcFRlc3RS
ZXF1ZXN0cy5rZXlzKCkpCkBAIC03MDAyLDEyICs3MDA2LDEyIEBAIGJvb2wgUmVuZGVyTGF5ZXI6
OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigpCiti
b29sIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oRXZlbnRSZWdpb25JbnZhbGlk
YXRpb25SZWFzb24gcmVhc29uKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0
byogY29tcG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50
KCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRhaW5zRXZlbnRSZWdpb24gPSBbJl0gewog
ICAgICAgICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFwIHRlc3RpbmcuCkBAIC03MDE5LDEwICs3
MDIzLDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYgKCFtYWludGFpbnNFdmVudFJlZ2lv
bigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNvbiAhPSBFdmVudFJlZ2lvbkludmFs
aWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZEZyYW1lICYmICFtYWludGFpbnNFdmVudFJlZ2lv
bigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb21wb3NpdGluZ0xheWVyLT5zZXRO
ZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOworCisgICAgaWYgKHJlYXNvbiA9
PSBFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZEZyYW1lKSB7Cisg
ICAgICAgIGF1dG8mIHZpZXcgPSByZW5kZXJlcigpLnZpZXcoKTsKKyAgICAgICAgdmlldy5zZXRO
ZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lKCk7CisgICAgICAgIGlm
IChyZW5kZXJlcigpLnNldHRpbmdzKCkudmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMoKSAmIE5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uKQorICAgICAgICAgICAgdmlldy5zZXROZWVkc1JlcGFpbnRI
YWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKTsKKyAg
ICAgICAgdmlldy5jb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVhc29u
KTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAppbmRleCBkMTEzOTNlMDdkZWJhYWNiODViYTMxMjQ5MmZjYjA0ZGNkZTU3
ZmMxLi5lZWFiOWUyOGI4YjIyNzdkYjhkNGIxZjM5NDFjOTNhNTcyMDBiOGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjk1LDcgKzY5NSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2UgZXZlbnRz
IGJ5IHdhbGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50IGZyb20g
ZnJvbnQgdG8gYmFjay4KICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExh
eW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0ID0g
TGF5b3V0U2l6ZSgpLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gPSBQYWludEJlaGF2aW9yOjpO
b3JtYWwsCi0gICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIs
IE9wdGlvblNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pOworICAgICAgICBSZW5k
ZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFpbnRMYXll
ckZsYWc+ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CiAg
ICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwog
ICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9sbGJhcnMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgT3B0aW9uU2V0
PFBhaW50QmVoYXZpb3I+LCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRy
KTsKQEAgLTkyNCw3ICs5MjQsMTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OwogCi0gICAgdm9p
ZCBpbnZhbGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICAvLyBJbnZhbGlkYXRpb24gY2FuIGZhaWwg
aWYgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIChlLmcuIG5lc3RlZCBp
ZnJhbWUpCisgICAgLy8gb3IgdGhlIGxheWVyIGRvZXMgbm90IG1haW50YWluIGFuIGV2ZW50IHJl
Z2lvbi4KKyAgICBlbnVtIGNsYXNzIEV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uIHsgUGFp
bnQsIFN0eWxlLCBOb25Db21wb3NpdGVkRnJhbWUgfTsKKyAgICBib29sIGludmFsaWRhdGVFdmVu
dFJlZ2lvbihFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbik7CiAKIHByaXZhdGU6CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXgg
MDgxZDRjNzY0MDNhOGViYmUwMDc5ZGEyMTI1M2NhMmZlMGJhY2JkMi4uNDAyMmM1YmI5MDlmYzI1
MWFkZTIwNjQ5OTAyNWIxYmE3NDVjNjA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MTgsMTEgKzE2MTgsMTIgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkKICAgICBpZiAocGFpbnRzSW50
b0NvbXBvc2l0ZWRBbmNlc3RvcigpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIG5lZWRz
RXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUgPSByZW5kZXJlcigpLnZpZXco
KS5uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lKCk7CiAgICAgYm9v
bCBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBoYXNUb3VjaEFjdGlvbkVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLm1h
eUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKTsKICNlbmRpZgotICAgIGlmICgh
aGFzVG91Y2hBY3Rpb25FbGVtZW50cykgeworICAgIGlmICghaGFzVG91Y2hBY3Rpb25FbGVtZW50
cyAmJiAhbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSkgewogICAg
ICAgICBpZiAobV9vd25pbmdMYXllci5pc1JlbmRlclZpZXdMYXllcigpKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNjY2LDYgKzE2NjcsOSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlRXZlbnRSZWdpb24oKQogCiAgICAgaWYgKG1fc2Nyb2xsZWRDb250ZW50c0xheWVyKQog
ICAgICAgICB1cGRhdGVFdmVudFJlZ2lvbkZvckxheWVyKCptX3Njcm9sbGVkQ29udGVudHNMYXll
cik7CisKKyAgICBpZiAobmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFt
ZSkKKyAgICAgICAgcmVuZGVyZXIoKS52aWV3KCkuc2V0TmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZv
ck5vbkNvbXBvc2l0ZWRGcmFtZShmYWxzZSk7CiB9CiAjZW5kaWYKIApAQCAtMjc4MSw3ICsyNzg1
LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXkoR3Jh
cGhpY3NMYXllcjo6U2hvdWxkQ2xpcFRvTGF5ZXIKICAgICBpZiAoIW1fb3duaW5nTGF5ZXIuaXNS
ZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgbV9vd25pbmdMYXllci5zZXROZWVkc0NvbXBvc2l0
aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOwogCi0gICAgbV9vd25pbmdMYXllci5pbnZhbGlkYXRl
RXZlbnRSZWdpb24oKTsKKyAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVFdmVudFJlZ2lvbihS
ZW5kZXJMYXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246OlBhaW50KTsKIAogICAg
IGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpOwogICAgIGlm
IChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVyICYmIGZyYW1lVmlldy5pc1RyYWNraW5nUmVw
YWludHMoKSkKQEAgLTI4MjEsNyArMjgyNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpz
ZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiAg
ICAgaWYgKCFtX293bmluZ0xheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAgIG1fb3du
aW5nTGF5ZXIuc2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAotICAg
IG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAgbV9vd25pbmdMYXll
ci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxpZGF0
aW9uUmVhc29uOjpQYWludCk7CiAKICAgICBGbG9hdFJlY3QgcGl4ZWxTbmFwcGVkUmVjdEZvclBh
aW50aW5nID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhyLCBkZXZpY2VTY2FsZUZhY3RvcigpKTsK
ICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
aW5kZXggM2EwMzhjZThhM2EyZTg3ODAxMTNiNGRlMGMxNjdlNDEwZDE3YTI3My4uNzg3MzA1NDgy
NmYxODEwMzEwYTI0ZDZlZmMwOGM5YjhmZjg4ZjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTg1OCw2ICs4NTgsMTEg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENv
bXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCZwYWdlKCkpOwogCisgICAgaWYgKG1fcmVuZGVyVmlldy5u
ZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5
c09ubHkoKSkgeworICAgICAgICBtX3JlbmRlclZpZXcucmVwYWludFJvb3RDb250ZW50cygpOwor
ICAgICAgICBtX3JlbmRlclZpZXcuc2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdM
YXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGZhbHNlKTsKKyAgICB9CisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMzcyNSw2ICszNzMwLDE0IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQog
CiAjZW5kaWYKIAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpZXdOZWVkc1RvSW52YWxp
ZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpIGNv
bnN0Cit7CisgICAgLy8gRXZlbnQgcmVnaW9ucyBhcmUgb25seSB1cGRhdGVkIG9uIGNvbXBvc2l0
aW5nIGxheWVycy4gTm9uLWNvbXBvc2l0ZWQgbGF5ZXJzIG11c3QKKyAgICAvLyBkZWxlZ2F0ZSB0
byB0aGVpciBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yIHJlcGFpbnQgdG8gdXBkYXRl
IHRoZSBldmVudCByZWdpb24KKyAgICAvLyBmb3IgZWxlbWVudHMgaW5zaWRlIHRoZW0uCisgICAg
cmV0dXJuICFtX3JlbmRlclZpZXcuaXNDb21wb3NpdGVkKCk7Cit9CisKIGJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3Jv
dW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pc1Ry
YW5zcGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaAppbmRleCA5NDZkZmM0YTI2ZTcxODYwYzQ0ZDI5YzhjODcwZGM4YzJiMjVi
MjIzLi43Y2U2MzhjOTQ1ZmIzMTRlMzZiOTM5Njk2ZDcwNTllMDY5NWIzOWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0zNTgs
NiArMzU4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCB2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3Jv
dW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IgPSBudWxscHRyKSBjb25zdDsKIAorICAgIGJvb2wg
dmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5
ZXJGb3JSZXBhaW50KCkgY29uc3Q7CisKICAgICBib29sIGhhc05vbk1haW5MYXllcnNXaXRoVGls
ZWRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcnNXaXRoVGlsZWRCYWNraW5nQ291bnQ7
IH0KIAogICAgIE9wdGlvblNldDxDb21wb3NpdGluZ1JlYXNvbj4gcmVhc29uc0ZvckNvbXBvc2l0
aW5nKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDBjYTJkYTA5Mjc0ZjYyNmJhOTY2ZjYzNGVlYTdm
NDQ5NTY0YzY4NjIuLjVlMzZkMWE3NjI4OWExZGY3YjBkMmE0M2YyNTY1NzQyODUzYTM2ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCkBAIC0xMDAs
NyArMTAwLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnN0eWxlQ2hhbmdlZCgpCiAgICAgdXBk
YXRlU2Nyb2xsYmFyUGFydHMoKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lk
Z2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewog
ICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVw
ZGF0ZVNjcm9sbGJhclBhcnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmgKaW5kZXggZWEzNThkZmRiYmM1NTUwYzIzODU1ZmE5Zjk3ZWU3YzYzMmYzNWNjMC4u
YmExNzIzNWIxN2M0YmY1NTUxM2I0OGFiMTRhNDFmYWNjNzMwOTdmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ks
IEV2ZW50UmVnaW9uQ29udGV4dCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRIb3ZlcmVkUGFy
dChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9s
bGJhclBhcnQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5k
ZXggOTE0ZWJiYzdkZDNlODI1YWQ1YWQxNDEwMGY1NjQxZGViYzZiODdiMi4uZjA4M2I1MmRjMzAy
ZjZjZGY2ZjUyMzgxMzI0Yjc4MDhiN2EzNTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCkBAIC02OCw2ICs2OCwxMiBAQCBwdWJsaWM6CiAKICAgICBGcmFtZVZpZXcmIGZy
YW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKKyAgICBib29sIG5lZWRz
UmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25s
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXll
clVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5OyB9OworICAgIHZvaWQgc2V0TmVlZHNSZXBhaW50
SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KGJvb2wg
dmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVw
ZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5ID0gdmFsdWU7IH0KKworICAgIGJvb2wgbmVlZHNFdmVu
dFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVl
ZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZTsgfQorICAgIHZvaWQgc2V0
TmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZShib29sIHZhbHVlID0g
dHJ1ZSkgeyBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUgPSB2
YWx1ZTsgfQorCiAgICAgT3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVSZWN0SW5D
b250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IHJlcGFpbnRSb290Q29udGVudHMoKTsKICAgICB2b2lkIHJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNv
bnN0IExheW91dFJlY3QmKSBjb25zdDsKQEAgLTI1NSw2ICsyNjEsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNTb2Z0d2FyZUZpbHRlcnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VzRmly
c3RMaW5lUnVsZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VzRmlyc3RMZXR0ZXJSdWxlcyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX25lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5
ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSB7IGZhbHNlIH07CisgICAgYm9vbCBtX25lZWRz
RXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUgeyBmYWxzZSB9OwogCiAgICAg
SGFzaE1hcDxSZW5kZXJFbGVtZW50KiwgVmVjdG9yPENhY2hlZEltYWdlKj4+IG1fcmVuZGVyZXJz
V2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uOwogICAgIEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+IG1f
dmlzaWJsZUluVmlld3BvcnRSZW5kZXJlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCmluZGV4IDNmNmYzM2I3NTJiNWI4NjM3OTdjNGExYTgyMjc4NWQyYzM0ZDg1
YWEuLjczOWU1YjYyYjE4ZWRmYzZkOTlhM2JlZDM2NjIxOGFkMGQ5NWU2M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJp
Z2h0IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA2LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQ2LDggKzI0NiwxOCBAQCB2b2lkIFJlbmRl
cldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50TwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh3aWRn
ZXRQYWludE9mZnNldCk7CiAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9mZnNl
dCk7CiAgICAgfQorCisgICAgaWYgKHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpIHsKKyAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZShjb250ZW50UGFpbnRPZmZzZXQpOworICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25D
b250ZXh0LT5wdXNoVHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgfQorCiAgICAgLy8gRklYTUU6
IFJlbW92ZSByZXBhaW50cmVjdCBlbmNsb3NpbmcvaW50ZWdyYWwgc25hcHBpbmcgd2hlbiBSZW5k
ZXJXaWRnZXQgYmVjb21lcyBkZXZpY2UgcGl4ZWwgc25hcHBlZC4KLSAgICBtX3dpZGdldC0+cGFp
bnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgcGFpbnRJ
bmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0ZvcldpZGdldHMgPyBXaWRnZXQ6OlNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVPcmlnaW5Pbmx5IDogV2lkZ2V0OjpTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pOworICAgIG1fd2lkZ2V0LT5wYWludChw
YWludEluZm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBwYWludEluZm8u
cmVxdWlyZVNlY3VyaXR5T3JpZ2luQWNjZXNzRm9yV2lkZ2V0cyA/IFdpZGdldDo6U2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHkgOiBXaWRnZXQ6OlNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dCk7CisKKyAgICBpZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkKKyAgICAgICAgcGFp
bnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cG9wVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoIXdp
ZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRy
YW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwpAQCAtMjgyLDcgKzI5Miw3IEBAIHZvaWQgUmVu
ZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6Ok91
dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lKSAmJiBo
YXNPdXRsaW5lKCkpCiAgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3Qo
YWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CiAKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQpCisgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpF
dmVudFJlZ2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVy
UmFkaXVzKCkpIHsKQEAgLTMwNCw2ICszMTQsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5yZXN0b3JlKCk7CiAKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6
OkV2ZW50UmVnaW9uKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBQYWludCBhIHBhcnRpYWxs
eSB0cmFuc3BhcmVudCB3YXNoIG92ZXIgc2VsZWN0ZWQgd2lkZ2V0cy4KICAgICBpZiAoaXNTZWxl
Y3RlZCgpICYmICFkb2N1bWVudCgpLnByaW50aW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IHNl
bGVjdGlvblJlY3QoKSBpcyBpbiBhYnNvbHV0ZSwgbm90IHBhaW50aW5nIGNvb3JkaW5hdGVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBiNjA1YTI4OTEzYjM4ZmVlY2M0NDMwMDI5NjNjZDU5YjNmNmI3YmI4Li5jN2ZiYWVjYTIzNGRj
MWMxODlmZWE2OTYwZWY5NTZlODFhOGJmNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgUGx1
Z2luVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAg
dmlld0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRn
ZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lk
Z2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewog
ICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQt
PmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAppbmRleCA4NGQ0MjY0Y2UwZDA2ODg2YzM5OWM4NTY0OGQyNWE5Y2ExZWI4MTY2Li4wM2E5MWJj
YjlhODAzNmE1MmY5YTVjYjBjMjU3ZWVkYTU3NTY1OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIFdlYkNvcmU6OldpZGdldAogICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50KFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6
OldpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgV2ViQ29yZTo6RXZlbnRSZWdpb25D
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI1YjYwYTgwOTkxZDYwNzEwYjg3
MDYzMDI0MDIxZDY1MDkwNjMyZGEuLmRlZTc2Y2QxOGQ3MzBlMDYyZTJiOGNkNTI4MzQxMTRlOGUw
NmZjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5o
CkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNl
dEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHNob3coKSBvdmVycmlkZTsKICAg
ICAgICAgdm9pZCBoaWRlKCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25D
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgY2xpcFJlY3RDaGFuZ2VkKCkgb3ZlcnJp
ZGU7CiAKICAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBieSBwbHVnaW5zIG9uIGFsbCBw
bGF0Zm9ybXMgdG8gb2J0YWluIGEgY2xpcCByZWN0IHRoYXQgaW5jbHVkZXMgY2xpcHMgc2V0IGJ5
IFdlYkNvcmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3V2luLmNwcAppbmRleCA1MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNh
Li5iNjNiNmE2YjE5ZjEyMWY2MjdkODcwNWM1MDk2OWZiZTFhY2Q5ZjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKQEAgLTUzMCw3
ICs1MzAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBQbHVn
aW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUGx1Z2luVmlldzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBXaWRn
ZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAg
ICAgaWYgKCFtX2lzU3RhcnRlZCkgewogICAgICAgICAvLyBEcmF3IHRoZSAibWlzc2luZyBwbHVn
aW4iIGltYWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggOGRjM2ZlMmY1NjI5ZjQ5MDAzZTJhYjg4YjQ3ZmMyNzAxMzQ3ZjY3
Yi4uMGE2ZGNmOWJiNWQyNTc3ODgyNTI0Y2U3MmQwZjJhNTFlMDdiMDFmZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDIwLTA0LTA4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBTaG91bGQgZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1j
b21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkZCBtb3JlIHRlc3Rz
LgorCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2lu
dGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9yZXNvdXJjZXMvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2lu
dGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUt
aW5zaWRlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1u
ZXN0ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTAzLTI1ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTaG91bGQgc2hvdyBpbnB1dCB2aWV3
IHdoZW4gYmVjYW1lIGZpcnN0IHJlc3BvbmRlciBpZiBrZXlib2FyZCB3YXMgc2hvd2luZyB3aGVu
IHRoZSB2aWV3IHdhcyByZXNpZ25lZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2
ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdm
NzM0MzQ1MDlkZDcwNDJiODU3ODBkNTE2NGMzYzk4NDZmYTM1NzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9u
LW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCisoR3Jh
cGhpY3NMYXllcgorICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCisgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQg
MSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikKKyAgICAgIChldmVudCByZWdpb24K
KyAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9ODAwIGhlaWdodD02MDApCisgICAgICAgICh0b3Vj
aC1hY3Rpb24KKyAgICAgICAgICAobm9uZSAgICAgICAgICAKKyAgICAgICAgICAgIChyZWN0ICgx
OCwxOCkgd2lkdGg9MTAyIGhlaWdodD0xMDIpCisgICAgICAgICAgKQorICAgICAgICApCisgICAg
ICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVu
dHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9u
LW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1Yzg5NDU2ZmYyOWVkY2IyMzZl
MTZmYTQ3OTE5YmYyY2UyODQ3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2lu
dGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFt
ZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2FkPSJy
dW5UZXN0KCkiPjwvaWZyYW1lPgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIHRlc3RGcmFtZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iikuc3R5
bGUudG91Y2hBY3Rpb24gPSAibm9uZSI7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVu
dCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfRVZFTlRfUkVHSU9OIHwgaW50ZXJuYWxz
LkxBWUVSX1RSRUVfSU5DTFVERVNfUk9PVF9MQVlFUl9QUk9QRVJUSUVTKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1u
b25lLWluc2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTc4MzA4YmMxN2MwNjI1YjJiODMw
ZDc4ZDc1MDVjYjI1Y2EyYjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRl
cmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRt
bApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJh
bWUgc3JjZG9jPSI8ZGl2IHN0eWxlPSd0b3VjaC1hY3Rpb246IG5vbmU7IHdpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsgYm9yZGVyOjFweCBzb2xpZCBibGFjayc+PC9kaXY+IiBvbmxvYWQ9Indp
bmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5kdW1wUmVnaW9uKCkiPjwvaWZyYW1lPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3Mv
dG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZjczNDM0NTA5ZGQ3MDQyYjg1NzgwZDUxNjRjM2M5ODQ2ZmEz
NTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBA
QAorCisoR3JhcGhpY3NMYXllcgorICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAu
MDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91
bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3
c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikKKyAgICAgIChldmVu
dCByZWdpb24KKyAgICAgICAgKHJlY3QgKDAsMCkgd2lkdGg9ODAwIGhlaWdodD02MDApCisgICAg
ICAgICh0b3VjaC1hY3Rpb24KKyAgICAgICAgICAobm9uZSAgICAgICAgICAKKyAgICAgICAgICAg
IChyZWN0ICgxOCwxOCkgd2lkdGg9MTAyIGhlaWdodD0xMDIpCisgICAgICAgICAgKQorICAgICAg
ICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bv
aW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbCBiL0xh
eW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYjc0ZWVjMjcwMzg3NzdmZjdkMjdhNDk1OTM3ZjliNTJiNGEy
YjUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91
Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjZG9j
PSI8ZGl2IHN0eWxlPSd0b3VjaC1hY3Rpb246IG5vbmU7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAx
MDBweDsgYm9yZGVyOjFweCBzb2xpZCBibGFjayc+PC9kaXY+IiBvbmxvYWQ9InJ1blRlc3QoKSI+
PC9pZnJhbWU+Cis8cHJlIGlkPSJyZXN1bHRzIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gaW50ZXJuYWxz
LmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNf
RVZFTlRfUkVHSU9OIHwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUk9PVF9MQVlFUl9Q
Uk9QRVJUSUVTKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRz
L2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzMzM2FmOGZkZTllYjNhZDlhZWNhOTY0OTUzZmJlNWQ1Nzg0ZTUwMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBA
CisKKyhHcmFwaGljc0xheWVyCisgIChhbmNob3IgMC4wMCAwLjAwKQorICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3Vu
ZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgKGRyYXdz
Q29udGVudCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQorICAgICAgKGV2ZW50
IHJlZ2lvbgorICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD04MDAgaGVpZ2h0PTYwMCkKKyAgICAg
ICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgIChub25lICAgICAgICAgIAorICAgICAgICAgICAg
KHJlY3QgKDI4LDI4KSB3aWR0aD0xMDIgaGVpZ2h0PTEwMikKKyAgICAgICAgICApCisgICAgICAg
ICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9p
bnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1uZXN0ZWQtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM1MWYyODcwMmNlMGQ4MzdiOTg5Yjli
OTIxZjY2OWVmMjg3MDgxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBp
ZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZy
YW1lLmh0bWwiPjwvaWZyYW1lPgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGR1bXBSZWdpb24o
KQoreworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXN1bHRzLmlubmVyVGV4
dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9U
UkVFX0lOQ0xVREVTX0VWRU5UX1JFR0lPTiB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVT
X1JPT1RfTEFZRVJfUFJPUEVSVElFUyk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395855</attachid>
            <date>2020-04-08 12:47:56 -0700</date>
            <delta_ts>2020-04-08 15:22:30 -0700</delta_ts>
            <desc>[Alt] To Land w/fix guards in RenderLayer::invalidateEventRegion()</desc>
            <filename>ToLand_Alt.patch</filename>
            <type>text/plain</type>
            <size>59008</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAxNTNiMWU5ODlhYWU5YjExZGVkNGNmYzY0MmNmODAyZDZiZWViOTU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDggQXByIDIwMjAgMTI6MTQ6NDUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBTaG91bGQg
ZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkCiBpZnJhbWVz
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEKIDxyZGFyOi8v
cHJvYmxlbS82MTMyMzU1OD4KClNvdXJjZS9XZWJDb3JlOgoKUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgoKRml4IHVwIGV2ZW50IHJlZ2lvbiBjb2RlIHRvIHRyYXZlcnNlIG5vbi1jb21wb3NpdGVk
IGlmcmFtZXMgdGhhdCBoYXZlIGVsZW1lbnRzIHdpdGggYSBub24tYXV0bwp0b3VjaC1hY3Rpb24u
IFRoZSBldmVudCByZWdpb24gaXMgY29tcHV0ZWQgZm9yIGVhY2ggY29tcG9zaXRlZCBsYXllciBk
dXJpbmcgYSBjb21wb3NpdGluZyBsYXllcgp1cGRhdGUgYW5kIHdhcyByZXRyaWN0ZWQgdG8gYmVp
bmcgdXBkYXRlZCBpZiB0aGUgbGF5ZXIncyBhc3NvY2lhdGVkIGRvY3VtZW50IG1heSBoYXZlIGFu
IGVsZW1lbnQKd2l0aCBhIG5vbi1hdXRvIHRvdWNoLWFjdGlvbi4gVG8gbWFrZSB0aGlzIHdvcmsg
Zm9yIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMgSSBmaW5kIGl0cyBlbmNsb3NpbmcKY29tcG9zaXRp
bmcgbGF5ZXIsIHNldCBhIHNwZWNpYWwgYml0IHRoYXQgaXQgbmVlZHMgYW4gZXZlbnQgcmVnaW9u
IHVwZGF0ZSBiZWNhdXNlIG9mIHRoZSBub24tCmNvbXBvc2l0ZWQgY2hpbGQgaWZyYW1lIGFuZCBz
Y2hlZHVsZSBhIGNvbXBvc2l0aW5nIGxheWVyIHVwZGF0ZS4gV2hlbiB0aGUgdXBkYXRlIGhhcHBl
bnMsIGl0CmNoZWNrcyB0byBzZWUgaWYgdGhlIHNwZWNpYWwgYml0IGlzIHNldCBhbmQgaWYgc28g
b3ZlcnJpZGVzIGFueSByZXN0cmljdGlvbnMgdGhhdCB3b3VsZCBoYXZlCnByZXZlbnRlZCB0aGUg
ZXZlbnQgcmVnaW9uIGZyb20gYmVpbmcgdXBkYXRlZC4gVGhlIHBhaW50aW5nIGNvZGUgZm9yIHdp
ZGdldHMgaXMgYWxzbyBmaXhlZCB1cCB0bwpwYXNzIHRocm91Z2ggYW4gRXZlbnRSZWdpb25Db250
ZXh0IHRvIHVwZGF0ZSBkdXJpbmcgRXZlbnRSZWdpb24gcGFpbnRpbmcuCgpUaGlzIHN0cmF0ZWd5
IHdvcmtzIHdlbGwgZm9yIHVwZGF0aW5nIHRoZSBldmVudCByZWdpb24uIEhvd2V2ZXIgZGVidWcg
cGFpbnQgb3ZlcmxheXMgYXJlIG5vdAp1cGRhdGVkIChpLmUuIFJlbmRlckxheWVyQmFja2luZzo6
cGFpbnREZWJ1Z092ZXJsYXlzKCkgaXMgbm90IGNhbGxlZCkgdW50aWwgdGhlIGVtYmVkZGluZyBj
bGllbnQncwp2aWV3IGlzIHJlcGFpbnRlZC4gRm9yIG5vdywgdG8gZml4IHRoaXMgdXAgSSBhZGRl
ZCBhbm90aGVyIGEgaGFjaywgYSBzcGVjaWFsIGJpdCAoUmVuZGVyVmlldzo6bmVlZHNSZXBhaW50
SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KCkpCnRo
YXQgaXMgb25seSBzZXQgaWYgZGVidWcgb3ZlcmxheXMgYXJlIHRvIGJlIHNob3duLCB0byBoYXZl
IHRoZSBjb21wb3NpdG9yIHJlcGFpbnQgdGhlIHZpZXcgYWZ0ZXIKdXBkYXRpbmcgY29tcG9zaXRp
bmcgbGF5ZXJzLgoKVGVzdHM6IHBvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1h
Y3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3Rv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAogICAgICAgcG9pbnRlcmV2ZW50cy9p
b3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRtbAoKKiBkb20vRG9j
dW1lbnQuY3BwOgooV2ViQ29yZTo6RG9jdW1lbnQ6OmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JG
cmFtZSk6IEFkZGVkLiBUcnkgdG8gaW52YWxpZGF0ZSB0aGUgZXZlbnQgcmVnaW9uLgpUaGlzIG1h
eSBmYWlsIGlmIHRoZSBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIGFuIGVuY2xvc2luZyBjb21wb3Np
dGluZyBsYXllciBmb3IgcmVwYWludCAoZS5nLiBuZXN0ZWQKY29tcG9zaXRlZCBpZnJhbWVzIC0g
c2VlIHRlc3QgcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3Rl
ZC1pZnJhbWUuaHRtbCkuIElmCnRoaXMgaGFwcGVucyB0aGVuIHJlY3Vyc2l2ZSBvbiBvdXIgb3du
ZXIgZWxlbWVudCdzIGRvY3VtZW50LiBSZWN1cnNpb24gaXMgdXNlZCBpbnN0ZWFkIG9mIGEgbG9v
cAp0byBmdXR1cmUgcHJvb2YgdGhpcyBjb2RlIGZvciBvdXQtb2YtcHJvY2VzcyAoT09QKSBmcmFt
ZXMsIHdoaWNoIHdpbGwgbGlrZWx5IGludHJvZHVjZSBkb2N1bWVudCBwcm94eSBvYmplY3RzLgoq
IGRvbS9Eb2N1bWVudC5oOgoqIHBhZ2UvRnJhbWUuY3BwOgooV2ViQ29yZTo6RnJhbWU6OmludmFs
aWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQpOiBBZGRlZC4gQ2hlY2sgaWYgb3VyIGRv
Y3VtZW50IGhhcyBhbnkgZWxlbWVudHMgd2l0aAphIG5vbi1hdXRvIHRvdWNoLWFjdGlvbi4gSWYg
aXQgZG9lcyB0aGVuIGFzayB0aGUgY29tcG9zaXRvciBpZiB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0
aW5nIGxheWVyIGZvcgpyZXBhaW50J3MgZXZlbnQgcmVnaW9uIG11c3QgYmUgaW52YWxpZGF0ZWQg
LSBpdCB3aWxsIG9ubHkgcmVwbHkgdHJ1ZSBpZiB0aGlzIGlzIGEgbm9uLWNvbXBvc2l0ZWQgaWZy
YW1lLgpJZiBpdCBkb2VzIHRoZW4gZm9yd2FyZCB0aGlzIGludmFsaWRhdGlvbiByZXF1ZXN0IHRv
IHRoZSBkb2N1bWVudC4gVGhlIHJlYXNvbiBJIGRlbGVnYXRlIHRvIHRoZSBkb2N1bWVudAppbnN0
ZWFkIG9mIGhhbmRsaW5nIHRoZSBsb2dpYyBoZXJlIGlzIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNv
ZGUgZm9yIE9PUCBpZnJhbWVzLgoqIHBhZ2UvRnJhbWUuaDoKKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CihXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZExheW91dCk6IENhbGwgRnJhbWU6OmludmFsaWRhdGVD
b250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKS4gQWxzbyB3aGlsZQpJIGFtIGhlcmUgdGFrZSBv
dXQgYSByZWYgb24gdGhlIGRvY3VtZW50IHRvIGVuc3VyZSBpdCBsaXZlcyB0aHJvdWdoIHRoZSBl
bmQgb2YgdGhpcyBmdW5jdGlvbiwgaW5jbHVkaW5nCnRocm91Z2ggdGhlIGFjY2Vzc2liaWxpdHkn
cyBwb3N0Tm90aWZpY2F0aW9uKCkgY29kZSB0aGF0IGNhbGxzIG91dCB0byB0aGUgZW1iZWRkaW5n
IGNsaWVudC4KCihXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgoqIHBhZ2UvRnJh
bWVWaWV3Lmg6CiogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CihXZWJDb3JlOjpTY3JvbGxWaWV3
OjpwYWludCk6CiogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgoqIHBsYXRmb3JtL1Njcm9sbGJhci5j
cHA6CihXZWJDb3JlOjpTY3JvbGxiYXI6OnBhaW50KToKKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoK
KiBwbGF0Zm9ybS9XaWRnZXQuY3BwOgooV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CiogcGxhdGZv
cm0vV2lkZ2V0Lmg6CiogcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHA6CihXZWJDb3JlOjpXaWRn
ZXQ6OnBhaW50KToKKiBwbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tOgooV2ViQ29yZTo6V2lkZ2V0
OjpwYWludCk6CiogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKFdlYkNvcmU6OldpZGdldDo6
cGFpbnQpOgoqIHBsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwOgooV2ViQ29yZTo6V2lkZ2V0Ojpw
YWludCk6CiogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpwYWludE9iamVjdCk6ClBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2guCgoqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxl
V2lsbENoYW5nZSk6IFVwZGF0ZSBjb2RlIG5vdyB0aGF0IFJlbmRlTGF5ZXI6OmludmFsaWRhdGVF
dmVudFJlZ2lvbigpCnRha2VzIGEgcmVhc29uLgoqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CihXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOiBQYXNzIHRoZSBFdmVudFJlZ2lvbkNvbnRl
eHQgdGhyb3VnaC4gSWYgYXJlIHBhc3NlZCBvbmUgdGhlbiB1cGRhdGUKcGFpbnQgZmxhZ3MgdG8g
Y29sbGVjdCBldmVudCByZWdpb24uCihXZWJDb3JlOjpSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2
ZW50UmVnaW9uKTogQ2hhbmdlZCByZXR1cm4gdmFsdWUgZnJvbSB2b2lkIHRvIGJvb2wgc28gYXMg
dG8gaW5kaWNhdGUKdG8gdGhlIGNhbGxlciB3aGV0aGVyIHRoZSBldmVudCByZWdpb24gd2FzIGFj
dHVhbGx5IGludmFsaWRhdGVkLiBBbHNvIG1hZGUgaXQgdGFrZSBhbiBhcmd1bWVudCBhcwp0byB0
aGUgcmVhc29uIGZvciB0aGUgaW52YWxpZGF0aW9uLiBJZiBpbnZhbGlkYXRpb24gaXMgZHVlIHRv
IGEgbm9uLWNvbXBvc2l0ZWQgaWZyYW1lIHRoZW4gc2V0cyBzb21lCnN0YXRlIGFuZCBzY2hlZHVs
ZSBhIGNvbXBvc2l0aW5nIGxheWVyIHVwZGF0ZS4KCiogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHA6CihXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9u
KToKKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheSk6
CihXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJl
Y3QpOgoqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgooV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6ClBhc3MgYW4gRXZl
bnRSZWdpb25Db250ZXh0IHRocm91Z2gKCihXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xh
eWVyRm9yUmVwYWludCBjb25zdCk6IEFkZGVkLgoKKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmg6CiogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHA6CihXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXI6OnBhaW50KToKKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6CiogcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaDoKUGFzcyBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdGhyb3VnaC4K
CiogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBh
aW50Q29udGVudHMpOiBUcmFuc2xhdGUgdGhlIGV2ZW50IHJlZ2lvbiBieSBvdXIgY29udGVudCBw
YWludCBvZmZzZXQuCihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KTogVXBkYXRlIGZvciBF
dmVudFJlZ29uLgoKU291cmNlL1dlYktpdDoKClJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KClBh
c3MgRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2guIEl0IGlzIHVudXNlZCBhcyBpdCdzIG5vdCBh
cHBsaWNhYmxlIGZvciBwbHVnaW4gcGFpbnRpbmcuCgoqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKFdlYktpdDo6UGx1Z2luVmlldzo6cGFpbnQpOgoqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CgpTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbjoKClJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgoKKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKiBQbHVnaW5zL1BsdWdp
blZpZXdXaW4uY3BwOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6cGFpbnQpOgoKTGF5b3V0VGVzdHM6
CgpSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCgpBZGQgbW9yZSB0ZXN0cy4KCiogcG9pbnRlcmV2
ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKiBwb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gt
YWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sOiBBZGRlZC4KKiBwb2ludGVyZXZlbnRzL2lv
cy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sOiBBZGRlZC4K
KiBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5z
aWRlLWlmcmFtZS5odG1sOiBBZGRlZC4KKiBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24t
bm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIHBvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWw6IEFk
ZGVkLgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAxOCArKysrCiAuLi51Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQg
fCAgMjIgKysrKwogLi4ubWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1s
IHwgIDIyICsrKysKIC4uLi90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwgICAg
ICB8ICAgNiArKwogLi4udWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0
IHwgIDIyICsrKysKIC4uLi9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1s
ICB8ICAyMSArKysrCiAuLi5pb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50
eHQgfCAgMjIgKysrKwogLi4ub3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5o
dG1sIHwgIDIyICsrKysKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICB8IDEwMiArKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgICAgICAgICAgICAgICB8ICAxMyArKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCAgICAgICAgICAgICAgICAgfCAgMTQgKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwICAgICAgICAgICAgIHwgIDE3ICstLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCAgICAgICAgICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmNwcCAgICAgICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCAgICAgICAgICB8ICAgNSArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
LmNwcCAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
aCAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAg
ICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggICAg
ICAgICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3Rr
LmNwcCAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1Mu
bW0gICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5t
bSAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNw
cCAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
ICAgICB8ICAgMyArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
ICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwICAg
ICAgfCAgMjkgKysrLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oICAg
ICAgICB8ICAgNyArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgIHwgIDEwICstCiAuLi4vcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgICAg
ICAgfCAgMTMgKysrCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggfCAgIDIgKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAg
IHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggICAg
fCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggICAgICAgICB8
ICAgOCArKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwg
IDE5ICsrKy0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8
ICAxNCArKysKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwICB8
ICAgMiArLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIHwg
ICAyICstCiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgICAgICAgICAgICAgfCAg
MjYgKysrKysKIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oICB8
ICAgMiArLQogLi4uL3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwICAgICAgICAgICAgIHwg
ICAyICstCiA0MiBmaWxlcyBjaGFuZ2VkLCA0MzQgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJv
Z3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1h
dGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24t
bm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Rv
dWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0
ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3Bv
aW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0
bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggOGRjM2ZlMmY1NjIuLjBhNmRjZjliYjVkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMjAtMDQtMDggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFNob3VsZCBmaW5kIHRvdWNoLWFjdGlvbiBlbGVtZW50cyBpbnNpZGUgbm9uLWNvbXBvc2l0
ZWQgaWZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEwMDQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTMyMzU1OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkIG1vcmUgdGVzdHMuCisKKyAg
ICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUt
aW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVu
dHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rp
b24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVu
dHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
aWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1p
ZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFNob3VsZCBzaG93IGlucHV0IHZpZXcgd2hlbiBi
ZWNhbWUgZmlyc3QgcmVzcG9uZGVyIGlmIGtleWJvYXJkIHdhcyBzaG93aW5nIHdoZW4gdGhlIHZp
ZXcgd2FzIHJlc2lnbmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0
aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjdmNzM0MzQ1MDlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5
ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNo
aWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAg
ICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAg
IChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9u
CisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoMTgsMTgpIHdp
ZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAg
ICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9w
cm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWlu
c2lkZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
OTVjODk0NTZmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRz
L2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCkBA
IC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUg
aWQ9InRlc3RGcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdodDog
MTAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2snPjwvZGl2PiIgb25sb2FkPSJydW5UZXN0KCki
PjwvaWZyYW1lPgorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHRl
c3RGcmFtZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iikuc3R5bGUudG91Y2hB
Y3Rpb24gPSAibm9uZSI7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJlc3Vs
dHMuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCwgaW50ZXJu
YWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfRVZFTlRfUkVHSU9OIHwgaW50ZXJuYWxzLkxBWUVSX1RS
RUVfSU5DTFVERVNfUk9PVF9MQVlFUl9QUk9QRVJUSUVTKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTk3
ODMwOGJjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCkBAIC0wLDAg
KzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBzcmNkb2M9
IjxkaXYgc3R5bGU9J3RvdWNoLWFjdGlvbjogbm9uZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEw
MHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrJz48L2Rpdj4iIG9ubG9hZD0id2luZG93LnBhcmVu
dCAmJiB3aW5kb3cucGFyZW50LmR1bXBSZWdpb24oKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rp
b24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ZjczNDM0NTA5ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1u
b25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdyYXBo
aWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkK
KyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAg
NjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEp
CisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9uCisg
ICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91Y2gt
YWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoMTgs
MTgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAg
KQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRz
L2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNiNzRlZWMyNzAzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5v
bmUtaW5zaWRlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjZG9jPSI8ZGl2IHN0eWxl
PSd0b3VjaC1hY3Rpb246IG5vbmU7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYm9yZGVy
OjFweCBzb2xpZCBibGFjayc+PC9kaXY+IiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8
cHJlIGlkPSJyZXN1bHRzIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFz
VGV4dChkb2N1bWVudCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfRVZFTlRfUkVHSU9O
IHwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUk9PVF9MQVlFUl9QUk9QRVJUSUVTKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlm
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1h
Y3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjczMzNhZjhmZGU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRl
LW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNz
TGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAg
KGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAw
LjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEpCisg
ICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoZXZlbnQgcmVnaW9uCisgICAg
ICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWlnaHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0
aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAgCisgICAgICAgICAgICAocmVjdCAoMjgsMjgp
IHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQor
ICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTM1MWYyODcw
MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3Vj
aC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIg
c3JjPSJyZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sIj48L2lm
cmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBkdW1wUmVnaW9uKCkKK3sKKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgcmVzdWx0cy5pbm5lclRleHQgPSBpbnRlcm5hbHMu
bGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19F
VkVOVF9SRUdJT04gfCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19ST09UX0xBWUVSX1BS
T1BFUlRJRVMpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDQ1NTQ5NzQzNTAzLi5hOTY3YzNlYzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
NSBAQAorMjAyMC0wNC0wOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgU2hvdWxkIGZpbmQgdG91Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24tY29tcG9z
aXRlZCBpZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTAwNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzIzNTU4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBGaXggdXAgZXZlbnQgcmVnaW9u
IGNvZGUgdG8gdHJhdmVyc2Ugbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcyB0aGF0IGhhdmUgZWxlbWVu
dHMgd2l0aCBhIG5vbi1hdXRvCisgICAgICAgIHRvdWNoLWFjdGlvbi4gVGhlIGV2ZW50IHJlZ2lv
biBpcyBjb21wdXRlZCBmb3IgZWFjaCBjb21wb3NpdGVkIGxheWVyIGR1cmluZyBhIGNvbXBvc2l0
aW5nIGxheWVyCisgICAgICAgIHVwZGF0ZSBhbmQgd2FzIHJldHJpY3RlZCB0byBiZWluZyB1cGRh
dGVkIGlmIHRoZSBsYXllcidzIGFzc29jaWF0ZWQgZG9jdW1lbnQgbWF5IGhhdmUgYW4gZWxlbWVu
dAorICAgICAgICB3aXRoIGEgbm9uLWF1dG8gdG91Y2gtYWN0aW9uLiBUbyBtYWtlIHRoaXMgd29y
ayBmb3Igbm9uLWNvbXBvc2l0ZWQgaWZyYW1lcyBJIGZpbmQgaXRzIGVuY2xvc2luZworICAgICAg
ICBjb21wb3NpdGluZyBsYXllciwgc2V0IGEgc3BlY2lhbCBiaXQgdGhhdCBpdCBuZWVkcyBhbiBl
dmVudCByZWdpb24gdXBkYXRlIGJlY2F1c2Ugb2YgdGhlIG5vbi0KKyAgICAgICAgY29tcG9zaXRl
ZCBjaGlsZCBpZnJhbWUgYW5kIHNjaGVkdWxlIGEgY29tcG9zaXRpbmcgbGF5ZXIgdXBkYXRlLiBX
aGVuIHRoZSB1cGRhdGUgaGFwcGVucywgaXQKKyAgICAgICAgY2hlY2tzIHRvIHNlZSBpZiB0aGUg
c3BlY2lhbCBiaXQgaXMgc2V0IGFuZCBpZiBzbyBvdmVycmlkZXMgYW55IHJlc3RyaWN0aW9ucyB0
aGF0IHdvdWxkIGhhdmUKKyAgICAgICAgcHJldmVudGVkIHRoZSBldmVudCByZWdpb24gZnJvbSBi
ZWluZyB1cGRhdGVkLiBUaGUgcGFpbnRpbmcgY29kZSBmb3Igd2lkZ2V0cyBpcyBhbHNvIGZpeGVk
IHVwIHRvCisgICAgICAgIHBhc3MgdGhyb3VnaCBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdG8gdXBk
YXRlIGR1cmluZyBFdmVudFJlZ2lvbiBwYWludGluZy4KKworICAgICAgICBUaGlzIHN0cmF0ZWd5
IHdvcmtzIHdlbGwgZm9yIHVwZGF0aW5nIHRoZSBldmVudCByZWdpb24uIEhvd2V2ZXIgZGVidWcg
cGFpbnQgb3ZlcmxheXMgYXJlIG5vdAorICAgICAgICB1cGRhdGVkIChpLmUuIFJlbmRlckxheWVy
QmFja2luZzo6cGFpbnREZWJ1Z092ZXJsYXlzKCkgaXMgbm90IGNhbGxlZCkgdW50aWwgdGhlIGVt
YmVkZGluZyBjbGllbnQncworICAgICAgICB2aWV3IGlzIHJlcGFpbnRlZC4gRm9yIG5vdywgdG8g
Zml4IHRoaXMgdXAgSSBhZGRlZCBhbm90aGVyIGEgaGFjaywgYSBzcGVjaWFsIGJpdCAoUmVuZGVy
Vmlldzo6bmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVn
T3ZlcmxheXNPbmx5KCkpCisgICAgICAgIHRoYXQgaXMgb25seSBzZXQgaWYgZGVidWcgb3Zlcmxh
eXMgYXJlIHRvIGJlIHNob3duLCB0byBoYXZlIHRoZSBjb21wb3NpdG9yIHJlcGFpbnQgdGhlIHZp
ZXcgYWZ0ZXIKKyAgICAgICAgdXBkYXRpbmcgY29tcG9zaXRpbmcgbGF5ZXJzLgorCisgICAgICAg
IFRlc3RzOiBwb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUt
aW5zaWRlLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyZXZlbnRzL2lvcy90b3Vj
aC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50ZXJl
dmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW52YWxpZGF0ZUV2ZW50UmVnaW9uc0ZvckZyYW1lKTogQWRkZWQuIFRyeSB0byBpbnZhbGlkYXRl
IHRoZSBldmVudCByZWdpb24uCisgICAgICAgIFRoaXMgbWF5IGZhaWwgaWYgdGhlIGRvY3VtZW50
IGRvZXMgbm90IGhhdmUgYW4gZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIGZvciByZXBhaW50
IChlLmcuIG5lc3RlZAorICAgICAgICBjb21wb3NpdGVkIGlmcmFtZXMgLSBzZWUgdGVzdCBwb2lu
dGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1s
KS4gSWYKKyAgICAgICAgdGhpcyBoYXBwZW5zIHRoZW4gcmVjdXJzaXZlIG9uIG91ciBvd25lciBl
bGVtZW50J3MgZG9jdW1lbnQuIFJlY3Vyc2lvbiBpcyB1c2VkIGluc3RlYWQgb2YgYSBsb29wCisg
ICAgICAgIHRvIGZ1dHVyZSBwcm9vZiB0aGlzIGNvZGUgZm9yIG91dC1vZi1wcm9jZXNzIChPT1Ap
IGZyYW1lcywgd2hpY2ggd2lsbCBsaWtlbHkgaW50cm9kdWNlIGRvY3VtZW50IHByb3h5IG9iamVj
dHMuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJ
Zk5lZWRlZCk6IEFkZGVkLiBDaGVjayBpZiBvdXIgZG9jdW1lbnQgaGFzIGFueSBlbGVtZW50cyB3
aXRoCisgICAgICAgIGEgbm9uLWF1dG8gdG91Y2gtYWN0aW9uLiBJZiBpdCBkb2VzIHRoZW4gYXNr
IHRoZSBjb21wb3NpdG9yIGlmIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yCisg
ICAgICAgIHJlcGFpbnQncyBldmVudCByZWdpb24gbXVzdCBiZSBpbnZhbGlkYXRlZCAtIGl0IHdp
bGwgb25seSByZXBseSB0cnVlIGlmIHRoaXMgaXMgYSBub24tY29tcG9zaXRlZCBpZnJhbWUuCisg
ICAgICAgIElmIGl0IGRvZXMgdGhlbiBmb3J3YXJkIHRoaXMgaW52YWxpZGF0aW9uIHJlcXVlc3Qg
dG8gdGhlIGRvY3VtZW50LiBUaGUgcmVhc29uIEkgZGVsZWdhdGUgdG8gdGhlIGRvY3VtZW50Cisg
ICAgICAgIGluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIGxvZ2ljIGhlcmUgaXMgdG8gZnV0dXJlIHBy
b29mIHRoaXMgY29kZSBmb3IgT09QIGlmcmFtZXMuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6ZGlkTGF5b3V0KTogQ2FsbCBGcmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJ
Zk5lZWRlZCgpLiBBbHNvIHdoaWxlCisgICAgICAgIEkgYW0gaGVyZSB0YWtlIG91dCBhIHJlZiBv
biB0aGUgZG9jdW1lbnQgdG8gZW5zdXJlIGl0IGxpdmVzIHRocm91Z2ggdGhlIGVuZCBvZiB0aGlz
IGZ1bmN0aW9uLCBpbmNsdWRpbmcKKyAgICAgICAgdGhyb3VnaCB0aGUgYWNjZXNzaWJpbGl0eSdz
IHBvc3ROb3RpZmljYXRpb24oKSBjb2RlIHRoYXQgY2FsbHMgb3V0IHRvIHRoZSBlbWJlZGRpbmcg
Y2xpZW50LgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
aWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dp
ZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0Ojpw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRS
ZWdpb25Db250ZXh0IHRocm91Z2guCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2Up
OiBVcGRhdGUgY29kZSBub3cgdGhhdCBSZW5kZUxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24o
KQorICAgICAgICB0YWtlcyBhIHJlYXNvbi4gCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6IFBhc3MgdGhl
IEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLiBJZiBhcmUgcGFzc2VkIG9uZSB0aGVuIHVwZGF0
ZQorICAgICAgICBwYWludCBmbGFncyB0byBjb2xsZWN0IGV2ZW50IHJlZ2lvbi4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24pOiBDaGFuZ2VkIHJl
dHVybiB2YWx1ZSBmcm9tIHZvaWQgdG8gYm9vbCBzbyBhcyB0byBpbmRpY2F0ZQorICAgICAgICB0
byB0aGUgY2FsbGVyIHdoZXRoZXIgdGhlIGV2ZW50IHJlZ2lvbiB3YXMgYWN0dWFsbHkgaW52YWxp
ZGF0ZWQuIEFsc28gbWFkZSBpdCB0YWtlIGFuIGFyZ3VtZW50IGFzCisgICAgICAgIHRvIHRoZSBy
ZWFzb24gZm9yIHRoZSBpbnZhbGlkYXRpb24uIElmIGludmFsaWRhdGlvbiBpcyBkdWUgdG8gYSBu
b24tY29tcG9zaXRlZCBpZnJhbWUgdGhlbiBzZXRzIHNvbWUKKyAgICAgICAgc3RhdGUgYW5kIHNj
aGVkdWxlIGEgY29tcG9zaXRpbmcgbGF5ZXIgdXBkYXRlLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6CisgICAgICAg
IFBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2gKKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9m
RW5jbG9zaW5nQ29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQgY29uc3QpOiBBZGRlZC4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVn
aW9uQ29udGV4dCB0aHJvdWdoLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOiBUcmFu
c2xhdGUgdGhlIGV2ZW50IHJlZ2lvbiBieSBvdXIgY29udGVudCBwYWludCBvZmZzZXQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KTogVXBkYXRlIGZvciBFdmVudFJlZ29u
LgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDNlZjk0NTkwMGJhLi5jYzA1MGQwMWVjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MjM0LDYgKzQyMzQsMTkgQEAgdm9pZCBEb2N1bWVu
dDo6ZWxlbWVudEluQWN0aXZlQ2hhaW5EaWREZXRhY2goRWxlbWVudCYgZWxlbWVudCkKICAgICAg
ICAgbV9hY3RpdmVFbGVtZW50ID0gbV9hY3RpdmVFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiB9
CiAKK3ZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JGcmFtZShIVE1MRnJh
bWVPd25lckVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50
LnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChhdXRvKiBsYXllciA9IHJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpKSB7CisgICAgICAgIGlm
IChsYXllci0+aW52YWxpZGF0ZUV2ZW50UmVnaW9uKFJlbmRlckxheWVyOjpFdmVudFJlZ2lvbklu
dmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZEZyYW1lKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVu
dCgpKQorICAgICAgICBvd25lckVsZW1lbnQtPmRvY3VtZW50KCkuaW52YWxpZGF0ZUV2ZW50UmVn
aW9uc0ZvckZyYW1lKCpvd25lckVsZW1lbnQpOworfQorCiB2b2lkIERvY3VtZW50OjppbnZhbGlk
YXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODM5YWZj
ZDU4YmEuLmIzZTIxMTAzOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTE0MCw2ICsxMTQw
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5U3RyaW5nTW9k
aWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlUmVuZGVyaW5nRGVwZW5kZW50UmVnaW9ucygpOworICAgIHZvaWQgaW52YWxpZGF0ZUV2ZW50
UmVnaW9uc0ZvckZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYpOwogCiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDA1
MWZkYjNlZTVjLi44NjA0OWJkNTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTMwNCw2ICsz
MDQsMjAgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQoUmVmUHRyPERvY3VtZW50PiYmIG5ld0Rv
Y3VtZW50KQogICAgIG1fZG9jdW1lbnRJc0JlaW5nUmVwbGFjZWQgPSBmYWxzZTsKIH0KIAordm9p
ZCBGcmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCgpCit7CisgICAg
aWYgKCFtX3BhZ2UgfHwgIW1fZG9jIHx8ICFtX2RvYy0+cmVuZGVyVmlldygpKQorICAgICAgICBy
ZXR1cm47CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghbV9kb2MtPm1heUhhdmVFbGVtZW50
c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAg
aWYgKCFtX2RvYy0+cmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkudmlld05lZWRzVG9JbnZhbGlk
YXRlRXZlbnRSZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAobV9vd25lckVsZW1lbnQpCisgICAgICAgIG1fb3duZXJF
bGVtZW50LT5kb2N1bWVudCgpLmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JGcmFtZSgqbV9vd25l
ckVsZW1lbnQpOworfQorCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKIHZvaWQgRnJh
bWU6Om9yaWVudGF0aW9uQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMjUyMGUwMzdh
NTQuLmJiZDgyMmUxNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0zMDMsNiArMzAzLDggQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOwogICAgIGJvb2wgbWF5UHJl
d2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0OwogCisgICAgdm9pZCBpbnZhbGlkYXRlQ29udGVudEV2
ZW50UmVnaW9uc0lmTmVlZGVkKCk7CisKIC8vID09PT09PT09CiAKICAgICB2b2lkIHNlbGZPbmx5
UmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYzY4ZjVkMzhjNmUuLjNiY2I2
MGE1ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjYxLDEyICsxMjYxLDE1
IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlv
dXRSb290KQogCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlckxheW91dCgpOwogCisg
ICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZyYW1lKCkuZG9jdW1lbnQoKSk7CisKICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShHVEspCi0gICAgaWYg
KGF1dG8qIGNhY2hlID0gZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUo
KSkKKyAgICBpZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hl
KCkpCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGxheW91dFJvb3QuZ2V0KCksIEFY
T2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUpOwogI2VuZGlmCiAKLSAgICBmcmFtZSgpLmRv
Y3VtZW50KCktPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CisgICAgZnJh
bWUoKS5pbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKCk7CisgICAgZG9jdW1l
bnQtPmludmFsaWRhdGVSZW5kZXJpbmdEZXBlbmRlbnRSZWdpb25zKCk7CiAKICAgICB1cGRhdGVD
YW5CbGl0T25TY3JvbGxSZWN1cnNpdmVseSgpOwogCkBAIC0xMjc0LDEwICsxMjc3LDEwIEBAIHZv
aWQgRnJhbWVWaWV3OjpkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlvdXRSb290
KQogCiAgICAgaGFuZGxlRGVmZXJyZWRTY3JvbGxiYXJzVXBkYXRlQWZ0ZXJEaXJlY3Rpb25DaGFu
Z2UoKTsKIAotICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1
bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKKyAgICBpZiAoZG9jdW1lbnQtPmhhc0xp
c3RlbmVyVHlwZShEb2N1bWVudDo6T1ZFUkZMT1dDSEFOR0VEX0xJU1RFTkVSKSkKICAgICAgICAg
dXBkYXRlT3ZlcmZsb3dTdGF0dXMobGF5b3V0V2lkdGgoKSA8IGNvbnRlbnRzV2lkdGgoKSwgbGF5
b3V0SGVpZ2h0KCkgPCBjb250ZW50c0hlaWdodCgpKTsKIAotICAgIGZyYW1lKCkuZG9jdW1lbnQo
KS0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKKyAgICBkb2N1bWVu
dC0+bWFya2VycygpLmludmFsaWRhdGVSZWN0c0ZvckFsbE1hcmtlcnMoKTsKIH0KIAogYm9vbCBG
cmFtZVZpZXc6OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgp
CkBAIC00MjI1LDcgKzQyMjgsNyBAQCB2b2lkIEZyYW1lVmlldzo6ZGlkUGFpbnRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UgogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2Vj
dXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBTZWN1cml0
eU9yaWdpblBhaW50UG9saWN5IHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9u
Q29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogI2lmbmRlZiBOREVCVUcKICAgICBib29s
IGZpbGxXaXRoV2FybmluZ0NvbG9yOwpAQCAtNDI4OCw4ICs0MjkxLDggQEAgdm9pZCBGcmFtZVZp
ZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QKICAgICB3aGlsZSAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikgJiYgIWRv
d25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKS5maXJzdExpbmVCb3goKSkKICAgICAgICAg
cmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CiAKLSAgICByb290TGF5ZXItPnBhaW50KGNv
bnRleHQsIGRpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVy
LCB7IH0sIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeTo6QW55T3JpZ2luID8gUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6
OkFueU9yaWdpbiA6IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nl
c3NpYmxlT3JpZ2luT25seSk7Ci0gICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJs
YXlTY3JvbGxiYXJzKCkpCisgICAgcm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3Qs
IExheW91dFNpemUoKSwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlciwgeyB9LCBzZWN1cml0eU9y
aWdpblBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA/
IFJlbmRlckxheWVyOjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4gOiBSZW5k
ZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNzaWJsZU9yaWdpbk9ubHks
IGV2ZW50UmVnaW9uQ29udGV4dCk7CisgICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92
ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKICAgICAgICAgcm9vdExh
eWVyLT5wYWludE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQsIGRpcnR5UmVjdCwgbV9wYWludEJl
aGF2aW9yLCByZW5kZXJlcik7CiAKICAgICBkaWRQYWludENvbnRlbnRzKGNvbnRleHQsIGRpcnR5
UmVjdCwgcGFpbnRpbmdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiYjk1Nzg1
Y2M4MS4uMTMzZDkwNTllY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNTcsNiArNTcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBF
bGVtZW50OworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRmxvYXRTaXplOwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CkBAIC0zNTEsNyArMzUyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJl
ZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5k
ZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAg
ICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMmZkMTVmN2IzMDEuLjQ2OTY1MTFkNjFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtMTIzNiwxNCArMTIzNiwx
NCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiAgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwgaWNvbkdDUG9p
bnQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1cml0
eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xp
Y3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KiBldmVudFJl
Z2lvbkNvbnRleHQpCiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpIHsKICAgICAgICAgV2lk
Z2V0OjpwYWludChjb250ZXh0LCByZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhY29udGV4dC5wZXJmb3JtaW5nUGFp
bnRJbnZhbGlkYXRpb24oKSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYg
IWNvbnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkgJiYgIWV2ZW50UmVnaW9uQ29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdp
bGxQYWludCgpOwpAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3IK
ICAgICAgICAgICAgIGNvbnRleHQuY2xpcCh2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9j
dW1lbnRWaXNpYmxlUmVjdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgcGFpbnRDb250ZW50cyhj
b250ZXh0LCBkb2N1bWVudERpcnR5UmVjdCwgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSk7Cisg
ICAgICAgIHBhaW50Q29udGVudHMoY29udGV4dCwgZG9jdW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3ksIGV2ZW50UmVnaW9uQ29udGV4dCk7CiAgICAgfQogCiAjaWYgRU5B
QkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGI2NGFhM2JhMDY2Li43YWQ1MDQ5ZjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaApAQCAtNTcsNiArNTcsNyBAQCBPQkpDX0NMQVNTIFdBS1ZpZXc7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsK
IGNsYXNzIExlZ2FjeVRpbGVDYWNoZTsKIGNsYXNzIFNjcm9sbGJhcjsKQEAgLTM1MCw3ICszNTEs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBh
aW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxi
YXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgV2lkZ2V0OjpTZWN1
cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAgICAgdm9pZCBwYWlu
dFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8g
V2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5
IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4K
QEAgLTM4OCw3ICszODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsVmlldygpOwogCiAgICAg
dmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
biwgRXZlbnRSZWdpb25Db250ZXh0KiA9IG51bGxwdHIpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCmluZGV4IDEyOTNlMmQ3OTMxLi5hNmI1ODA3Mzg5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTY3JvbGxiYXI6OnVw
ZGF0ZVRodW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRlVGh1bWIoKTsKIH0KIAotdm9pZCBTY3Jv
bGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBTY3JvbGxi
YXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRl
eHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpICYmIHRo
ZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAgICBpbnZhbGlkYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGNiOTUwZTIzZjdhLi5lZDM4OTZjOWQy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNp
emUsIGludCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3By
ZXNzZWRQb3MgPSBwOyB9CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9
IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRn
ZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
OjpBbnlPcmlnaW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKaW5k
ZXggZTlmNWQ4MWUwM2EuLmE3ZmUzODBmM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5j
cHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDFj
ZjkzMWMxMjIzLi40ZjMwMmFiYmYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTYw
LDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBF
dmVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xh
c3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMTA5LDcgKzExMCw3IEBA
IHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSB7IEFu
eU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
bik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0
cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZhbGlkYXRlUmVjdChib3VuZHNSZWN0KCkp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggNjkxOWVl
NDJiYTAuLjdjNDVkY2Y3OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvV2lkZ2V0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0
R3RrLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdpZGdldDo6aGlkZSgpCiAgICAgc2V0U2Vs
ZlZpc2libGUoZmFsc2UpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdl
dDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCmluZGV4IDNlMDljMTFiNDYzLi40ZTA3YmQ3NTE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDYsNyArMTQ2
LDcgQEAgTlNWaWV3KiBXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZp
ZXc7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IElu
dFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByLCBTZWN1cml0eU9yaWdpblBhaW50
UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAgIGlmIChwLnBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KaW5kZXggMjY2YjA0MmUwNmYuLjMwNDU4ODhhMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0KQEAgLTE4Niw3ICsxODYsNyBAQCBOU1ZpZXcgKldpZGdl
dDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRn
ZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAs
IGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9u
Q29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IGZmZDg2
YTA0NDAzLi45NjVkZjgzODNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1dpZGdldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdl
dFdpbi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihjb25zdCBD
dXJzb3ImIGN1cnNvcikKICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJzb3Ip
OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2
ZW50UmVnaW9uQ29udGV4dCopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IGVjNmZkOGNmZmU2Li5mMmIyZmQzNjY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMjU1LDggKzEyNTUsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4
dC0+dW5pdGUoYm9yZGVyUmVnaW9uLCBzdHlsZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IE5vIG5lZWQgdG8gY2hlY2sgZGVzY2VuZGFudHMgaWYgd2UgZG9uJ3QgaGF2ZSBvdmVyZmxvdyBh
bmQgZG9uJ3QgY29udGFpbiBmbG9hdHMgYW5kIHRoZSBhcmVhIGlzIGFscmVhZHkgY292ZXJlZC4K
LSAgICAgICAgYm9vbCBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBoYXNWaXN1YWxPdmVyZmxv
dygpIHx8IGNvbnRhaW5zRmxvYXRzKCkgfHwgIXBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQt
PmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3QoYm9yZGVyUmVjdCkpOworICAgICAgICBib29sIG5l
ZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92ZXJmbG93KCkgfHwgY29udGFpbnNG
bG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+Y29udGFpbnMoZW5jbG9z
aW5nSW50UmVjdChib3JkZXJSZWN0KSkgfHwgdmlldygpLm5lZWRzRXZlbnRSZWdpb25VcGRhdGVG
b3JOb25Db21wb3NpdGVkRnJhbWUoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgPSBuZWVkc1RyYXZlcnNlRGVzY2VuZGFudHMgfHwg
ZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0b1RvdWNoQWN0aW9uKCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA4Nzdm
NDgwNmE3Yy4uNWVhMDlhNTA2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxl
V2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ldwog
ICAgICAgICBpZiAobmVlZHNJbnZhbGlkYXRlRXZlbnRSZWdpb24oKSkgewogICAgICAgICAgICAg
Ly8gVXN1YWxseSB0aGUgZXZlbnQgcmVnaW9uIGdldHMgdXBkYXRlZCBhcyBhIHJlc3VsdCBvZiBw
YWludCBpbnZhbGlkYXRpb24uIEhlcmUgd2UgbmVlZCB0byByZXF1ZXN0IGFuIHVwZGF0ZSBleHBs
aWNpdGx5LgogICAgICAgICAgICAgaWYgKGF1dG8qIGxheWVyID0gZW5jbG9zaW5nTGF5ZXIoKSkK
LSAgICAgICAgICAgICAgICBsYXllci0+aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAgICAg
ICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJMYXllcjo6RXZlbnRS
ZWdpb25JbnZhbGlkYXRpb25SZWFzb246OlN0eWxlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChtX3BhcmVudCAmJiAobmV3U3R5bGUub3V0bGluZVNpemUoKSA8IG1fc3R5bGUub3V0bGluZVNp
emUoKSB8fCBzaG91bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJlbmNlKGRpZmYpKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDIxZjUyYjk3ZDdmLi5lMzA0OTkz
YzM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxOSBBZG9iZS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBQb3J0aW9ucyBhcmUgQ29weXJpZ2h0IChDKSAxOTk4IE5ldHNj
YXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgpAQCAtNDIwNCwxMSArNDIwNCwxNSBAQCBi
b29sIFJlbmRlckxheWVyOjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xs
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpOwogfQogCi12b2lkIFJlbmRlckxh
eWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRh
bWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0LCBPcHRpb25TZXQ8UGFp
bnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290
LCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3MsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgcGFpbnRQb2xpY3kpCit2b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91
dFNpemUmIHN1YnBpeGVsT2Zmc2V0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhh
dmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBPcHRpb25TZXQ8UGFpbnRMYXll
ckZsYWc+IHBhaW50RmxhZ3MsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgcGFpbnRQb2xpY3ks
IEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25Db250ZXh0KQogewogICAgIE92ZXJsYXBU
ZXN0UmVxdWVzdE1hcCBvdmVybGFwVGVzdFJlcXVlc3RzOwogCiAgICAgTGF5ZXJQYWludGluZ0lu
Zm8gcGFpbnRpbmdJbmZvKHRoaXMsIGVuY2xvc2luZ0ludFJlY3QoZGFtYWdlUmVjdCksIHBhaW50
QmVoYXZpb3IsIHN1YnBpeGVsT2Zmc2V0LCBzdWJ0cmVlUGFpbnRSb290LCAmb3ZlcmxhcFRlc3RS
ZXF1ZXN0cywgcGFpbnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QWNjZXNz
aWJsZU9yaWdpbk9ubHkpOworICAgIGlmIChldmVudFJlZ2lvbkNvbnRleHQpIHsKKyAgICAgICAg
cGFpbnRpbmdJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCA9IGV2ZW50UmVnaW9uQ29udGV4dDsKKyAg
ICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJDb2xsZWN0aW5nRXZl
bnRSZWdpb24pOworICAgIH0KICAgICBwYWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywg
cGFpbnRGbGFncyk7CiAKICAgICBmb3IgKGF1dG8mIHdpZGdldCA6IG92ZXJsYXBUZXN0UmVxdWVz
dHMua2V5cygpKQpAQCAtNzAwMiwyOCArNzAwNiwzNyBAQCBib29sIFJlbmRlckxheWVyOjppc1Ry
YW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFJlbmRlckxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oKQorYm9vbCBS
ZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uKEV2ZW50UmVnaW9uSW52YWxpZGF0aW9u
UmVhc29uIHJlYXNvbikKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8qIGNv
bXBvc2l0aW5nTGF5ZXIgPSBlbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpOwog
ICAgIGlmICghY29tcG9zaXRpbmdMYXllcikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBhdXRvIG1haW50YWluc0V2ZW50UmVnaW9uID0gWyZdIHsKICAgICAg
ICAgLy8gVUkgc2lkZSBzY3JvbGwgb3ZlcmxhcCB0ZXN0aW5nLgogICAgICAgICBpZiAoIWNvbXBv
c2l0aW5nTGF5ZXItPmlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBVSSBzaWRlIHRvdWNoLWFj
dGlvbiByZXNvbHV0aW9uLgogICAgICAgICBpZiAocmVuZGVyZXIoKS5kb2N1bWVudCgpLm1heUhh
dmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYgKCFt
YWludGFpbnNFdmVudFJlZ2lvbigpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNvbiAh
PSBFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZEZyYW1lICYmICFt
YWludGFpbnNFdmVudFJlZ2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb21w
b3NpdGluZ0xheWVyLT5zZXROZWVkc0NvbXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOwot
I2VuZGlmCisKKyAgICBpZiAocmVhc29uID09IEV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29u
OjpOb25Db21wb3NpdGVkRnJhbWUpIHsKKyAgICAgICAgYXV0byYgdmlldyA9IHJlbmRlcmVyKCku
dmlldygpOworICAgICAgICB2aWV3LnNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21w
b3NpdGVkRnJhbWUoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkuc2V0dGluZ3MoKS52aXNpYmxl
RGVidWdPdmVybGF5UmVnaW9ucygpICYgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAg
ICAgICB2aWV3LnNldE5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVG
b3JEZWJ1Z092ZXJsYXlzT25seSgpOworICAgICAgICB2aWV3LmNvbXBvc2l0b3IoKS5zY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJVcGRhdGUoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgQ2xpcFJlY3RzVHlw
ZSBjbGlwUmVjdHNUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRl
eCBkMTEzOTNlMDdkZS4uZWVhYjllMjhiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCkBAIC02OTUsNyArNjk1LDcgQEAgcHVibGljOgogICAgIC8vIGZyb250LiAgVGhl
IGhpdFRlc3QgbWV0aG9kIGxvb2tzIGZvciBtb3VzZSBldmVudHMgYnkgd2Fsa2luZwogICAgIC8v
IGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgcG9pbnQgZnJvbSBmcm9udCB0byBiYWNrLgogICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVj
dCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxPZmZzZXQgPSBMYXlvdXRTaXplKCksIE9wdGlv
blNldDxQYWludEJlaGF2aW9yPiA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbCwKLSAgICAgICAgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgT3B0aW9uU2V0PFBhaW50TGF5
ZXJGbGFnPiA9IHsgfSwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3k6OkFueU9yaWdpbik7CisgICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBh
aW50Um9vdCA9IG51bGxwdHIsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3Vy
aXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4sIEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKTsKICAgICBib29sIGhpdFRlc3QoY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgYm9vbCBoaXRUZXN0KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgSGl0VGVzdFJlc3Vs
dCYpOwogICAgIHZvaWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4sIFJl
bmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIpOwpAQCAtOTI0LDcgKzkyNCwx
MCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVHJhbnNwYXJlbnRSZXNw
ZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3Q7CiAKLSAgICB2b2lkIGludmFsaWRhdGVFdmVudFJl
Z2lvbigpOworICAgIC8vIEludmFsaWRhdGlvbiBjYW4gZmFpbCBpZiB0aGVyZSBpcyBubyBlbmNs
b3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgKGUuZy4gbmVzdGVkIGlmcmFtZSkKKyAgICAvLyBvciB0
aGUgbGF5ZXIgZG9lcyBub3QgbWFpbnRhaW4gYW4gZXZlbnQgcmVnaW9uLgorICAgIGVudW0gY2xh
c3MgRXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb24geyBQYWludCwgU3R5bGUsIE5vbkNvbXBv
c2l0ZWRGcmFtZSB9OworICAgIGJvb2wgaW52YWxpZGF0ZUV2ZW50UmVnaW9uKEV2ZW50UmVnaW9u
SW52YWxpZGF0aW9uUmVhc29uKTsKIAogcHJpdmF0ZToKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAwODFkNGM3NjQwMy4uNDAyMmM1
YmI5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0xNjE4LDExICsxNjE4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVFdmVudFJlZ2lvbigpCiAgICAgaWYgKHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3Io
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9y
Tm9uQ29tcG9zaXRlZEZyYW1lID0gcmVuZGVyZXIoKS52aWV3KCkubmVlZHNFdmVudFJlZ2lvblVw
ZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpOwogICAgIGJvb2wgaGFzVG91Y2hBY3Rpb25FbGVt
ZW50cyA9IGZhbHNlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaGFzVG91Y2hBY3Rp
b25FbGVtZW50cyA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9u
QXV0b1RvdWNoQWN0aW9uKCk7CiAjZW5kaWYKLSAgICBpZiAoIWhhc1RvdWNoQWN0aW9uRWxlbWVu
dHMpIHsKKyAgICBpZiAoIWhhc1RvdWNoQWN0aW9uRWxlbWVudHMgJiYgIW5lZWRzRXZlbnRSZWdp
b25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUpIHsKICAgICAgICAgaWYgKG1fb3duaW5nTGF5
ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTY2Niw2
ICsxNjY3LDkgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkK
IAogICAgIGlmIChtX3Njcm9sbGVkQ29udGVudHNMYXllcikKICAgICAgICAgdXBkYXRlRXZlbnRS
ZWdpb25Gb3JMYXllcigqbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOworCisgICAgaWYgKG5lZWRz
RXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUpCisgICAgICAgIHJlbmRlcmVy
KCkudmlldygpLnNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUo
ZmFsc2UpOwogfQogI2VuZGlmCiAKQEAgLTI3ODEsNyArMjc4NSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5KEdyYXBoaWNzTGF5ZXI6OlNob3VsZENs
aXBUb0xheWVyCiAgICAgaWYgKCFtX293bmluZ0xheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAg
ICAgICAgIG1fb3duaW5nTGF5ZXIuc2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRh
dGUoKTsKIAotICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAg
bV9vd25pbmdMYXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVn
aW9uSW52YWxpZGF0aW9uUmVhc29uOjpQYWludCk7CiAKICAgICBhdXRvJiBmcmFtZVZpZXcgPSBy
ZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKICAgICBpZiAobV9pc01haW5GcmFtZVJlbmRl
clZpZXdMYXllciAmJiBmcmFtZVZpZXcuaXNUcmFja2luZ1JlcGFpbnRzKCkpCkBAIC0yODIxLDcg
KzI4MjUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxh
eUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBHcmFwaAogICAgIGlmICghbV9vd25pbmdMYXll
ci5pc1JlbmRlclZpZXdMYXllcigpKQogICAgICAgICBtX293bmluZ0xheWVyLnNldE5lZWRzQ29t
cG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7CiAKLSAgICBtX293bmluZ0xheWVyLmludmFs
aWRhdGVFdmVudFJlZ2lvbigpOworICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVn
aW9uKFJlbmRlckxheWVyOjpFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6UGFpbnQpOwog
CiAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JQYWludGluZyA9IHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMociwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgYXV0byYgZnJhbWVWaWV3
ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDNhMDM4Y2U4YTNhLi43
ODczMDU0ODI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTg1OCw2ICs4NTgsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1
cGRhdGUKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdl
KCZwYWdlKCkpOwogCisgICAgaWYgKG1fcmVuZGVyVmlldy5uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJD
b21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKSkgeworICAgICAgICBt
X3JlbmRlclZpZXcucmVwYWludFJvb3RDb250ZW50cygpOworICAgICAgICBtX3JlbmRlclZpZXcu
c2V0TmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3Zl
cmxheXNPbmx5KGZhbHNlKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcy
NSw2ICszNzMwLDE0IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQogCiAjZW5kaWYKIAorYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVnaW9uT2ZFbmNs
b3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpIGNvbnN0Cit7CisgICAgLy8gRXZlbnQg
cmVnaW9ucyBhcmUgb25seSB1cGRhdGVkIG9uIGNvbXBvc2l0aW5nIGxheWVycy4gTm9uLWNvbXBv
c2l0ZWQgbGF5ZXJzIG11c3QKKyAgICAvLyBkZWxlZ2F0ZSB0byB0aGVpciBlbmNsb3NpbmcgY29t
cG9zaXRpbmcgbGF5ZXIgZm9yIHJlcGFpbnQgdG8gdXBkYXRlIHRoZSBldmVudCByZWdpb24KKyAg
ICAvLyBmb3IgZWxlbWVudHMgaW5zaWRlIHRoZW0uCisgICAgcmV0dXJuICFtX3JlbmRlclZpZXcu
aXNDb21wb3NpdGVkKCk7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pc1RyYW5zcGFyZW50KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCA5
NDZkZmM0YTI2ZS4uN2NlNjM4Yzk0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTM1OCw2ICszNTgsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHZpZXdIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoQ29sb3IqIGJhY2tncm91bmRD
b2xvciA9IG51bGxwdHIpIGNvbnN0OwogCisgICAgYm9vbCB2aWV3TmVlZHNUb0ludmFsaWRhdGVF
dmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQoKSBjb25zdDsK
KwogICAgIGJvb2wgaGFzTm9uTWFpbkxheWVyc1dpdGhUaWxlZEJhY2tpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2xheWVyc1dpdGhUaWxlZEJhY2tpbmdDb3VudDsgfQogCiAgICAgT3B0aW9uU2V0PENv
bXBvc2l0aW5nUmVhc29uPiByZWFzb25zRm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXIm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAK
aW5kZXggMGNhMmRhMDkyNzQuLjVlMzZkMWE3NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyOjpzdHlsZUNoYW5nZWQoKQogICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CiB9
CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWlu
dFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlk
YXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGVhMzU4ZGZk
YmJjLi5iYTE3MjM1YjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFyZW50KFNj
cm9sbFZpZXcqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBX
aWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggOTE0ZWJiYzdkZDMuLmYwODNiNTJk
YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTY4LDYgKzY4LDEy
IEBAIHB1YmxpYzoKIAogICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3KCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZVZpZXc7IH0KIAorICAgIGJvb2wgbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRp
bmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09u
bHk7IH07CisgICAgdm9pZCBzZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVy
VXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoYm9vbCB2YWx1ZSA9IHRydWUpIHsgbV9uZWVkc1Jl
cGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkg
PSB2YWx1ZTsgfQorCisgICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9z
aXRlZEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9u
Q29tcG9zaXRlZEZyYW1lOyB9CisgICAgdm9pZCBzZXROZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9y
Tm9uQ29tcG9zaXRlZEZyYW1lKGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNFdmVudFJlZ2lv
blVwZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSA9IHZhbHVlOyB9CisKICAgICBPcHRpb25hbDxM
YXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0
JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENv
bnRleHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVwYWludFJvb3RDb250ZW50cygpOwog
ICAgIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwpA
QCAtMjU1LDYgKzI2MSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NvZnR3YXJlRmlsdGVy
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXNGaXJzdExpbmVSdWxlcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3VzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbmVl
ZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNP
bmx5IHsgZmFsc2UgfTsKKyAgICBib29sIG1fbmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5vbkNv
bXBvc2l0ZWRGcmFtZSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFJlbmRlckVsZW1lbnQqLCBW
ZWN0b3I8Q2FjaGVkSW1hZ2UqPj4gbV9yZW5kZXJlcnNXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb247
CiAgICAgSGFzaFNldDxSZW5kZXJFbGVtZW50Kj4gbV92aXNpYmxlSW5WaWV3cG9ydFJlbmRlcmVy
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2Y2ZjMz
Yjc1MmIuLjczOWU1YjYyYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBEaXJrIE11ZWxsZXIg
KG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTI0Niw4ICsyNDYsMTggQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAgICBw
YWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgIH0KKworICAgIGlmIChwYWlu
dEluZm8uZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudFBhaW50T2Zmc2V0KTsK
KyAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVzaFRyYW5zZm9ybSh0cmFu
c2Zvcm0pOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jbG9z
aW5nL2ludGVncmFsIHNuYXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBp
eGVsIHNuYXBwZWQuCi0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNu
YXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5B
Y2Nlc3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nl
c3NpYmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55
T3JpZ2luKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBl
ZEludFJlY3QocGFpbnRSZWN0KSwgcGFpbnRJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vz
c0ZvcldpZGdldHMgPyBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2li
bGVPcmlnaW5Pbmx5IDogV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmln
aW4sIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworCisgICAgaWYgKHBhaW50SW5mby5l
dmVudFJlZ2lvbkNvbnRleHQpCisgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQt
PnBvcFRyYW5zZm9ybSgpOwogCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkK
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXdpZGdldFBhaW50T2Zmc2V0
KTsKQEAgLTI4Miw3ICsyOTIsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlOjpTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpKQogICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUo
KSkpOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5k
KQorICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSB7CkBAIC0zMDQsNiArMzE0
LDkgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFk
aXVzKCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCisgICAgaWYg
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpFdmVudFJlZ2lvbikKKyAgICAgICAgcmV0
dXJuOworCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNl
bGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmlu
dGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1
dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjg4ZjlmY2JiODAuLjNj
Y2RmZmY4NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTA4ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3VjaC1h
Y3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgIFBhc3MgRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2guIEl0IGlzIHVudXNl
ZCBhcyBpdCdzIG5vdCBhcHBsaWNhYmxlIGZvciBwbHVnaW4gcGFpbnRpbmcuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oOgorCiAyMDIwLTAzLTI1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBTaG91bGQgc2hvdyBpbnB1dCB2aWV3IHdoZW4gYmVjYW1lIGZpcnN0IHJl
c3BvbmRlciBpZiBrZXlib2FyZCB3YXMgc2hvd2luZyB3aGVuIHRoZSB2aWV3IHdhcyByZXNpZ25l
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBiNjA1YTI4OTEzYi4uYzdmYmFlY2EyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03ODMsNyArNzgzLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKICAg
ICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8sIFdp
ZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUGx1Z2luVmlldzo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBX
aWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7
CiAgICAgaWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkIHx8IG1fcGx1Z2luRWxlbWVu
dC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZykKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCmluZGV4IDg0ZDQyNjRjZTBkLi4wM2E5MWJjYjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTczLDcgKzE3Myw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBXZWJDb3JlOjpXaWRnZXQKICAgICB2b2lkIHNldEZyYW1lUmVjdChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6V2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3Jl
OjpXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFdlYkNvcmU6OkV2ZW50UmVnaW9u
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCmluZGV4IGZhM2E1NzZlYzVjLi5hN2ZkNzgzZTBjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTA4ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3VjaC1hY3Rpb24g
ZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdp
blZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGFpbnQpOgorCisy
MDIwLTA0LTA4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBT
aG91bGQgZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlm
cmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MDA0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBFdmVudFJlZ2lvbkNvbnRleHQg
dGhyb3VnaC4gSXQgaXMgdW51c2VkIGFzIGl0J3Mgbm90IGFwcGxpY2FibGUgZm9yIHBsdWdpbiBw
YWludGluZy4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFBs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
YWludCk6CisKIDIwMjAtMDQtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBBZGQgU1BJIHRvIG1ha2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZv
ciBhIG5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCBiNWI2MGE4MDk5MS4uZGVlNzZjZDE4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xODEsNyArMTgxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHNob3coKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBoaWRlKCkgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYs
IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkgb3ZlcnJpZGU7CisgICAgICAgIHZv
aWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgY2xpcFJlY3RDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICAgICAgLy8gVGhpcyBt
ZXRob2QgaXMgdXNlZCBieSBwbHVnaW5zIG9uIGFsbCBwbGF0Zm9ybXMgdG8gb2J0YWluIGEgY2xp
cCByZWN0IHRoYXQgaW5jbHVkZXMgY2xpcHMgc2V0IGJ5IFdlYkNvcmUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCA1MjA0NTk0
YWI2Zi4uYjYzYjZhNmIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6cGFpbnRXaW5kb3dlZFBsdWdpbkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QKICNlbmRpZgogfQogCi12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5KQordm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKICAgICBpZiAoIW1faXNTdGFydGVkKSB7CiAg
ICAgICAgIC8vIERyYXcgdGhlICJtaXNzaW5nIHBsdWdpbiIgaW1hZ2UKLS0gCjIuMjQuMSAoQXBw
bGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395866</attachid>
            <date>2020-04-08 13:58:17 -0700</date>
            <delta_ts>2020-04-08 14:50:55 -0700</delta_ts>
            <desc>[Alt] Baseline: Just change RenderLayer::invalidateEventRegion()</desc>
            <filename>Baseline.patch</filename>
            <type>text/plain</type>
            <size>1495</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA5ODc3YzAwY2I1NTI2NTQ1MDFkYWZmODUyYTAyNjBiM2FjMGI3OGM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRhYmF0ZXNAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDggQXByIDIwMjAgMTM6NTc6MTcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBCYXNlbGlu
ZTogSnVzdCBjaGFuZ2UgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigpCgotLS0K
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgfCA0ICsrLS0KIDEgZmls
ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMmU5MGYwZDQxYzAuLmVjY2FmMTFiY2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTcwMDMsNyAr
NzAwMyw2IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50
RnJhbWVzKCkgY29uc3QKIAogdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9u
KCkKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8qIGNvbXBvc2l0aW5nTGF5
ZXIgPSBlbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpOwogICAgIGlmICghY29t
cG9zaXRpbmdMYXllcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzAxMiw5ICs3MDExLDExIEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigpCiAgICAgICAgIC8vIFVJIHNp
ZGUgc2Nyb2xsIG92ZXJsYXAgdGVzdGluZy4KICAgICAgICAgaWYgKCFjb21wb3NpdGluZ0xheWVy
LT5pc1JlbmRlclZpZXdMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gVUkgc2lkZSB0b3VjaC1hY3Rpb24gcmVzb2x1
dGlvbi4KICAgICAgICAgaWYgKHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNX
aXRoTm9uQXV0b1RvdWNoQWN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRp
ZgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfTsKIApAQCAtNzAyMiw3ICs3MDIzLDYgQEAg
dm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgY29tcG9zaXRpbmdMYXllci0+c2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRp
b25VcGRhdGUoKTsKLSNlbmRpZgogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYgdHMsIENsaXBSZWN0c1R5cGUgY2xpcFJlY3RzVHlwZSkKLS0gCjIuMjQuMSAoQXBw
bGUgR2l0LTEyNikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395877</attachid>
            <date>2020-04-08 15:37:45 -0700</date>
            <delta_ts>2020-04-08 15:37:45 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-210041-20200408153744.patch</filename>
            <type>text/plain</type>
            <size>51891</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2MDMzMThhZmJkZjRh
ZDQ1ZjM1NTMyYjNhNWU3YjRjYzE0MzM1Mi4uZTllNjhkOTMyZjlhNDcxZjE2MTg3MTA3NGExZjYx
ZmM2Njg3MjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMC0wNC0wOCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdWxkIGZpbmQgdG91
Y2gtYWN0aW9uIGVsZW1lbnRzIGluc2lkZSBub24tY29tcG9zaXRlZCBpZnJhbWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwNDEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYxMzIzNTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBGaXggdXAgZXZlbnQgcmVnaW9uIGNvZGUgdG8gdHJhdmVyc2Ugbm9u
LWNvbXBvc2l0ZWQgaWZyYW1lcyB0aGF0IGhhdmUgZWxlbWVudHMgd2l0aCBhIG5vbi1hdXRvCisg
ICAgICAgIHRvdWNoLWFjdGlvbi4gVGhlIGV2ZW50IHJlZ2lvbiBpcyBjb21wdXRlZCBmb3IgZWFj
aCBjb21wb3NpdGVkIGxheWVyIGR1cmluZyBhIGNvbXBvc2l0aW5nIGxheWVyCisgICAgICAgIHVw
ZGF0ZSBhbmQgd2FzIHJldHJpY3RlZCB0byBiZWluZyB1cGRhdGVkIGlmIHRoZSBsYXllcidzIGFz
c29jaWF0ZWQgZG9jdW1lbnQgbWF5IGhhdmUgYW4gZWxlbWVudAorICAgICAgICB3aXRoIGEgbm9u
LWF1dG8gdG91Y2gtYWN0aW9uLiBUbyBtYWtlIHRoaXMgd29yayBmb3Igbm9uLWNvbXBvc2l0ZWQg
aWZyYW1lcyBJIGZpbmQgaXRzIGVuY2xvc2luZworICAgICAgICBjb21wb3NpdGluZyBsYXllciwg
c2V0IGEgc3BlY2lhbCBiaXQgdGhhdCBpdCBuZWVkcyBhbiBldmVudCByZWdpb24gdXBkYXRlIGJl
Y2F1c2Ugb2YgdGhlIG5vbi0KKyAgICAgICAgY29tcG9zaXRlZCBjaGlsZCBpZnJhbWUgYW5kIHNj
aGVkdWxlIGEgY29tcG9zaXRpbmcgbGF5ZXIgdXBkYXRlLiBXaGVuIHRoZSB1cGRhdGUgaGFwcGVu
cywgaXQKKyAgICAgICAgY2hlY2tzIHRvIHNlZSBpZiB0aGUgc3BlY2lhbCBiaXQgaXMgc2V0IGFu
ZCBpZiBzbyBvdmVycmlkZXMgYW55IHJlc3RyaWN0aW9ucyB0aGF0IHdvdWxkIGhhdmUKKyAgICAg
ICAgcHJldmVudGVkIHRoZSBldmVudCByZWdpb24gZnJvbSBiZWluZyB1cGRhdGVkLiBUaGUgcGFp
bnRpbmcgY29kZSBmb3Igd2lkZ2V0cyBpcyBhbHNvIGZpeGVkIHVwIHRvCisgICAgICAgIHBhc3Mg
dGhyb3VnaCBhbiBFdmVudFJlZ2lvbkNvbnRleHQgdG8gdXBkYXRlIGR1cmluZyBFdmVudFJlZ2lv
biBwYWludGluZy4KKworICAgICAgICBUaGlzIHN0cmF0ZWd5IHdvcmtzIHdlbGwgZm9yIHVwZGF0
aW5nIHRoZSBldmVudCByZWdpb24uIEhvd2V2ZXIgZGVidWcgcGFpbnQgb3ZlcmxheXMgYXJlIG5v
dAorICAgICAgICB1cGRhdGVkIChpLmUuIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092
ZXJsYXlzKCkgaXMgbm90IGNhbGxlZCkgdW50aWwgdGhlIGVtYmVkZGluZyBjbGllbnQncworICAg
ICAgICB2aWV3IGlzIHJlcGFpbnRlZC4gRm9yIG5vdywgdG8gZml4IHRoaXMgdXAgSSBhZGRlZCBh
bm90aGVyIGEgaGFjaywgYSBzcGVjaWFsIGJpdCAoUmVuZGVyVmlldzo6bmVlZHNSZXBhaW50SGFj
a0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KCkpCisgICAg
ICAgIHRoYXQgaXMgb25seSBzZXQgaWYgZGVidWcgb3ZlcmxheXMgYXJlIHRvIGJlIHNob3duLCB0
byBoYXZlIHRoZSBjb21wb3NpdG9yIHJlcGFpbnQgdGhlIHZpZXcgYWZ0ZXIKKyAgICAgICAgdXBk
YXRpbmcgY29tcG9zaXRpbmcgbGF5ZXJzLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyZXZlbnRz
L2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCisg
ICAgICAgICAgICAgICBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUt
aWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlv
bi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZUV2ZW50UmVnaW9u
c0ZvckZyYW1lKTogQWRkZWQuIFRyeSB0byBpbnZhbGlkYXRlIHRoZSBldmVudCByZWdpb24uCisg
ICAgICAgIFRoaXMgbWF5IGZhaWwgaWYgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4gZW5j
bG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIGZvciByZXBhaW50IChlLmcuIG5lc3RlZAorICAgICAg
ICBjb21wb3NpdGVkIGlmcmFtZXMgLSBzZWUgdGVzdCBwb2ludGVyZXZlbnRzL2lvcy90b3VjaC1h
Y3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS5odG1sKS4gSWYKKyAgICAgICAgdGhpcyBo
YXBwZW5zIHRoZW4gcmVjdXJzaXZlIG9uIG91ciBvd25lciBlbGVtZW50J3MgZG9jdW1lbnQuIFJl
Y3Vyc2lvbiBpcyB1c2VkIGluc3RlYWQgb2YgYSBsb29wCisgICAgICAgIHRvIGZ1dHVyZSBwcm9v
ZiB0aGlzIGNvZGUgZm9yIG91dC1vZi1wcm9jZXNzIChPT1ApIGZyYW1lcywgd2hpY2ggd2lsbCBs
aWtlbHkgaW50cm9kdWNlIGRvY3VtZW50IHByb3h5IG9iamVjdHMuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCk6IEFkZGVkLiBDaGVj
ayBpZiBvdXIgZG9jdW1lbnQgaGFzIGFueSBlbGVtZW50cyB3aXRoCisgICAgICAgIGEgbm9uLWF1
dG8gdG91Y2gtYWN0aW9uLiBJZiBpdCBkb2VzIHRoZW4gYXNrIHRoZSBjb21wb3NpdG9yIGlmIHRo
ZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yCisgICAgICAgIHJlcGFpbnQncyBldmVu
dCByZWdpb24gbXVzdCBiZSBpbnZhbGlkYXRlZCAtIGl0IHdpbGwgb25seSByZXBseSB0cnVlIGlm
IHRoaXMgaXMgYSBub24tY29tcG9zaXRlZCBpZnJhbWUuCisgICAgICAgIElmIGl0IGRvZXMgdGhl
biBmb3J3YXJkIHRoaXMgaW52YWxpZGF0aW9uIHJlcXVlc3QgdG8gdGhlIGRvY3VtZW50LiBUaGUg
cmVhc29uIEkgZGVsZWdhdGUgdG8gdGhlIGRvY3VtZW50CisgICAgICAgIGluc3RlYWQgb2YgaGFu
ZGxpbmcgdGhlIGxvZ2ljIGhlcmUgaXMgdG8gZnV0dXJlIHByb29mIHRoaXMgY29kZSBmb3IgT09Q
IGlmcmFtZXMuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlkTGF5b3V0KTogQ2FsbCBG
cmFtZTo6aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCgpLiBBbHNvIHdoaWxl
CisgICAgICAgIEkgYW0gaGVyZSB0YWtlIG91dCBhIHJlZiBvbiB0aGUgZG9jdW1lbnQgdG8gZW5z
dXJlIGl0IGxpdmVzIHRocm91Z2ggdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLCBpbmNsdWRpbmcK
KyAgICAgICAgdGhyb3VnaCB0aGUgYWNjZXNzaWJpbGl0eSdzIHBvc3ROb3RpZmljYXRpb24oKSBj
b2RlIHRoYXQgY2FsbHMgb3V0IHRvIHRoZSBlbWJlZGRpbmcgY2xpZW50LgorCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9XaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWlu
dCk6CisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1dpZGdldEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0
OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XaWRnZXRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2gu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOiBVcGRhdGUgY29kZSBub3cgdGhh
dCBSZW5kZUxheWVyOjppbnZhbGlkYXRlRXZlbnRSZWdpb24oKQorICAgICAgICB0YWtlcyBhIHJl
YXNvbi4gCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6IFBhc3MgdGhlIEV2ZW50UmVnaW9uQ29udGV4dCB0
aHJvdWdoLiBJZiBhcmUgcGFzc2VkIG9uZSB0aGVuIHVwZGF0ZQorICAgICAgICBwYWludCBmbGFn
cyB0byBjb2xsZWN0IGV2ZW50IHJlZ2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjppbnZhbGlkYXRlRXZlbnRSZWdpb24pOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBmcm9tIHZvaWQg
dG8gYm9vbCBzbyBhcyB0byBpbmRpY2F0ZQorICAgICAgICB0byB0aGUgY2FsbGVyIHdoZXRoZXIg
dGhlIGV2ZW50IHJlZ2lvbiB3YXMgYWN0dWFsbHkgaW52YWxpZGF0ZWQuIEFsc28gbWFkZSBpdCB0
YWtlIGFuIGFyZ3VtZW50IGFzCisgICAgICAgIHRvIHRoZSByZWFzb24gZm9yIHRoZSBpbnZhbGlk
YXRpb24uIElmIGludmFsaWRhdGlvbiBpcyBkdWUgdG8gYSBub24tY29tcG9zaXRlZCBpZnJhbWUg
dGhlbiBzZXRzIHNvbWUKKyAgICAgICAgc3RhdGUgYW5kIHNjaGVkdWxlIGEgY29tcG9zaXRpbmcg
bGF5ZXIgdXBkYXRlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVn
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNO
ZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENv
bnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6CisgICAgICAgIFBhc3MgYW4gRXZlbnRSZWdpb25D
b250ZXh0IHRocm91Z2gKKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29tcG9zaXRpbmdM
YXllckZvclJlcGFpbnQgY29uc3QpOiBBZGRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5oOgorICAgICAgICBQYXNzIGFuIEV2ZW50UmVnaW9uQ29udGV4dCB0aHJvdWdoLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOiBUcmFuc2xhdGUgdGhlIGV2ZW50IHJlZ2lv
biBieSBvdXIgY29udGVudCBwYWludCBvZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OnBhaW50KTogVXBkYXRlIGZvciBFdmVudFJlZ2lvbi4gSWYgcGFpbnRpbmcgdGhlIGV2
ZW50IHJlZ2lvbiBhbmQgdGhlIHZpZXcKKyAgICAgICAgbmVlZHMgbGF5b3V0IHRoZW4gZG8gd2hh
dCB3ZSBkbyBub3cgYW5kIGJhaWwgb3V0LiBPdGhlcndpc2UsIHByb2NlZWQgdG8gcGFpbnQgdGhl
IHdpZGdldCdzIGNvbnRlbnQuCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIEZyYW1lVmlldzo6ZGlk
TGF5b3V0KCkgYWJvdmUgbWVhbnMgdGhhdCBmb3Igbm9uLWNvbXBvc2l0ZWQgZnJhbWVzIHRoYXQg
bmVlZCBhbiBldmVudAorICAgICAgICByZWdpb24gdXBkYXRlIHRoZXkgYWxyZWFkeSBwZXJmb3Jt
ZWQgYSBsYXlvdXQuIFNvLCB0aGVzZSBwYWludHMgd2lsbCBiZSBhbGxvd2VkIHRvIGRlc2NlbmQg
aW50bworICAgICAgICBwYWludGluZyBvZiB0aGUgd2lkZ2V0J3MgY29udGVudC4KKwogMjAyMC0w
NC0wOCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1ha2UgbW9yZSB1
c2Ugb2YgRnJhbWVMb2FkZXIgcGFnZUlEL2ZyYW1lSUQgZ2V0dGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYzZi
MmU4NmQzNjdhZTc0MWUyY2NlZDcwMDdkMjZhZTA5YzY0OTVkLi41ZGU0MTU5MTk3YmQ5NTYyZDQ2
OTc3MTExMjM3NWY3NWU4MWVhZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0
LTA4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQg
ZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIFBhc3MgRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2gu
IEl0IGlzIHVudXNlZCBhcyBpdCdzIG5vdCBhcHBsaWNhYmxlIGZvciBwbHVnaW4gcGFpbnRpbmcu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oOgorCiAyMDIwLTA0LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggaGFuZGxpbmcgbm9uLWxpbmVhcml6ZWQgUERGcyB3aGVu
IGluY3JlbWVudGFsIFBERiBsb2FkaW5nIGlzIGVuYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKaW5kZXggZmEzYTU3NmVjNWM4MDhlNGM2MDE3ODVkNzgxYjhkMGNhYmQwNzdkYy4uODA0
YmU1YTQ0YWNmNDRiZjdmNWQ2ZmM2YTUwOWQ3YzA0YjMwNmRjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTA4ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgZmluZCB0b3VjaC1hY3Rpb24gZWxl
bWVudHMgaW5zaWRlIG5vbi1jb21wb3NpdGVkIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA0MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjEzMjM1NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAg
ICAgIFBhc3MgRXZlbnRSZWdpb25Db250ZXh0IHRocm91Z2guIEl0IGlzIHVudXNlZCBhcyBpdCdz
IG5vdCBhcHBsaWNhYmxlIGZvciBwbHVnaW4gcGFpbnRpbmcuCisKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGFpbnQpOgorCiAyMDIwLTA0LTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0
byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDJmYjQwZTNmOGY1ZjIxY2QwOTdlMGM0NDU1Yjc4NTY4MTdhYmNlMzQu
LmM0MDg4Y2ZlMjRiMDI5YmU2NGRhYjFiMzUxMTcxZWMzMTc3ZTUxNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDIzNCw2ICs0MjM0LDE5IEBAIHZvaWQgRG9jdW1lbnQ6OmVsZW1lbnRJ
bkFjdGl2ZUNoYWluRGlkRGV0YWNoKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fYWN0aXZl
RWxlbWVudCA9IG1fYWN0aXZlRWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogfQogCit2b2lkIERv
Y3VtZW50OjppbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9yRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50JiBlbGVtZW50KQoreworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigp
OworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogbGF5
ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKSkgeworICAgICAgICBpZiAobGF5ZXItPmlu
dmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJMYXllcjo6RXZlbnRSZWdpb25JbnZhbGlkYXRpb25S
ZWFzb246Ok5vbkNvbXBvc2l0ZWRGcmFtZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQgPSB0aGlzLT5vd25lckVsZW1lbnQoKSkKKyAgICAg
ICAgb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JGcmFt
ZSgqb3duZXJFbGVtZW50KTsKK30KKwogdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZVJlbmRlcmlu
Z0RlcGVuZGVudFJlZ2lvbnMoKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGViYmZjNTI4NTg1ZmFiYzMw
YjgwZmFjNmI0YzkzMjU4YzNkZGY3OWYuLmM1YWQzZGZkZGZkMGMzODAyODU3MWI1ZjQ0MDg0ZDdh
YzcxMTMzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTQwLDYgKzExNDAsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJp
bmdEZXBlbmRlbnRSZWdpb25zKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlRXZlbnRSZWdpb25zRm9y
RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50Jik7CiAKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZTYyNzFkN2U4NjAy
M2JjZTAzMTkzNzUyODA1ZjIxZWU5NmQyMzVmYS4uOTMxMzhmM2EyMjYyNzNmYjEwZThiYTU2MTJh
ZjRmNDY5YjA4MjgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTMwNSw2ICszMDUsMjAgQEAg
dm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQoUmVmUHRyPERvY3VtZW50PiYmIG5ld0RvY3VtZW50KQog
ICAgIG1fZG9jdW1lbnRJc0JlaW5nUmVwbGFjZWQgPSBmYWxzZTsKIH0KIAordm9pZCBGcmFtZTo6
aW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lvbnNJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Bh
Z2UgfHwgIW1fZG9jIHx8ICFtX2RvYy0+cmVuZGVyVmlldygpKQorICAgICAgICByZXR1cm47Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghbV9kb2MtPm1heUhhdmVFbGVtZW50c1dpdGhOb25B
dXRvVG91Y2hBY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgaWYgKCFtX2Rv
Yy0+cmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkudmlld05lZWRzVG9JbnZhbGlkYXRlRXZlbnRS
ZWdpb25PZkVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAobV9vd25lckVsZW1lbnQpCisgICAgICAgIG1fb3duZXJFbGVtZW50LT5k
b2N1bWVudCgpLmludmFsaWRhdGVFdmVudFJlZ2lvbnNGb3JGcmFtZSgqbV9vd25lckVsZW1lbnQp
OworfQorCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKIHZvaWQgRnJhbWU6Om9yaWVu
dGF0aW9uQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZWI5N2E2MWZjODhhMGMwNzY4
N2FiNWQyYjEzYTQ1MTcwY2JiM2I1YS4uM2Q0M2E5NGJlYTk1NTZjOThkYzc0MjNhYjdlYWQ5YTky
YTUyYzZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMzA1LDYgKzMwNSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKICAgICBib29sIG1heVByZXdhcm1Mb2Nh
bFN0b3JhZ2UoKSBjb25zdDsKIAorICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRFdmVudFJlZ2lv
bnNJZk5lZWRlZCgpOworCiAvLyA9PT09PT09PQogCiAgICAgdm9pZCBzZWxmT25seVJlZigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGY1OWJhYThjNGFiM2UxMzBhN2M0ZDY3ZmZm
YjhkYzE3OGM4Y2M4NGMuLjYyMDEyNGQ2YmExYzQ5YWM5YmIxYzVkYjI3YzZlYzgxYTUxZjRkYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyNjEsMTIgKzEyNjEsMTUgQEAgdm9p
ZCBGcmFtZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxheW91dFJvb3Qp
CiAKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyTGF5b3V0KCk7CiAKKyAgICBhdXRv
IGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUoKS5kb2N1bWVudCgpKTsKKwogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKLSAgICBpZiAoYXV0byog
Y2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAg
IGlmIChhdXRvKiBjYWNoZSA9IGRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAg
ICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24obGF5b3V0Um9vdC5nZXQoKSwgQVhPYmplY3RD
YWNoZTo6QVhMYXlvdXRDb21wbGV0ZSk7CiAjZW5kaWYKIAotICAgIGZyYW1lKCkuZG9jdW1lbnQo
KS0+aW52YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKKyAgICBmcmFtZSgpLmlu
dmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoKTsKKyAgICBkb2N1bWVudC0+aW52
YWxpZGF0ZVJlbmRlcmluZ0RlcGVuZGVudFJlZ2lvbnMoKTsKIAogICAgIHVwZGF0ZUNhbkJsaXRP
blNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiAKQEAgLTEyNzQsMTAgKzEyNzcsMTAgQEAgdm9pZCBGcmFt
ZVZpZXc6OmRpZExheW91dChXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxheW91dFJvb3QpCiAKICAg
ICBoYW5kbGVEZWZlcnJlZFNjcm9sbGJhcnNVcGRhdGVBZnRlckRpcmVjdGlvbkNoYW5nZSgpOwog
Ci0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpP
VkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQorICAgIGlmIChkb2N1bWVudC0+aGFzTGlzdGVuZXJU
eXBlKERvY3VtZW50OjpPVkVSRkxPV0NIQU5HRURfTElTVEVORVIpKQogICAgICAgICB1cGRhdGVP
dmVyZmxvd1N0YXR1cyhsYXlvdXRXaWR0aCgpIDwgY29udGVudHNXaWR0aCgpLCBsYXlvdXRIZWln
aHQoKSA8IGNvbnRlbnRzSGVpZ2h0KCkpOwogCi0gICAgZnJhbWUoKS5kb2N1bWVudCgpLT5tYXJr
ZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOworICAgIGRvY3VtZW50LT5tYXJr
ZXJzKCkuaW52YWxpZGF0ZVJlY3RzRm9yQWxsTWFya2VycygpOwogfQogCiBib29sIEZyYW1lVmll
dzo6c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkKQEAgLTQy
MjksNyArNDIzMiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSCiAgICAgfQogfQogCi12b2lk
IEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSBzZWN1cml0eU9y
aWdpblBhaW50UG9saWN5KQordm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFNlY3VyaXR5T3JpZ2lu
UGFpbnRQb2xpY3kgc2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250ZXh0
KiBldmVudFJlZ2lvbkNvbnRleHQpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgZmlsbFdp
dGhXYXJuaW5nQ29sb3I7CkBAIC00MjkwLDggKzQyOTMsOCBAQCB2b2lkIEZyYW1lVmlldzo6cGFp
bnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdAogICAgIHdoaWxlIChpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSAmJiAhZG93bmNhc3Q8
UmVuZGVySW5saW5lPigqcmVuZGVyZXIpLmZpcnN0TGluZUJveCgpKQogICAgICAgICByZW5kZXJl
ciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKIAotICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwg
ZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlvciwgcmVuZGVyZXIsIHsgfSwg
c2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9PSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpB
bnlPcmlnaW4gPyBSZW5kZXJMYXllcjo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luIDogUmVuZGVyTGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVP
cmlnaW5Pbmx5KTsKLSAgICBpZiAocm9vdExheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9s
bGJhcnMoKSkKKyAgICByb290TGF5ZXItPnBhaW50KGNvbnRleHQsIGRpcnR5UmVjdCwgTGF5b3V0
U2l6ZSgpLCBtX3BhaW50QmVoYXZpb3IsIHJlbmRlcmVyLCB7IH0sIHNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3kgPT0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luID8gUmVuZGVy
TGF5ZXI6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiA6IFJlbmRlckxheWVy
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3NpYmxlT3JpZ2luT25seSwgZXZlbnRS
ZWdpb25Db250ZXh0KTsKKyAgICBpZiAocm9vdExheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNj
cm9sbGJhcnMoKSAmJiAhZXZlbnRSZWdpb25Db250ZXh0KQogICAgICAgICByb290TGF5ZXItPnBh
aW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0LCBtX3BhaW50QmVoYXZpb3Is
IHJlbmRlcmVyKTsKIAogICAgIGRpZFBhaW50Q29udGVudHMoY29udGV4dCwgZGlydHlSZWN0LCBw
YWludGluZ1N0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDBhZWNkZThhYmMyNTYw
OTg1ZmQxMjE5NWY2ZDAyODI5MmEzMmI0YjUuLjg5ODQ1MzVlNzVlZDY0ZWZlZjY2MGQzMzU3ZTdj
YjVlNzIzZTZmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNTcsNiArNTcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVtZW50
OworY2xhc3MgRXZlbnRSZWdpb25Db250ZXh0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CkBAIC0zNTEsNyArMzUyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9i
amVjdCYpOwogICAgIHZvaWQgcmVtb3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJl
ZGRlZE9iamVjdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5Q
YWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbikgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSA9IFNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdpbiwgRXZlbnRSZWdpb25Db250ZXh0KiA9
IG51bGxwdHIpIGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAgICAgICBP
cHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggM2UyMTZlMTZkZjVlYjJhMjllYjE2YTExNWQzOTkwZTAz
NjVkODM3NC4uMzYxZjA1Mzg5M2Q2MmM5ODMyOWZhMjJlNjBjMjYzNTQ5NDhlMjk3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTEyMzcsMTQgKzEyMzcsMTQgQEAg
dm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogICAgIGNvbnRleHQuZHJhd0ltYWdlKHBhblNjcm9sbEljb24sIGljb25HQ1BvaW50KTsK
IH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgc2VjdXJpdHlPcmln
aW5QYWludFBvbGljeSkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCogZXZlbnRSZWdpb25D
b250ZXh0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgIFdpZGdldDo6
cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgJiYgIWNvbnRleHQucGVyZm9ybWluZ1BhaW50SW52
YWxpZGF0aW9uKCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250
ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpICYmICFldmVudFJlZ2lvbkNvbnRleHQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFp
bnQoKTsKQEAgLTEyNjksNyArMTI2OSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTZWN1cml0eU9yCiAgICAg
ICAgICAgICBjb250ZXh0LmNsaXAodmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50
VmlzaWJsZVJlY3QpKTsKICAgICAgICAgfQogCi0gICAgICAgIHBhaW50Q29udGVudHMoY29udGV4
dCwgZG9jdW1lbnREaXJ0eVJlY3QsIHNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpOworICAgICAg
ICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0LCBzZWN1cml0eU9yaWdp
blBhaW50UG9saWN5LCBldmVudFJlZ2lvbkNvbnRleHQpOwogICAgIH0KIAogI2lmIEVOQUJMRShS
VUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCAxNGFk
Mzg0ZGJmMTc1OWNhNWQ2NjM3NjNmOTg3Y2VmZmVmMGE5YWI2Li44ZjVkZjhlYjkyZTEzN2UyYjM2
Yjg5MDgzZTU0MWEyYTcxZWYzMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CkBAIC01Nyw2ICs1Nyw3IEBAIE9CSkNfQ0xBU1MgV0FLVmlldzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBFdmVudFJlZ2lvbkNvbnRleHQ7CiBjbGFzcyBIb3N0V2luZG93OwogY2xh
c3MgTGVnYWN5VGlsZUNhY2hlOwogY2xhc3MgU2Nyb2xsYmFyOwpAQCAtMzUwLDcgKzM1MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMgcGFpbnRp
bmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9sbGJhcnMu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmln
aW5QYWludFBvbGljeTo6QW55T3JpZ2luKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBXaWRnZXQ6OlNlY3VyaXR5
T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4s
IEV2ZW50UmVnaW9uQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICAgICB2b2lkIHBhaW50U2Ny
b2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBXaWRn
ZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxpdHkgc3Rh
dHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVuLgpAQCAt
Mzg4LDcgKzM4OSw3IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3KCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYpOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBTZWN1cml0eU9yaWdpblBh
aW50UG9saWN5OjpBbnlPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBF
dmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9u
dGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5j
cHAKaW5kZXggMTI5M2UyZDc5MzEzZjg2YjllODZjOGJjMGIyNTc3OTZkZmQ1ZDYyOS4uYTZiNTgw
NzM4OTk0NjI2Yzk3NWE2YzcyOTBiMDM0MWYxZmJlYzU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0
ZVRodW1iUHJvcG9ydGlvbigpCiAgICAgdXBkYXRlVGh1bWIoKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBTY3JvbGxiYXI6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQq
KQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50cygpICYmIHRoZW1l
KCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewogICAgICAgICBpbnZhbGlkYXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGNiOTUwZTIzZjdhNzY1ZTA3MjkwOGQ1YjM2
NmIxNmNjYmYwZDM0ZDIuLmVkMzg5NmM5ZDJjOTFjMTJkNzM0NmY0NmI2NTY0M2EwN2FhNDQ0MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC04Myw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXpl
LCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9wcmVz
c2VkUG9zID0gcDsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6
QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCmluZGV4
IGU5ZjVkODFlMDNhZTYyM2JhOWIzYWQ3ZjVmZWZhMzUzZGYyYWI2OGQuLmE3ZmUzODBmM2ZkMmQ5
Y2E2Y2Y4MjhiODJlYTNkNDZkZDUzN2U5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNw
cApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQ
b2xpY3kpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXggMWNm
OTMxYzEyMjM3MDAyOGY1YWYwNmM1N2Q0NTg4YTZmMmZjNTRhZi4uNGYzMDJhYmJmMTBlYWI5MDBi
MzBjNjMzOWFiODgwNDcwYjdhN2Y4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTYw
LDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBF
dmVudDsKK2NsYXNzIEV2ZW50UmVnaW9uQ29udGV4dDsKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xh
c3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMTA5LDcgKzExMCw3IEBA
IHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSB7IEFu
eU9yaWdpbiwgQWNjZXNzaWJsZU9yaWdpbk9ubHkgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSA9IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFueU9yaWdp
bik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlP
cmlnaW5QYWludFBvbGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0
cik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBpbnZhbGlkYXRlUmVjdChib3VuZHNSZWN0KCkp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggNjkxOWVl
NDJiYTBjNDU5Y2I3YTMwYTlhNzBiNzJkMjhjMjc5OTliYy4uN2M0NWRjZjc5YjE1MmY5NTdiMmNi
OGZiMDQzYzgzZmQwZjVjZjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dpZGdldEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdl
dEd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXaWRnZXQ6OmhpZGUoKQogICAgIHNldFNl
bGZWaXNpYmxlKGZhbHNlKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBXaWRn
ZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdp
blBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCAzZTA5YzExYjQ2MzI3YjQwMTY5N2E1ZGUw
ZGQ3NjE5NWMxYjNkYWM1Li40ZTA3YmQ3NTE2ODlmY2E1MmNiM2E2YzFhMDY3OWM0ZmEyMGM3MzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KQEAgLTE0Niw3ICsx
NDYsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4g
dmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3Qg
SW50UmVjdCYgciwgU2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFp
bnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbQppbmRleCAyNjZiMDQyZTA2ZmQ3ZGIzZjI3MTVhNDYxZDg0Y2UwYTc3OTBkNTE0Li4z
MDQ1ODg4YTM0NDRjNTdmY2ExNGUxYTNiMjMxZTJkMmQ2ZTA0ODgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KQEAgLTE4Niw3ICsxODYsNyBAQCBOU1ZpZXcgKldp
ZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgciwgU2VjdXJp
dHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQm
IHAsIGNvbnN0IEludFJlY3QmIHIsIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVn
aW9uQ29udGV4dCopCiB7CiAgICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IGZm
ZDg2YTA0NDAzNmVmOGNlYTE0NGQwNjMxZTNmMTI1ZTg0MDFlY2QuLjk2NWRmODM4M2ZiZGJlMzU3
OWIwODExOGM0YmU2ZWQzMzdjNjdkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
aWRnZXRXaW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29u
c3QgQ3Vyc29yJiBjdXJzb3IpCiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vy
c29yKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5KQordm9pZCBXaWRnZXQ6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5
LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAppbmRleCBlYzZmZDhjZmZlNjcxZmY4OGVmMjUzZWRiMjk5ZjkzNDA1NGJm
MWM3Li5mMmIyZmQzNjY1YTUzOTkxMTIyNzFjZWMxNWYxMTRhYzFjN2I2Mzg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEyNTUsOCArMTI1NSw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25D
b250ZXh0LT51bml0ZShib3JkZXJSZWdpb24sIHN0eWxlKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgLy8gTm8gbmVlZCB0byBjaGVjayBkZXNjZW5kYW50cyBpZiB3ZSBkb24ndCBoYXZlIG92ZXJm
bG93IGFuZCBkb24ndCBjb250YWluIGZsb2F0cyBhbmQgdGhlIGFyZWEgaXMgYWxyZWFkeSBjb3Zl
cmVkLgotICAgICAgICBib29sIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IGhhc1Zpc3VhbE92
ZXJmbG93KCkgfHwgY29udGFpbnNGbG9hdHMoKSB8fCAhcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29u
dGV4dC0+Y29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChib3JkZXJSZWN0KSk7CisgICAgICAgIGJv
b2wgbmVlZHNUcmF2ZXJzZURlc2NlbmRhbnRzID0gaGFzVmlzdWFsT3ZlcmZsb3coKSB8fCBjb250
YWluc0Zsb2F0cygpIHx8ICFwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0LT5jb250YWlucyhl
bmNsb3NpbmdJbnRSZWN0KGJvcmRlclJlY3QpKSB8fCB2aWV3KCkubmVlZHNFdmVudFJlZ2lvblVw
ZGF0ZUZvck5vbkNvbXBvc2l0ZWRGcmFtZSgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50cyA9IG5lZWRzVHJhdmVyc2VEZXNjZW5kYW50
cyB8fCBkb2N1bWVudCgpLm1heUhhdmVFbGVtZW50c1dpdGhOb25BdXRvVG91Y2hBY3Rpb24oKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4
IDg3N2Y0ODA2YTdjNzZiYjJhZmU4NDNjYTQ4Y2M2ZjIxNWIyYWZkNGIuLjVlYTA5YTUwNmZlNmU1
NDhjMWU5N2M1YzQxYzQ0MDFkMjY0ODViNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUm
IG5ldwogICAgICAgICBpZiAobmVlZHNJbnZhbGlkYXRlRXZlbnRSZWdpb24oKSkgewogICAgICAg
ICAgICAgLy8gVXN1YWxseSB0aGUgZXZlbnQgcmVnaW9uIGdldHMgdXBkYXRlZCBhcyBhIHJlc3Vs
dCBvZiBwYWludCBpbnZhbGlkYXRpb24uIEhlcmUgd2UgbmVlZCB0byByZXF1ZXN0IGFuIHVwZGF0
ZSBleHBsaWNpdGx5LgogICAgICAgICAgICAgaWYgKGF1dG8qIGxheWVyID0gZW5jbG9zaW5nTGF5
ZXIoKSkKLSAgICAgICAgICAgICAgICBsYXllci0+aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7Cisg
ICAgICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVFdmVudFJlZ2lvbihSZW5kZXJMYXllcjo6
RXZlbnRSZWdpb25JbnZhbGlkYXRpb25SZWFzb246OlN0eWxlKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX3BhcmVudCAmJiAobmV3U3R5bGUub3V0bGluZVNpemUoKSA8IG1fc3R5bGUub3V0
bGluZVNpemUoKSB8fCBzaG91bGRSZXBhaW50Rm9yU3R5bGVEaWZmZXJlbmNlKGRpZmYpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDJlOTBmMGQ0MWMwYzY3
MzU3OGFkMTI3MmU0ZmMwMTc4MmJjY2I1ZDcuLmI5YjdhZGY2MGZiNTQ1NDA5MWQ5NjEyOTAyYzdl
YzZmY2VhOWJiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWRvYmUuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5
OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KQEAgLTQyMDMsMTEgKzQyMDMs
MTUgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKTsKIH0KIAotdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBh
aW50Um9vdCwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9y
aWdpblBhaW50UG9saWN5IHBhaW50UG9saWN5KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25z
dCBMYXlvdXRTaXplJiBzdWJwaXhlbE9mZnNldCwgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBh
aW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgT3B0aW9uU2V0PFBh
aW50TGF5ZXJGbGFnPiBwYWludEZsYWdzLCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5IHBhaW50
UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqIGV2ZW50UmVnaW9uQ29udGV4dCkKIHsKICAgICBP
dmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKIAogICAgIExheWVyUGFp
bnRpbmdJbmZvIHBhaW50aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3Qp
LCBwYWludEJlaGF2aW9yLCBzdWJwaXhlbE9mZnNldCwgc3VidHJlZVBhaW50Um9vdCwgJm92ZXJs
YXBUZXN0UmVxdWVzdHMsIHBhaW50UG9saWN5ID09IFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6
OkFjY2Vzc2libGVPcmlnaW5Pbmx5KTsKKyAgICBpZiAoZXZlbnRSZWdpb25Db250ZXh0KSB7Cisg
ICAgICAgIHBhaW50aW5nSW5mby5ldmVudFJlZ2lvbkNvbnRleHQgPSBldmVudFJlZ2lvbkNvbnRl
eHQ7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyQ29sbGVj
dGluZ0V2ZW50UmVnaW9uKTsKKyAgICB9CiAgICAgcGFpbnRMYXllcihjb250ZXh0LCBwYWludGlu
Z0luZm8sIHBhaW50RmxhZ3MpOwogCiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBvdmVybGFwVGVz
dFJlcXVlc3RzLmtleXMoKSkKQEAgLTcwMDEsMTIgKzcwMDUsMTMgQEAgYm9vbCBSZW5kZXJMYXll
cjo6aXNUcmFuc3BhcmVudFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6aW52YWxpZGF0ZUV2ZW50UmVnaW9uKCkK
K2Jvb2wgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbihFdmVudFJlZ2lvbkludmFs
aWRhdGlvblJlYXNvbiByZWFzb24pCiB7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBi
ZSBjb25kaXRpb25lZCBvbiBQTEFURk9STShJT1NfRkFNSUxZKS4gU2VlIDxodHRwczovL3dlYmtp
dC5vcmcvYi8yMTAyMTY+LgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byogY29t
cG9zaXRpbmdMYXllciA9IGVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KCk7CiAg
ICAgaWYgKCFjb21wb3NpdGluZ0xheWVyKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGF1dG8gbWFpbnRhaW5zRXZlbnRSZWdpb24gPSBbJl0gewogICAgICAg
ICAvLyBVSSBzaWRlIHNjcm9sbCBvdmVybGFwIHRlc3RpbmcuCkBAIC03MDE4LDEwICs3MDIzLDIy
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmludmFsaWRhdGVFdmVudFJlZ2lvbigpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9OwogCi0gICAgaWYgKCFtYWludGFpbnNFdmVudFJlZ2lvbigpKQot
ICAgICAgICByZXR1cm47CisgICAgaWYgKHJlYXNvbiAhPSBFdmVudFJlZ2lvbkludmFsaWRhdGlv
blJlYXNvbjo6Tm9uQ29tcG9zaXRlZEZyYW1lICYmICFtYWludGFpbnNFdmVudFJlZ2lvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb21wb3NpdGluZ0xheWVyLT5zZXROZWVkc0Nv
bXBvc2l0aW5nQ29uZmlndXJhdGlvblVwZGF0ZSgpOworCisgICAgaWYgKHJlYXNvbiA9PSBFdmVu
dFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6Tm9uQ29tcG9zaXRlZEZyYW1lKSB7CisgICAgICAg
IGF1dG8mIHZpZXcgPSByZW5kZXJlcigpLnZpZXcoKTsKKyAgICAgICAgdmlldy5zZXROZWVkc0V2
ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lKCk7CisgICAgICAgIGlmIChyZW5k
ZXJlcigpLnNldHRpbmdzKCkudmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMoKSAmIE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKQorICAgICAgICAgICAgdmlldy5zZXROZWVkc1JlcGFpbnRIYWNrQWZ0
ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKTsKKyAgICAgICAg
dmlldy5jb21wb3NpdG9yKCkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAppbmRleCBkMTY1OWIwZTMyMDdkNmEyZTI2NjJlODM0NzdkY2I0ZjRmZGY4MDRkLi5i
MDNmMWUzOTQxMjNmYjQ3YmVhY2JlMDkwYWE1ZmM2MGFjNDc2YWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNjk1LDcgKzY5NSw3IEBAIHB1YmxpYzoKICAgICAv
LyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2UgZXZlbnRzIGJ5IHdh
bGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50IGZyb20gZnJvbnQg
dG8gYmFjay4KICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJl
Y3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsT2Zmc2V0ID0gTGF5b3V0
U2l6ZSgpLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gPSBQYWludEJlaGF2aW9yOjpOb3JtYWws
Ci0gICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIE9wdGlv
blNldDxQYWludExheWVyRmxhZz4gPSB7IH0sIFNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kgPSBT
ZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4pOworICAgICAgICBSZW5kZXJPYmpl
Y3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBPcHRpb25TZXQ8UGFpbnRMYXllckZsYWc+
ID0geyB9LCBTZWN1cml0eU9yaWdpblBhaW50UG9saWN5ID0gU2VjdXJpdHlPcmlnaW5QYWludFBv
bGljeTo6QW55T3JpZ2luLCBFdmVudFJlZ2lvbkNvbnRleHQqID0gbnVsbHB0cik7CiAgICAgYm9v
bCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwogICAgIGJv
b2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYs
IEhpdFRlc3RSZXN1bHQmKTsKICAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgT3B0aW9uU2V0PFBhaW50
QmVoYXZpb3I+LCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyKTsKQEAg
LTkyNCw3ICs5MjQsMTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Ry
YW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OwogCi0gICAgdm9pZCBpbnZh
bGlkYXRlRXZlbnRSZWdpb24oKTsKKyAgICAvLyBJbnZhbGlkYXRpb24gY2FuIGZhaWwgaWYgdGhl
cmUgaXMgbm8gZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyIChlLmcuIG5lc3RlZCBpZnJhbWUp
CisgICAgLy8gb3IgdGhlIGxheWVyIGRvZXMgbm90IG1haW50YWluIGFuIGV2ZW50IHJlZ2lvbi4K
KyAgICBlbnVtIGNsYXNzIEV2ZW50UmVnaW9uSW52YWxpZGF0aW9uUmVhc29uIHsgUGFpbnQsIFN0
eWxlLCBOb25Db21wb3NpdGVkRnJhbWUgfTsKKyAgICBib29sIGludmFsaWRhdGVFdmVudFJlZ2lv
bihFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbik7CiAKICAgICBTdHJpbmcgZGVidWdEZXNj
cmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDRiYmUzZTA5NmZhMjIzM2NiZmU2YWMzMDZiZmEx
ZjdiMWIwMzNiZWEuLmZmODlmNWVmOWEzYTY5Yzc5NDRmYmQ4NmY2NjYzZWI5YjdiNTQzMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBA
IC0xNjE4LDExICsxNjE4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVFdmVu
dFJlZ2lvbigpCiAgICAgaWYgKHBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYm9vbCBuZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9z
aXRlZEZyYW1lID0gcmVuZGVyZXIoKS52aWV3KCkubmVlZHNFdmVudFJlZ2lvblVwZGF0ZUZvck5v
bkNvbXBvc2l0ZWRGcmFtZSgpOwogICAgIGJvb2wgaGFzVG91Y2hBY3Rpb25FbGVtZW50cyA9IGZh
bHNlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaGFzVG91Y2hBY3Rpb25FbGVtZW50
cyA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5tYXlIYXZlRWxlbWVudHNXaXRoTm9uQXV0b1RvdWNo
QWN0aW9uKCk7CiAjZW5kaWYKLSAgICBpZiAoIWhhc1RvdWNoQWN0aW9uRWxlbWVudHMpIHsKKyAg
ICBpZiAoIWhhc1RvdWNoQWN0aW9uRWxlbWVudHMgJiYgIW5lZWRzRXZlbnRSZWdpb25VcGRhdGVG
b3JOb25Db21wb3NpdGVkRnJhbWUpIHsKICAgICAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaXNSZW5k
ZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTY2Niw2ICsxNjY3LDkg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkKIAogICAgIGlm
IChtX3Njcm9sbGVkQ29udGVudHNMYXllcikKICAgICAgICAgdXBkYXRlRXZlbnRSZWdpb25Gb3JM
YXllcigqbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpOworCisgICAgaWYgKG5lZWRzRXZlbnRSZWdp
b25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUpCisgICAgICAgIHJlbmRlcmVyKCkudmlldygp
LnNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVkRnJhbWUoZmFsc2UpOwog
fQogI2VuZGlmCiAKQEAgLTI3ODEsNyArMjc4NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
OjpzZXRDb250ZW50c05lZWREaXNwbGF5KEdyYXBoaWNzTGF5ZXI6OlNob3VsZENsaXBUb0xheWVy
CiAgICAgaWYgKCFtX293bmluZ0xheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpCiAgICAgICAgIG1f
b3duaW5nTGF5ZXIuc2V0TmVlZHNDb21wb3NpdGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIAot
ICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKCk7CisgICAgbV9vd25pbmdM
YXllci5pbnZhbGlkYXRlRXZlbnRSZWdpb24oUmVuZGVyTGF5ZXI6OkV2ZW50UmVnaW9uSW52YWxp
ZGF0aW9uUmVhc29uOjpQYWludCk7CiAKICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlcigp
LnZpZXcoKS5mcmFtZVZpZXcoKTsKICAgICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXll
ciAmJiBmcmFtZVZpZXcuaXNUcmFja2luZ1JlcGFpbnRzKCkpCkBAIC0yODIxLDcgKzI4MjUsNyBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChj
b25zdCBMYXlvdXRSZWN0JiByLCBHcmFwaAogICAgIGlmICghbV9vd25pbmdMYXllci5pc1JlbmRl
clZpZXdMYXllcigpKQogICAgICAgICBtX293bmluZ0xheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdD
b25maWd1cmF0aW9uVXBkYXRlKCk7CiAKLSAgICBtX293bmluZ0xheWVyLmludmFsaWRhdGVFdmVu
dFJlZ2lvbigpOworICAgIG1fb3duaW5nTGF5ZXIuaW52YWxpZGF0ZUV2ZW50UmVnaW9uKFJlbmRl
ckxheWVyOjpFdmVudFJlZ2lvbkludmFsaWRhdGlvblJlYXNvbjo6UGFpbnQpOwogCiAgICAgRmxv
YXRSZWN0IHBpeGVsU25hcHBlZFJlY3RGb3JQYWludGluZyA9IHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMociwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgYXV0byYgZnJhbWVWaWV3ID0gcmVuZGVy
ZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGY1NGQ4NTAyNWEwZWNmNzk2ZmU0NzAw
ZGQyNDkxNDg1YjBiNzlhMjkuLjJkM2I3NTMxMjJlNmMxZWM3ZTc4MjJkNWUxNzBiNmNjOTY3OWY2
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC04NTgsNiArODU4LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRlCiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZSgmcGFnZSgp
KTsKIAorICAgIGlmIChtX3JlbmRlclZpZXcubmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRp
bmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5KCkpIHsKKyAgICAgICAgbV9yZW5kZXJW
aWV3LnJlcGFpbnRSb290Q29udGVudHMoKTsKKyAgICAgICAgbV9yZW5kZXJWaWV3LnNldE5lZWRz
UmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25s
eShmYWxzZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM3MjUsNiArMzcz
MCwxNCBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVy
Rm9yRm9vdGVyKGJvb2wgd2FudHNMYXllcikKIAogI2VuZGlmCiAKK2Jvb2wgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp2aWV3TmVlZHNUb0ludmFsaWRhdGVFdmVudFJlZ2lvbk9mRW5jbG9zaW5nQ29t
cG9zaXRpbmdMYXllckZvclJlcGFpbnQoKSBjb25zdAoreworICAgIC8vIEV2ZW50IHJlZ2lvbnMg
YXJlIG9ubHkgdXBkYXRlZCBvbiBjb21wb3NpdGluZyBsYXllcnMuIE5vbi1jb21wb3NpdGVkIGxh
eWVycyBtdXN0CisgICAgLy8gZGVsZWdhdGUgdG8gdGhlaXIgZW5jbG9zaW5nIGNvbXBvc2l0aW5n
IGxheWVyIGZvciByZXBhaW50IHRvIHVwZGF0ZSB0aGUgZXZlbnQgcmVnaW9uCisgICAgLy8gZm9y
IGVsZW1lbnRzIGluc2lkZSB0aGVtLgorICAgIHJldHVybiAhbV9yZW5kZXJWaWV3LmlzQ29tcG9z
aXRlZCgpOworfQorCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dmlld0hhc1RyYW5zcGFy
ZW50QmFja2dyb3VuZChDb2xvciogYmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIGlmICht
X3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaXNUcmFuc3BhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggOTQ2ZGZjNGEy
NmU3MTg2MGM0NGQyOWM4Yzg3MGRjOGMyYjI1YjIyMy4uN2NlNjM4Yzk0NWZiMzE0ZTM2YjkzOTY5
NmQ3MDU5ZTA2OTViMzlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzU4LDYgKzM1OCw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgdmlld0hhc1RyYW5zcGFyZW50QmFja2dyb3VuZChDb2xvciogYmFja2dyb3VuZENvbG9yID0g
bnVsbHB0cikgY29uc3Q7CiAKKyAgICBib29sIHZpZXdOZWVkc1RvSW52YWxpZGF0ZUV2ZW50UmVn
aW9uT2ZFbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpIGNvbnN0OworCiAgICAg
Ym9vbCBoYXNOb25NYWluTGF5ZXJzV2l0aFRpbGVkQmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5ZXJzV2l0aFRpbGVkQmFja2luZ0NvdW50OyB9CiAKICAgICBPcHRpb25TZXQ8Q29tcG9zaXRp
bmdSZWFzb24+IHJlYXNvbnNGb3JDb21wb3NpdGluZyhjb25zdCBSZW5kZXJMYXllciYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAppbmRleCAw
Y2EyZGEwOTI3NGY2MjZiYTk2NmY2MzRlZWE3ZjQ0OTU2NGM2ODYyLi41ZTM2ZDFhNzYyODlhMWRm
N2IwZDJhNDNmMjU2NTc0Mjg1M2EzNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xs
YmFyOjpzdHlsZUNoYW5nZWQoKQogICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CiB9CiAKLXZv
aWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkK
K3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGlj
eSwgRXZlbnRSZWdpb25Db250ZXh0KikKIHsKICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdD
b250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGVhMzU4ZGZkYmJjNTU1
MGMyMzg1NWZhOWY5N2VlN2M2MzJmMzVjYzAuLmJhMTcyMzViMTdjNGJmNTU1MTNiNDhhYjE0YTQx
ZmFjYzczMDk3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhcmVudChTY3JvbGxW
aWV3Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDkxNGViYmM3ZGQzZTgyNWFkNWFkMTQxMDBm
NTY0MWRlYmM2Yjg3YjIuLmYwODNiNTJkYzMwMmY2Y2RmNmY1MjM4MTMyNGI3ODA4YjdhMzU4N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNjgsNiArNjgsMTIgQEAg
cHVibGljOgogCiAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lVmlldzsgfQogCisgICAgYm9vbCBuZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xh
eWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKSBjb25zdCB7IHJldHVybiBtX25lZWRzUmVw
YWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seTsg
fTsKKyAgICB2b2lkIHNldE5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRh
dGVGb3JEZWJ1Z092ZXJsYXlzT25seShib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzUmVwYWlu
dEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSA9IHZh
bHVlOyB9CisKKyAgICBib29sIG5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21wb3NpdGVk
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25Db21w
b3NpdGVkRnJhbWU7IH0KKyAgICB2b2lkIHNldE5lZWRzRXZlbnRSZWdpb25VcGRhdGVGb3JOb25D
b21wb3NpdGVkRnJhbWUoYm9vbCB2YWx1ZSA9IHRydWUpIHsgbV9uZWVkc0V2ZW50UmVnaW9uVXBk
YXRlRm9yTm9uQ29tcG9zaXRlZEZyYW1lID0gdmFsdWU7IH0KKwogICAgIE9wdGlvbmFsPExheW91
dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4
dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBhaW50Um9vdENvbnRlbnRzKCk7CiAgICAg
dm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CkBAIC0y
NTUsNiArMjYxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzU29mdHdhcmVGaWx0ZXJzIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fdXNlc0ZpcnN0TGV0dGVyUnVsZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc1Jl
cGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9uZWVkc0V2ZW50UmVnaW9uVXBkYXRlRm9yTm9uQ29tcG9z
aXRlZEZyYW1lIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8UmVuZGVyRWxlbWVudCosIFZlY3Rv
cjxDYWNoZWRJbWFnZSo+PiBtX3JlbmRlcmVyc1dpdGhQYXVzZWRJbWFnZUFuaW1hdGlvbjsKICAg
ICBIYXNoU2V0PFJlbmRlckVsZW1lbnQqPiBtX3Zpc2libGVJblZpZXdwb3J0UmVuZGVyZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAzZjZmMzNiNzUy
YjViODYzNzk3YzRhMWE4MjI3ODVkMmMzNGQ4NWFhLi4xYzQ4ZGI2YTNiYjdiNzFkMTViYTMzZDNm
OWZhNmM5MDE4ZmVhMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTI0Niw4ICsyNDYsMTggQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAgICBwYWlu
dFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgIH0KKworICAgIGlmIChwYWludElu
Zm8uZXZlbnRSZWdpb25Db250ZXh0KSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm07CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudFBhaW50T2Zmc2V0KTsKKyAg
ICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+cHVzaFRyYW5zZm9ybSh0cmFuc2Zv
cm0pOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jbG9zaW5n
L2ludGVncmFsIHNuYXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBpeGVs
IHNuYXBwZWQuCi0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBw
ZWRJbnRSZWN0KHBhaW50UmVjdCksIHBhaW50SW5mby5yZXF1aXJlU2VjdXJpdHlPcmlnaW5BY2Nl
c3NGb3JXaWRnZXRzID8gV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBY2Nlc3Np
YmxlT3JpZ2luT25seSA6IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeTo6QW55T3Jp
Z2luKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZElu
dFJlY3QocGFpbnRSZWN0KSwgcGFpbnRJbmZvLnJlcXVpcmVTZWN1cml0eU9yaWdpbkFjY2Vzc0Zv
cldpZGdldHMgPyBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3k6OkFjY2Vzc2libGVP
cmlnaW5Pbmx5IDogV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5OjpBbnlPcmlnaW4s
IHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQpOworCisgICAgaWYgKHBhaW50SW5mby5ldmVu
dFJlZ2lvbkNvbnRleHQpCisgICAgICAgIHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnBv
cFRyYW5zZm9ybSgpOwogCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXdpZGdldFBhaW50T2Zmc2V0KTsK
QEAgLTI4Miw3ICsyOTIsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlOjpTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpKQogICAgICAgICBwYWludE91
dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkp
OwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kKQor
ICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiAocGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uIHx8IHZpZXcoKS5uZWVkc0xh
eW91dCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFk
aXVzKCkpIHsKQEAgLTMwNCw2ICszMTQsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBp
ZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5yZXN0b3JlKCk7CiAKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OkV2
ZW50UmVnaW9uKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBQYWludCBhIHBhcnRpYWxseSB0
cmFuc3BhcmVudCB3YXNoIG92ZXIgc2VsZWN0ZWQgd2lkZ2V0cy4KICAgICBpZiAoaXNTZWxlY3Rl
ZCgpICYmICFkb2N1bWVudCgpLnByaW50aW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IHNlbGVj
dGlvblJlY3QoKSBpcyBpbiBhYnNvbHV0ZSwgbm90IHBhaW50aW5nIGNvb3JkaW5hdGVzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBi
NjA1YTI4OTEzYjM4ZmVlY2M0NDMwMDI5NjNjZDU5YjNmNmI3YmI4Li5jN2ZiYWVjYTIzNGRjMWMx
ODlmZWE2OTYwZWY5NTZlODFhOGJmNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAgdmll
d0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovLCBXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLywgV2lkZ2V0
OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBFdmVudFJlZ2lvbkNvbnRleHQqKQogewogICAg
IGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRp
c3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApp
bmRleCA4NGQ0MjY0Y2UwZDA2ODg2YzM5OWM4NTY0OGQyNWE5Y2ExZWI4MTY2Li4wM2E5MWJjYjlh
ODAzNmE1MmY5YTVjYjBjMjU3ZWVkYTU3NTY1OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFdlYkNvcmU6OldpZGdldAogICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpXaWRnZXQ6OlNl
Y3VyaXR5T3JpZ2luUGFpbnRQb2xpY3kpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6Oldp
ZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgV2ViQ29yZTo6RXZlbnRSZWdpb25Db250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZyYW1lUmVjdHNDaGFuZ2VkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI1YjYwYTgwOTkxZDYwNzEwYjg3MDYz
MDI0MDIxZDY1MDkwNjMyZGEuLmRlZTc2Y2QxOGQ3MzBlMDYyZTJiOGNkNTI4MzQxMTRlOGUwNmZj
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBA
IC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEZv
Y3VzKGJvb2wpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHNob3coKSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBoaWRlKCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwgRXZlbnRSZWdpb25Db250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgY2xpcFJlY3RDaGFuZ2VkKCkgb3ZlcnJpZGU7
CiAKICAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBieSBwbHVnaW5zIG9uIGFsbCBwbGF0
Zm9ybXMgdG8gb2J0YWluIGEgY2xpcCByZWN0IHRoYXQgaW5jbHVkZXMgY2xpcHMgc2V0IGJ5IFdl
YkNvcmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3
V2luLmNwcAppbmRleCA1MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNhLi5i
NjNiNmE2YjE5ZjEyMWY2MjdkODcwNWM1MDk2OWZiZTFhY2Q5ZjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKQEAgLTUzMCw3ICs1
MzAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBQbHVnaW5W
aWV3OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSkKK3ZvaWQgUGx1Z2luVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBXaWRnZXQ6
OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIEV2ZW50UmVnaW9uQ29udGV4dCopCiB7CiAgICAg
aWYgKCFtX2lzU3RhcnRlZCkgewogICAgICAgICAvLyBEcmF3IHRoZSAibWlzc2luZyBwbHVnaW4i
IGltYWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggODA4OTU2MmFkNjI0YTMxNmJkMjNmZjQwOTQ4MjJiMzYyYTlmZjg3OS4u
OTU0ZWFmODU0ZTY5MjZiZmUwZmE0NWYwODIyYjM4NGRmY2Y4OWIyYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDIwLTA0LTA4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTaG91bGQgZmluZCB0b3VjaC1hY3Rpb24gZWxlbWVudHMgaW5zaWRlIG5vbi1jb21w
b3NpdGVkIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMDA0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEzMjM1NTg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkZCBtb3JlIHRlc3RzLgor
CisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1u
b25lLWluc2lkZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVy
ZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy9yZXNvdXJjZXMvdG91Y2gt
YWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5z
aWRlLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyZXZlbnRzL2lvcy90b3Vj
aC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVzdGVkLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0
ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdW5za2lwIGh0dHAvdGVzdHMvbm90
aWZpY2F0aW9ucy9ldmVudC1saXN0ZW5lci1jcmFzaC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wcm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5z
aWRlLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9w
cm9ncmFtbWF0aWMtdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Y3MzQzNDUwOWRkNzA0MmI4NTc4MGQ1MTY0YzNjOTg0NmZhMzU3NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRp
Yy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIyIEBACisKKyhHcmFwaGljc0xheWVyCisgIChhbmNob3IgMC4wMCAwLjAwKQorICAoYm91bmRz
IDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAg
IChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAg
KGRyYXdzQ29udGVudCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQorICAgICAg
KGV2ZW50IHJlZ2lvbgorICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD04MDAgaGVpZ2h0PTYwMCkK
KyAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgIChub25lICAgICAgICAgIAorICAgICAg
ICAgICAgKHJlY3QgKDE4LDE4KSB3aWR0aD0xMDIgaGVpZ2h0PTEwMikKKyAgICAgICAgICApCisg
ICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcG9pbnRlcmV2ZW50cy9pb3MvcHJvZ3JhbW1hdGljLXRvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRp
Yy10b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjODk0
NTZmZjI5ZWRjYjIzNmUxNmZhNDc5MTliZjJjZTI4NDdiMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Byb2dyYW1tYXRpYy10b3VjaC1hY3Rpb24tbm9u
ZS1pbnNpZGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9
J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYm9yZGVyOjFweCBzb2xpZCBibGFjayc+PC9k
aXY+IiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8cHJlIGlkPSJyZXN1bHRzIj48L3By
ZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpCit7CisgICAgdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJkaXYiKS5zdHlsZS50b3VjaEFjdGlvbiA9ICJub25lIjsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgcmVzdWx0cy5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVl
QXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19FVkVOVF9SRUdJ
T04gfCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19ST09UX0xBWUVSX1BST1BFUlRJRVMp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Jlc291cmNlcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNp
ZGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9yZXNvdXJjZXMv
dG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NzgzMDhi
YzE3YzA2MjViMmI4MzBkNzhkNzUwNWNiMjVjYTJiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9yZXNvdXJjZXMvdG91Y2gtYWN0aW9uLW5vbmUtaW5z
aWRlLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPGlmcmFtZSBzcmNkb2M9IjxkaXYgc3R5bGU9J3RvdWNoLWFjdGlvbjogbm9uZTsg
d2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrJz48L2Rp
dj4iIG9ubG9hZD0id2luZG93LnBhcmVudCAmJiB3aW5kb3cucGFyZW50LmR1bXBSZWdpb24oKSI+
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2lu
dGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lk
ZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNzM0MzQ1MDlkZDcwNDJiODU3ODBk
NTE2NGMzYzk4NDZmYTM1NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDIyIEBACisKKyhHcmFwaGljc0xheWVyCisgIChhbmNob3IgMC4wMCAwLjAwKQor
ICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAx
KQorICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZG
KQorICAgICAgKGV2ZW50IHJlZ2lvbgorICAgICAgICAocmVjdCAoMCwwKSB3aWR0aD04MDAgaGVp
Z2h0PTYwMCkKKyAgICAgICAgKHRvdWNoLWFjdGlvbgorICAgICAgICAgIChub25lICAgICAgICAg
IAorICAgICAgICAgICAgKHJlY3QgKDE4LDE4KSB3aWR0aD0xMDIgaGVpZ2h0PTEwMikKKyAgICAg
ICAgICApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5v
bmUtaW5zaWRlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiNzRlZWMyNzAzODc3N2ZmN2QyN2E0
OTU5MzdmOWI1MmI0YTJiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVy
ZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtaWZyYW1lLmh0bWwKQEAgLTAsMCAr
MSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0idGVz
dEZyYW1lIiBzcmNkb2M9IjxkaXYgc3R5bGU9J3RvdWNoLWFjdGlvbjogbm9uZTsgd2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrJz48L2Rpdj4iIG9ubG9h
ZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzxwcmUgaWQ9InJlc3VsdHMiPjwvcHJlPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0
KCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgcmVzdWx0cy5pbm5lclRl
eHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJf
VFJFRV9JTkNMVURFU19FVkVOVF9SRUdJT04gfCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURF
U19ST09UX0xBWUVSX1BST1BFUlRJRVMpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFj
dGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BvaW50ZXJldmVudHMvaW9zL3RvdWNoLWFjdGlvbi1ub25lLWluc2lkZS1uZXN0ZWQtaWZyYW1l
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzMzYWY4ZmRlOWViM2FkOWFlY2E5NjQ5NTNmYmU1
ZDU3ODRlNTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9p
b3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjIgQEAKKworKEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisg
IChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEp
CisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYp
CisgICAgICAoZXZlbnQgcmVnaW9uCisgICAgICAgIChyZWN0ICgwLDApIHdpZHRoPTgwMCBoZWln
aHQ9NjAwKQorICAgICAgICAodG91Y2gtYWN0aW9uCisgICAgICAgICAgKG5vbmUgICAgICAgICAg
CisgICAgICAgICAgICAocmVjdCAoMjgsMjgpIHdpZHRoPTEwMiBoZWlnaHQ9MTAyKQorICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy90b3VjaC1hY3Rpb24tbm9uZS1pbnNpZGUtbmVz
dGVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0
aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzUxZjI4NzAy
Y2UwZDgzN2I5ODliOWI5MjFmNjY5ZWYyODcwODE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvdG91Y2gtYWN0aW9uLW5vbmUtaW5zaWRlLW5lc3RlZC1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL3RvdWNoLWFjdGlvbi1u
b25lLWluc2lkZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8cHJlIGlkPSJyZXN1bHRzIj48L3By
ZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rp
b24gZHVtcFJlZ2lvbigpCit7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJl
c3VsdHMuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCwgaW50
ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfRVZFTlRfUkVHSU9OIHwgaW50ZXJuYWxzLkxBWUVS
X1RSRUVfSU5DTFVERVNfUk9PVF9MQVlFUl9QUk9QRVJUSUVTKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>