<?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>232376</bug_id>
          
          <creation_ts>2021-10-27 07:07:35 -0700</creation_ts>
          <short_desc>[GLIB] twitch.tv forces synchronous scrolling</short_desc>
          <delta_ts>2022-08-31 14:44:20 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232991</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232992</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=244635</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>alex</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809244</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-27 07:07:35 -0700</bug_when>
    <thetext>It seems smooth scrolling doesn&apos;t work for overflow areas when using sync scrolling (the default on GTK). No issues with async scrolling. You can see this on https://www.twitch.tv/ with mouse-wheel or keyboard initiated scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811116</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-02 08:13:39 -0700</bug_when>
    <thetext>Hmm, actually it was just Twitch that mislead me, they seem to override scrolling behaviour somehow and it&apos;s smooth with async scrolling enabled and non-smooth with it disabled... Possibly CSSOM scrolling is always enabled with async scrolling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813525</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-10 03:03:12 -0800</bug_when>
    <thetext>Retitling this bug - Alejandro García Castro and I have been looking at this, and the issue is that Twitch.tv draws a custom scroll indicator and hooks onto all scroll events to do this. It seems just the act of hooking onto these events causes the region to be marked for main-thread-first event handling, and so ends up disabling asynchronous scrolling entirely. Because the page render performance is terrible and frequently updates, the scrolling also feels terrible.

I can&apos;t tell if this is handled differently in Chrome because the page render performance is so much better that it isn&apos;t obvious. However, in Firefox, I know this isn&apos;t how it&apos;s handled (both from observation and from having worked on the code in the past). Scrolling the same page in Firefox is perfectly smooth, but you can see the scroll indicator updating in a jerky manner, presumably because that&apos;s the actual page update performance.

Assuming Firefox hasn&apos;t changed and I recall correctly, when handling events like this in Firefox, the main thread is given a grace period to block the event in the scroll handler and if it can&apos;t respond in that time, the event will be delivered regardless. If subsequent events are part of an ongoing async scroll gesture, they will be delivered straight to the equivalent of the scrolling thread.

While I need to see if this is covered in any related standards, I think it would be a good idea to match the behaviour in Firefox. This page, for example, has regular hundred-millisecond rendering pauses on even desktop-class hardware. It is practically unusable on low-power embedded devices and completely negates the point of async scrolling. It should not be so easy to disable async scrolling (it doesn&apos;t actually block any of the scroll events, it just listens to them to update its scroll indicator).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813527</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-10 03:04:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/85247010&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813615</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-10 08:31:18 -0800</bug_when>
    <thetext>Does the page call preventDefault() on the first wheel event in a gesture?

We have logic now to stay on the threaded scrolling path as long as the page doesn&apos;t do that. See wheelEventGesturesBecomeNonBlocking() code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813617</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-10 08:43:57 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Does the page call preventDefault() on the first wheel event in a gesture?

No, I don&apos;t think so, but I need to confirm (if it does, then indeed, scrolling shouldn&apos;t work...) Can you confirm if async scrolling here works on Mac?

&gt; We have logic now to stay on the threaded scrolling path as long as the page
&gt; doesn&apos;t do that. See wheelEventGesturesBecomeNonBlocking() code.

Thanks - my guess is this isn&apos;t working on Linux because the event phases are a bit funky and/or because latching isn&apos;t working correctly (or maybe some other unimplemented thing). Will look into this and fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813666</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-10 09:59:35 -0800</bug_when>
    <thetext>The only code I can find about it that has a side-effect appears to be here:

https://github.com/WebKit/WebKit/blob/main/Source/WebCore/page/mac/EventHandlerMac.mm#L156

&gt; bool EventHandler::wheelEvent(NSEvent *event)
&gt; {
&gt;     Page* page = m_frame.page();
&gt;     if (!page)
&gt;         return false;
&gt; 
&gt;     CurrentEventScope scope(event, nil);
&gt;     auto wheelEvent = PlatformEventFactory::createPlatformWheelEvent(event, page-&gt;chrome().platformPageClient());
&gt;     OptionSet&lt;WheelEventProcessingSteps&gt; processingSteps = { WheelEventProcessingSteps::MainThreadForScrolling, WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch };
&gt; 
&gt;     if (wheelEvent.phase() == PlatformWheelEventPhase::Changed || wheelEvent.momentumPhase() == PlatformWheelEventPhase::Changed) {
&gt;         if (m_frame.settings().wheelEventGesturesBecomeNonBlocking() &amp;&amp; m_wheelScrollGestureState.value_or(WheelScrollGestureState::Blocking) == WheelScrollGestureState::NonBlocking)
&gt;             processingSteps = { WheelEventProcessingSteps::MainThreadForScrolling, WheelEventProcessingSteps::MainThreadForNonBlockingDOMEventDispatch };
&gt;     }
&gt;     return handleWheelEvent(wheelEvent, processingSteps);
&gt; }

Am I missing something there? It sets processingSteps to { WheelEventProcessingSteps::MainThreadForScrolling, WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch }, then if the wheel event phase is changed and settings().wheelEventGesturesBecomeNonBlocking() is true and m_wheelScrollGestureState is WheelScrollGestureState::NonBlocking, sets is to { WheelEventProcessingSteps::MainThreadForScrolling, WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch } - which is the exact same value? Does OptionSet have some kind of assignment overload that turns assignments into toggles?

Also this code needs to be replicated in a non-Mac specific place, but I&apos;d like to understand it first...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813957</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-11 02:08:05 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #6)
&gt; The only code I can find about it that has a side-effect appears to be here:
&gt; 
&gt; https://github.com/WebKit/WebKit/blob/main/Source/WebCore/page/mac/
&gt; EventHandlerMac.mm#L156
&gt; 
&gt; &gt; bool EventHandler::wheelEvent(NSEvent *event)
&gt; &gt; {
&gt; &gt;     Page* page = m_frame.page();
&gt; &gt;     if (!page)
&gt; &gt;         return false;
&gt; &gt; 
&gt; &gt;     CurrentEventScope scope(event, nil);
&gt; &gt;     auto wheelEvent = PlatformEventFactory::createPlatformWheelEvent(event, page-&gt;chrome().platformPageClient());
&gt; &gt;     OptionSet&lt;WheelEventProcessingSteps&gt; processingSteps = { WheelEventProcessingSteps::MainThreadForScrolling, WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch };
&gt; &gt; 
&gt; &gt;     if (wheelEvent.phase() == PlatformWheelEventPhase::Changed || wheelEvent.momentumPhase() == PlatformWheelEventPhase::Changed) {
&gt; &gt;         if (m_frame.settings().wheelEventGesturesBecomeNonBlocking() &amp;&amp; m_wheelScrollGestureState.value_or(WheelScrollGestureState::Blocking) == WheelScrollGestureState::NonBlocking)
&gt; &gt;             processingSteps = { WheelEventProcessingSteps::MainThreadForScrolling, WheelEventProcessingSteps::MainThreadForNonBlockingDOMEventDispatch };
&gt; &gt;     }
&gt; &gt;     return handleWheelEvent(wheelEvent, processingSteps);
&gt; &gt; }
&gt; 
&gt; Am I missing something there? It sets processingSteps to {
&gt; WheelEventProcessingSteps::MainThreadForScrolling,
&gt; WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch }, then if
&gt; the wheel event phase is changed and
&gt; settings().wheelEventGesturesBecomeNonBlocking() is true and
&gt; m_wheelScrollGestureState is WheelScrollGestureState::NonBlocking, sets is
&gt; to { WheelEventProcessingSteps::MainThreadForScrolling,
&gt; WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch } - which
&gt; is the exact same value? Does OptionSet have some kind of assignment
&gt; overload that turns assignments into toggles?
&gt; 
&gt; Also this code needs to be replicated in a non-Mac specific place, but I&apos;d
&gt; like to understand it first...

I am missing something, mainly the &quot;Non&quot; in &quot;NonBlocking&quot;... I&apos;ll excuse myself, it was late in the day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813977</commentid>
    <comment_count>8</comment_count>
      <attachid>443933</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-11 03:56:49 -0800</bug_when>
    <thetext>Created attachment 443933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813978</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-11 04:05:17 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #8)
&gt; Created attachment 443933 [details]
&gt; Patch

This patch is deceptively simple, but requires some follow-up work for at least GTK and WPE.

After this patch, with async scrolling (only option on WPE) and wheelEventGesturesBecomeNonBlocking enabled (which is default true), all wheel event gestures will become non-blocking, even when there could be a valid begin phase, like with touchpad events.

Both GTK and WPE could support the &quot;begin&quot; phase for touchpad events on Wayland but don&apos;t - this will be follow-up work.


After this patch, behaviour now matches what happens on Mac, but I&apos;m a bit uncertain what ought to happen with discrete mouse-wheel events. These events have no &quot;begin&quot; phase, for obvious reasons, but that also means that all of them will become non-blocking. Does this problem exist on Mac, or does Mac synthesise some kind of &quot;begin&quot; phase?

This patch now means that if a page tries to block scrolling by preventing default on the wheel event on a platform where the begin phase isn&apos;t correctly implemented, they only have ~8ms to do so. If a platform has no intention of implementing the begin phase, they can disable the wheelEventGesturesBecomeNonBlocking setting.

That said, I think the situation where you can so easily disable async scrolling is worse than the situation where badly-behaved pages that disable scrolling in a weird way don&apos;t operate quite as intended. For what it&apos;s worth, Firefox has a similar problem I believe, but it isn&apos;t as easy to trigger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814024</commentid>
    <comment_count>10</comment_count>
      <attachid>443945</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-11 07:35:04 -0800</bug_when>
    <thetext>Created attachment 443945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814027</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-11 07:52:26 -0800</bug_when>
    <thetext>(In reply to Chris Lord from comment #9)
&gt; After this patch, behaviour now matches what happens on Mac, but I&apos;m a bit
&gt; uncertain what ought to happen with discrete mouse-wheel events. These
&gt; events have no &quot;begin&quot; phase, for obvious reasons, but that also means that
&gt; all of them will become non-blocking. Does this problem exist on Mac, or
&gt; does Mac synthesise some kind of &quot;begin&quot; phase?

No, for clicky wheel mice on macOS each scroll is a mouseWheel with no phases, so there are no NonBlocking optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814038</commentid>
    <comment_count>12</comment_count>
      <attachid>443945</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-11 08:13:47 -0800</bug_when>
    <thetext>Comment on attachment 443945
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:83
&gt; +        if (isSynchronousDispatchRegion) {

On macOS we hit this code for &lt;select&gt; lists and non-async overflow, for reference.

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:84
&gt; +            if (wheelEvent.isGestureContinuation() &amp;&amp; wheelEventGesturesBecomeNonBlocking())

A few lines below is this code:

        if (m_treeState.gestureState.value_or(WheelScrollGestureState::Blocking) == WheelScrollGestureState::NonBlocking)

It&apos;s not clear to me whether that same test could be used here.

&gt; Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:131
&gt; +            if (processingSteps.contains(WheelEventProcessingSteps::MainThreadForScrolling)
&gt; +                &amp;&amp; processingSteps.contains(WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch)) {

How does the event get to the main thread in the { WheelEventProcessingSteps::ScrollingThread, WheelEventProcessingSteps::MainThreadForNonBlockingDOMEventDispatch } case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814375</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-12 02:46:50 -0800</bug_when>
    <thetext>Clearly the patch isn&apos;t quite right yet, at least for Mac... Still investigating.

(In reply to Simon Fraser (smfr) from comment #12)
&gt; Comment on attachment 443945 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=443945&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:83
&gt; &gt; +        if (isSynchronousDispatchRegion) {
&gt; 
&gt; On macOS we hit this code for &lt;select&gt; lists and non-async overflow, for
&gt; reference.

Out of curiosity, when does Mac use non-async overflow?

&gt; &gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:84
&gt; &gt; +            if (wheelEvent.isGestureContinuation() &amp;&amp; wheelEventGesturesBecomeNonBlocking())
&gt; 
&gt; A few lines below is this code:
&gt; 
&gt;         if
&gt; (m_treeState.gestureState.value_or(WheelScrollGestureState::Blocking) ==
&gt; WheelScrollGestureState::NonBlocking)
&gt; 
&gt; It&apos;s not clear to me whether that same test could be used here.

Ah, it probably should - I need to look at this code closer and experiment a bit...

&gt; &gt; Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:131
&gt; &gt; +            if (processingSteps.contains(WheelEventProcessingSteps::MainThreadForScrolling)
&gt; &gt; +                &amp;&amp; processingSteps.contains(WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch)) {
&gt; 
&gt; How does the event get to the main thread in the {
&gt; WheelEventProcessingSteps::ScrollingThread,
&gt; WheelEventProcessingSteps::MainThreadForNonBlockingDOMEventDispatch } case?

After this, it still gets sent to the main thread after the scrolling thread if the result of the scrolling tree scroll says it should - but I&apos;m not certain the scrolling tree handler takes into account that the given processingSteps may require main thread scrolling, I&apos;ll verify that (and if not, either make sure it does or check processingSteps explicitly)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814388</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-12 03:18:38 -0800</bug_when>
    <thetext>Given that Mac scroll-wheel events are the same as non-Mac in this regard, I think the isGesture* functions are not good enough to determine whether to do this short-cutting (for want of a better term) or not.

Ideally, we want to always send the first event and short-cut when the relevant ScrollingEffectsController has either an active scroll animation or is in a scrolling gesture. I think I&apos;d like to rework this to do that somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815070</commentid>
    <comment_count>15</comment_count>
      <attachid>444256</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-15 08:13:37 -0800</bug_when>
    <thetext>Created attachment 444256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815078</commentid>
    <comment_count>16</comment_count>
      <attachid>444260</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-15 08:38:12 -0800</bug_when>
    <thetext>Created attachment 444260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815080</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-15 08:45:20 -0800</bug_when>
    <thetext>This is a slightly different approach to the last patch in that it doesn&apos;t involve any behavioural changes in ScrollingTree and instead lets EventDispatcher check if there&apos;s user scroll in progress and make a decision based on that.

Regarding the question of main thread events being dispatched in the async case, the scrolling tree event handler mirrors the main thread flags in its output which is then given to the main thread after the scrolling tree handles the event in the case of asynchronous scrolling - this was existing behaviour.

Really hoping this doesn&apos;t break anything...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815409</commentid>
    <comment_count>18</comment_count>
      <attachid>444362</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-16 02:25:02 -0800</bug_when>
    <thetext>Created attachment 444362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815673</commentid>
    <comment_count>19</comment_count>
      <attachid>444362</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-16 15:01:48 -0800</bug_when>
    <thetext>Comment on attachment 444362
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:77
&gt; +        return m_treeState.nodesWithActiveUserScrolls.contains(node-&gt;scrollingNodeID());

You could early out, avoiding the hit-test, if m_treeState.nodesWithActiveUserScrolls is empty.

&gt; Source/WebCore/page/scrolling/ScrollingTree.h:103
&gt; +    WEBCORE_EXPORT bool isUserScrollInProgress(const PlatformWheelEvent&amp;);

I would call this isUserScrollInProgressAtPoint() or isUserScrollInProgressAtEventLocation()

&gt; Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:127
&gt; +        bool useMainThreadForScrolling = processingSteps.contains(WheelEventProcessingSteps::MainThreadForScrolling) &amp;&amp; !(platformWheelEvent.phase() == PlatformWheelEventPhase::Changed &amp;&amp; scrollingTree-&gt;isUserScrollInProgress(platformWheelEvent));

I would prefer to avoid that new hit-test on platforms that don&apos;t need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815870</commentid>
    <comment_count>20</comment_count>
      <attachid>444498</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-17 01:46:28 -0800</bug_when>
    <thetext>Created attachment 444498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815871</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-17 01:47:14 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #19)
&gt; Comment on attachment 444362 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444362&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:77
&gt; &gt; +        return m_treeState.nodesWithActiveUserScrolls.contains(node-&gt;scrollingNodeID());
&gt; 
&gt; You could early out, avoiding the hit-test, if
&gt; m_treeState.nodesWithActiveUserScrolls is empty.
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingTree.h:103
&gt; &gt; +    WEBCORE_EXPORT bool isUserScrollInProgress(const PlatformWheelEvent&amp;);
&gt; 
&gt; I would call this isUserScrollInProgressAtPoint() or
&gt; isUserScrollInProgressAtEventLocation()
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:127
&gt; &gt; +        bool useMainThreadForScrolling = processingSteps.contains(WheelEventProcessingSteps::MainThreadForScrolling) &amp;&amp; !(platformWheelEvent.phase() == PlatformWheelEventPhase::Changed &amp;&amp; scrollingTree-&gt;isUserScrollInProgress(platformWheelEvent));
&gt; 
&gt; I would prefer to avoid that new hit-test on platforms that don&apos;t need it.

All addressed, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815985</commentid>
    <comment_count>22</comment_count>
      <attachid>444498</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-17 09:57:57 -0800</bug_when>
    <thetext>Comment on attachment 444498
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:132
&gt; +            useMainThreadForScrolling = false;

Why not clear the bit from processingSteps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816354</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-18 01:57:13 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #22)
&gt; Comment on attachment 444498 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444498&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp:132
&gt; &gt; +            useMainThreadForScrolling = false;
&gt; 
&gt; Why not clear the bit from processingSteps?

We still want to deliver the event to the main thread, we just don&apos;t want to block on it (unless I&apos;ve misunderstood how things work here?) If I have, we can address in follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816357</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-18 02:07:00 -0800</bug_when>
    <thetext>Committed r285992 (244389@main): &lt;https://commits.webkit.org/244389@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444498.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443933</attachid>
            <date>2021-11-11 03:56:49 -0800</date>
            <delta_ts>2021-11-11 07:34:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232376-20211111115648.patch</filename>
            <type>text/plain</type>
            <size>4183</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ODkxNTQzNzQxZTIz
MWQzMGRhNTZiZjlhODIxZTliZDkxMzI0ZC4uZjgwYTMzODllMDRlZmQxMWUzYzdiYWY0ODI2YTBh
YTY0M2Q1NjhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTExICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gdHdpdGNoLnR2IGZv
cmNlcyBzeW5jaHJvbm91cyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODUyNDcw
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3cgYXN5bmNocm9ub3VzIHNjcm9sbGluZyBmb3IgY29udGludWluZyBzY3JvbGwgZ2VzdHVyZXMg
d2hlbgorICAgICAgICB3aGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZygpIGlzIHRy
dWUuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmNvbXB1dGVXaGVlbFByb2Nlc3NpbmdTdGVwcyk6
CisKIDIwMjEtMTEtMDcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAog
ICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgZWFybHkgTm92ZW1iZXIgMjAyMSBlZGl0
aW9uIHRha2UgdHdvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2MWQ1MTE2ODcxNDIxM2EyYmVjY2I4MGUyNWZhYTBh
MzNkNDEwZmQuLjBlYjBkZDQxNGU3NDI1YTg2ZjNlNWIxM2E5MDA5MzYxMDdhZDBjZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTEtMTEgIENocmlzIExvcmQgIDxjbG9yZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHTElCXSB0d2l0Y2gudHYgZm9yY2VzIHN5bmNocm9ub3VzIHNj
cm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMyMzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTI0NzAxMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBmb3JjZSBzeW5jaHJvbm91
cyB3aGVlbCBldmVudCBkZWxpdmVyeSBmb3IgYW55IHNjcm9sbCBldmVudCB0aGF0CisgICAgICAg
IG5lZWRzIG1haW4tdGhyZWFkIHByb2Nlc3NpbmcsIGluc3RlYWQgbG9vayBhdCB0aGUKKyAgICAg
ICAgTWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCBmbGFnLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisKIDIwMjEtMTEtMDYgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2hlZWxFdmVudERlbHRh
RmlsdGVyOjpzaG91bGRBcHBseUZpbHRlcmluZ0ZvckV2ZW50IGNhbiBiZSBhIHN0YXRpYyBmdW5j
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cAppbmRleCAwMGFiZDdiMWRkOTA0OTg1ZjRjYzVhMmViOTQ5MDQxOTI1MTg0YTU2Li5mNzM4OTA5
NDY5YTdkMjRkYzY4NmYwZTA2NTlhZGEwYzFiN2M1OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtODAsOCArODAsMTEgQEAgT3B0
aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWU6OmNvbXB1dGVX
aGVlbFByb2Nlc3NpbmdTdGVwcygKICAgICAgICAgICAgIHx8IG1fdHJlZVN0YXRlLmV2ZW50VHJh
Y2tpbmdSZWdpb25zLnRyYWNraW5nVHlwZUZvclBvaW50KG5hbWVzLm1vdXNld2hlZWxFdmVudCwg
cm91bmRlZFBvc2l0aW9uKSA9PSBUcmFja2luZ1R5cGU6OlN5bmNocm9ub3VzOwogICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlxuU2Nyb2xsaW5nVHJlZTo6ZGV0
ZXJtaW5lV2hlZWxFdmVudFByb2Nlc3Npbmc6IHdoZWVsRXZlbnQgIiA8PCB3aGVlbEV2ZW50IDw8
ICIgbWFwcGVkIHRvIGNvbnRlbnQgcG9pbnQgIiA8PCBwb3NpdGlvbiA8PCAiLCBpbiBub24tZmFz
dCByZWdpb24gIiA8PCBpc1N5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24pOwogCi0gICAgICAgIGlm
IChpc1N5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24pCisgICAgICAgIGlmIChpc1N5bmNocm9ub3Vz
RGlzcGF0Y2hSZWdpb24pIHsKKyAgICAgICAgICAgIGlmICh3aGVlbEV2ZW50LmlzR2VzdHVyZUNv
bnRpbnVhdGlvbigpICYmIHdoZWVsRXZlbnRHZXN0dXJlc0JlY29tZU5vbkJsb2NraW5nKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
ck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogICAgICAgICAgICAgcmV0dXJuIHsgV2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9
OworICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX1JFR0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVy
LmNwcAppbmRleCAyMTU2NGJiNTI0ZDQ0NjEzMjUxYmVkZjBhMmRlNGQ2NTRmYjY0NWQ3Li5jZjlj
ZDFmOTdlMDgyNDNjNWM2YjM3MTI3NTYyZTc3ZDE0YTM0NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTEyNyw3
ICsxMjcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZQogICAgICAgICBzY3JvbGxpbmdUcmVl
LT53aWxsUHJvY2Vzc1doZWVsRXZlbnQoKTsKIAogICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRp
c3BhdGNoKFtzY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHBy
b2Nlc3NpbmdTdGVwcywgcGFnZUlELCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewot
ICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vz
c2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSkgeworICAgICAgICAgICAgaWYgKHBy
b2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhy
ZWFkRm9yQmxvY2tpbmdET01FdmVudERpc3BhdGNoKSkgewogICAgICAgICAgICAgICAgIHNjcm9s
bGluZ1RyZWUtPndpbGxTZW5kRXZlbnRUb01haW5UaHJlYWQocGxhdGZvcm1XaGVlbEV2ZW50KTsK
ICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaFdoZWVsRXZlbnRWaWFNYWlu
VGhyZWFkKHBhZ2VJRCwgd2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKICAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdUcmVlLT53YWl0Rm9yRXZlbnRUb0JlUHJvY2Vzc2VkQnlNYWluVGhyZWFk
KHBsYXRmb3JtV2hlZWxFdmVudCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443945</attachid>
            <date>2021-11-11 07:35:04 -0800</date>
            <delta_ts>2021-11-15 08:13:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232376-20211111153502.patch</filename>
            <type>text/plain</type>
            <size>4279</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ODkxNTQzNzQxZTIz
MWQzMGRhNTZiZjlhODIxZTliZDkxMzI0ZC4uZjgwYTMzODllMDRlZmQxMWUzYzdiYWY0ODI2YTBh
YTY0M2Q1NjhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTExLTExICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gdHdpdGNoLnR2IGZv
cmNlcyBzeW5jaHJvbm91cyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODUyNDcw
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3cgYXN5bmNocm9ub3VzIHNjcm9sbGluZyBmb3IgY29udGludWluZyBzY3JvbGwgZ2VzdHVyZXMg
d2hlbgorICAgICAgICB3aGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZygpIGlzIHRy
dWUuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmNvbXB1dGVXaGVlbFByb2Nlc3NpbmdTdGVwcyk6
CisKIDIwMjEtMTEtMDcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAog
ICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgZWFybHkgTm92ZW1iZXIgMjAyMSBlZGl0
aW9uIHRha2UgdHdvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2MWQ1MTE2ODcxNDIxM2EyYmVjY2I4MGUyNWZhYTBh
MzNkNDEwZmQuLjBlYjBkZDQxNGU3NDI1YTg2ZjNlNWIxM2E5MDA5MzYxMDdhZDBjZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTEtMTEgIENocmlzIExvcmQgIDxjbG9yZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHTElCXSB0d2l0Y2gudHYgZm9yY2VzIHN5bmNocm9ub3VzIHNj
cm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMyMzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTI0NzAxMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBmb3JjZSBzeW5jaHJvbm91
cyB3aGVlbCBldmVudCBkZWxpdmVyeSBmb3IgYW55IHNjcm9sbCBldmVudCB0aGF0CisgICAgICAg
IG5lZWRzIG1haW4tdGhyZWFkIHByb2Nlc3NpbmcsIGluc3RlYWQgbG9vayBhdCB0aGUKKyAgICAg
ICAgTWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCBmbGFnLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisKIDIwMjEtMTEtMDYgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2hlZWxFdmVudERlbHRh
RmlsdGVyOjpzaG91bGRBcHBseUZpbHRlcmluZ0ZvckV2ZW50IGNhbiBiZSBhIHN0YXRpYyBmdW5j
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cAppbmRleCAwMGFiZDdiMWRkOTA0OTg1ZjRjYzVhMmViOTQ5MDQxOTI1MTg0YTU2Li5mNzM4OTA5
NDY5YTdkMjRkYzY4NmYwZTA2NTlhZGEwYzFiN2M1OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtODAsOCArODAsMTEgQEAgT3B0
aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWU6OmNvbXB1dGVX
aGVlbFByb2Nlc3NpbmdTdGVwcygKICAgICAgICAgICAgIHx8IG1fdHJlZVN0YXRlLmV2ZW50VHJh
Y2tpbmdSZWdpb25zLnRyYWNraW5nVHlwZUZvclBvaW50KG5hbWVzLm1vdXNld2hlZWxFdmVudCwg
cm91bmRlZFBvc2l0aW9uKSA9PSBUcmFja2luZ1R5cGU6OlN5bmNocm9ub3VzOwogICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlxuU2Nyb2xsaW5nVHJlZTo6ZGV0
ZXJtaW5lV2hlZWxFdmVudFByb2Nlc3Npbmc6IHdoZWVsRXZlbnQgIiA8PCB3aGVlbEV2ZW50IDw8
ICIgbWFwcGVkIHRvIGNvbnRlbnQgcG9pbnQgIiA8PCBwb3NpdGlvbiA8PCAiLCBpbiBub24tZmFz
dCByZWdpb24gIiA8PCBpc1N5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24pOwogCi0gICAgICAgIGlm
IChpc1N5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24pCisgICAgICAgIGlmIChpc1N5bmNocm9ub3Vz
RGlzcGF0Y2hSZWdpb24pIHsKKyAgICAgICAgICAgIGlmICh3aGVlbEV2ZW50LmlzR2VzdHVyZUNv
bnRpbnVhdGlvbigpICYmIHdoZWVsRXZlbnRHZXN0dXJlc0JlY29tZU5vbkJsb2NraW5nKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
ck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogICAgICAgICAgICAgcmV0dXJuIHsgV2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9
OworICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX1JFR0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVy
LmNwcAppbmRleCAyMTU2NGJiNTI0ZDQ0NjEzMjUxYmVkZjBhMmRlNGQ2NTRmYjY0NWQ3Li5kN2Y2
YTdjYjFiNWY0NDQwNDAxOTI0ZjU0ZjliMjZmYTYzYjc5NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTEyNyw3
ICsxMjcsOCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZQogICAgICAgICBzY3JvbGxpbmdUcmVl
LT53aWxsUHJvY2Vzc1doZWVsRXZlbnQoKTsKIAogICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRp
c3BhdGNoKFtzY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHBy
b2Nlc3NpbmdTdGVwcywgcGFnZUlELCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewot
ICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vz
c2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSkgeworICAgICAgICAgICAgaWYgKHBy
b2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhy
ZWFkRm9yU2Nyb2xsaW5nKQorICAgICAgICAgICAgICAgICYmIHByb2Nlc3NpbmdTdGVwcy5jb250
YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yQmxvY2tpbmdET01F
dmVudERpc3BhdGNoKSkgewogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1RyZWUtPndpbGxTZW5k
RXZlbnRUb01haW5UaHJlYWQocGxhdGZvcm1XaGVlbEV2ZW50KTsKICAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kaXNwYXRjaFdoZWVsRXZlbnRWaWFNYWluVGhyZWFkKHBhZ2VJRCwgd2hl
ZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdUcmVl
LT53YWl0Rm9yRXZlbnRUb0JlUHJvY2Vzc2VkQnlNYWluVGhyZWFkKHBsYXRmb3JtV2hlZWxFdmVu
dCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444256</attachid>
            <date>2021-11-15 08:13:37 -0800</date>
            <delta_ts>2021-11-15 08:41:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232376-20211115161336.patch</filename>
            <type>text/plain</type>
            <size>9359</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ODkxNTQzNzQxZTIz
MWQzMGRhNTZiZjlhODIxZTliZDkxMzI0ZC4uYjc5ZTAyNDY3ZmVjYjNiNDY2NzVlZjA0YTAyODZi
ZjAyNjRjOTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTExLTE1ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gdHdpdGNoLnR2IGZv
cmNlcyBzeW5jaHJvbm91cyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODUyNDcw
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBzdXJlIHRvIGtlZXAgdGhlIHVzZXJTY3JvbGxJblByb2dyZXNzIGZsYWcgaW4gc3luYyBmb3Ig
c2Nyb2xsaW5nCisgICAgICAgIG5vZGVzIGluIHRoZSBuaWNvc2lhIGJhY2tlbmQgYW5kIGFkZCBh
IHV0aWxpdHkgZnVuY3Rpb24gdG8gcmV0cmlldmUKKyAgICAgICAgdGhlIHNjcm9sbGluZyBub2Rl
IGZvciBhIGdpdmVuIHdoZWVsIGV2ZW50LiBUaGlzIGxldHMgRXZlbnREaXNwYXRjaGVyCisgICAg
ICAgIGRldGVybWluZSB3aGVuIHRoZXJlJ3MgYW4gZXhpc3Rpbmcgc2Nyb2xsIGdlc3R1cmUgb24g
YSBwYXJ0aWN1bGFyIG5vZGUKKyAgICAgICAgYW5kIGRlbGl2ZXIgZXZlbnRzIGFzeW5jaHJvbm91
c2x5IGluIHRoYXQgY2FzZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4ZXJjaXNlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nTm9kZUZvcldo
ZWVsRXZlbnQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNVc2VyU2Nyb2xs
SW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6aXNVc2VyU2Nyb2xsUHJvZ3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
Tmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6CisKIDIwMjEtMTEtMDcgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBi
dWlsZCBmaXhlcywgZWFybHkgTm92ZW1iZXIgMjAyMSBlZGl0aW9uIHRha2UgdHdvCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGE2MWQ1MTE2ODcxNDIxM2EyYmVjY2I4MGUyNWZhYTBhMzNkNDEwZmQuLjRkNDJjZGEzMjZi
YTFjYzk4MzI2MGYwZWM5Zjg1NjZmYWQ0ZTcyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjEtMTEtMTUgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
TElCXSB0d2l0Y2gudHYgZm9yY2VzIHN5bmNocm9ub3VzIHNjcm9sbGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMzc2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NTI0NzAxMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEb24ndCBmb3JjZSBzeW5jaHJvbm91cyB3aGVlbCBldmVudCBkZWxpdmVy
eSBmb3Igc2Nyb2xsIGV2ZW50cyB3aGVuCisgICAgICAgIGEgdXNlciBzY3JvbGwgaXMgaW4gcHJv
Z3Jlc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KToKKwogMjAy
MS0xMS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OnNob3VsZEFwcGx5RmlsdGVyaW5nRm9yRXZlbnQgY2Fu
IGJlIGEgc3RhdGljIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4IDAwYWJkN2IxZGQ5MDQ5ODVmNGNjNWEyZWI5NDkwNDE5
MjUxODRhNTYuLjE0YzBlOTBjM2RiZWRmZTcxMjg1YWUxYTM4YjU5YzM0MDlkOGE1YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC02
Myw2ICs2MywxNSBAQCBTY3JvbGxpbmdUcmVlOjpTY3JvbGxpbmdUcmVlKCkKIAogU2Nyb2xsaW5n
VHJlZTo6flNjcm9sbGluZ1RyZWUoKSA9IGRlZmF1bHQ7CiAKK1JlZlB0cjxTY3JvbGxpbmdUcmVl
Tm9kZT4gU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nTm9kZUZvcldoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQoreworICAgIGlmICghbV9yb290Tm9kZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHdoZWVsRXZl
bnQucG9zaXRpb24oKTsKKyAgICBwb3NpdGlvbi5tb3ZlKG1fcm9vdE5vZGUtPnZpZXdUb0NvbnRl
bnRzT2Zmc2V0KG1fdHJlZVN0YXRlLm1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKSk7CisgICAgcmV0
dXJuIHNjcm9sbGluZ05vZGVGb3JQb2ludChwb3NpdGlvbik7Cit9CisKIE9wdGlvblNldDxXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdUcmVlOjpjb21wdXRlV2hlZWxQcm9jZXNz
aW5nU3RlcHMoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIGlm
ICghbV9yb290Tm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWUuaAppbmRleCBjMTgyNDMwMzMzODYyODA4MWJmZjJmNDAzZDgxYWM5YWNiNzhiNzAzLi5i
MjIzNmZjZjc3NmNkMDQ0ZWY2YjlmYWYwMzY1Nzk1ZWQ1MzgyMTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0xMDAsNiArMTAwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZDsgfQogICAg
IHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZChib29sIHZhbHVlKSB7
IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZCA9IHZhbHVlOyB9CiAKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IHNjcm9sbGluZ05vZGVGb3JX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBkZXRlcm1pbmVXaGVlbEV2ZW50
UHJvY2Vzc2luZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBz
PiA9IHsgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyN2Y4ZTg1MDlmMWYxMjBj
NTk0ZmYzOWJjMDA0ZjYzZTMzYWU5Y2M0Li5jZjExODE3NTAxMmU4NWQ0YjJjYTdhYWE0MGRhNmIy
OWMyNzcxNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
UmVjdEVkZ2VzPGJvb2w+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjplZGdlUGlubmVkU3Rh
dGUoKSBjb25zdAogICAgIH07CiB9CiAKLWJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OmlzVXNlclNjcm9sbFByb2dyZXNzKCkgY29uc3QKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogewogICAgIHJldHVybiBzY3Jv
bGxpbmdUcmVlKCkuaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzc0Zvck5vZGUoc2Nyb2xsaW5nTm9kZUlE
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggYzE2NjVkMzRhMmFjOWNlNDZmNjNlYTI3
M2FhOTA1Y2Q2ZGNiYjQ2My4uNWFkOTJlOGE0ZTU0ZmYwOTJkZjQ0OWIyOGJlM2MyNTdjYjBmNjE5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
IFJlY3RFZGdlczxib29sPiBlZGdlUGlubmVkU3RhdGUoKSBjb25zdDsKIAotICAgIGJvb2wgaXNV
c2VyU2Nyb2xsUHJvZ3Jlc3MoKSBjb25zdDsKKyAgICBib29sIGlzVXNlclNjcm9sbEluUHJvZ3Jl
c3MoKSBjb25zdDsKICAgICB2b2lkIHNldFVzZXJTY3JvbGxJblByb2dyZXNzKGJvb2wpOwogCiAg
ICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCmluZGV4
IDg5Mzg4MTJkMTA3YTViNTI1ZjYyOWFmYWNjM2JmNzg0YzVhODRhYTguLjg1YjkwYzc4NmQzYTI2
MGY1MDc5MDlhNjk0ZWRkMTIwZWU4Y2E2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCkBAIC04MCwxMSArODAs
MTQgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6dXBk
YXRlVmlzaWJsZUxlbmd0aHMoKQogCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdl
dGluZykKIHsKLSAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5jYW5IYW5kbGVXaGVlbEV2ZW50KHdo
ZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKQotICAgICAgICB8fCAhbV9zY3JvbGxDb250cm9sbGVy
LmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCkpCi0gICAgICAgIHJldHVybiBXaGVlbEV2ZW50
SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOworICAgIGJvb2wgd2FzSW5Vc2VyU2Nyb2xsID0g
bV9zY3JvbGxDb250cm9sbGVyLmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKTsKKyAgICBib29sIGhh
bmRsZWQgPSBzY3JvbGxpbmdOb2RlKCkuY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBl
dmVudFRhcmdldGluZykgJiYgbV9zY3JvbGxDb250cm9sbGVyLmhhbmRsZVdoZWVsRXZlbnQod2hl
ZWxFdmVudCk7CisgICAgYm9vbCBpc0luVXNlclNjcm9sbCA9IG1fc2Nyb2xsQ29udHJvbGxlci5p
c1VzZXJTY3JvbGxJblByb2dyZXNzKCk7CiAKLSAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0OjpoYW5kbGVkKCk7CisgICAgaWYgKGlzSW5Vc2VyU2Nyb2xsICE9IHdhc0luVXNlclNj
cm9sbCkKKyAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNldFVzZXJTY3JvbGxJblByb2dyZXNzKGlz
SW5Vc2VyU2Nyb2xsKTsKKworICAgIHJldHVybiBoYW5kbGVkID8gV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0OjpoYW5kbGVkKCkgOiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4g
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVRpbWVyKEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDIxNTY0YmI1MjRkNDQ2MTMy
NTFiZWRmMGEyZGU0ZDY1NGZiNjQ1ZDcuLjg2NDYwNjQwZDg3YmJmODkzMWJjMjE1Yzg4ZjUxNjA2
ODQ4MzRlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogCiAjaWYgRU5BQkxFKFNDUk9M
TElOR19USFJFQUQpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUaHJlYWQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVOb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuaD4KICNlbmRpZgogCkBAIC0xMjMsMTcgKzEyNCwyNCBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYldoZWVsRXZlbnQmIHdoZQogICAgICAgICAgICAgc2Nyb2xsaW5nVHJlZS0+c2V0TWFpbkZy
YW1lQ2FuUnViYmVyQmFuZChydWJiZXJCYW5kYWJsZUVkZ2VzKTsKIAogICAgICAgICBhdXRvIHBy
b2Nlc3NpbmdTdGVwcyA9IHNjcm9sbGluZ1RyZWUtPmRldGVybWluZVdoZWVsRXZlbnRQcm9jZXNz
aW5nKHBsYXRmb3JtV2hlZWxFdmVudCk7CisgICAgICAgIGJvb2wgdXNlTWFpblRocmVhZEZvclNj
cm9sbGluZyA9IHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKTsKKyAgICAgICAgaWYgKHVzZU1haW5UaHJlYWRG
b3JTY3JvbGxpbmcpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIG5vZGUgPSBzY3JvbGxpbmdUcmVl
LT5zY3JvbGxpbmdOb2RlRm9yV2hlZWxFdmVudChwbGF0Zm9ybVdoZWVsRXZlbnQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUtPmlzVXNlclNjcm9sbEluUHJvZ3Jlc3NGb3JO
b2RlKG5vZGUtPnNjcm9sbGluZ05vZGVJRCgpKSkKKyAgICAgICAgICAgICAgICAgICAgdXNlTWFp
blRocmVhZEZvclNjcm9sbGluZyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAK
ICAgICAgICAgc2Nyb2xsaW5nVHJlZS0+d2lsbFByb2Nlc3NXaGVlbEV2ZW50KCk7CiAKLSAgICAg
ICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbc2Nyb2xsaW5nVHJlZSwgd2hlZWxFdmVudCwg
cGxhdGZvcm1XaGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMsIHBhZ2VJRCwgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dIHsKLSAgICAgICAgICAgIGlmIChwcm9jZXNzaW5nU3RlcHMuY29u
dGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZykp
IHsKKyAgICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbc2Nyb2xsaW5nVHJlZSwgd2hl
ZWxFdmVudCwgcGxhdGZvcm1XaGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMsIHVzZU1haW5UaHJl
YWRGb3JTY3JvbGxpbmcsIHBhZ2VJRCwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsK
KyAgICAgICAgICAgIGlmICh1c2VNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSB7CiAgICAgICAgICAg
ICAgICAgc2Nyb2xsaW5nVHJlZS0+d2lsbFNlbmRFdmVudFRvTWFpblRocmVhZChwbGF0Zm9ybVdo
ZWVsRXZlbnQpOwogICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoV2hlZWxF
dmVudFZpYU1haW5UaHJlYWQocGFnZUlELCB3aGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMpOwog
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1RyZWUtPndhaXRGb3JFdmVudFRvQmVQcm9jZXNzZWRC
eU1haW5UaHJlYWQocGxhdGZvcm1XaGVlbEV2ZW50KTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNj
cm9sbGluZ1RyZWUtPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1XaGVlbEV2ZW50LCBwcm9jZXNz
aW5nU3RlcHMpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lm5lZWRzTWFpblRocmVhZFByb2Nl
c3NpbmcoKSkgewo=
</data>
<flag name="commit-queue"
          id="469236"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444260</attachid>
            <date>2021-11-15 08:38:12 -0800</date>
            <delta_ts>2021-11-16 02:24:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232376-20211115163811.patch</filename>
            <type>text/plain</type>
            <size>9208</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ODkxNTQzNzQxZTIz
MWQzMGRhNTZiZjlhODIxZTliZDkxMzI0ZC4uYTRkNTEwMzVlOGRmYmMxMmFhYmVkMWI3MDMxZjU5
Yjk1NTViNDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTExLTE1ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gdHdpdGNoLnR2IGZv
cmNlcyBzeW5jaHJvbm91cyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODUyNDcw
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBzdXJlIHRvIGtlZXAgdGhlIHVzZXJTY3JvbGxJblByb2dyZXNzIGZsYWcgaW4gc3luYyBmb3Ig
c2Nyb2xsaW5nCisgICAgICAgIG5vZGVzIGluIHRoZSBuaWNvc2lhIGJhY2tlbmQgYW5kIGFkZCBh
IHV0aWxpdHkgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lCisgICAgICAgIGlmIHVzZXIgc2Nyb2xsIGlz
IGluIHByb2dyZXNzIGZvciBhIGdpdmVuIHdoZWVsIGV2ZW50LiBUaGlzIGxldHMKKyAgICAgICAg
RXZlbnREaXNwYXRjaGVyIGRpc3BhdGNoIGV2ZW50cyBhc3luY2hyb25vdXNseSBpbiB0aGF0IGNh
c2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGVyY2lzZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNVc2VyU2Ny
b2xsUHJvZ3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudCk6CisKIDIwMjEtMTEtMDcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgZWFybHkg
Tm92ZW1iZXIgMjAyMSBlZGl0aW9uIHRha2UgdHdvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2MWQ1MTE2ODcxNDIx
M2EyYmVjY2I4MGUyNWZhYTBhMzNkNDEwZmQuLjRkNDJjZGEzMjZiYTFjYzk4MzI2MGYwZWM5Zjg1
NjZmYWQ0ZTcyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTEtMTUgIENocmlz
IExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTElCXSB0d2l0Y2gudHYgZm9y
Y2VzIHN5bmNocm9ub3VzIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTI0NzAx
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24n
dCBmb3JjZSBzeW5jaHJvbm91cyB3aGVlbCBldmVudCBkZWxpdmVyeSBmb3Igc2Nyb2xsIGV2ZW50
cyB3aGVuCisgICAgICAgIGEgdXNlciBzY3JvbGwgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KToKKwogMjAyMS0xMS0wNiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVlbEV2ZW50RGVsdGFG
aWx0ZXI6OnNob3VsZEFwcGx5RmlsdGVyaW5nRm9yRXZlbnQgY2FuIGJlIGEgc3RhdGljIGZ1bmN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3Bw
CmluZGV4IDAwYWJkN2IxZGQ5MDQ5ODVmNGNjNWEyZWI5NDkwNDE5MjUxODRhNTYuLmEyMDlmM2E1
YTU3NTcxOWYwMzk1YzM5MjhlNjFiNjExNjA3Yjg1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC02Myw2ICs2MywyMiBAQCBTY3Jv
bGxpbmdUcmVlOjpTY3JvbGxpbmdUcmVlKCkKIAogU2Nyb2xsaW5nVHJlZTo6flNjcm9sbGluZ1Ry
ZWUoKSA9IGRlZmF1bHQ7CiAKK2Jvb2wgU2Nyb2xsaW5nVHJlZTo6aXNVc2VyU2Nyb2xsSW5Qcm9n
cmVzcyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit7CisgICAgaWYgKCFt
X3Jvb3ROb2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBp
cyBpbnZva2VkIGJ5IHRoZSBldmVudCBoYW5kbGluZyB0aHJlYWQKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV90cmVlU3RhdGVMb2NrIH07CisKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gd2hlZWxF
dmVudC5wb3NpdGlvbigpOworICAgIHBvc2l0aW9uLm1vdmUobV9yb290Tm9kZS0+dmlld1RvQ29u
dGVudHNPZmZzZXQobV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24pKTsKKyAgICBp
ZiAoYXV0byBub2RlID0gc2Nyb2xsaW5nTm9kZUZvclBvaW50KHBvc2l0aW9uKSkKKyAgICAgICAg
cmV0dXJuIG1fdHJlZVN0YXRlLm5vZGVzV2l0aEFjdGl2ZVVzZXJTY3JvbGxzLmNvbnRhaW5zKG5v
ZGUtPnNjcm9sbGluZ05vZGVJRCgpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogT3B0aW9u
U2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWU6OmNvbXB1dGVXaGVl
bFByb2Nlc3NpbmdTdGVwcyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgaWYgKCFtX3Jvb3ROb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCmluZGV4IGMxODI0MzAzMzM4NjI4MDgxYmZmMmY0MDNkODFhYzlhY2I3
OGI3MDMuLjhkZGFjYzlkMmZlMmQ2Mjk5Y2I0MzMyMTZlZjlhM2JmNWEyNDAxNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTEwMCw2ICsx
MDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVk
OyB9CiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkKGJvb2wg
dmFsdWUpIHsgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkID0gdmFsdWU7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwcz4gZGV0ZXJtaW5lV2hlZWxFdmVudFByb2Nlc3NpbmcoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gPSB7IH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMjdmOGU4NTA5ZjFmMTIwYzU5NGZmMzliYzAwNGY2M2Uz
M2FlOWNjNC4uY2YxMTgxNzUwMTJlODVkNGIyY2E3YWFhNDBkYTZiMjljMjc3MTYxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIFJlY3RFZGdlczxib29sPiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QKICAgICB9
OwogfQogCi1ib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc1VzZXJTY3JvbGxQcm9n
cmVzcygpIGNvbnN0Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc1VzZXJTY3Jv
bGxJblByb2dyZXNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmlzVXNl
clNjcm9sbEluUHJvZ3Jlc3NGb3JOb2RlKHNjcm9sbGluZ05vZGVJRCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCmluZGV4IGMxNjY1ZDM0YTJhYzljZTQ2ZjYzZWEyNzNhYTkwNWNkNmRjYmI0NjMu
LjVhZDkyZThhNGU1NGZmMDkyZGY0NDliMjhiZTNjMjU3Y2IwZjYxOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBSZWN0RWRnZXM8Ym9vbD4g
ZWRnZVBpbm5lZFN0YXRlKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVXNlclNjcm9sbFByb2dyZXNz
KCkgY29uc3Q7CisgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhib29sKTsKIAogICAgIGJvb2wgaXNTY3JvbGxT
bmFwSW5Qcm9ncmVzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA4OTM4ODEyZDEwN2E1YjUy
NWY2MjlhZmFjYzNiZjc4NGM1YTg0YWE4Li44NWI5MGM3ODZkM2EyNjBmNTA3OTA5YTY5NGVkZDEy
MGVlOGNhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtODAsMTEgKzgwLDE0IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhz
KCkKIAogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7Ci0gICAgaWYg
KCFzY3JvbGxpbmdOb2RlKCkuY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRh
cmdldGluZykKLSAgICAgICAgfHwgIW1fc2Nyb2xsQ29udHJvbGxlci5oYW5kbGVXaGVlbEV2ZW50
KHdoZWVsRXZlbnQpKQotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1
bmhhbmRsZWQoKTsKKyAgICBib29sIHdhc0luVXNlclNjcm9sbCA9IG1fc2Nyb2xsQ29udHJvbGxl
ci5pc1VzZXJTY3JvbGxJblByb2dyZXNzKCk7CisgICAgYm9vbCBoYW5kbGVkID0gc2Nyb2xsaW5n
Tm9kZSgpLmNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpICYm
IG1fc2Nyb2xsQ29udHJvbGxlci5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIGJv
b2wgaXNJblVzZXJTY3JvbGwgPSBtX3Njcm9sbENvbnRyb2xsZXIuaXNVc2VyU2Nyb2xsSW5Qcm9n
cmVzcygpOwogCi0gICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
OworICAgIGlmIChpc0luVXNlclNjcm9sbCAhPSB3YXNJblVzZXJTY3JvbGwpCisgICAgICAgIHNj
cm9sbGluZ05vZGUoKS5zZXRVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhpc0luVXNlclNjcm9sbCk7CisK
KyAgICByZXR1cm4gaGFuZGxlZCA/IFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
IDogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9F
dmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmNwcAppbmRleCAyMTU2NGJiNTI0ZDQ0NjEzMjUxYmVkZjBhMmRlNGQ2NTRm
YjY0NWQ3Li5lNGM0NjdhYjcwYWY1ZTJhYjZkYTgyNzc0ODRlNGNjNGNlYzQ2NTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVGhyZWFkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3Jv
bGxpbmdUcmVlTm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
Lmg+CiAjZW5kaWYKIApAQCAtMTIzLDE3ICsxMjQsMTggQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6
OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3
aGUKICAgICAgICAgICAgIHNjcm9sbGluZ1RyZWUtPnNldE1haW5GcmFtZUNhblJ1YmJlckJhbmQo
cnViYmVyQmFuZGFibGVFZGdlcyk7CiAKICAgICAgICAgYXV0byBwcm9jZXNzaW5nU3RlcHMgPSBz
Y3JvbGxpbmdUcmVlLT5kZXRlcm1pbmVXaGVlbEV2ZW50UHJvY2Vzc2luZyhwbGF0Zm9ybVdoZWVs
RXZlbnQpOworICAgICAgICBib29sIHVzZU1haW5UaHJlYWRGb3JTY3JvbGxpbmcgPSBwcm9jZXNz
aW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
clNjcm9sbGluZykgJiYgIXNjcm9sbGluZ1RyZWUtPmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MocGxh
dGZvcm1XaGVlbEV2ZW50KTsKIAogICAgICAgICBzY3JvbGxpbmdUcmVlLT53aWxsUHJvY2Vzc1do
ZWVsRXZlbnQoKTsKIAotICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxp
bmdUcmVlLCB3aGVlbEV2ZW50LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcywg
cGFnZUlELCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewotICAgICAgICAgICAgaWYg
KHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWlu
VGhyZWFkRm9yU2Nyb2xsaW5nKSkgeworICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
KFtzY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3Np
bmdTdGVwcywgdXNlTWFpblRocmVhZEZvclNjcm9sbGluZywgcGFnZUlELCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0geworICAgICAgICAgICAgaWYgKHVzZU1haW5UaHJlYWRGb3JTY3Jv
bGxpbmcpIHsKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdUcmVlLT53aWxsU2VuZEV2ZW50VG9N
YWluVGhyZWFkKHBsYXRmb3JtV2hlZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGlzcGF0Y2hXaGVlbEV2ZW50VmlhTWFpblRocmVhZChwYWdlSUQsIHdoZWVsRXZlbnQs
IHByb2Nlc3NpbmdTdGVwcyk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nVHJlZS0+d2FpdEZv
ckV2ZW50VG9CZVByb2Nlc3NlZEJ5TWFpblRocmVhZChwbGF0Zm9ybVdoZWVsRXZlbnQpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gc2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9y
bVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcyk7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQu
bmVlZHNNYWluVGhyZWFkUHJvY2Vzc2luZygpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444362</attachid>
            <date>2021-11-16 02:25:02 -0800</date>
            <delta_ts>2021-11-17 01:46:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232376-20211116102501.patch</filename>
            <type>text/plain</type>
            <size>9276</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ODkxNTQzNzQxZTIz
MWQzMGRhNTZiZjlhODIxZTliZDkxMzI0ZC4uYTRkNTEwMzVlOGRmYmMxMmFhYmVkMWI3MDMxZjU5
Yjk1NTViNDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTExLTE1ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gdHdpdGNoLnR2IGZv
cmNlcyBzeW5jaHJvbm91cyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODUyNDcw
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBzdXJlIHRvIGtlZXAgdGhlIHVzZXJTY3JvbGxJblByb2dyZXNzIGZsYWcgaW4gc3luYyBmb3Ig
c2Nyb2xsaW5nCisgICAgICAgIG5vZGVzIGluIHRoZSBuaWNvc2lhIGJhY2tlbmQgYW5kIGFkZCBh
IHV0aWxpdHkgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lCisgICAgICAgIGlmIHVzZXIgc2Nyb2xsIGlz
IGluIHByb2dyZXNzIGZvciBhIGdpdmVuIHdoZWVsIGV2ZW50LiBUaGlzIGxldHMKKyAgICAgICAg
RXZlbnREaXNwYXRjaGVyIGRpc3BhdGNoIGV2ZW50cyBhc3luY2hyb25vdXNseSBpbiB0aGF0IGNh
c2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGVyY2lzZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3MpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNVc2VyU2Ny
b2xsUHJvZ3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudCk6CisKIDIwMjEtMTEtMDcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgZWFybHkg
Tm92ZW1iZXIgMjAyMSBlZGl0aW9uIHRha2UgdHdvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2MWQ1MTE2ODcxNDIx
M2EyYmVjY2I4MGUyNWZhYTBhMzNkNDEwZmQuLjRkNDJjZGEzMjZiYTFjYzk4MzI2MGYwZWM5Zjg1
NjZmYWQ0ZTcyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTEtMTUgIENocmlz
IExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTElCXSB0d2l0Y2gudHYgZm9y
Y2VzIHN5bmNocm9ub3VzIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTI0NzAx
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24n
dCBmb3JjZSBzeW5jaHJvbm91cyB3aGVlbCBldmVudCBkZWxpdmVyeSBmb3Igc2Nyb2xsIGV2ZW50
cyB3aGVuCisgICAgICAgIGEgdXNlciBzY3JvbGwgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KToKKwogMjAyMS0xMS0wNiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVlbEV2ZW50RGVsdGFG
aWx0ZXI6OnNob3VsZEFwcGx5RmlsdGVyaW5nRm9yRXZlbnQgY2FuIGJlIGEgc3RhdGljIGZ1bmN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3Bw
CmluZGV4IDAwYWJkN2IxZGQ5MDQ5ODVmNGNjNWEyZWI5NDkwNDE5MjUxODRhNTYuLmEyMDlmM2E1
YTU3NTcxOWYwMzk1YzM5MjhlNjFiNjExNjA3Yjg1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC02Myw2ICs2MywyMiBAQCBTY3Jv
bGxpbmdUcmVlOjpTY3JvbGxpbmdUcmVlKCkKIAogU2Nyb2xsaW5nVHJlZTo6flNjcm9sbGluZ1Ry
ZWUoKSA9IGRlZmF1bHQ7CiAKK2Jvb2wgU2Nyb2xsaW5nVHJlZTo6aXNVc2VyU2Nyb2xsSW5Qcm9n
cmVzcyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit7CisgICAgaWYgKCFt
X3Jvb3ROb2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBp
cyBpbnZva2VkIGJ5IHRoZSBldmVudCBoYW5kbGluZyB0aHJlYWQKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV90cmVlU3RhdGVMb2NrIH07CisKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gd2hlZWxF
dmVudC5wb3NpdGlvbigpOworICAgIHBvc2l0aW9uLm1vdmUobV9yb290Tm9kZS0+dmlld1RvQ29u
dGVudHNPZmZzZXQobV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24pKTsKKyAgICBp
ZiAoYXV0byBub2RlID0gc2Nyb2xsaW5nTm9kZUZvclBvaW50KHBvc2l0aW9uKSkKKyAgICAgICAg
cmV0dXJuIG1fdHJlZVN0YXRlLm5vZGVzV2l0aEFjdGl2ZVVzZXJTY3JvbGxzLmNvbnRhaW5zKG5v
ZGUtPnNjcm9sbGluZ05vZGVJRCgpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogT3B0aW9u
U2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWU6OmNvbXB1dGVXaGVl
bFByb2Nlc3NpbmdTdGVwcyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgaWYgKCFtX3Jvb3ROb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCmluZGV4IGMxODI0MzAzMzM4NjI4MDgxYmZmMmY0MDNkODFhYzlhY2I3
OGI3MDMuLjhkZGFjYzlkMmZlMmQ2Mjk5Y2I0MzMyMTZlZjlhM2JmNWEyNDAxNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTEwMCw2ICsx
MDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVk
OyB9CiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkKGJvb2wg
dmFsdWUpIHsgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkID0gdmFsdWU7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwcz4gZGV0ZXJtaW5lV2hlZWxFdmVudFByb2Nlc3NpbmcoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gPSB7IH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMjdmOGU4NTA5ZjFmMTIwYzU5NGZmMzliYzAwNGY2M2Uz
M2FlOWNjNC4uY2YxMTgxNzUwMTJlODVkNGIyY2E3YWFhNDBkYTZiMjljMjc3MTYxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIFJlY3RFZGdlczxib29sPiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QKICAgICB9
OwogfQogCi1ib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc1VzZXJTY3JvbGxQcm9n
cmVzcygpIGNvbnN0Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjppc1VzZXJTY3Jv
bGxJblByb2dyZXNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Nyb2xsaW5nVHJlZSgpLmlzVXNl
clNjcm9sbEluUHJvZ3Jlc3NGb3JOb2RlKHNjcm9sbGluZ05vZGVJRCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCmluZGV4IGMxNjY1ZDM0YTJhYzljZTQ2ZjYzZWEyNzNhYTkwNWNkNmRjYmI0NjMu
LjVhZDkyZThhNGU1NGZmMDkyZGY0NDliMjhiZTNjMjU3Y2IwZjYxOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBSZWN0RWRnZXM8Ym9vbD4g
ZWRnZVBpbm5lZFN0YXRlKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVXNlclNjcm9sbFByb2dyZXNz
KCkgY29uc3Q7CisgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhib29sKTsKIAogICAgIGJvb2wgaXNTY3JvbGxT
bmFwSW5Qcm9ncmVzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA4OTM4ODEyZDEwN2E1YjUy
NWY2MjlhZmFjYzNiZjc4NGM1YTg0YWE4Li44NWI5MGM3ODZkM2EyNjBmNTA3OTA5YTY5NGVkZDEy
MGVlOGNhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtODAsMTEgKzgwLDE0IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhz
KCkKIAogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7Ci0gICAgaWYg
KCFzY3JvbGxpbmdOb2RlKCkuY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRh
cmdldGluZykKLSAgICAgICAgfHwgIW1fc2Nyb2xsQ29udHJvbGxlci5oYW5kbGVXaGVlbEV2ZW50
KHdoZWVsRXZlbnQpKQotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1
bmhhbmRsZWQoKTsKKyAgICBib29sIHdhc0luVXNlclNjcm9sbCA9IG1fc2Nyb2xsQ29udHJvbGxl
ci5pc1VzZXJTY3JvbGxJblByb2dyZXNzKCk7CisgICAgYm9vbCBoYW5kbGVkID0gc2Nyb2xsaW5n
Tm9kZSgpLmNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRUYXJnZXRpbmcpICYm
IG1fc2Nyb2xsQ29udHJvbGxlci5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIGJv
b2wgaXNJblVzZXJTY3JvbGwgPSBtX3Njcm9sbENvbnRyb2xsZXIuaXNVc2VyU2Nyb2xsSW5Qcm9n
cmVzcygpOwogCi0gICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
OworICAgIGlmIChpc0luVXNlclNjcm9sbCAhPSB3YXNJblVzZXJTY3JvbGwpCisgICAgICAgIHNj
cm9sbGluZ05vZGUoKS5zZXRVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhpc0luVXNlclNjcm9sbCk7CisK
KyAgICByZXR1cm4gaGFuZGxlZCA/IFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgp
IDogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9F
dmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmNwcAppbmRleCAyMTU2NGJiNTI0ZDQ0NjEzMjUxYmVkZjBhMmRlNGQ2NTRm
YjY0NWQ3Li40OTNlY2QzOTdiZGIyNTY4YzU5NDUyZDY4NzgwNmNkNTc0MTdjMTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVGhyZWFkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3Jv
bGxpbmdUcmVlTm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
Lmg+CiAjZW5kaWYKIApAQCAtMTIzLDE3ICsxMjQsMTggQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6
OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3
aGUKICAgICAgICAgICAgIHNjcm9sbGluZ1RyZWUtPnNldE1haW5GcmFtZUNhblJ1YmJlckJhbmQo
cnViYmVyQmFuZGFibGVFZGdlcyk7CiAKICAgICAgICAgYXV0byBwcm9jZXNzaW5nU3RlcHMgPSBz
Y3JvbGxpbmdUcmVlLT5kZXRlcm1pbmVXaGVlbEV2ZW50UHJvY2Vzc2luZyhwbGF0Zm9ybVdoZWVs
RXZlbnQpOworICAgICAgICBib29sIHVzZU1haW5UaHJlYWRGb3JTY3JvbGxpbmcgPSBwcm9jZXNz
aW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
clNjcm9sbGluZykgJiYgIShwbGF0Zm9ybVdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZTo6Q2hhbmdlZCAmJiBzY3JvbGxpbmdUcmVlLT5pc1VzZXJTY3JvbGxJblBy
b2dyZXNzKHBsYXRmb3JtV2hlZWxFdmVudCkpOwogCiAgICAgICAgIHNjcm9sbGluZ1RyZWUtPndp
bGxQcm9jZXNzV2hlZWxFdmVudCgpOwogCi0gICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0
Y2goW3Njcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnQsIHBsYXRmb3JtV2hlZWxFdmVudCwgcHJvY2Vz
c2luZ1N0ZXBzLCBwYWdlSUQsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7Ci0gICAg
ICAgICAgICBpZiAocHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKSB7CisgICAgICAgIFNjcm9sbGluZ1RocmVh
ZDo6ZGlzcGF0Y2goW3Njcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnQsIHBsYXRmb3JtV2hlZWxFdmVu
dCwgcHJvY2Vzc2luZ1N0ZXBzLCB1c2VNYWluVGhyZWFkRm9yU2Nyb2xsaW5nLCBwYWdlSUQsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CisgICAgICAgICAgICBpZiAodXNlTWFpblRo
cmVhZEZvclNjcm9sbGluZykgewogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1RyZWUtPndpbGxT
ZW5kRXZlbnRUb01haW5UaHJlYWQocGxhdGZvcm1XaGVlbEV2ZW50KTsKICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaFdoZWVsRXZlbnRWaWFNYWluVGhyZWFkKHBhZ2VJRCwg
d2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdU
cmVlLT53YWl0Rm9yRXZlbnRUb0JlUHJvY2Vzc2VkQnlNYWluVGhyZWFkKHBsYXRmb3JtV2hlZWxF
dmVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzY3JvbGxpbmdUcmVlLT5oYW5kbGVXaGVlbEV2
ZW50KHBsYXRmb3JtV2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKIAogICAgICAgICAgICAg
aWYgKHJlc3VsdC5uZWVkc01haW5UaHJlYWRQcm9jZXNzaW5nKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444498</attachid>
            <date>2021-11-17 01:46:28 -0800</date>
            <delta_ts>2021-11-18 02:07:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232376-20211117094626.patch</filename>
            <type>text/plain</type>
            <size>9589</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ODkxNTQzNzQxZTIz
MWQzMGRhNTZiZjlhODIxZTliZDkxMzI0ZC4uZTgyYjFhOTQzNWQ1NjY1OTg2MzkxOTYzMmFmMDNk
NDQxMjM1YjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTExLTE3ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gdHdpdGNoLnR2IGZv
cmNlcyBzeW5jaHJvbm91cyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODUyNDcw
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBzdXJlIHRvIGtlZXAgdGhlIHVzZXJTY3JvbGxJblByb2dyZXNzIGZsYWcgaW4gc3luYyBmb3Ig
c2Nyb2xsaW5nCisgICAgICAgIG5vZGVzIGluIHRoZSBuaWNvc2lhIGJhY2tlbmQgYW5kIGFkZCBh
IHV0aWxpdHkgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lCisgICAgICAgIGlmIHVzZXIgc2Nyb2xsIGlz
IGluIHByb2dyZXNzIGZvciBhIGdpdmVuIHdoZWVsIGV2ZW50LiBUaGlzIGxldHMKKyAgICAgICAg
RXZlbnREaXNwYXRjaGVyIGRpc3BhdGNoIGV2ZW50cyBhc3luY2hyb25vdXNseSBpbiB0aGF0IGNh
c2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGVyY2lzZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmlzVXNlclNjcm9sbEluUHJvZ3Jlc3NBdEV2ZW50TG9j
YXRpb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6aXNVc2VyU2Nyb2xsSW5Q
cm9ncmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6aXNVc2VyU2Nyb2xsUHJvZ3Jlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6CisKIDIwMjEtMTEtMDcgIERvbiBPbG1z
dGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWls
ZCBmaXhlcywgZWFybHkgTm92ZW1iZXIgMjAyMSBlZGl0aW9uIHRha2UgdHdvCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGE2MWQ1MTE2ODcxNDIxM2EyYmVjY2I4MGUyNWZhYTBhMzNkNDEwZmQuLjhlZmUwN2I0NjExOTFm
OGI5OTczMmJmZWE1NWRiYzM3ZWE3MzI2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMTEtMTcgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTElC
XSB0d2l0Y2gudHYgZm9yY2VzIHN5bmNocm9ub3VzIHNjcm9sbGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMzc2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NTI0NzAxMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEb24ndCBmb3JjZSBzeW5jaHJvbm91cyB3aGVlbCBldmVudCBkZWxpdmVyeSBm
b3Igc2Nyb2xsIGV2ZW50cyB3aGVuCisgICAgICAgIGEgdXNlciBzY3JvbGwgaXMgaW4gcHJvZ3Jl
c3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KToKKwogMjAyMS0x
MS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBX
aGVlbEV2ZW50RGVsdGFGaWx0ZXI6OnNob3VsZEFwcGx5RmlsdGVyaW5nRm9yRXZlbnQgY2FuIGJl
IGEgc3RhdGljIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuY3BwCmluZGV4IDAwYWJkN2IxZGQ5MDQ5ODVmNGNjNWEyZWI5NDkwNDE5MjUx
ODRhNTYuLjhkNWQ3YmU4MmI2M2Q2ZTgwNjI1ZTNhMWMxZDRmOTVlMTdlZGU2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC02Myw2
ICs2MywyNSBAQCBTY3JvbGxpbmdUcmVlOjpTY3JvbGxpbmdUcmVlKCkKIAogU2Nyb2xsaW5nVHJl
ZTo6flNjcm9sbGluZ1RyZWUoKSA9IGRlZmF1bHQ7CiAKK2Jvb2wgU2Nyb2xsaW5nVHJlZTo6aXNV
c2VyU2Nyb2xsSW5Qcm9ncmVzc0F0RXZlbnRMb2NhdGlvbihjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQpCit7CisgICAgaWYgKCFtX3Jvb3ROb2RlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSBldmVudCBoYW5k
bGluZyB0aHJlYWQKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmVlU3RhdGVMb2NrIH07CisKKyAg
ICBpZiAobV90cmVlU3RhdGUubm9kZXNXaXRoQWN0aXZlVXNlclNjcm9sbHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gd2hlZWxF
dmVudC5wb3NpdGlvbigpOworICAgIHBvc2l0aW9uLm1vdmUobV9yb290Tm9kZS0+dmlld1RvQ29u
dGVudHNPZmZzZXQobV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24pKTsKKyAgICBp
ZiAoYXV0byBub2RlID0gc2Nyb2xsaW5nTm9kZUZvclBvaW50KHBvc2l0aW9uKSkKKyAgICAgICAg
cmV0dXJuIG1fdHJlZVN0YXRlLm5vZGVzV2l0aEFjdGl2ZVVzZXJTY3JvbGxzLmNvbnRhaW5zKG5v
ZGUtPnNjcm9sbGluZ05vZGVJRCgpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogT3B0aW9u
U2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWU6OmNvbXB1dGVXaGVl
bFByb2Nlc3NpbmdTdGVwcyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgaWYgKCFtX3Jvb3ROb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCmluZGV4IGMxODI0MzAzMzM4NjI4MDgxYmZmMmY0MDNkODFhYzlhY2I3
OGI3MDMuLjliNDdiMjVmNGZlNDliZTcwZGRhMmZkMzIwYWM4MTU4MWU2OTBjYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTEwMCw2ICsx
MDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVk
OyB9CiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkKGJvb2wg
dmFsdWUpIHsgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZVRlc3RpbmdFbmFibGVkID0gdmFsdWU7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzc0F0RXZlbnRM
b2NhdGlvbihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gZGV0ZXJtaW5lV2hlZWxFdmVudFBy
b2Nlc3NpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4g
PSB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMjdmOGU4NTA5ZjFmMTIwYzU5
NGZmMzliYzAwNGY2M2UzM2FlOWNjNC4uY2YxMTgxNzUwMTJlODVkNGIyY2E3YWFhNDBkYTZiMjlj
Mjc3MTYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIFJl
Y3RFZGdlczxib29sPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZWRnZVBpbm5lZFN0YXRl
KCkgY29uc3QKICAgICB9OwogfQogCi1ib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpp
c1VzZXJTY3JvbGxQcm9ncmVzcygpIGNvbnN0Citib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjppc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Nyb2xs
aW5nVHJlZSgpLmlzVXNlclNjcm9sbEluUHJvZ3Jlc3NGb3JOb2RlKHNjcm9sbGluZ05vZGVJRCgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGMxNjY1ZDM0YTJhYzljZTQ2ZjYzZWEyNzNh
YTkwNWNkNmRjYmI0NjMuLjVhZDkyZThhNGU1NGZmMDkyZGY0NDliMjhiZTNjMjU3Y2IwZjYxOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBS
ZWN0RWRnZXM8Ym9vbD4gZWRnZVBpbm5lZFN0YXRlKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVXNl
clNjcm9sbFByb2dyZXNzKCkgY29uc3Q7CisgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNz
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhib29sKTsKIAogICAg
IGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA4
OTM4ODEyZDEwN2E1YjUyNWY2MjlhZmFjYzNiZjc4NGM1YTg0YWE4Li44NWI5MGM3ODZkM2EyNjBm
NTA3OTA5YTY5NGVkZDEyMGVlOGNhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtODAsMTEgKzgwLDE0
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0
ZVZpc2libGVMZW5ndGhzKCkKIAogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRp
bmcpCiB7Ci0gICAgaWYgKCFzY3JvbGxpbmdOb2RlKCkuY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVl
bEV2ZW50LCBldmVudFRhcmdldGluZykKLSAgICAgICAgfHwgIW1fc2Nyb2xsQ29udHJvbGxlci5o
YW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpKQotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhh
bmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKKyAgICBib29sIHdhc0luVXNlclNjcm9sbCA9IG1f
c2Nyb2xsQ29udHJvbGxlci5pc1VzZXJTY3JvbGxJblByb2dyZXNzKCk7CisgICAgYm9vbCBoYW5k
bGVkID0gc2Nyb2xsaW5nTm9kZSgpLmNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZl
bnRUYXJnZXRpbmcpICYmIG1fc2Nyb2xsQ29udHJvbGxlci5oYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQpOworICAgIGJvb2wgaXNJblVzZXJTY3JvbGwgPSBtX3Njcm9sbENvbnRyb2xsZXIuaXNV
c2VyU2Nyb2xsSW5Qcm9ncmVzcygpOwogCi0gICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdDo6aGFuZGxlZCgpOworICAgIGlmIChpc0luVXNlclNjcm9sbCAhPSB3YXNJblVzZXJTY3Jv
bGwpCisgICAgICAgIHNjcm9sbGluZ05vZGUoKS5zZXRVc2VyU2Nyb2xsSW5Qcm9ncmVzcyhpc0lu
VXNlclNjcm9sbCk7CisKKyAgICByZXR1cm4gaGFuZGxlZCA/IFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdDo6aGFuZGxlZCgpIDogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVUaW1lcihGdW5j
dGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCAyMTU2NGJiNTI0ZDQ0NjEzMjUx
YmVkZjBhMmRlNGQ2NTRmYjY0NWQ3Li4xMTkzM2QyZDQyMjc4OGI3NzQ1MDlhZDZjMDY1NDA5MWIy
MDdkOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogI2lmIEVOQUJMRShTQ1JPTExJ
TkdfVEhSRUFEKQogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVGhyZWFkLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlTm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmg+CiAjZW5kaWYKIApAQCAtMTIzLDE3ICsxMjQsMjQgQEAgdm9pZCBF
dmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBX
ZWJXaGVlbEV2ZW50JiB3aGUKICAgICAgICAgICAgIHNjcm9sbGluZ1RyZWUtPnNldE1haW5GcmFt
ZUNhblJ1YmJlckJhbmQocnViYmVyQmFuZGFibGVFZGdlcyk7CiAKICAgICAgICAgYXV0byBwcm9j
ZXNzaW5nU3RlcHMgPSBzY3JvbGxpbmdUcmVlLT5kZXRlcm1pbmVXaGVlbEV2ZW50UHJvY2Vzc2lu
ZyhwbGF0Zm9ybVdoZWVsRXZlbnQpOworICAgICAgICBib29sIHVzZU1haW5UaHJlYWRGb3JTY3Jv
bGxpbmcgPSBwcm9jZXNzaW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVw
czo6TWFpblRocmVhZEZvclNjcm9sbGluZyk7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAg
ICAgIC8vIERlbGl2ZXIgY29udGludWluZyBzY3JvbGwgZ2VzdHVyZXMgZGlyZWN0bHkgdG8gdGhl
IHNjcm9sbGluZyB0aHJlYWQuCisgICAgICAgIGlmIChwbGF0Zm9ybVdoZWVsRXZlbnQucGhhc2Uo
KSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2hhbmdlZCAmJiBzY3JvbGxpbmdUcmVlLT5p
c1VzZXJTY3JvbGxJblByb2dyZXNzQXRFdmVudExvY2F0aW9uKHBsYXRmb3JtV2hlZWxFdmVudCkp
CisgICAgICAgICAgICB1c2VNYWluVGhyZWFkRm9yU2Nyb2xsaW5nID0gZmFsc2U7CisjZW5kaWYK
IAogICAgICAgICBzY3JvbGxpbmdUcmVlLT53aWxsUHJvY2Vzc1doZWVsRXZlbnQoKTsKIAotICAg
ICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50
LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgcGFnZUlELCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0gewotICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdTdGVwcy5j
b250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5n
KSkgeworICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdUcmVlLCB3
aGVlbEV2ZW50LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgdXNlTWFpblRo
cmVhZEZvclNjcm9sbGluZywgcGFnZUlELCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
eworICAgICAgICAgICAgaWYgKHVzZU1haW5UaHJlYWRGb3JTY3JvbGxpbmcpIHsKICAgICAgICAg
ICAgICAgICBzY3JvbGxpbmdUcmVlLT53aWxsU2VuZEV2ZW50VG9NYWluVGhyZWFkKHBsYXRmb3Jt
V2hlZWxFdmVudCk7CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hXaGVl
bEV2ZW50VmlhTWFpblRocmVhZChwYWdlSUQsIHdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcyk7
CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nVHJlZS0+d2FpdEZvckV2ZW50VG9CZVByb2Nlc3Nl
ZEJ5TWFpblRocmVhZChwbGF0Zm9ybVdoZWVsRXZlbnQpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
c2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nl
c3NpbmdTdGVwcyk7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQubmVlZHNNYWluVGhyZWFkUHJv
Y2Vzc2luZygpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>