<?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>232077</bug_id>
          
          <creation_ts>2021-10-21 06:41:35 -0700</creation_ts>
          <short_desc>[GTK][WPE] Use the display refresh to drive scrolling animations (sync scroll)</short_desc>
          <delta_ts>2021-11-03 07:38:17 -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=232432</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232534</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>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1807114</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-21 06:41:35 -0700</bug_when>
    <thetext>At the moment, both ScrollAnimator (used for synchronous scrolling) and ScrollingTreeScrollingNodeDelegateNicosia (used for asynchronous scrolling on GTK/WPE (and maybe other ports?)) use a timer running at 1/60 seconds to drive scrolling animations (flings and smooth scrolling, the latter also used for CSS scroll snapping). This means that if your screen isn&apos;t running at exactly 60Hz (or the timer is not exact) that you are liable to get perceptibly jittery scrolling as frames are duplicated or skipped. These animations should be driven by the display refresh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808883</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-26 09:11:02 -0700</bug_when>
    <thetext>Retitling this bug as it makes sense to split the work between sync (ScrollAnimator) and async (ScrollingTreeScrollingNodeDelegateNicosia) paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808891</commentid>
    <comment_count>2</comment_count>
      <attachid>442496</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-26 09:16:18 -0700</bug_when>
    <thetext>Created attachment 442496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808954</commentid>
    <comment_count>3</comment_count>
      <attachid>442496</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-26 11:22:54 -0700</bug_when>
    <thetext>Comment on attachment 442496
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Use the DisplayRefreshMonitor instead of a Timer to drive scrolling
&gt; +        animations in ScrollAnimator.

Things that animate on the main thread at the same frequency as Page::updateRendering() should, ideally, just be driven by Page::updateRendering which is already driven by a DisplayRefreshMonitor. So I&apos;m not sold that we need two more DisplayRefreshMonitor clients for these animations.

However, we don&apos;t have plumbing to keep Page::updateRendering() firing when a scroll animation is active, nor do we have code in document.runScrollSteps() that updates scroll animations, although this is probably the right place for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809227</commentid>
    <comment_count>4</comment_count>
      <attachid>442580</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-27 05:12:50 -0700</bug_when>
    <thetext>Created attachment 442580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809229</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-27 05:15:21 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 442496 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=442496&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Use the DisplayRefreshMonitor instead of a Timer to drive scrolling
&gt; &gt; +        animations in ScrollAnimator.
&gt; 
&gt; Things that animate on the main thread at the same frequency as
&gt; Page::updateRendering() should, ideally, just be driven by
&gt; Page::updateRendering which is already driven by a DisplayRefreshMonitor. So
&gt; I&apos;m not sold that we need two more DisplayRefreshMonitor clients for these
&gt; animations.
&gt; 
&gt; However, we don&apos;t have plumbing to keep Page::updateRendering() firing when
&gt; a scroll animation is active, nor do we have code in
&gt; document.runScrollSteps() that updates scroll animations, although this is
&gt; probably the right place for it.

hmm, so I didn&apos;t use document.runScrollSteps for this, it didn&apos;t feel like the right place but I&apos;m happy to make the change if you think it is. I think it&apos;d mean re-architecting this patch a fair bit; Chrome felt like a more suitable place to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809236</commentid>
    <comment_count>6</comment_count>
      <attachid>442583</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-27 06:23:04 -0700</bug_when>
    <thetext>Created attachment 442583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809322</commentid>
    <comment_count>7</comment_count>
      <attachid>442583</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-27 10:49:31 -0700</bug_when>
    <thetext>Comment on attachment 442583
Patch

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

&gt; Source/WebCore/page/Chrome.h:99
&gt; +    void registerActiveScrollAnimator(ScrollAnimator&amp;) override;
&gt; +    void serviceScrollAnimations();

It feels wrong to go via Chrome for this; Chrome is normally used to communicate with the WebKit layer, and there should be no need to do this here.

startAnimationCallback() should be able to invoke Page-level stuff via FrameView/RenderLayerScrollableaArea ScrollableArea subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809618</commentid>
    <comment_count>8</comment_count>
      <attachid>442686</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-28 02:58:38 -0700</bug_when>
    <thetext>Created attachment 442686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809619</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-28 02:59:51 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #8)
&gt; Created attachment 442686 [details]
&gt; Patch

Ah, I hadn&apos;t realised that ScrollView was abstract and FrameView was its only implementation. This version uses Document as originally suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810456</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-30 14:52:50 -0700</bug_when>
    <thetext>Bug 232534 does the equivalent hookup on the scrolling thread for macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810457</commentid>
    <comment_count>11</comment_count>
      <attachid>442686</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-30 14:56:11 -0700</bug_when>
    <thetext>Comment on attachment 442686
Patch

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

&gt; Source/WebCore/dom/Document.h:2167
&gt; +    Vector&lt;WeakPtr&lt;ScrollAnimator&gt;&gt; m_activeScrollAnimators;

It might be OK to just traverse the set of FrameView::m_scrollableAreas. Or at least store this as a WeakHashSet&lt;ScrollableArea&gt; in FrameView so it&apos;s next to the other one.

&gt; Source/WebCore/page/FrameView.h:742
&gt; +    void scrollAnimatorBecameActive() final;

Please use the ...withActiveScrollAnimations/setScrollAnimationInProgress terminology that&apos;s already in the scrolling tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810582</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-01 03:24:37 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #11)
&gt; Comment on attachment 442686 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=442686&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:2167
&gt; &gt; +    Vector&lt;WeakPtr&lt;ScrollAnimator&gt;&gt; m_activeScrollAnimators;
&gt; 
&gt; It might be OK to just traverse the set of FrameView::m_scrollableAreas. Or
&gt; at least store this as a WeakHashSet&lt;ScrollableArea&gt; in FrameView so it&apos;s
&gt; next to the other one.

I&apos;d certainly like to avoid traversal if it&apos;s not necessary given this will be happening every frame, even if the tree is unlikely to ever be particularly deep. No objection to this living in FrameView.

&gt; &gt; Source/WebCore/page/FrameView.h:742
&gt; &gt; +    void scrollAnimatorBecameActive() final;
&gt; 
&gt; Please use the ...withActiveScrollAnimations/setScrollAnimationInProgress
&gt; terminology that&apos;s already in the scrolling tree.

There is no setScrollAnimationInProgress present in the tree at all... I see ScrollableArea::setScrollAnimationStatus which has a comment that it applies to CSSOM smooth scrolling (maybe that should have a different name?)

I also don&apos;t see withActiveScrollAnimations - I see nodesWithActiveScrollSnap, but again, that&apos;s a different thing... If you have something very specific in mind, more detail would definitely help.

Maybe I need to rebase again...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810583</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-01 03:31:25 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #11)
&gt; Please use the ...withActiveScrollAnimations/setScrollAnimationInProgress
&gt; terminology that&apos;s already in the scrolling tree.

Ok, neither of these things were in the tree when this patch was submitted or even when this comment was written.

Perhaps I need to learn to be less sensitive, but I&apos;m not hugely happy about the wording here that suggests I haven&apos;t done due-diligence and used an obviously named API when I couldn&apos;t have possibly done that.

I&apos;ll rebase my patch and work on top of the work that has landed in the interim period between initial submission and now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810654</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-01 09:32:31 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #13)
&gt; (In reply to Simon Fraser (smfr) from comment #11)
&gt; &gt; Please use the ...withActiveScrollAnimations/setScrollAnimationInProgress
&gt; &gt; terminology that&apos;s already in the scrolling tree.
&gt; 
&gt; Ok, neither of these things were in the tree when this patch was submitted
&gt; or even when this comment was written.
&gt; 
&gt; Perhaps I need to learn to be less sensitive, but I&apos;m not hugely happy about
&gt; the wording here that suggests I haven&apos;t done due-diligence and used an
&gt; obviously named API when I couldn&apos;t have possibly done that.
&gt; 
&gt; I&apos;ll rebase my patch and work on top of the work that has landed in the
&gt; interim period between initial submission and now.

Sorry about that; you&apos;re right that I was referring to something that was very new. But the tree did already have code that referred to &quot;active animated scrolls&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811082</commentid>
    <comment_count>15</comment_count>
      <attachid>443078</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-02 04:16:12 -0700</bug_when>
    <thetext>Created attachment 443078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811083</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-02 04:18:09 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #15)
&gt; Created attachment 443078 [details]
&gt; Patch

If this isn&apos;t what you mean, I&apos;d really appreciate some very specific feedback so that we can progress here because I&apos;m otherwise clearly not understanding something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811089</commentid>
    <comment_count>17</comment_count>
      <attachid>443081</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-02 06:23:25 -0700</bug_when>
    <thetext>Created attachment 443081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811129</commentid>
    <comment_count>18</comment_count>
      <attachid>443081</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-11-02 08:45:39 -0700</bug_when>
    <thetext>Comment on attachment 443081
Patch

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

&gt; Source/WebCore/dom/Document.cpp:4358
&gt; +    if (auto* animator = scrollableArea-&gt;existingScrollAnimator())
&gt; +        animator-&gt;serviceScrollAnimations();
&gt; +    return scrollableArea-&gt;userScrollAnimationInProgress();

Maybe serviceScrollAnimations should return an enum that&apos;s like &quot;stop&quot; or &quot;keep going&quot;. Not necessary in this patch.

&gt; Source/WebCore/platform/ScrollAnimator.cpp:462
&gt; +        m_scrollController.animationCallback(MonotonicTime::now());

Ideally the entire rendering update would use the same snapshotted time. As a stepping stone, pass the MonotonicTime in to serviceScrollAnimations().

&gt; Source/WebCore/platform/ScrollableArea.h:356
&gt; +    bool userScrollAnimationInProgress() { return m_userScrollAnimationInProgress; }

Let&apos;s make this
bool hasActiveScrollAnimation() const

&gt; Source/WebCore/platform/ScrollableArea.h:357
&gt; +    virtual void setUserScrollAnimationInProgress(bool inProgress) { m_userScrollAnimationInProgress = inProgress; }

I think it would be better named didStartScrollAnimation() - I don&apos;t think you care about the &quot;did end&quot; case.

&gt; Source/WebCore/platform/ScrollableArea.h:419
&gt; +    bool m_userScrollAnimationInProgress { false };

I don&apos;t think we need this state here; ScrollingEffectsController already has m_isRunningAnimatingCallback, so ScrollableArea can just call through ScrollAnimator to get this state from its ScrollingEffectsController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811436</commentid>
    <comment_count>19</comment_count>
      <attachid>443188</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-11-03 04:19:04 -0700</bug_when>
    <thetext>Created attachment 443188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811463</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-03 07:37:11 -0700</bug_when>
    <thetext>Committed r285205 (243831@main): &lt;https://commits.webkit.org/243831@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443188.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811464</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-03 07:38:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84973758&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442496</attachid>
            <date>2021-10-26 09:16:18 -0700</date>
            <delta_ts>2021-10-27 05:12:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232077-20211026171617.patch</filename>
            <type>text/plain</type>
            <size>16492</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhlMzlkZjE3NGYwNGZl
NDVkNjZkY2ViYjdlM2U5ODViODBiMTYxMi4uYWMxZTI3NGY0MDdhNWIxNWJjMWQ3ZTU5OTg4NjI5
ZjQ3ODkwZGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI2ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSB0aGUg
ZGlzcGxheSByZWZyZXNoIHRvIGRyaXZlIHNjcm9sbGluZyBhbmltYXRpb25zIChzeW5jIHNjcm9s
bCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjA3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0
aGUgRGlzcGxheVJlZnJlc2hNb25pdG9yIGluc3RlYWQgb2YgYSBUaW1lciB0byBkcml2ZSBzY3Jv
bGxpbmcKKyAgICAgICAgYW5pbWF0aW9ucyBpbiBTY3JvbGxBbmltYXRvci4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwYWdl
L0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmRpc3BsYXlSZWZyZXNoTW9u
aXRvckZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICog
cGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c3RhcnRBbmltYXRpb25DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c3RvcEFuaW1hdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpkaXNwbGF5UmVmcmVzaEZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpkaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmRpc3BsYXlJRCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
OjpkaXNwbGF5SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmRp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpyZXRhcmdldEFuaW1hdGVkU2Nyb2xsQnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6ZGlz
cGxheUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWE6OmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmg6CisKIDIwMjEtMTAtMjUgIENocmlzIExv
cmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUkVHUkVTU0lPTihy
Mjg0NTk2KTogU2Nyb2xsaW5nIHNvbWV0aW1lcyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdl
IGR1cmluZyBzbW9vdGggbW91c2Utd2hlZWwgc2Nyb2xsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
aW5kZXggYzEzZjZjZjlkNmUxNzg3ZWE2MDU4OWZlNDZhMmUxNzdkOTM3NDgxZC4uNDZmNmU5MDhi
OWI2MjY4OGY5MWE2MGEwM2Y5NjhkYTkwYzdmNTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApA
QCAtNTU2LDYgKzU1NiwxMSBAQCB2b2lkIENocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcgogICAgIG1fcGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlELCBub21pbmFsRnJhbWVJbnRlcnZhbCk7CiB9
CiAKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIENocm9tZTo6ZGlzcGxheVJlZnJlc2hN
b25pdG9yRmFjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmRpc3BsYXlSZWZy
ZXNoTW9uaXRvckZhY3RvcnkoKTsKK30KKwogYm9vbCBDaHJvbWU6OnNlbGVjdEl0ZW1Xcml0aW5n
RGlyZWN0aW9uSXNOYXR1cmFsKCkKIHsKICAgICByZXR1cm4gbV9jbGllbnQuc2VsZWN0SXRlbVdy
aXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDM3MjE4MmZl
YzYyMGZlZDlkZmU3M2RhODkyMjQ2YWY5MTNjNTUzM2UuLmJkZmVjOTlhNjBkMzU0ZjBmODc1NmZl
MTU3ZjQ1ZjgwZWMxNjIyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtOTMsNiArOTMsNyBAQCBw
dWJsaWM6CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgc3Rk
OjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+KSBvdmVycmlkZTsKKyAgICBEaXNwbGF5UmVmcmVz
aE1vbml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggZjZjY2UyZWRjOGQ2Y2Y0NzA1OTg1NzA5YjYw
OTUxOGZhZmVjOTNmNi4uMmQyNTU5Y2RmZTdmYjk1ODFkN2M5NDYwZTRjOGQzZTY5ZDA3ODc4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTsKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnk7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIAogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CkBAIC04MCw2ICs4MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZv
cm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVz
UGVyU2Vjb25kKSA9IDA7CisgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5
KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6
ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGNjMGRlZjlkZTJmYTUwM2U4ZjgwNTI5ZTUyMzc3
Y2ExMTMxNmUyOTAuLjQ1NzZiMTFlYmE5ZWJhMjY3NmQ5M2ZmODJhOWY1MTU0OTJiNWZiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTMyLDEwICsz
MiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgi
CiAKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCIKICNpbmNsdWRlICJM
YXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAi
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbEV4dGVudHMuaCIK
ICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhcnNDb250cm9s
bGVyLmgiCkBAIC01NCw5ICs1OCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4g
U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsCiBTY3JvbGxB
bmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQog
ICAgIDogbV9zY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fc2Nyb2xsQ29u
dHJvbGxlcigqdGhpcykKLSAgICAsIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyKCp0
aGlzLCAmU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVk
KQogICAgICwgbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKG1ha2VVbmlxdWU8S2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvcj4oKnRoaXMsIG1fc2Nyb2xsQ29udHJvbGxlcikpCiB7CisgICAgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLndpbmRvd1NjcmVlbkRp
ZENoYW5nZShtX3Njcm9sbGFibGVBcmVhLmRpc3BsYXlJRCgpLCAqdGhpcyk7CiB9CiAKIFNjcm9s
bEFuaW1hdG9yOjp+U2Nyb2xsQW5pbWF0b3IoKQpAQCAtMzg0LDIwICszODgsMTYgQEAgc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbEFuaW1hdG9y
OjpjcmVhdGVUaW1lcihGdW4KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6c3RhcnRBbmltYXRpb25D
YWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpCiB7Ci0gICAgaWYgKG1fc2Nyb2xs
Q29udHJvbGxlckFuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgaWYgKG1fc2Nyb2xsQW5p
bWF0aW9uU2NoZWR1bGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Njcm9sbENvbnRyb2xs
ZXJBbmltYXRpb25UaW1lci5zdGFydFJlcGVhdGluZygxX3MgLyA2MC4pOworICAgIG1fc2Nyb2xs
QW5pbWF0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NoZWR1bGVBbmltYXRpb24oKnRoaXMpOwogfQogCiB2b2lk
IFNjcm9sbEFuaW1hdG9yOjpzdG9wQW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXImKQogewotICAgIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyLnN0b3Ao
KTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRp
bWVyRmlyZWQoKQotewotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5hbmltYXRpb25DYWxsYmFjayhN
b25vdG9uaWNUaW1lOjpub3coKSk7CisgICAgbV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQgPSBm
YWxzZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ2NSw0ICs0NjUsMTYgQEAgZmxvYXQg
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbE9mZnNldEFkanVzdGVkRm9yU25hcHBpbmcoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMsIGNvbnMKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVk
U2Nyb2xsRGVzdGluYXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eUluU2Nyb2xsQXhpcywg
b3JpZ2luYWxPZmZzZXQpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpkaXNwbGF5UmVmcmVz
aEZpcmVkKCkKK3sKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIuYW5pbWF0aW9uQ2FsbGJhY2soTW9u
b3RvbmljVGltZTo6bm93KCkpOworICAgIGlmIChtX3Njcm9sbEFuaW1hdGlvblNjaGVkdWxlZCkK
KyAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNj
aGVkdWxlQW5pbWF0aW9uKCp0aGlzKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9y
eSogU2Nyb2xsQW5pbWF0b3I6OmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkoKSBjb25zdAor
eworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rv
cnkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNmI0YTFhMTg1MDA0Nzg5NTYwYzFkYzJiOTlkODFhMmM0
MmY3Yjg3ZC4uM2Y5ZGY0ZWZhMTZlYzUzNWMxMTY5MGEwMWZmOWQwNDRkNzdkZjU4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0zMSw2ICszMSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgiCkBAIC01Myw3ICs1NCw3
IEBAIHN0cnVjdCBTY3JvbGxFeHRlbnRzOwogCiBjbGFzcyBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlclRpbWVyOwogCi1jbGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXJDbGllbnQgeworY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwcml2YXRlIFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LCBwdWJsaWMgRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBjcmVhdGUoU2Nyb2xsYWJsZUFy
ZWEmKTsKQEAgLTEyMyw2ICsxMjQsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0U2Nyb2xs
U25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAgICB2b2lkIHJlc25h
cEFmdGVyTGF5b3V0KCk7CiAKKyAgICB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoKSBmaW5hbDsK
KyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JG
YWN0b3J5KCkgY29uc3QgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1BbGxvd3NTY3JvbGxBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAg
LTE3Niw3ICsxODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsYWJsZUFyZWEmIG1fc2Nyb2xs
YWJsZUFyZWE7CiAgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gbV93aGVlbEV2ZW50
VGVzdE1vbml0b3I7CiAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgbV9zY3JvbGxDb250
cm9sbGVyOwotICAgIFRpbWVyIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyOworICAg
IGJvb2wgbV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OwogICAgIEZsb2F0UG9p
bnQgbV9jdXJyZW50UG9zaXRpb247CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvcj4gbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCBjOTJjZTJlNWM5MThlY2UxYTVkNDgwYzBhZDdl
YThmZjY0NTk1MDRiLi41NjQ1MTFiMTdjMDQ2M2YxYWE0NjFjYzg5MTIwZTUzZmM1MTY0MWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtMTU5MSw2ICsxNTkxLDI0
IEBAIFN0cmluZyBTY3JvbGxWaWV3OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gbWFrZVN0cmluZygiU2Nyb2xsVmlldyAweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odGhpcyksIExvd2VyY2FzZSkpOwogfQogCitQbGF0Zm9ybURpc3BsYXlJRCBTY3JvbGxW
aWV3OjpkaXNwbGF5SUQoKSBjb25zdAoreworICAgIEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RX
aW5kb3coKTsKKyAgICBpZiAoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gd2luZG93LT5kaXNwbGF5SUQoKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9y
eSogU2Nyb2xsVmlldzo6ZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0Cit7Cisg
ICAgSG9zdFdpbmRvdyogd2luZG93ID0gaG9zdFdpbmRvdygpOworICAgIGlmICghd2luZG93KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiB3aW5kb3ctPmRpc3BsYXlSZWZy
ZXNoTW9uaXRvckZhY3RvcnkoKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogdm9pZCBT
Y3JvbGxWaWV3OjpwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmgKaW5kZXggMDc5ZjcwMjJjMjVmMzljOGRlNGM0MjgzZTRiZDk3NzEzNzg1MmY5
OC4uMmQ1NmU5ZWEzZWJmZmVlNGI1NTI1MjMzMmE3Y2NiMGNmYmMzMjBhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNDc3LDYgKzQ3Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBT
dHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IGZpbmFsOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
ckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkoKSBjb25zdCBmaW5hbDsKIAog
ICAgIHZvaWQgaW5pdCgpOwogICAgIHZvaWQgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggZmU0MmM0ZWM2ZWJhNGYwNDhmOTRmZWY1OTA0OTM2
OTBiZTUzNTY1YS4uNjgwMTcxY2E5ODUyMjZiNjQ4NDlkNDY5NDA2MzE5Zjc3YmFiMmNkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0zOCw2ICszOCw3IEBA
IGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGlzcGxh
eVJlZnJlc2hNb25pdG9yRmFjdG9yeTsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiBjbGFzcyBMYXlvdXRQb2ludDsKQEAgLTUxLDYgKzUyLDggQEAgY2xhc3MgVGls
ZWRCYWNraW5nOwogCiBlbnVtIGNsYXNzIFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlIDogdWludDhf
dDsKIAordXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKKwogaW5saW5lIGludCBv
ZmZzZXRGb3JPcmllbnRhdGlvbihTY3JvbGxPZmZzZXQgb2Zmc2V0LCBTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CkBAIC0zNTMs
NiArMzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gMS4wZjsKICAgICB9CiAKKyAgICB2
aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNo
TW9uaXRvckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3RlY3RlZDoK
ICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflNjcm9sbGFibGVBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggYmYwMzhiZDVmYjJh
ZWJiN2QzNjMxYzk3MjhkZDYwZmYzYWFjOGRlZi4uNDc2OWYxZDU4ZjhiYzNjYjQyZjhjYzI0ZTdk
NThhYjAyMzlmOTdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMTIwLDEyICsxMjAsMTEgQEAgYm9vbCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbChGbG9hdFBv
aW50IG5ld0Rlc3RpbmF0aW8KIAogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0
YXJnZXRBbmltYXRlZFNjcm9sbEJ5KEZsb2F0U2l6ZSBvZmZzZXQpCiB7Ci0gICAgaWYgKCFpczxT
Y3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpCisgICAgaWYg
KCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkgfHwg
IW1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgcmV0YXJnZXRBbmltYXRlZFNjcm9s
bEJ5ICIgPDwgb2Zmc2V0KTsKIAotICAgIEFTU0VSVChtX2N1cnJlbnRBbmltYXRpb24tPmlzQWN0
aXZlKCkpOwogICAgIGlmIChhdXRvIGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9jdXJyZW50QW5pbWF0
aW9uLT5kZXN0aW5hdGlvbk9mZnNldCgpKQogICAgICAgICByZXR1cm4gbV9jdXJyZW50QW5pbWF0
aW9uLT5yZXRhcmdldEFjdGl2ZUFuaW1hdGlvbigqZGVzdGluYXRpb25PZmZzZXQgKyBvZmZzZXQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllclVwZGF0ZXIuaAppbmRleCBlZWY3YWZkNTBlOTRlZTAxMzlkNmJjNDZmZmQ0MTUwM2Yz
OWUyNjFiLi4wZjQ4Y2Q4Yjc4NTkzNjgzMjIxNjQ0ZTU3NTQ2NjRlZmVjNjdiMDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJV
cGRhdGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllclVwZGF0ZXJDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50KCkg
PSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVyc1Nvb24oR3JhcGhpY3NMYXll
clVwZGF0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5
KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgPSAwOworICAgIHZpcnR1YWwgRGlzcGxh
eVJlZnJlc2hNb25pdG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNv
bnN0ID0gMDsKIH07CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJVcGRhdGVyIGZpbmFsIDogcHVibGlj
IERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDAxOGNiNjBkMWJkNThlNzBj
OWFlNDU5OTQ2YjFlNjA3ZTEzNThkYmEuLmQ4ODY5YTg1ZjA1MzhjODQwMTVlMTk4YWM4MWJkMzdj
YmFmNjRmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC03MjAsNyArNzIwLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmZsdXNoTGF5ZXJzU29vbihHcmFwaGljc0xheWVyVXBkYXRlciYpCiAgICAgc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKIH0KIAotRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSog
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkKK0Rp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlzcGxh
eVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBhZ2UoKS5jaHJv
bWUoKS5jbGllbnQoKS5kaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggYWE4
ZGU0YmFmNmYxYjdjOTYzYjE0NTkyOTFjOTRjNTEzNTBlYzM1YS4uMmUxOGYzMDBlMDVjY2IyZjdh
MTYwNjQ1YjFhZTNlMmUxNDliMzkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzI1LDYgKzMyNSw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZENoYW5nZVBsYXRmb3JtTGF5ZXJGb3JMYXllcihjb25zdCBHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNo
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAorICAgIC8vIEdyYXBoaWNzTGF5ZXJV
cGRhdGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFj
dG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IGZpbmFsOworCiAgICAg
dm9pZCBsYXllclRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZChjb25zdCBHcmFwaGljc0xheWVyKiwg
Ym9vbCAvKnVzaW5nVGlsZWRCYWNraW5nKi8pOwogICAgIAogICAgIGJvb2wgYWNjZWxlcmF0ZWRE
cmF3aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZDsgfQpAQCAtNDA0LDcgKzQwNyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gR3JhcGhpY3NM
YXllclVwZGF0ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIGZsdXNoTGF5ZXJzU29v
bihHcmFwaGljc0xheWVyVXBkYXRlciYpIGZpbmFsOwotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
ckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkoKSBmaW5hbDsKIAogICAgIC8v
IENvcHkgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHJlbGF0ZWQgZmxhZ3MgZnJvbSBTZXR0
aW5ncwogICAgIHZvaWQgY2FjaGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nRmxhZ3MoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmNwcAppbmRleCA3YTRkYzJjNjJmNWUxZGFkMDcwOTAyNTY4ZDFhNmMyODg5MTVhNTc5Li45YzJh
ZjcwZGNiNzYwYmY5YzBkN2Y3MjNlMTAzYmM5YWQ2YTU5NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0x
ODQwLDQgKzE4NDAsMTQgQEAgU3RyaW5nIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmRlYnVn
RGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyLmRlYnVnRGVzY3JpcHRpb24o
KTsKIH0KIAorUGxhdGZvcm1EaXNwbGF5SUQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6ZGlz
cGxheUlEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci5wYWdlKCkuZGlzcGxheUlEKCk7
Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIFJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6OmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkoKSBjb25zdAoreworICAgIHJldHVy
biBtX2xheWVyLmNvbXBvc2l0b3IoKS5kaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IDAzNjU0YzcwYmIzYTBjM2Q2
NTE2YWFmYzI3YTViMTZmNjI1NDI5ZDYuLmFmMzRkM2MyZDcxZmY1Y2RlNDA5NGY5NGMyNjdiYWQw
NjkzYTgxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTk1LDYgKzE5NSw5IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICBQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQoKSBjb25zdCBmaW5hbDsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JG
YWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CisKICAg
ICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBjb250ZW50
c1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIHJlYWNoYWJsZVRvdGFsQ29udGVudHNT
aXplKCkgY29uc3QgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442580</attachid>
            <date>2021-10-27 05:12:50 -0700</date>
            <delta_ts>2021-10-27 06:22:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232077-20211027131248.patch</filename>
            <type>text/plain</type>
            <size>15776</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhlMzlkZjE3NGYwNGZl
NDVkNjZkY2ViYjdlM2U5ODViODBiMTYxMi4uZDAxNmNmMmE4MmJmNzdjNmQ3MmFiZDhhNTRkMThk
NmIwNDA3NDBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEwLTI2ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSB0aGUg
ZGlzcGxheSByZWZyZXNoIHRvIGRyaXZlIHNjcm9sbGluZyBhbmltYXRpb25zIChzeW5jIHNjcm9s
bCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjA3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlcnZp
Y2Ugc2Nyb2xsIGFuaW1hdGlvbnMgYXMgcGFydCBvZiB0aGUgc2Nyb2xsIHBoYXNlIGluCisgICAg
ICAgIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZywgd2hpY2ggaXMgZHJpdmVuIGJ5IHRoZSBkaXNwbGF5
IHJlZnJlc2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lOjpyZWdpc3RlckFjdGl2ZVNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0
ZVJlbmRlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6c3RhcnRBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvcjo6c3RvcEFuaW1hdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxB
bmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guaDoKKwogMjAyMS0xMC0yNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSRUdSRVNTSU9OKHIyODQ1OTYpOiBTY3JvbGxpbmcg
c29tZXRpbWVzIGp1bXBzIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UgZHVyaW5nIHNtb290aCBtb3Vz
ZS13aGVlbCBzY3JvbGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjMTNmNmNmOWQ2ZTE3
ODdlYTYwNTg5ZmU0NmEyZTE3N2Q5Mzc0ODFkLi5lYjM2NDg3YzliMzAzNjJhMTY5ODVlOWJmNTM1
NTAzYTg2YzliYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZURhdGEuaCIKICNpbmNs
dWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC01NTYsNiArNTU3LDMwIEBAIHZvaWQgQ2hyb21l
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBzdGQ6
Om9wdGlvbmFsPEZyCiAgICAgbV9wYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQs
IG5vbWluYWxGcmFtZUludGVydmFsKTsKIH0KIAordm9pZCBDaHJvbWU6OnJlZ2lzdGVyQWN0aXZl
U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsQW5pbWF0b3ImIGFuaW1hdG9yKQoreworICAgIG1fYWN0aXZl
U2Nyb2xsQW5pbWF0b3JzLmFwcGVuZChhbmltYXRvcik7CisgICAgbV9wYWdlLnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKHsgUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsIH0pOworfQorCit2b2lk
IENocm9tZTo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIGlmIChtX2FjdGl2ZVNj
cm9sbEFuaW1hdG9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWFrUHRyPFNjcm9sbEFuaW1hdG9yPj4gYW5pbWF0aW9uczsKKyAgICBhbmltYXRpb25zLnN3YXAo
bV9hY3RpdmVTY3JvbGxBbmltYXRvcnMpOworCisgICAgd2hpbGUgKCFhbmltYXRpb25zLmlzRW1w
dHkoKSkgeworICAgICAgICBhdXRvIGFuaW1hdG9yID0gYW5pbWF0aW9ucy50YWtlTGFzdCgpOwor
ICAgICAgICBpZiAoYW5pbWF0b3IgJiYgYW5pbWF0b3ItPnNlcnZpY2VTY3JvbGxBbmltYXRpb25z
KCkpCisgICAgICAgICAgICBtX2FjdGl2ZVNjcm9sbEFuaW1hdG9ycy5hcHBlbmQoV1RGTW92ZShh
bmltYXRvcikpOworICAgIH0KKworICAgIGlmICghbV9hY3RpdmVTY3JvbGxBbmltYXRvcnMuaXNF
bXB0eSgpKQorICAgICAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyBSZW5kZXJp
bmdVcGRhdGVTdGVwOjpTY3JvbGwgfSk7Cit9CisKIGJvb2wgQ2hyb21lOjpzZWxlY3RJdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LnNlbGVjdEl0
ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCAzNzIx
ODJmZWM2MjBmZWQ5ZGZlNzNkYTg5MjI0NmFmOTEzYzU1MzNlLi5jYzkxNGJhNWQyY2FmZWYwNzRh
MjkxNDU4ZTEwZGI3M2UyOTNlYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1ZpZXc7CkBAIC01NSw2ICs1Niw3IEBAIGNsYXNz
IFBhZ2U7CiBjbGFzcyBQb3B1cE1lbnU7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBQ
b3B1cE9wZW5pbmdPYnNlcnZlcjsKK2NsYXNzIFNjcm9sbEFuaW1hdG9yOwogY2xhc3MgU2VhcmNo
UG9wdXBNZW51OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0OwpAQCAtOTMsNiArOTUsOCBAQCBwdWJs
aWM6CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgc3RkOjpv
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQWN0
aXZlU2Nyb2xsQW5pbWF0b3IoU2Nyb2xsQW5pbWF0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
cnZpY2VTY3JvbGxBbmltYXRpb25zKCk7CiAKICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0yMDcsNiArMjExLDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7
CiAgICAgQ2hyb21lQ2xpZW50JiBtX2NsaWVudDsKICAgICBWZWN0b3I8UG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXIqPiBtX3BvcHVwT3BlbmluZ09ic2VydmVyczsKKyAgICBWZWN0b3I8V2Vha1B0cjxTY3Jv
bGxBbmltYXRvcj4+IG1fYWN0aXZlU2Nyb2xsQW5pbWF0b3JzOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCBtX2lzRGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVz
c2VkIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTJiMmI1ZjYwNWIz
N2MxMTg1YmY3NWVlYzNkYzkzNmE0MmEyNjU5Zi4uNWE1NTE4YjEyYjMwMGU5ODAxZjM3MzQ1ODY5
NjA1YzQ2Mzg5NzIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNTU4LDYgKzE1NTgsOCBAQCB2
b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAKICAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVw
ID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CiAgICAgICAgIG1fcmVuZGVyaW5n
VXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShzdGVwKTsKKyAgICAgICAgaWYgKHN0
ZXAgPT0gUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsKQorICAgICAgICAgICAgY2hyb21lKCku
c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKICAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRv
Y3VtZW50RnVuY3Rpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cu
aAppbmRleCBmNmNjZTJlZGM4ZDZjZjQ3MDU5ODU3MDliNjA5NTE4ZmFmZWM5M2Y2Li4yYjlkODlh
ZmM5MDQ3MjU0MjQxNTQ3ZjJmZTc1ODRmYTk2NjEyN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
SG9zdFdpbmRvdy5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEN1cnNvcjsKIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVy
OworY2xhc3MgU2Nyb2xsQW5pbWF0b3I7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50
OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKQEAgLTgwLDYgKzgxLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJT
ZWNvbmQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBY3RpdmVTY3JvbGxBbmltYXRv
cihTY3JvbGxBbmltYXRvciYpID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjcmVlblNp
emUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6
ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAppbmRleCBjYzBkZWY5ZGUyZmE1MDNlOGY4MDUyOWU1MjM3N2NhMTEzMTZlMjkwLi42NDY2MzIz
OWRlMDI0YWE4NzdhMmFiMjRiN2M0OWRjYzc4YjM2YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01NCw3ICs1NCw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsCiBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogICAgIDogbV9zY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkK
ICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKLSAgICAsIG1fc2Nyb2xsQ29udHJvbGxl
ckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xsZXJB
bmltYXRpb25UaW1lckZpcmVkKQogICAgICwgbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKG1h
a2VVbmlxdWU8S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcj4oKnRoaXMsIG1fc2Nyb2xsQ29udHJv
bGxlcikpCiB7CiB9CkBAIC0zODQsMjAgKzM4MywxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRpbWVyKEZ1
bgogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAgICBpZiAobV9zY3JvbGxDb250cm9sbGVyQW5pbWF0
aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICBpZiAobV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVy
LnN0YXJ0UmVwZWF0aW5nKDFfcyAvIDYwLik7CisgICAgbV9zY3JvbGxBbmltYXRpb25TY2hlZHVs
ZWQgPSB0cnVlOworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JCZWNhbWVBY3Rp
dmUoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6c3RvcEFuaW1hdGlvbkNhbGxiYWNrKFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAgICBtX3Njcm9sbENvbnRyb2xsZXJBbmlt
YXRpb25UaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRy
b2xsZXJBbmltYXRpb25UaW1lckZpcmVkKCkKLXsKLSAgICBtX3Njcm9sbENvbnRyb2xsZXIuYW5p
bWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGltZTo6bm93KCkpOworICAgIG1fc2Nyb2xsQW5pbWF0
aW9uU2NoZWR1bGVkID0gZmFsc2U7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00NjUsNCAr
NDYwLDEwIEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxPZmZzZXRBZGp1c3RlZEZvclNu
YXBwaW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zCiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29u
dHJvbGxlci5hZGp1c3RlZFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2Np
dHlJblNjcm9sbEF4aXMsIG9yaWdpbmFsT2Zmc2V0KTsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRv
cjo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5h
bmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lOjpub3coKSk7CisgICAgcmV0dXJuIG1fc2Ny
b2xsQW5pbWF0aW9uU2NoZWR1bGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2YjRhMWExODUwMDQ3ODk1
NjBjMWRjMmI5OWQ4MWEyYzQyZjdiODdkLi45ZDA2OTEzN2Q5ZWIwODViZjFiNzJiY2ZlNjU5MmNh
NzNhYmEzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs1NCw3
IEBAIHN0cnVjdCBTY3JvbGxFeHRlbnRzOwogCiBjbGFzcyBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlclRpbWVyOwogCi1jbGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXJDbGllbnQgeworY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8U2Nyb2xsQW5pbWF0b3I+LCBwcml2YXRlIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBjcmVhdGUoU2Nyb2xsYWJs
ZUFyZWEmKTsKQEAgLTEyMywxMyArMTI0LDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBMYXlvdXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHZvaWQg
cmVzbmFwQWZ0ZXJMYXlvdXQoKTsKIAorICAgIGJvb2wgc2VydmljZVNjcm9sbEFuaW1hdGlvbnMo
KTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFsbG93c1Njcm9sbEFu
aW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIG5v
dGlmeVBvc2l0aW9uQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKTsKIAotICAgIHZvaWQg
c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHVwZGF0ZUFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOwogCiAgICAgRmxvYXRQb2ludCBvZmZzZXRG
cm9tUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0OwpAQCAtMTc2LDcg
KzE3OCw3IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxhYmxlQXJlYSYgbV9zY3JvbGxhYmxlQXJl
YTsKICAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZlbnRUZXN0TW9u
aXRvcjsKICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciBtX3Njcm9sbENvbnRyb2xsZXI7
Ci0gICAgVGltZXIgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXI7CisgICAgYm9vbCBt
X3Njcm9sbEFuaW1hdGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CiAgICAgRmxvYXRQb2ludCBtX2N1
cnJlbnRQb3NpdGlvbjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yPiBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCmluZGV4IGM5MmNlMmU1YzkxOGVjZTFhNWQ0ODBjMGFkN2VhOGZmNjQ1
OTUwNGIuLmY4YjRhY2ZlODBmNDM2NTYxYzExM2Y3YjBlN2YwZTc1ODJhNWYwYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xNTkxLDYgKzE1OTEsMTcgQEAgU3Ry
aW5nIFNjcm9sbFZpZXc6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJTY3JvbGxWaWV3IDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0
aGlzKSwgTG93ZXJjYXNlKSk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQW5pbWF0b3JC
ZWNhbWVBY3RpdmUoKQoreworICAgIEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RXaW5kb3coKTsK
KyAgICBpZiAoIXdpbmRvdykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRvdy0+cmVnaXN0ZXJBY3RpdmVTY3JvbGxBbmlt
YXRvcihzY3JvbGxBbmltYXRvcigpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogdm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCopCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKaW5kZXggMDc5ZjcwMjJjMjVmMzljOGRlNGM0MjgzZTRiZDk3NzEzNzg1
MmY5OC4uYzcxNzBhOTdlOWZiNzcxN2UzZTc2Mzk3ZGZlNjI1NDE1MzM0NzgwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNDc3LDYgKzQ3Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2Ny
b2xsQW5pbWF0b3JCZWNhbWVBY3RpdmUoKSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdCgpOwogICAg
IHZvaWQgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCmluZGV4IDMyZGRhY2EwYWFiZWExYzkzN2VlYTZhZmZkMTc1N2IwOTcwMTI1YTAuLmQyNjYz
ZDBmZDljZmU0NDc3OTBmYzE4MzQ5ODYxMDM2MDFiNzkxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTI0OCw2ICsyNDgsMTEgQEAgdm9pZCBTY3Jv
bGxhYmxlQXJlYTo6c2V0U2Nyb2xsUG9zaXRpb25Gcm9tQW5pbWF0aW9uKGNvbnN0IFNjcm9sbFBv
c2l0aW9uJiBwb3NpdGkKICAgICBzY3JvbGxQb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOwogfQog
Cit2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSgpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OndpbGxT
dGFydExpdmVSZXNpemUoKQogewogICAgIGlmIChtX2luTGl2ZVJlc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGZlNDJjNGVjNmViYTRmMDQ4Zjk0ZmVm
NTkwNDkzNjkwYmU1MzU2NWEuLmNmZWVhYmM5MWMxOGM4MmU5ZTMyNjJiMjg0YTcwZTExOGNiMDhh
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMzUzLDYg
KzM1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAgfQogCisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbEFuaW1hdG9yQmVjYW1lQWN0aXZlKCk7CisKIHByb3RlY3RlZDoKICAg
ICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgflNjcm9sbGFibGVBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggYmYwMzhiZDVmYjJhZWJi
N2QzNjMxYzk3MjhkZDYwZmYzYWFjOGRlZi4uNDc2OWYxZDU4ZjhiYzNjYjQyZjhjYzI0ZTdkNThh
YjAyMzlmOTdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMTIwLDEyICsxMjAsMTEgQEAgYm9vbCBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbChGbG9hdFBvaW50
IG5ld0Rlc3RpbmF0aW8KIAogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJn
ZXRBbmltYXRlZFNjcm9sbEJ5KEZsb2F0U2l6ZSBvZmZzZXQpCiB7Ci0gICAgaWYgKCFpczxTY3Jv
bGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpCisgICAgaWYgKCFp
czxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkgfHwgIW1f
Y3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgcmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5
ICIgPDwgb2Zmc2V0KTsKIAotICAgIEFTU0VSVChtX2N1cnJlbnRBbmltYXRpb24tPmlzQWN0aXZl
KCkpOwogICAgIGlmIChhdXRvIGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9jdXJyZW50QW5pbWF0aW9u
LT5kZXN0aW5hdGlvbk9mZnNldCgpKQogICAgICAgICByZXR1cm4gbV9jdXJyZW50QW5pbWF0aW9u
LT5yZXRhcmdldEFjdGl2ZUFuaW1hdGlvbigqZGVzdGluYXRpb25PZmZzZXQgKyBvZmZzZXQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5jcHAKaW5kZXggN2E0ZGMyYzYyZjVlMWRhZDA3MDkwMjU2OGQxYTZjMjg4OTE1YTU3
OS4uNjQyMDhmMDIzNzE3N2QyMjI5YmNiOTFiYTBjZmFkMDE4YWQ5N2MzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNw
cApAQCAtMTg0MCw0ICsxODQwLDkgQEAgU3RyaW5nIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6
OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyLmRlYnVnRGVzY3Jp
cHRpb24oKTsKIH0KIAordm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmlt
YXRvckJlY2FtZUFjdGl2ZSgpCit7CisgICAgbV9sYXllci5wYWdlKCkuY2hyb21lKCkucmVnaXN0
ZXJBY3RpdmVTY3JvbGxBbmltYXRvcihzY3JvbGxBbmltYXRvcigpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggMDM2NTRjNzBiYjNhMGMzZDY1MTZhYWZjMjdhNWIx
NmY2MjU0MjlkNi4uYjkxMjA2ZTNkZTY1MzBlMDU5ZDkyNGNmZTdiMGZhZjUzZTgyNWYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYS5oCkBAIC0xOTUsNiArMTk1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRlYnVnRGVz
Y3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgc2Nyb2xsQW5pbWF0b3JCZWNhbWVB
Y3RpdmUoKSBmaW5hbDsKKwogICAgIEludFNpemUgdmlzaWJsZVNpemUoKSBjb25zdCBmaW5hbDsK
ICAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNpemUgcmVh
Y2hhYmxlVG90YWxDb250ZW50c1NpemUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBjYWI2M2Y1YjE0Y2U1ZWI4N2VlNGQ4N2E4
MGIzODY1ZGZiNmU5YjFmLi43YjIyZWJhYTllMjIwOWI5NmI0YTk4MzZiZDliOGEwNTY1ZWU5MTVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05Nzks
NSArOTc5LDEwIEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6c2Nyb2xsZWRUb1JpZ2h0KCkgY29uc3QK
ICAgICAvLyB0aGF0IHdlIGFyZSBhdCB0aGUgZnVsbCBleHRlbnQgb2YgdGhlIHNjcm9sbC4KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKKwordm9pZCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxBbmlt
YXRvckJlY2FtZUFjdGl2ZSgpCit7CisgICAgcGFnZSgpLmNocm9tZSgpLnJlZ2lzdGVyQWN0aXZl
U2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsQW5pbWF0b3IoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IDA2MzMw
OWJlMGI3YzA4NzhhM2U2N2QzZWRlN2M5NDg3NDRlZjhlODkuLmMwYzZhMjc2MGI5MzI0Mjg4MzI0
ZGQ0MTJjYWRhNjk0NWUyMDQ1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guaApAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3JvbGxlZFRvTGVm
dCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2Nyb2xsZWRUb1JpZ2h0KCkgY29uc3QgZmluYWw7
CiAKKyAgICB2b2lkIHNjcm9sbEFuaW1hdG9yQmVjYW1lQWN0aXZlKCkgZmluYWw7CisKIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442583</attachid>
            <date>2021-10-27 06:23:04 -0700</date>
            <delta_ts>2021-10-28 02:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232077-20211027142302.patch</filename>
            <type>text/plain</type>
            <size>15791</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhlMzlkZjE3NGYwNGZl
NDVkNjZkY2ViYjdlM2U5ODViODBiMTYxMi4uZDAxNmNmMmE4MmJmNzdjNmQ3MmFiZDhhNTRkMThk
NmIwNDA3NDBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEwLTI2ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSB0aGUg
ZGlzcGxheSByZWZyZXNoIHRvIGRyaXZlIHNjcm9sbGluZyBhbmltYXRpb25zIChzeW5jIHNjcm9s
bCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjA3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlcnZp
Y2Ugc2Nyb2xsIGFuaW1hdGlvbnMgYXMgcGFydCBvZiB0aGUgc2Nyb2xsIHBoYXNlIGluCisgICAg
ICAgIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZywgd2hpY2ggaXMgZHJpdmVuIGJ5IHRoZSBkaXNwbGF5
IHJlZnJlc2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lOjpyZWdpc3RlckFjdGl2ZVNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0
ZVJlbmRlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6c3RhcnRBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvcjo6c3RvcEFuaW1hdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxB
bmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guaDoKKwogMjAyMS0xMC0yNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSRUdSRVNTSU9OKHIyODQ1OTYpOiBTY3JvbGxpbmcg
c29tZXRpbWVzIGp1bXBzIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UgZHVyaW5nIHNtb290aCBtb3Vz
ZS13aGVlbCBzY3JvbGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjMTNmNmNmOWQ2ZTE3
ODdlYTYwNTg5ZmU0NmEyZTE3N2Q5Mzc0ODFkLi5lYjM2NDg3YzliMzAzNjJhMTY5ODVlOWJmNTM1
NTAzYTg2YzliYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZURhdGEuaCIKICNpbmNs
dWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCkBAIC01NTYsNiArNTU3LDMwIEBAIHZvaWQgQ2hyb21l
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBzdGQ6
Om9wdGlvbmFsPEZyCiAgICAgbV9wYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQs
IG5vbWluYWxGcmFtZUludGVydmFsKTsKIH0KIAordm9pZCBDaHJvbWU6OnJlZ2lzdGVyQWN0aXZl
U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsQW5pbWF0b3ImIGFuaW1hdG9yKQoreworICAgIG1fYWN0aXZl
U2Nyb2xsQW5pbWF0b3JzLmFwcGVuZChhbmltYXRvcik7CisgICAgbV9wYWdlLnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKHsgUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsIH0pOworfQorCit2b2lk
IENocm9tZTo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIGlmIChtX2FjdGl2ZVNj
cm9sbEFuaW1hdG9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWFrUHRyPFNjcm9sbEFuaW1hdG9yPj4gYW5pbWF0aW9uczsKKyAgICBhbmltYXRpb25zLnN3YXAo
bV9hY3RpdmVTY3JvbGxBbmltYXRvcnMpOworCisgICAgd2hpbGUgKCFhbmltYXRpb25zLmlzRW1w
dHkoKSkgeworICAgICAgICBhdXRvIGFuaW1hdG9yID0gYW5pbWF0aW9ucy50YWtlTGFzdCgpOwor
ICAgICAgICBpZiAoYW5pbWF0b3IgJiYgYW5pbWF0b3ItPnNlcnZpY2VTY3JvbGxBbmltYXRpb25z
KCkpCisgICAgICAgICAgICBtX2FjdGl2ZVNjcm9sbEFuaW1hdG9ycy5hcHBlbmQoV1RGTW92ZShh
bmltYXRvcikpOworICAgIH0KKworICAgIGlmICghbV9hY3RpdmVTY3JvbGxBbmltYXRvcnMuaXNF
bXB0eSgpKQorICAgICAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyBSZW5kZXJp
bmdVcGRhdGVTdGVwOjpTY3JvbGwgfSk7Cit9CisKIGJvb2wgQ2hyb21lOjpzZWxlY3RJdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LnNlbGVjdEl0
ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCAzNzIx
ODJmZWM2MjBmZWQ5ZGZlNzNkYTg5MjI0NmFmOTEzYzU1MzNlLi5jYzkxNGJhNWQyY2FmZWYwNzRh
MjkxNDU4ZTEwZGI3M2UyOTNlYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1ZpZXc7CkBAIC01NSw2ICs1Niw3IEBAIGNsYXNz
IFBhZ2U7CiBjbGFzcyBQb3B1cE1lbnU7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBQ
b3B1cE9wZW5pbmdPYnNlcnZlcjsKK2NsYXNzIFNjcm9sbEFuaW1hdG9yOwogY2xhc3MgU2VhcmNo
UG9wdXBNZW51OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0OwpAQCAtOTMsNiArOTUsOCBAQCBwdWJs
aWM6CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgc3RkOjpv
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQWN0
aXZlU2Nyb2xsQW5pbWF0b3IoU2Nyb2xsQW5pbWF0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
cnZpY2VTY3JvbGxBbmltYXRpb25zKCk7CiAKICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0yMDcsNiArMjExLDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7
CiAgICAgQ2hyb21lQ2xpZW50JiBtX2NsaWVudDsKICAgICBWZWN0b3I8UG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXIqPiBtX3BvcHVwT3BlbmluZ09ic2VydmVyczsKKyAgICBWZWN0b3I8V2Vha1B0cjxTY3Jv
bGxBbmltYXRvcj4+IG1fYWN0aXZlU2Nyb2xsQW5pbWF0b3JzOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYm9vbCBtX2lzRGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVz
c2VkIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTJiMmI1ZjYwNWIz
N2MxMTg1YmY3NWVlYzNkYzkzNmE0MmEyNjU5Zi4uNWE1NTE4YjEyYjMwMGU5ODAxZjM3MzQ1ODY5
NjA1YzQ2Mzg5NzIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNTU4LDYgKzE1NTgsOCBAQCB2
b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAKICAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVw
ID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CiAgICAgICAgIG1fcmVuZGVyaW5n
VXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShzdGVwKTsKKyAgICAgICAgaWYgKHN0
ZXAgPT0gUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsKQorICAgICAgICAgICAgY2hyb21lKCku
c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKICAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRv
Y3VtZW50RnVuY3Rpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0hvc3RXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cu
aAppbmRleCBmNmNjZTJlZGM4ZDZjZjQ3MDU5ODU3MDliNjA5NTE4ZmFmZWM5M2Y2Li4yYjlkODlh
ZmM5MDQ3MjU0MjQxNTQ3ZjJmZTc1ODRmYTk2NjEyN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
SG9zdFdpbmRvdy5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEN1cnNvcjsKIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVy
OworY2xhc3MgU2Nyb2xsQW5pbWF0b3I7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50
OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKQEAgLTgwLDYgKzgxLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJT
ZWNvbmQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBY3RpdmVTY3JvbGxBbmltYXRv
cihTY3JvbGxBbmltYXRvciYpID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjcmVlblNp
emUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6
ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAppbmRleCBjYzBkZWY5ZGUyZmE1MDNlOGY4MDUyOWU1MjM3N2NhMTEzMTZlMjkwLi42NDY2MzIz
OWRlMDI0YWE4NzdhMmFiMjRiN2M0OWRjYzc4YjM2YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01NCw3ICs1NCw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsCiBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogICAgIDogbV9zY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkK
ICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKLSAgICAsIG1fc2Nyb2xsQ29udHJvbGxl
ckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xsZXJB
bmltYXRpb25UaW1lckZpcmVkKQogICAgICwgbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKG1h
a2VVbmlxdWU8S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcj4oKnRoaXMsIG1fc2Nyb2xsQ29udHJv
bGxlcikpCiB7CiB9CkBAIC0zODQsMjAgKzM4MywxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRpbWVyKEZ1
bgogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAgICBpZiAobV9zY3JvbGxDb250cm9sbGVyQW5pbWF0
aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICBpZiAobV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVy
LnN0YXJ0UmVwZWF0aW5nKDFfcyAvIDYwLik7CisgICAgbV9zY3JvbGxBbmltYXRpb25TY2hlZHVs
ZWQgPSB0cnVlOworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JCZWNhbWVBY3Rp
dmUoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6c3RvcEFuaW1hdGlvbkNhbGxiYWNrKFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAgICBtX3Njcm9sbENvbnRyb2xsZXJBbmlt
YXRpb25UaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRy
b2xsZXJBbmltYXRpb25UaW1lckZpcmVkKCkKLXsKLSAgICBtX3Njcm9sbENvbnRyb2xsZXIuYW5p
bWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGltZTo6bm93KCkpOworICAgIG1fc2Nyb2xsQW5pbWF0
aW9uU2NoZWR1bGVkID0gZmFsc2U7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00NjUsNCAr
NDYwLDEwIEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxPZmZzZXRBZGp1c3RlZEZvclNu
YXBwaW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zCiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29u
dHJvbGxlci5hZGp1c3RlZFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2Np
dHlJblNjcm9sbEF4aXMsIG9yaWdpbmFsT2Zmc2V0KTsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRv
cjo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQoreworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5h
bmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lOjpub3coKSk7CisgICAgcmV0dXJuIG1fc2Ny
b2xsQW5pbWF0aW9uU2NoZWR1bGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCA2YjRhMWExODUwMDQ3ODk1
NjBjMWRjMmI5OWQ4MWEyYzQyZjdiODdkLi45ZDA2OTEzN2Q5ZWIwODViZjFiNzJiY2ZlNjU5MmNh
NzNhYmEzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs1NCw3
IEBAIHN0cnVjdCBTY3JvbGxFeHRlbnRzOwogCiBjbGFzcyBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlclRpbWVyOwogCi1jbGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXJDbGllbnQgeworY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8U2Nyb2xsQW5pbWF0b3I+LCBwcml2YXRlIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBjcmVhdGUoU2Nyb2xsYWJs
ZUFyZWEmKTsKQEAgLTEyMywxMyArMTI0LDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBMYXlvdXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHZvaWQg
cmVzbmFwQWZ0ZXJMYXlvdXQoKTsKIAorICAgIGJvb2wgc2VydmljZVNjcm9sbEFuaW1hdGlvbnMo
KTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFsbG93c1Njcm9sbEFu
aW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIG5v
dGlmeVBvc2l0aW9uQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKTsKIAotICAgIHZvaWQg
c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHVwZGF0ZUFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOwogCiAgICAgRmxvYXRQb2ludCBvZmZzZXRG
cm9tUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0OwpAQCAtMTc2LDcg
KzE3OCw3IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxhYmxlQXJlYSYgbV9zY3JvbGxhYmxlQXJl
YTsKICAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZlbnRUZXN0TW9u
aXRvcjsKICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciBtX3Njcm9sbENvbnRyb2xsZXI7
Ci0gICAgVGltZXIgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXI7CisgICAgYm9vbCBt
X3Njcm9sbEFuaW1hdGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CiAgICAgRmxvYXRQb2ludCBtX2N1
cnJlbnRQb3NpdGlvbjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yPiBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCmluZGV4IGM5MmNlMmU1YzkxOGVjZTFhNWQ0ODBjMGFkN2VhOGZmNjQ1
OTUwNGIuLmY4YjRhY2ZlODBmNDM2NTYxYzExM2Y3YjBlN2YwZTc1ODJhNWYwYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xNTkxLDYgKzE1OTEsMTcgQEAgU3Ry
aW5nIFNjcm9sbFZpZXc6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJTY3JvbGxWaWV3IDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0
aGlzKSwgTG93ZXJjYXNlKSk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQW5pbWF0b3JC
ZWNhbWVBY3RpdmUoKQoreworICAgIEhvc3RXaW5kb3cqIHdpbmRvdyA9IGhvc3RXaW5kb3coKTsK
KyAgICBpZiAoIXdpbmRvdykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRvdy0+cmVnaXN0ZXJBY3RpdmVTY3JvbGxBbmlt
YXRvcihzY3JvbGxBbmltYXRvcigpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogdm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCopCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKaW5kZXggMDc5ZjcwMjJjMjVmMzljOGRlNGM0MjgzZTRiZDk3NzEzNzg1
MmY5OC4uYzcxNzBhOTdlOWZiNzcxN2UzZTc2Mzk3ZGZlNjI1NDE1MzM0NzgwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNDc3LDYgKzQ3Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2Ny
b2xsQW5pbWF0b3JCZWNhbWVBY3RpdmUoKSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdCgpOwogICAg
IHZvaWQgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwCmluZGV4IDMyZGRhY2EwYWFiZWExYzkzN2VlYTZhZmZkMTc1N2IwOTcwMTI1YTAuLmQyNjYz
ZDBmZDljZmU0NDc3OTBmYzE4MzQ5ODYxMDM2MDFiNzkxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTI0OCw2ICsyNDgsMTEgQEAgdm9pZCBTY3Jv
bGxhYmxlQXJlYTo6c2V0U2Nyb2xsUG9zaXRpb25Gcm9tQW5pbWF0aW9uKGNvbnN0IFNjcm9sbFBv
c2l0aW9uJiBwb3NpdGkKICAgICBzY3JvbGxQb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOwogfQog
Cit2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSgpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OndpbGxT
dGFydExpdmVSZXNpemUoKQogewogICAgIGlmIChtX2luTGl2ZVJlc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGZlNDJjNGVjNmViYTRmMDQ4Zjk0ZmVm
NTkwNDkzNjkwYmU1MzU2NWEuLmU3MWQ4NmIxZDQ2NTI3ZjQwYjM5YTVhY2QxZDgwMWM1YWQ5ZTgy
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMzUzLDYg
KzM1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAgfQogCisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbEFuaW1hdG9yQmVjYW1lQWN0aXZlKCk7CisK
IHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJlYSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgflNjcm9sbGFibGVBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXgg
YmYwMzhiZDVmYjJhZWJiN2QzNjMxYzk3MjhkZDYwZmYzYWFjOGRlZi4uNDc2OWYxZDU4ZjhiYzNj
YjQyZjhjYzI0ZTdkNThhYjAyMzlmOTdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMTIwLDEyICsxMjAs
MTEgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNj
cm9sbChGbG9hdFBvaW50IG5ld0Rlc3RpbmF0aW8KIAogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5KEZsb2F0U2l6ZSBvZmZzZXQpCiB7Ci0g
ICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQo
KSkpCisgICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlv
bi5nZXQoKSkgfHwgIW1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVh
bSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgcmV0YXJnZXRB
bmltYXRlZFNjcm9sbEJ5ICIgPDwgb2Zmc2V0KTsKIAotICAgIEFTU0VSVChtX2N1cnJlbnRBbmlt
YXRpb24tPmlzQWN0aXZlKCkpOwogICAgIGlmIChhdXRvIGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9j
dXJyZW50QW5pbWF0aW9uLT5kZXN0aW5hdGlvbk9mZnNldCgpKQogICAgICAgICByZXR1cm4gbV9j
dXJyZW50QW5pbWF0aW9uLT5yZXRhcmdldEFjdGl2ZUFuaW1hdGlvbigqZGVzdGluYXRpb25PZmZz
ZXQgKyBvZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggN2E0ZGMyYzYyZjVlMWRhZDA3MDkwMjU2
OGQxYTZjMjg4OTE1YTU3OS4uNjQyMDhmMDIzNzE3N2QyMjI5YmNiOTFiYTBjZmFkMDE4YWQ5N2Mz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmNwcApAQCAtMTg0MCw0ICsxODQwLDkgQEAgU3RyaW5nIFJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWE6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xh
eWVyLmRlYnVnRGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSgpCit7CisgICAgbV9sYXllci5wYWdlKCku
Y2hyb21lKCkucmVnaXN0ZXJBY3RpdmVTY3JvbGxBbmltYXRvcihzY3JvbGxBbmltYXRvcigpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggMDM2NTRjNzBiYjNhMGMz
ZDY1MTZhYWZjMjdhNWIxNmY2MjU0MjlkNi4uYjkxMjA2ZTNkZTY1MzBlMDU5ZDkyNGNmZTdiMGZh
ZjUzZTgyNWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5oCkBAIC0xOTUsNiArMTk1LDggQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgc2Nyb2xs
QW5pbWF0b3JCZWNhbWVBY3RpdmUoKSBmaW5hbDsKKwogICAgIEludFNpemUgdmlzaWJsZVNpemUo
KSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOwog
ICAgIEludFNpemUgcmVhY2hhYmxlVG90YWxDb250ZW50c1NpemUoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBjYWI2M2Y1YjE0
Y2U1ZWI4N2VlNGQ4N2E4MGIzODY1ZGZiNmU5YjFmLi43YjIyZWJhYTllMjIwOWI5NmI0YTk4MzZi
ZDliOGEwNTY1ZWU5MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCkBAIC05NzksNSArOTc5LDEwIEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6c2Nyb2xsZWRU
b1JpZ2h0KCkgY29uc3QKICAgICAvLyB0aGF0IHdlIGFyZSBhdCB0aGUgZnVsbCBleHRlbnQgb2Yg
dGhlIHNjcm9sbC4KICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKKwordm9pZCBSZW5kZXJMaXN0
Qm94OjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSgpCit7CisgICAgcGFnZSgpLmNocm9tZSgp
LnJlZ2lzdGVyQWN0aXZlU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsQW5pbWF0b3IoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5oCmluZGV4IDA2MzMwOWJlMGI3YzA4NzhhM2U2N2QzZWRlN2M5NDg3NDRlZjhlODkuLmMwYzZh
Mjc2MGI5MzI0Mjg4MzI0ZGQ0MTJjYWRhNjk0NWUyMDQ1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzY3JvbGxlZFRvTGVmdCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2Nyb2xsZWRUb1JpZ2h0
KCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHNjcm9sbEFuaW1hdG9yQmVjYW1lQWN0aXZlKCkg
ZmluYWw7CisKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442686</attachid>
            <date>2021-10-28 02:58:38 -0700</date>
            <delta_ts>2021-11-02 04:16:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232077-20211028105836.patch</filename>
            <type>text/plain</type>
            <size>14581</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhlMzlkZjE3NGYwNGZl
NDVkNjZkY2ViYjdlM2U5ODViODBiMTYxMi4uYmJlODNjYjU2M2Q5YThlYmRhNThjOWIwZTBkZGU5
YTg1ZDliYWQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTEwLTI4ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSB0aGUg
ZGlzcGxheSByZWZyZXNoIHRvIGRyaXZlIHNjcm9sbGluZyBhbmltYXRpb25zIChzeW5jIHNjcm9s
bCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjA3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlcnZp
Y2Ugc2Nyb2xsIGFuaW1hdGlvbnMgYXMgcGFydCBvZiB0aGUgc2Nyb2xsIHBoYXNlIGluCisgICAg
ICAgIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZywgd2hpY2ggaXMgZHJpdmVuIGJ5IHRoZSBkaXNwbGF5
IHJlZnJlc2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpydW5TY3JvbGxTdGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVn
aXN0ZXJBY3RpdmVTY3JvbGxBbmltYXRvcik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3I6OnN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnN0b3BBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZp
cmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaDoKKwogMjAyMS0xMC0yNSAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS11bV1BFXSBSRUdSRVNTSU9OKHIyODQ1OTYpOiBTY3JvbGxpbmcgc29t
ZXRpbWVzIGp1bXBzIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2UgZHVyaW5nIHNtb290aCBtb3VzZS13
aGVlbCBzY3JvbGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDVhZjc3NmU1OWFhZTcx
MGEzMWNjNGNjMzQxZDI5Nzc5MDQ5N2I5OTQuLjc2ZWI3ZDA0N2EzZGE5ZTk1NDVlYjgwMjA5N2Jh
NTA5ZDkyYzEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjExLDYgKzIxMSw3IEBA
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQz
NTAsNiArNDM1MSwyMSBAQCB2b2lkIERvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Ny
b2xsRXZlbnQoKQogLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI3J1bi10
aGUtc2Nyb2xsLXN0ZXBzCiB2b2lkIERvY3VtZW50OjpydW5TY3JvbGxTdGVwcygpCiB7CisgICAg
Ly8gU2VydmljZSB1c2VyIHNjcm9sbCBhbmltYXRpb25zIGJlZm9yZSBzY3JvbGwgZXZlbnQgZGlz
cGF0Y2guCisgICAgaWYgKCFtX2FjdGl2ZVNjcm9sbEFuaW1hdG9ycy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgVmVjdG9yPFdlYWtQdHI8U2Nyb2xsQW5pbWF0b3I+PiBhbmltYXRpb25zOworICAgICAg
ICBhbmltYXRpb25zLnN3YXAobV9hY3RpdmVTY3JvbGxBbmltYXRvcnMpOworCisgICAgICAgIHdo
aWxlICghYW5pbWF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGF1dG8gYW5pbWF0b3Ig
PSBhbmltYXRpb25zLnRha2VMYXN0KCk7CisgICAgICAgICAgICBpZiAoYW5pbWF0b3IgJiYgYW5p
bWF0b3ItPnNlcnZpY2VTY3JvbGxBbmltYXRpb25zKCkpCisgICAgICAgICAgICAgICAgbV9hY3Rp
dmVTY3JvbGxBbmltYXRvcnMuYXBwZW5kKFdURk1vdmUoYW5pbWF0b3IpKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghbV9hY3RpdmVTY3JvbGxBbmltYXRvcnMuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcGFnZSgpLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IFJlbmRlcmluZ1VwZGF0ZVN0
ZXA6OlNjcm9sbCB9KTsKKyAgICB9CisKICAgICAvLyBGSVhNRTogVGhlIG9yZGVyIG9mIGRpc3Bh
dGNoaW5nIGlzIG5vdCBzcGVjaWZpZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3Zpc3VhbC12
aWV3cG9ydC9pc3N1ZXMvNjYuCiAgICAgaWYgKG1fcGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0TGlz
dCAmJiAhbV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRMaXN0LT50YXJnZXRzLmlzRW1wdHkoKSkg
ewogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRzLCBzdHJlYW0gPDwgIkRvY3VtZW50ICIg
PDwgdGhpcyA8PCAiIHNlbmRpbmcgc2Nyb2xsIGV2ZW50cyB0byBwZW5kaW5nIHNjcm9sbCBldmVu
dCB0YXJnZXRzIik7CkBAIC00MzY3LDYgKzQzODMsMTQgQEAgdm9pZCBEb2N1bWVudDo6cnVuU2Ny
b2xsU3RlcHMoKQogICAgIH0KIH0KIAordm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJBY3RpdmVTY3Jv
bGxBbmltYXRvcihTY3JvbGxBbmltYXRvciYgYW5pbWF0b3IpCit7CisgICAgbV9hY3RpdmVTY3Jv
bGxBbmltYXRvcnMuYXBwZW5kKGFuaW1hdG9yKTsKKyAgICBpZiAoYXV0byogY3VycmVudFBhZ2Ug
PSBwYWdlKCkpCisgICAgICAgIGN1cnJlbnRQYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7
IFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCB9KTsKK30KKworCiB2b2lkIERvY3VtZW50Ojpp
bnZhbGlkYXRlU2Nyb2xsYmFycygpCiB7CiAgICAgaWYgKFJlZlB0ciBmcmFtZVZpZXcgPSB2aWV3
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDg3MmMwNWE1ZGNiZGMzNmNhMDljYjM1MzdkNDgz
NzE1MTc3NTM4ZTIuLjc0YjcyY2YyYTYwZTYwMGJhMjFkYmM1NmRhOWY5NmNhZjJiYzQxZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yMDgsNiArMjA4LDcgQEAgY2xhc3MgU2NyaXB0TW9kdWxl
TG9hZGVyOwogY2xhc3MgU2NyaXB0UnVubmVyOwogY2xhc3MgU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyOwogY2xhc3MgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOworY2xhc3MgU2Nyb2xsQW5p
bWF0b3I7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlZ21lbnRlZFN0cmluZzsKIGNs
YXNzIFNlbGVjdG9yUXVlcnk7CkBAIC0xNDEwLDYgKzE0MTEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFpbmVyTm9kZSYpOwogICAgIHZvaWQg
c2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KCk7CiAgICAgdm9pZCBydW5TY3JvbGxT
dGVwcygpOworICAgIHZvaWQgcmVnaXN0ZXJBY3RpdmVTY3JvbGxBbmltYXRvcihTY3JvbGxBbmlt
YXRvciYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFycygpOwogCkBAIC0yMTYyLDYg
KzIxNjQsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IFBlbmRpbmdTY3JvbGxFdmVudFRhcmdl
dExpc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldExpc3Q+
IG1fcGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0TGlzdDsKKyAgICBWZWN0b3I8V2Vha1B0cjxTY3Jv
bGxBbmltYXRvcj4+IG1fYWN0aXZlU2Nyb2xsQW5pbWF0b3JzOwogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICBTdHJpbmcgbV9pZEhhc2hTYWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDE0NDE5Yjk1YTNiNmFkZGQ0MTcwYTcxZDJjZjBhNzQyMGM2OGQ4N2MuLmFhMzc4
YmUyODdhNTQ3ZTEzZDYwZjliYWM4NGE3MWMzODQ1ODMxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTI1MDEsNiArMjUwMSwxNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsT2Zm
c2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZAog
ICAgIH0KIH0KIAordm9pZCBGcmFtZVZpZXc6OnNjcm9sbEFuaW1hdG9yQmVjYW1lQWN0aXZlKCkK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRv
Y3VtZW50KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZG9jdW1lbnQtPnJlZ2lzdGVyQWN0aXZlU2Nyb2xsQW5pbWF0b3Ioc2Ny
b2xsQW5pbWF0b3IoKSk7Cit9CisKIC8vIFRoZXNlIHNjcm9sbCBwb3NpdGlvbnMgYXJlIGFmZmVj
dGVkIGJ5IHpvb21pbmcuCiB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNv
bnN0IFNjcm9sbFBvc2l0aW9uJiBvbGRQb3NpdGlvbiwgY29uc3QgU2Nyb2xsUG9zaXRpb24mIG5l
d1Bvc2l0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZjRjZjdkMDgxNTI4YWFh
YTEwYzkyNmJlOWQ5ZjI3NWZmZTQ4ZjYyZi4uMjYyYjkzZDg0YmNiYzZhZGNlYjRhY2EzM2E0MTVl
OTZiMjJhOGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC03MzksNiArNzM5LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0
SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xsT2Zmc2V0JiBu
ZXdPZmZzZXQpIGZpbmFsOwogCisgICAgdm9pZCBzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSgp
IGZpbmFsOworCiAgICAgdm9pZCBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChjb25zdCBSZW5kZXJF
bGVtZW50JiwgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlKTsKICAg
ICB2b2lkIGFwcGx5UGFnaW5hdGlvblRvVmlld3BvcnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGNjMGRlZjlkZTJmYTUwM2U4ZjgwNTI5ZTUy
Mzc3Y2ExMTMxNmUyOTAuLjY0NjYzMjM5ZGUwMjRhYTg3N2EyYWIyNGI3YzQ5ZGNjNzhiMzZiNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTU0LDcg
KzU0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6
Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmwKIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxB
bmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9sbGFi
bGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9zY3JvbGxDb250cm9sbGVyKCp0aGlzKQot
ICAgICwgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX2tleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3IobWFrZVVuaXF1ZTxLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
PigqdGhpcywgbV9zY3JvbGxDb250cm9sbGVyKSkKIHsKIH0KQEAgLTM4NCwyMCArMzgzLDE2IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3JvbGxB
bmltYXRvcjo6Y3JlYXRlVGltZXIoRnVuCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnN0YXJ0QW5p
bWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQogewotICAgIGlmICht
X3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmIChtX3Nj
cm9sbEFuaW1hdGlvblNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zY3JvbGxD
b250cm9sbGVyQW5pbWF0aW9uVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gNjAuKTsKKyAgICBt
X3Njcm9sbEFuaW1hdGlvblNjaGVkdWxlZCA9IHRydWU7CisgICAgbV9zY3JvbGxhYmxlQXJlYS5z
Y3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSgpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpz
dG9wQW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQogewotICAg
IG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQoKQotewotICAg
IG1fc2Nyb2xsQ29udHJvbGxlci5hbmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lOjpub3co
KSk7CisgICAgbV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKIH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTQ2NSw0ICs0NjAsMTAgQEAgZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbE9mZnNldEFkanVzdGVkRm9yU25hcHBpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnMK
ICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xsRGVzdGluYXRpb24o
YXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eUluU2Nyb2xsQXhpcywgb3JpZ2luYWxPZmZzZXQpOwog
fQogCitib29sIFNjcm9sbEFuaW1hdG9yOjpzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucygpCit7Cisg
ICAgbV9zY3JvbGxDb250cm9sbGVyLmFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWU6Om5v
dygpKTsKKyAgICByZXR1cm4gbV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5o
CmluZGV4IDZiNGExYTE4NTAwNDc4OTU2MGMxZGMyYjk5ZDgxYTJjNDJmN2I4N2QuLjlkMDY5MTM3
ZDllYjA4NWJmMWI3MmJjZmU2NTkyY2E3M2FiYTNmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldoZWVsRXZl
bnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTUzLDcgKzU0LDcgQEAgc3RydWN0IFNjcm9sbEV4dGVudHM7CiAKIGNsYXNz
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI7CiAKLWNsYXNzIFNjcm9sbEFuaW1hdG9y
IDogcHJpdmF0ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCB7CitjbGFzcyBTY3Jv
bGxBbmltYXRvciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTY3JvbGxBbmltYXRvcj4sIHByaXZh
dGUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5p
bWF0b3I+IGNyZWF0ZShTY3JvbGxhYmxlQXJlYSYpOwpAQCAtMTIzLDEzICsxMjQsMTQgQEAgcHVi
bGljOgogICAgIGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogc25hcE9mZnNldHNJ
bmZvKCkgY29uc3Q7CiAgICAgdm9pZCByZXNuYXBBZnRlckxheW91dCgpOwogCisgICAgYm9vbCBz
ZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucygpOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29s
IHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpOwogCi0gICAgdm9pZCBzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJl
ZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CiAK
ICAgICBGbG9hdFBvaW50IG9mZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbikgY29uc3Q7CkBAIC0xNzYsNyArMTc4LDcgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbGFi
bGVBcmVhJiBtX3Njcm9sbGFibGVBcmVhOwogICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0
b3I+IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOwogICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKLSAgICBUaW1lciBtX3Njcm9sbENvbnRyb2xsZXJBbmlt
YXRpb25UaW1lcjsKKyAgICBib29sIG1fc2Nyb2xsQW5pbWF0aW9uU2NoZWR1bGVkIHsgZmFsc2Ug
fTsKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvc2l0aW9uOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I+IG1fa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCAzMmRk
YWNhMGFhYmVhMWM5MzdlZWE2YWZmZDE3NTdiMDk3MDEyNWEwLi5kMjY2M2QwZmQ5Y2ZlNDQ3Nzkw
ZmMxODM0OTg2MTAzNjAxYjc5MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCkBAIC0yNDgsNiArMjQ4LDExIEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNl
dFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYgcG9zaXRp
CiAgICAgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKIH0KIAordm9pZCBTY3JvbGxh
YmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3JCZWNhbWVBY3RpdmUoKQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCiB2b2lkIFNjcm9sbGFibGVBcmVhOjp3aWxsU3RhcnRMaXZlUmVzaXpl
KCkKIHsKICAgICBpZiAobV9pbkxpdmVSZXNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAppbmRleCBmZTQyYzRlYzZlYmE0ZjA0OGY5NGZlZjU5MDQ5MzY5MGJlNTM1
NjVhLi5lNzFkODZiMWQ0NjUyN2Y0MGIzOWE1YWNkMWQ4MDFjNWFkOWU4MjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTM1Myw2ICszNTMsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiAxLjBmOwogICAgIH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzY3JvbGxBbmltYXRvckJlY2FtZUFjdGl2ZSgpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsYWJsZUFyZWEoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5TY3JvbGxhYmxlQXJlYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCmluZGV4IGJmMDM4YmQ1ZmIyYWVi
YjdkMzYzMWM5NzI4ZGQ2MGZmM2FhYzhkZWYuLjQ3NjlmMWQ1OGY4YmMzY2I0MmY4Y2MyNGU3ZDU4
YWIwMjM5Zjk3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTEyMCwxMiArMTIwLDExIEBAIGJvb2wgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQb2lu
dCBuZXdEZXN0aW5hdGlvCiAKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnJldGFy
Z2V0QW5pbWF0ZWRTY3JvbGxCeShGbG9hdFNpemUgb2Zmc2V0KQogewotICAgIGlmICghaXM8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKQorICAgIGlmICgh
aXM8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpIHx8ICFt
X2N1cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHJldGFyZ2V0QW5pbWF0ZWRTY3JvbGxC
eSAiIDw8IG9mZnNldCk7CiAKLSAgICBBU1NFUlQobV9jdXJyZW50QW5pbWF0aW9uLT5pc0FjdGl2
ZSgpKTsKICAgICBpZiAoYXV0byBkZXN0aW5hdGlvbk9mZnNldCA9IG1fY3VycmVudEFuaW1hdGlv
bi0+ZGVzdGluYXRpb25PZmZzZXQoKSkKICAgICAgICAgcmV0dXJuIG1fY3VycmVudEFuaW1hdGlv
bi0+cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oKmRlc3RpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IDdhNGRjMmM2MmY1ZTFkYWQwNzA5MDI1NjhkMWE2YzI4ODkxNWE1
NzkuLjU0NTEzMWY0MmNmY2I5ZTc2NmI3NzQ5MWFkZGQxYmE2NWU2YTRiZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5j
cHAKQEAgLTE4NDAsNCArMTg0MCw5IEBAIFN0cmluZyBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllci5kZWJ1Z0Rlc2Ny
aXB0aW9uKCk7CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5p
bWF0b3JCZWNhbWVBY3RpdmUoKQoreworICAgIG1fbGF5ZXIucmVuZGVyZXIoKS5kb2N1bWVudCgp
LnJlZ2lzdGVyQWN0aXZlU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsQW5pbWF0b3IoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IDAzNjU0YzcwYmIzYTBjM2Q2NTE2YWFm
YzI3YTViMTZmNjI1NDI5ZDYuLmI5MTIwNmUzZGU2NTMwZTA1OWQ5MjRjZmU3YjBmYWY1M2U4MjVm
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuaApAQCAtMTk1LDYgKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBk
ZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHNjcm9sbEFuaW1hdG9y
QmVjYW1lQWN0aXZlKCkgZmluYWw7CisKICAgICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qg
ZmluYWw7CiAgICAgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRT
aXplIHJlYWNoYWJsZVRvdGFsQ29udGVudHNTaXplKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggY2FiNjNmNWIxNGNlNWViODdl
ZTRkODdhODBiMzg2NWRmYjZlOWIxZi4uYzdmNTI0OGY5NTJjYzdkNDhkMGUwZDdmODcyOWU0NmI0
YTcwNmM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApA
QCAtOTc5LDUgKzk3OSwxMCBAQCBib29sIFJlbmRlckxpc3RCb3g6OnNjcm9sbGVkVG9SaWdodCgp
IGNvbnN0CiAgICAgLy8gdGhhdCB3ZSBhcmUgYXQgdGhlIGZ1bGwgZXh0ZW50IG9mIHRoZSBzY3Jv
bGwuCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCisKK3ZvaWQgUmVuZGVyTGlzdEJveDo6c2Ny
b2xsQW5pbWF0b3JCZWNhbWVBY3RpdmUoKQoreworICAgIGRvY3VtZW50KCkucmVnaXN0ZXJBY3Rp
dmVTY3JvbGxBbmltYXRvcihzY3JvbGxBbmltYXRvcigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggMDYz
MzA5YmUwYjdjMDg3OGEzZTY3ZDNlZGU3Yzk0ODc0NGVmOGU4OS4uYzBjNmEyNzYwYjkzMjQyODgz
MjRkZDQxMmNhZGE2OTQ1ZTIwNDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5oCkBAIC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKICAgICBib29sIHNjcm9sbGVkVG9M
ZWZ0KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzY3JvbGxlZFRvUmlnaHQoKSBjb25zdCBmaW5h
bDsKIAorICAgIHZvaWQgc2Nyb2xsQW5pbWF0b3JCZWNhbWVBY3RpdmUoKSBmaW5hbDsKKwogcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443078</attachid>
            <date>2021-11-02 04:16:12 -0700</date>
            <delta_ts>2021-11-02 06:23:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232077-20211102111611.patch</filename>
            <type>text/plain</type>
            <size>13746</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE1YmQzZDdiZmNmZTRj
MGFjZGQ5ZGY2ZjFiZjZiZjEzZTQ3ZmQzYi4uOTAyODFkYjU4NWJlNDk1YWU3MTA4OWNkNmQwNzgy
NWNmZjYxNmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTEwLTI4ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSB0aGUg
ZGlzcGxheSByZWZyZXNoIHRvIGRyaXZlIHNjcm9sbGluZyBhbmltYXRpb25zIChzeW5jIHNjcm9s
bCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjA3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlcnZp
Y2Ugc2Nyb2xsIGFuaW1hdGlvbnMgYXMgcGFydCBvZiB0aGUgc2Nyb2xsIHBoYXNlIGluCisgICAg
ICAgIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZywgd2hpY2ggaXMgZHJpdmVuIGJ5IHRoZSBkaXNwbGF5
IHJlZnJlc2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
cnZpY2VTY3JvbGxBbmltYXRpb25zRm9yU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnJ1blNjcm9sbFN0ZXBzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFVzZXJTY3JvbGxBbmltYXRpb25J
blByb2dyZXNzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c3Rh
cnRBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
c3RvcEFuaW1hdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dXNlclNjcm9sbEFuaW1hdGlvbkluUHJv
Z3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldFVzZXJTY3JvbGxB
bmltYXRpb25JblByb2dyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guaDoKKwogMjAyMS0xMS0wMSAgRGFuaWVsIEtvbGVzYSAgPGRrb2xl
c2FAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgd2l0aCBHQ0MgOC40IG9uIFVidW50
dSAxOC4wNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTk0OWNiNWI3NmNjYTdhYjRjN2Q3
MzA0ZDU3YTQ2MTE3MDI2Y2VmMC4uYWM1YTVkZmYxZmVhZDljMjVhMjlmYmQ3MmIxODRhYWQ0ODg2
MmQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNs
dWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxBbmlt
YXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNDM0Nyw5ICs0
MzQ4LDMxIEBAIHZvaWQgRG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVu
dCgpCiAgICAgbV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQgPSB0cnVlOwogfQogCitz
dGF0aWMgYm9vbCBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uc0ZvclNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogYW5pbWF0b3IgPSBzY3JvbGxh
YmxlQXJlYS0+ZXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBhbmltYXRvci0+c2Vy
dmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPnVzZXJT
Y3JvbGxBbmltYXRpb25JblByb2dyZXNzKCk7Cit9CisKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3NvbS12aWV3LyNydW4tdGhlLXNjcm9sbC1zdGVwcwogdm9pZCBEb2N1bWVudDo6cnVu
U2Nyb2xsU3RlcHMoKQogeworICAgIC8vIFNlcnZpY2UgdXNlciBzY3JvbGwgYW5pbWF0aW9ucyBi
ZWZvcmUgc2Nyb2xsIGV2ZW50IGRpc3BhdGNoLgorICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRl
clZpZXcoKS0+ZnJhbWVWaWV3KCk7CisgICAgYm9vbCBzY3JvbGxBbmltYXRpb25zSW5Qcm9ncmVz
cyA9IHNlcnZpY2VTY3JvbGxBbmltYXRpb25zRm9yU2Nyb2xsYWJsZUFyZWEoJmZyYW1lVmlldyk7
CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy5zY3JvbGxhYmxlQXJl
YXMoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHNjcm9sbGFibGVBcmVhIDogKnNjcm9sbGFibGVB
cmVhcykgeworICAgICAgICAgICAgaWYgKHNlcnZpY2VTY3JvbGxBbmltYXRpb25zRm9yU2Nyb2xs
YWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpKQorICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdGlv
bnNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2Nyb2xsQW5p
bWF0aW9uc0luUHJvZ3Jlc3MpCisgICAgICAgIHBhZ2UoKS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoeyBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwgfSk7CisKICAgICAvLyBGSVhNRTogVGhl
IG9yZGVyIG9mIGRpc3BhdGNoaW5nIGlzIG5vdCBzcGVjaWZpZWQ6IGh0dHBzOi8vZ2l0aHViLmNv
bS9XSUNHL3Zpc3VhbC12aWV3cG9ydC9pc3N1ZXMvNjYuCiAgICAgaWYgKG1fcGVuZGluZ1Njcm9s
bEV2ZW50VGFyZ2V0TGlzdCAmJiAhbV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRMaXN0LT50YXJn
ZXRzLmlzRW1wdHkoKSkgewogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRzLCBzdHJlYW0g
PDwgIkRvY3VtZW50ICIgPDwgdGhpcyA8PCAiIHNlbmRpbmcgc2Nyb2xsIGV2ZW50cyB0byBwZW5k
aW5nIHNjcm9sbCBldmVudCB0YXJnZXRzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggNTc4ZWNkYjY5M2RmYTUzMTBhNzE2MDZmMDM2YmZmNmQyZmFjNjI0Ni4uNzRmMjliZjNhNGM2
MWJiY2VkNzQ1M2RkNDQ2MmU0YjM4ZmVkMzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtNTcwMCw2ICs1NzAwLDE1IEBAIGZsb2F0IEZyYW1lVmlldzo6cGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCk7CiB9CiAKK3Zv
aWQgRnJhbWVWaWV3OjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhib29sIGluUHJv
Z3Jlc3MpCit7CisgICAgU2Nyb2xsYWJsZUFyZWE6OnNldFVzZXJTY3JvbGxBbmltYXRpb25JblBy
b2dyZXNzKGluUHJvZ3Jlc3MpOworICAgIGlmIChpblByb2dyZXNzKSB7CisgICAgICAgIGlmIChh
dXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5zY2hlZHVsZVJl
bmRlcmluZ1VwZGF0ZSh7IFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCB9KTsKKyAgICB9Cit9
CisKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxiYXJTdGVwcygpCiB7CiAgICAgYXV0byog
ZG9jdW1lbnRFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWUoKS5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRl
eCBkNjkzMTVkZWEwZTI2OGMyYWRkMDBhNzU2NTExN2IxN2UwZmE3OGMxLi41MjY5NmFlZDk2NzQ0
Yzk3YTQ4MDAwYjNhYWYyZTc1YWEwMWVhNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAg
LTg3Niw2ICs4NzYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEuCiAgICAg
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRVc2Vy
U2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhib29sKSBmaW5hbDsKIAogICAgIHN0YXRpYyBNb25v
dG9uaWNUaW1lIHNDdXJyZW50UGFpbnRUaW1lU3RhbXA7IC8vIHVzZWQgZm9yIGRldGVjdGluZyBk
ZWNvZGVkIHJlc291cmNlIHRocmFzaCBpbiB0aGUgY2FjaGUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGFiMThiODI3OWFmZjhlZTg5YTg5YzIwZTVh
MDM4ODVlNTM0ZDNjZDQuLjI5Njg2ZDgzZmFjMjY1NjQwMjUwMzg1OGY1MDE5ZjNlYTVhYTk5YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTU0LDcg
KzU0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6
Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmwKIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxB
bmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9sbGFi
bGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9zY3JvbGxDb250cm9sbGVyKCp0aGlzKQot
ICAgICwgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX2tleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3IobWFrZVVuaXF1ZTxLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
PigqdGhpcywgbV9zY3JvbGxDb250cm9sbGVyKSkKIHsKIH0KQEAgLTM4NCwyMCArMzgzLDEyIEBA
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3JvbGxB
bmltYXRvcjo6Y3JlYXRlVGltZXIoRnVuCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnN0YXJ0QW5p
bWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQogewotICAgIGlmICht
X3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lci5zdGFydFJlcGVhdGlu
ZygxX3MgLyA2MC4pOworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0VXNlclNjcm9sbEFuaW1hdGlv
bkluUHJvZ3Jlc3ModHJ1ZSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnN0b3BBbmltYXRp
b25DYWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpCiB7Ci0gICAgbV9zY3JvbGxD
b250cm9sbGVyQW5pbWF0aW9uVGltZXIuc3RvcCgpOwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9y
OjpzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpCi17Ci0gICAgbV9zY3JvbGxD
b250cm9sbGVyLmFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWU6Om5vdygpKTsKKyAgICBt
X3Njcm9sbGFibGVBcmVhLnNldFVzZXJTY3JvbGxBbmltYXRpb25JblByb2dyZXNzKGZhbHNlKTsK
IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ2NSw0ICs0NTYsMTAgQEAgZmxvYXQgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbE9mZnNldEFkanVzdGVkRm9yU25hcHBpbmcoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMsIGNvbnMKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVkU2Nyb2xs
RGVzdGluYXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eUluU2Nyb2xsQXhpcywgb3JpZ2lu
YWxPZmZzZXQpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXJ2aWNlU2Nyb2xsQW5pbWF0
aW9ucygpCit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEudXNlclNjcm9sbEFuaW1hdGlvbklu
UHJvZ3Jlc3MoKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLmFuaW1hdGlvbkNhbGxiYWNr
KE1vbm90b25pY1RpbWU6Om5vdygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggNmI0YTFhMTg1MDA0Nzg5
NTYwYzFkYzJiOTlkODFhMmM0MmY3Yjg3ZC4uZjZhOTRlYTllNDc5YzQ2OGM2Y2Q2ZGM0YjE1Zjgz
ZTNkNmQ1ZTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBA
IC0xMjMsMTMgKzEyMywxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAgICB2b2lkIHJlc25hcEFmdGVy
TGF5b3V0KCk7CiAKKyAgICB2b2lkIHNlcnZpY2VTY3JvbGxBbmltYXRpb25zKCk7CisKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BbGxvd3NTY3JvbGxBbmltYXRpb24oKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlQb3NpdGlv
bkNoYW5nZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSk7CiAKLSAgICB2b2lkIHNjcm9sbENvbnRy
b2xsZXJBbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCB1cGRhdGVBY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JPZmZzZXQoKTsKIAogICAgIEZsb2F0UG9pbnQgb2Zmc2V0RnJvbVBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdDsKQEAgLTE3Niw3ICsxNzcsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgU2Nyb2xsYWJsZUFyZWEmIG1fc2Nyb2xsYWJsZUFyZWE7CiAgICAgUmVm
UHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gbV93aGVlbEV2ZW50VGVzdE1vbml0b3I7CiAgICAg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwotICAgIFRpbWVy
IG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyOwogICAgIEZsb2F0UG9pbnQgbV9jdXJy
ZW50UG9zaXRpb247CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvcj4gbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDMyZGRhY2EwYWFiZWExYzkzN2VlYTZhZmZkMTc1
N2IwOTcwMTI1YTAuLjEzMzUwYjI2ODI4NDc2MjExNjIyODY3Y2ZiYTBkZmIxNTAyYTU2OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgc3RydWN0IFNhbWVTaXplQXNTY3JvbGxhYmxlQXJlYSB7CiAjZW5kaWYKICAgICB2b2lk
KiBwb2ludGVyWzNdOwogICAgIEludFBvaW50IG9yaWdpbjsKLSAgICBib29sIGJ5dGVzWzldOwor
ICAgIGJvb2wgYnl0ZXNbMTBdOwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFNjcm9sbGFi
bGVBcmVhKSA9PSBzaXplb2YoU2FtZVNpemVBc1Njcm9sbGFibGVBcmVhKSwgU2Nyb2xsYWJsZUFy
ZWFfc2hvdWxkX3N0YXlfc21hbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKaW5kZXggZmU0MmM0ZWM2ZWJhNGYwNDhmOTRmZWY1OTA0OTM2OTBiZTUzNTY1YS4uNGIz
OTllMGIzNjgxNzc3YjA5MGYzZmI0YTQ0M2ZlNzMxOWE2ZDg2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0zNTMsNiArMzUzLDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gMS4wZjsKICAgICB9CiAKKyAgICBib29sIHVzZXJTY3JvbGxBbmltYXRpb25J
blByb2dyZXNzKCkgeyByZXR1cm4gbV91c2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzczsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhib29sIGlu
UHJvZ3Jlc3MpIHsgbV91c2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyA9IGluUHJvZ3Jlc3M7
IH0KKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGFibGVBcmVhKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2Nyb2xsYWJsZUFyZWEoKTsKQEAgLTQxMyw2ICs0
MTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkxpdmVSZXNpemUgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9zY3JvbGxPcmlnaW5DaGFuZ2VkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2Nyb2xs
U2hvdWxkQ2xlYXJMYXRjaGVkU3RhdGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV91c2VyU2Nyb2xs
QW5pbWF0aW9uSW5Qcm9ncmVzcyB7IGZhbHNlIH07CiB9OwogCiBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgU2Nyb2xsYWJsZUFyZWEmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmNwcAppbmRleCBiZjAzOGJkNWZiMmFlYmI3ZDM2MzFjOTcyOGRkNjBmZjNhYWM4ZGVmLi40NzY5
ZjFkNThmOGJjM2NiNDJmOGNjMjRlN2Q1OGFiMDIzOWY5N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCkBAIC0x
MjAsMTIgKzEyMCwxMSBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZXRhcmdl
dEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGluYXRpbwogCiBib29sIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpyZXRhcmdldEFuaW1hdGVkU2Nyb2xsQnkoRmxvYXRTaXplIG9m
ZnNldCkKIHsKLSAgICBpZiAoIWlzPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9jdXJyZW50QW5p
bWF0aW9uLmdldCgpKSkKKyAgICBpZiAoIWlzPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9jdXJy
ZW50QW5pbWF0aW9uLmdldCgpKSB8fCAhbV9jdXJyZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsQW5pbWF0
aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwg
IiByZXRhcmdldEFuaW1hdGVkU2Nyb2xsQnkgIiA8PCBvZmZzZXQpOwogCi0gICAgQVNTRVJUKG1f
Y3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSk7CiAgICAgaWYgKGF1dG8gZGVzdGluYXRpb25P
ZmZzZXQgPSBtX2N1cnJlbnRBbmltYXRpb24tPmRlc3RpbmF0aW9uT2Zmc2V0KCkpCiAgICAgICAg
IHJldHVybiBtX2N1cnJlbnRBbmltYXRpb24tPnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKCpkZXN0
aW5hdGlvbk9mZnNldCArIG9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCA3YTRkYzJjNjJmNWUx
ZGFkMDcwOTAyNTY4ZDFhNmMyODg5MTVhNTc5Li43N2I3NTY3MWZmZmZhODViMzA1Y2NjNzYwNzdk
ZWRhZDI1ODI1NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0xODQwLDQgKzE4NDAsMTEgQEAgU3RyaW5n
IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAg
IHJldHVybiBtX2xheWVyLmRlYnVnRGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhib29sIGlu
UHJvZ3Jlc3MpCit7CisgICAgU2Nyb2xsYWJsZUFyZWE6OnNldFVzZXJTY3JvbGxBbmltYXRpb25J
blByb2dyZXNzKGluUHJvZ3Jlc3MpOworICAgIGlmIChpblByb2dyZXNzKQorICAgICAgICBtX2xh
eWVyLnBhZ2UoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IFJlbmRlcmluZ1VwZGF0ZVN0ZXA6
OlNjcm9sbCB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggMDM2
NTRjNzBiYjNhMGMzZDY1MTZhYWZjMjdhNWIxNmY2MjU0MjlkNi4uN2YyM2NmYmVhZjQwYTM4YmRk
M2FmODkyOWQ0YWUzNzgzYTM3Y2M3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCkBAIC0xOTQsNiArMTk0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgdm9pZCBzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhib29sKSBmaW5h
bDsKIAogICAgIEludFNpemUgdmlzaWJsZVNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXpl
IGNvbnRlbnRzU2l6ZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCmluZGV4IDYzODZmYmEyZjQ5OGI1ZDZiODAyMmRiMTg0MmI0OTVmMGU1
OGEwYmMuLjE2ODAwYmUyMzVkYzM3YzU5Y2FjNWY3NGY2YzE3OWU5MTBjODYyNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTkwOCw2ICs5MDgsMTMg
QEAgU3RyaW5nIFJlbmRlckxpc3RCb3g6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJl
dHVybiBSZW5kZXJPYmplY3Q6OmRlYnVnRGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBSZW5kZXJM
aXN0Qm94OjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhib29sIGluUHJvZ3Jlc3Mp
Cit7CisgICAgU2Nyb2xsYWJsZUFyZWE6OnNldFVzZXJTY3JvbGxBbmltYXRpb25JblByb2dyZXNz
KGluUHJvZ3Jlc3MpOworICAgIGlmIChpblByb2dyZXNzKQorICAgICAgICBwYWdlKCkuc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoeyBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwgfSk7Cit9CisK
IFJlZjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiB7CiAgICAg
UmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmgKaW5kZXggMmE3ZmUzMDc1NzA3YjRiMTVkNjk3MjU2NzgwZDNhMTU1ODBhNjljZC4u
NjFmZTJhNTI0ZmM1ZTU1ZGQ5YmVjMTM2NjIyYmY3YTFkZGMwMmVmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xNDEsNiArMTQxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1vY2tTY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHNldFVzZXJTY3JvbGxBbmltYXRpb25JblByb2dyZXNzKGJvb2wpIGZpbmFsOwogCiAgICAgLy8g
Tk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRkZW4gc2V0U2Ny
b2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQgbmV3
T2Zmc2V0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443081</attachid>
            <date>2021-11-02 06:23:25 -0700</date>
            <delta_ts>2021-11-03 04:18:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232077-20211102132323.patch</filename>
            <type>text/plain</type>
            <size>13810</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE1YmQzZDdiZmNmZTRj
MGFjZGQ5ZGY2ZjFiZjZiZjEzZTQ3ZmQzYi4uOTAyODFkYjU4NWJlNDk1YWU3MTA4OWNkNmQwNzgy
NWNmZjYxNmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTEwLTI4ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSB0aGUg
ZGlzcGxheSByZWZyZXNoIHRvIGRyaXZlIHNjcm9sbGluZyBhbmltYXRpb25zIChzeW5jIHNjcm9s
bCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjA3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlcnZp
Y2Ugc2Nyb2xsIGFuaW1hdGlvbnMgYXMgcGFydCBvZiB0aGUgc2Nyb2xsIHBoYXNlIGluCisgICAg
ICAgIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZywgd2hpY2ggaXMgZHJpdmVuIGJ5IHRoZSBkaXNwbGF5
IHJlZnJlc2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
cnZpY2VTY3JvbGxBbmltYXRpb25zRm9yU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnJ1blNjcm9sbFN0ZXBzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFVzZXJTY3JvbGxBbmltYXRpb25J
blByb2dyZXNzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c3Rh
cnRBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
c3RvcEFuaW1hdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6dXNlclNjcm9sbEFuaW1hdGlvbkluUHJv
Z3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldFVzZXJTY3JvbGxB
bmltYXRpb25JblByb2dyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guaDoKKwogMjAyMS0xMS0wMSAgRGFuaWVsIEtvbGVzYSAgPGRrb2xl
c2FAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgd2l0aCBHQ0MgOC40IG9uIFVidW50
dSAxOC4wNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTk0OWNiNWI3NmNjYTdhYjRjN2Q3
MzA0ZDU3YTQ2MTE3MDI2Y2VmMC4uOTk4YWQ0NTY3MDhmZmVjYzQ4NmM2Mzc2YzQ2ZDg4M2NhMDA4
NDMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNs
dWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxBbmlt
YXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNDM0Nyw5ICs0
MzQ4LDMzIEBAIHZvaWQgRG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVu
dCgpCiAgICAgbV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQgPSB0cnVlOwogfQogCitz
dGF0aWMgYm9vbCBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uc0ZvclNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogYW5pbWF0b3IgPSBzY3JvbGxh
YmxlQXJlYS0+ZXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBhbmltYXRvci0+c2Vy
dmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPnVzZXJT
Y3JvbGxBbmltYXRpb25JblByb2dyZXNzKCk7Cit9CisKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3NvbS12aWV3LyNydW4tdGhlLXNjcm9sbC1zdGVwcwogdm9pZCBEb2N1bWVudDo6cnVu
U2Nyb2xsU3RlcHMoKQogeworICAgIC8vIFNlcnZpY2UgdXNlciBzY3JvbGwgYW5pbWF0aW9ucyBi
ZWZvcmUgc2Nyb2xsIGV2ZW50IGRpc3BhdGNoLgorICAgIFJlZlB0cjxGcmFtZVZpZXc+IGZyYW1l
VmlldyA9IHZpZXcoKTsKKyAgICBpZiAoZnJhbWVWaWV3KSB7CisgICAgICAgIGJvb2wgc2Nyb2xs
QW5pbWF0aW9uc0luUHJvZ3Jlc3MgPSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uc0ZvclNjcm9sbGFi
bGVBcmVhKGZyYW1lVmlldy5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJl
YXMgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVBcmVhcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIHNjcm9sbGFibGVBcmVhIDogKnNjcm9sbGFibGVBcmVhcykgeworICAgICAgICAgICAgICAg
IGlmIChzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uc0ZvclNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVB
cmVhKSkKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQW5pbWF0aW9uc0luUHJvZ3Jlc3MgPSB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChzY3JvbGxBbmltYXRp
b25zSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHBhZ2UoKS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoeyBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwgfSk7CisgICAgfQorCiAgICAgLy8gRklY
TUU6IFRoZSBvcmRlciBvZiBkaXNwYXRjaGluZyBpcyBub3Qgc3BlY2lmaWVkOiBodHRwczovL2dp
dGh1Yi5jb20vV0lDRy92aXN1YWwtdmlld3BvcnQvaXNzdWVzLzY2LgogICAgIGlmIChtX3BlbmRp
bmdTY3JvbGxFdmVudFRhcmdldExpc3QgJiYgIW1fcGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0TGlz
dC0+dGFyZ2V0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50cywg
c3RyZWFtIDw8ICJEb2N1bWVudCAiIDw8IHRoaXMgPDwgIiBzZW5kaW5nIHNjcm9sbCBldmVudHMg
dG8gcGVuZGluZyBzY3JvbGwgZXZlbnQgdGFyZ2V0cyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDU3OGVjZGI2OTNkZmE1MzEwYTcxNjA2ZjAzNmJmZjZkMmZhYzYyNDYuLjc0ZjI5
YmYzYTRjNjFiYmNlZDc0NTNkZDQ0NjJlNGIzOGZlZDM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTU3MDAsNiArNTcwMCwxNSBAQCBmbG9hdCBGcmFtZVZpZXc6OnBhZ2VTY2Fs
ZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpOwog
fQogCit2b2lkIEZyYW1lVmlldzo6c2V0VXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3MoYm9v
bCBpblByb2dyZXNzKQoreworICAgIFNjcm9sbGFibGVBcmVhOjpzZXRVc2VyU2Nyb2xsQW5pbWF0
aW9uSW5Qcm9ncmVzcyhpblByb2dyZXNzKTsKKyAgICBpZiAoaW5Qcm9ncmVzcykgeworICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+c2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwgfSk7Cisg
ICAgfQorfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKQogewogICAg
IGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSA/IGZyYW1lKCkuZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKaW5kZXggZDY5MzE1ZGVhMGUyNjhjMmFkZDAwYTc1NjUxMTdiMTdlMGZhNzhjMS4uNTI2OTZh
ZWQ5Njc0NGM5N2E0ODAwMGIzYWFmMmU3NWFhMDFlYTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCkBAIC04NzYsNiArODc2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNjcm9sbGFibGVBcmVh
LgogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c2V0VXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3MoYm9vbCkgZmluYWw7CiAKICAgICBzdGF0
aWMgTW9ub3RvbmljVGltZSBzQ3VycmVudFBhaW50VGltZVN0YW1wOyAvLyB1c2VkIGZvciBkZXRl
Y3RpbmcgZGVjb2RlZCByZXNvdXJjZSB0aHJhc2ggaW4gdGhlIGNhY2hlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBhYjE4YjgyNzlhZmY4ZWU4OWE4
OWMyMGU1YTAzODg1ZTUzNGQzY2Q0Li4yOTY4NmQ4M2ZhYzI2NTY0MDI1MDM4NThmNTAxOWYzZWE1
YWE5OWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBA
IC01NCw3ICs1NCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5p
bWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsCiBTY3JvbGxBbmltYXRvcjo6
U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogbV9z
Y3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigq
dGhpcykKLSAgICAsIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKQogICAgICwg
bV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKG1ha2VVbmlxdWU8S2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvcj4oKnRoaXMsIG1fc2Nyb2xsQ29udHJvbGxlcikpCiB7CiB9CkBAIC0zODQsMjAgKzM4
MywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4g
U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRpbWVyKEZ1bgogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpz
dGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAg
ICBpZiAobV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXIuc3RhcnRS
ZXBlYXRpbmcoMV9zIC8gNjAuKTsKKyAgICBtX3Njcm9sbGFibGVBcmVhLnNldFVzZXJTY3JvbGxB
bmltYXRpb25JblByb2dyZXNzKHRydWUpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzdG9w
QW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQogewotICAgIG1f
c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQoKQotewotICAgIG1f
c2Nyb2xsQ29udHJvbGxlci5hbmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lOjpub3coKSk7
CisgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhm
YWxzZSk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00NjUsNCArNDU2LDEwIEBAIGZsb2F0
IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxPZmZzZXRBZGp1c3RlZEZvclNuYXBwaW5nKFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBjb25zCiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3Rl
ZFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2NpdHlJblNjcm9sbEF4aXMs
IG9yaWdpbmFsT2Zmc2V0KTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6c2VydmljZVNjcm9s
bEFuaW1hdGlvbnMoKQoreworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnVzZXJTY3JvbGxBbmlt
YXRpb25JblByb2dyZXNzKCkpCisgICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5hbmltYXRpb25D
YWxsYmFjayhNb25vdG9uaWNUaW1lOjpub3coKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDZiNGExYTE4
NTAwNDc4OTU2MGMxZGMyYjk5ZDgxYTJjNDJmN2I4N2QuLmY2YTk0ZWE5ZTQ3OWM0NjhjNmNkNmRj
NGIxNWY4M2UzZDZkNWU0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaApAQCAtMTIzLDEzICsxMjMsMTQgQEAgcHVibGljOgogICAgIGNvbnN0IExheW91dFNjcm9s
bFNuYXBPZmZzZXRzSW5mbyogc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7CiAgICAgdm9pZCByZXNu
YXBBZnRlckxheW91dCgpOwogCisgICAgdm9pZCBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucygpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0
aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
UG9zaXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpOwogCi0gICAgdm9pZCBzY3Jv
bGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CiAKICAgICBGbG9hdFBvaW50IG9mZnNldEZyb21Q
b3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3Q7CkBAIC0xNzYsNyArMTc3
LDYgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbGFibGVBcmVhJiBtX3Njcm9sbGFibGVBcmVhOwog
ICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IG1fd2hlZWxFdmVudFRlc3RNb25pdG9y
OwogICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKLSAg
ICBUaW1lciBtX3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lcjsKICAgICBGbG9hdFBvaW50
IG1fY3VycmVudFBvc2l0aW9uOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEtleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3I+IG1fa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCAzMmRkYWNhMGFhYmVhMWM5MzdlZWE2
YWZmZDE3NTdiMDk3MDEyNWEwLi4xMzM1MGIyNjgyODQ3NjIxMTYyMjg2N2NmYmEwZGZiMTUwMmE1
Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzU2Nyb2xsYWJsZUFyZWEgewogI2VuZGlmCiAg
ICAgdm9pZCogcG9pbnRlclszXTsKICAgICBJbnRQb2ludCBvcmlnaW47Ci0gICAgYm9vbCBieXRl
c1s5XTsKKyAgICBib29sIGJ5dGVzWzEwXTsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihT
Y3JvbGxhYmxlQXJlYSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTY3JvbGxhYmxlQXJlYSksIFNjcm9s
bGFibGVBcmVhX3Nob3VsZF9zdGF5X3NtYWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oCmluZGV4IGZlNDJjNGVjNmViYTRmMDQ4Zjk0ZmVmNTkwNDkzNjkwYmU1MzU2
NWEuLjRiMzk5ZTBiMzY4MTc3N2IwOTBmM2ZiNGE0NDNmZTczMTlhNmQ4NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMzUzLDYgKzM1Myw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAgfQogCisgICAgYm9vbCB1c2VyU2Nyb2xsQW5p
bWF0aW9uSW5Qcm9ncmVzcygpIHsgcmV0dXJuIG1fdXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jl
c3M7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3Mo
Ym9vbCBpblByb2dyZXNzKSB7IG1fdXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3MgPSBpblBy
b2dyZXNzOyB9CisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxhYmxlQXJl
YSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNjcm9sbGFibGVBcmVhKCk7CkBAIC00
MTMsNiArNDE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW5MaXZlUmVzaXplIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fc2Nyb2xsT3JpZ2luQ2hhbmdlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3Njcm9sbFNob3VsZENsZWFyTGF0Y2hlZFN0YXRlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXNl
clNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3MgeyBmYWxzZSB9OwogfTsKIAogV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNjcm9sbGFibGVBcmVhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5jcHAKaW5kZXggYmYwMzhiZDVmYjJhZWJiN2QzNjMxYzk3MjhkZDYwZmYzYWFjOGRl
Zi4uNDc2OWYxZDU4ZjhiYzNjYjQyZjhjYzI0ZTdkNThhYjAyMzlmOTdkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNw
cApAQCAtMTIwLDEyICsxMjAsMTEgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
cmV0YXJnZXRBbmltYXRlZFNjcm9sbChGbG9hdFBvaW50IG5ld0Rlc3RpbmF0aW8KIAogYm9vbCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5KEZsb2F0
U2l6ZSBvZmZzZXQpCiB7Ci0gICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3Vy
cmVudEFuaW1hdGlvbi5nZXQoKSkpCisgICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+
KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkgfHwgIW1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3Rp
dmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0
aGlzIDw8ICIgcmV0YXJnZXRBbmltYXRlZFNjcm9sbEJ5ICIgPDwgb2Zmc2V0KTsKIAotICAgIEFT
U0VSVChtX2N1cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpOwogICAgIGlmIChhdXRvIGRlc3Rp
bmF0aW9uT2Zmc2V0ID0gbV9jdXJyZW50QW5pbWF0aW9uLT5kZXN0aW5hdGlvbk9mZnNldCgpKQog
ICAgICAgICByZXR1cm4gbV9jdXJyZW50QW5pbWF0aW9uLT5yZXRhcmdldEFjdGl2ZUFuaW1hdGlv
bigqZGVzdGluYXRpb25PZmZzZXQgKyBvZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggN2E0ZGMy
YzYyZjVlMWRhZDA3MDkwMjU2OGQxYTZjMjg4OTE1YTU3OS4uNzdiNzU2NzFmZmZmYTg1YjMwNWNj
Yzc2MDc3ZGVkYWQyNTgyNTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMTg0MCw0ICsxODQwLDExIEBA
IFN0cmluZyBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gbV9sYXllci5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CiB9CiAKK3ZvaWQgUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0VXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3Mo
Ym9vbCBpblByb2dyZXNzKQoreworICAgIFNjcm9sbGFibGVBcmVhOjpzZXRVc2VyU2Nyb2xsQW5p
bWF0aW9uSW5Qcm9ncmVzcyhpblByb2dyZXNzKTsKKyAgICBpZiAoaW5Qcm9ncmVzcykKKyAgICAg
ICAgbV9sYXllci5wYWdlKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpTY3JvbGwgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmlu
ZGV4IDAzNjU0YzcwYmIzYTBjM2Q2NTE2YWFmYzI3YTViMTZmNjI1NDI5ZDYuLjdmMjNjZmJlYWY0
MGEzOGJkZDNhZjg5MjlkNGFlMzc4M2EzN2NjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTk0LDYgKzE5NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc2V0VXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3MoYm9v
bCkgZmluYWw7CiAKICAgICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3QgZmluYWw7CiAgICAg
SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCA2Mzg2ZmJhMmY0OThiNWQ2YjgwMjJkYjE4NDJi
NDk1ZjBlNThhMGJjLi4xNjgwMGJlMjM1ZGMzN2M1OWNhYzVmNzRmNmMxNzllOTEwYzg2MjU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MDgsNiAr
OTA4LDEzIEBAIFN0cmluZyBSZW5kZXJMaXN0Qm94OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpkZWJ1Z0Rlc2NyaXB0aW9uKCk7CiB9CiAKK3ZvaWQg
UmVuZGVyTGlzdEJveDo6c2V0VXNlclNjcm9sbEFuaW1hdGlvbkluUHJvZ3Jlc3MoYm9vbCBpblBy
b2dyZXNzKQoreworICAgIFNjcm9sbGFibGVBcmVhOjpzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Q
cm9ncmVzcyhpblByb2dyZXNzKTsKKyAgICBpZiAoaW5Qcm9ncmVzcykKKyAgICAgICAgcGFnZSgp
LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKHsgUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsIH0p
OworfQorCiBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIoKQog
ewogICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oCmluZGV4IDJhN2ZlMzA3NTcwN2I0YjE1ZDY5NzI1Njc4MGQzYTE1NTgw
YTY5Y2QuLjYxZmUyYTUyNGZjNWU1NWRkOWJlYzEzNjYyMmJmN2ExZGRjMDJlZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTQxLDYgKzE0MSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtb2NrU2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3QgZmluYWw7
CiAgICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOwogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBzZXRVc2VyU2Nyb2xsQW5pbWF0aW9uSW5Qcm9ncmVzcyhib29sKSBmaW5hbDsKIAog
ICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZGVu
IHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQgc2Nyb2xsVG8o
aW50IG5ld09mZnNldCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443188</attachid>
            <date>2021-11-03 04:19:04 -0700</date>
            <delta_ts>2021-11-03 07:37:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232077-20211103111903.patch</filename>
            <type>text/plain</type>
            <size>12947</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNlN2I2YzNhNzRmZGNk
NWZiMzljYjk2MjE3ZTYzMTY3NjU5YzAwNi4uMDBkOWJkNjU5OTkxMWU5NjZiNDcwODNjYzc0MDUx
ZTFhZmUxZGE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTExLTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFVzZSB0aGUg
ZGlzcGxheSByZWZyZXNoIHRvIGRyaXZlIHNjcm9sbGluZyBhbmltYXRpb25zIChzeW5jIHNjcm9s
bCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjA3
NworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTZXJ2aWNl
IHN5bmMgc2Nyb2xsIGFuaW1hdGlvbnMgYXMgcGFydCBvZiB0aGUgc2Nyb2xsIHBoYXNlIGluCisg
ICAgICAgIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZywgd2hpY2ggaXMgZHJpdmVuIGJ5IHRoZSBkaXNw
bGF5IHJlZnJlc2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNlcnZpY2VTY3JvbGxBbmltYXRpb25Gb3JTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cnVuU2Nyb2xsU3RlcHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlkU3RhcnRTY3JvbGxBbmltYXRp
b24pOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OlNjcm9s
bEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzdGFydEFuaW1h
dGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzdG9wQW5p
bWF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNlcnZp
Y2VTY3JvbGxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZGlkU3RhcnRTY3JvbGxB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZXRh
cmdldEFuaW1hdGVkU2Nyb2xsQnkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6OmRpZFN0YXJ0U2Nyb2xsQW5pbWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmRpZFN0YXJ0U2Nyb2xs
QW5pbWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorCiAyMDIx
LTExLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3Rp
ZmljYXRpb25zIG9uIGlPUyBlbmFibGVkIGF0IGNvbXBpbGUtdGltZSwgZGlzYWJsZWQgYXQgcnVu
dGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTk0OWNiNWI3NmNjYTdhYjRjN2Q3MzA0
ZDU3YTQ2MTE3MDI2Y2VmMC4uN2UwYjBjNTJlMjVkMTU0ZTUxMzc2Y2Q4ZTRhYzk3OGI4YTg4Nzcy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRv
ci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNDM0Nyw5ICs0MzQ4
LDM1IEBAIHZvaWQgRG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCgp
CiAgICAgbV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQgPSB0cnVlOwogfQogCitzdGF0
aWMgYm9vbCBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBNb25vdG9uaWNUaW1lIHRpbWUpCit7CisgICAgaWYgKCFz
Y3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGF1dG8qIGFu
aW1hdG9yID0gc2Nyb2xsYWJsZUFyZWEtPmV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKKyAgICAg
ICAgcmV0dXJuIGFuaW1hdG9yLT5zZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKHRpbWUpID09IFNjcm9s
bEFuaW1hdGlvblN0YXR1czo6QW5pbWF0aW5nOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAv
LyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20tdmlldy8jcnVuLXRoZS1zY3JvbGwtc3Rl
cHMKIHZvaWQgRG9jdW1lbnQ6OnJ1blNjcm9sbFN0ZXBzKCkKIHsKKyAgICAvLyBTZXJ2aWNlIHVz
ZXIgc2Nyb2xsIGFuaW1hdGlvbnMgYmVmb3JlIHNjcm9sbCBldmVudCBkaXNwYXRjaC4KKyAgICBS
ZWZQdHI8RnJhbWVWaWV3PiBmcmFtZVZpZXcgPSB2aWV3KCk7CisgICAgaWYgKGZyYW1lVmlldykg
eworICAgICAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAg
ICAgICBib29sIHNjcm9sbEFuaW1hdGlvbnNJblByb2dyZXNzID0gc2VydmljZVNjcm9sbEFuaW1h
dGlvbkZvclNjcm9sbGFibGVBcmVhKGZyYW1lVmlldy5nZXQoKSwgbm93KTsKKyAgICAgICAgaWYg
KGF1dG8qIHNjcm9sbGFibGVBcmVhcyA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byogc2Nyb2xsYWJsZUFyZWEgOiAqc2Nyb2xsYWJsZUFyZWFz
KSB7CisgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VTY3JvbGxBbmltYXRpb25Gb3JTY3JvbGxh
YmxlQXJlYShzY3JvbGxhYmxlQXJlYSwgbm93KSkKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xs
QW5pbWF0aW9uc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGlmIChzY3JvbGxBbmltYXRpb25zSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHBhZ2Uo
KS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwg
fSk7CisgICAgfQorCiAgICAgLy8gRklYTUU6IFRoZSBvcmRlciBvZiBkaXNwYXRjaGluZyBpcyBu
b3Qgc3BlY2lmaWVkOiBodHRwczovL2dpdGh1Yi5jb20vV0lDRy92aXN1YWwtdmlld3BvcnQvaXNz
dWVzLzY2LgogICAgIGlmIChtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdldExpc3QgJiYgIW1fcGVu
ZGluZ1Njcm9sbEV2ZW50VGFyZ2V0TGlzdC0+dGFyZ2V0cy5pc0VtcHR5KCkpIHsKICAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJEb2N1bWVudCAiIDw8IHRoaXMgPDwg
IiBzZW5kaW5nIHNjcm9sbCBldmVudHMgdG8gcGVuZGluZyBzY3JvbGwgZXZlbnQgdGFyZ2V0cyIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGYyMjM4NWViNDAyMDQ1MmYxMTQxNjky
YzA3ODk0ZDQ1NTQ1OGQ0NDIuLjkzODRhMjU3ZTVmM2E1ZWZiYWQ2YjY1YWI3YTdhOWU4YjcyYzZl
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTU3MDAsNiArNTcwMCwxMiBAQCBm
bG9hdCBGcmFtZVZpZXc6OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1l
KCkuZnJhbWVTY2FsZUZhY3RvcigpOwogfQogCit2b2lkIEZyYW1lVmlldzo6ZGlkU3RhcnRTY3Jv
bGxBbmltYXRpb24oKQoreworICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKHsgUmVuZGVyaW5nVXBkYXRlU3Rl
cDo6U2Nyb2xsIH0pOworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsYmFyU3RlcHMo
KQogewogICAgIGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSA/IGZy
YW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggZDY5MzE1ZGVhMGUyNjhjMmFkZDAwYTc1NjUxMTdiMTdlMGZhNzhj
MS4uZTljMjUyMjM0ZjUwMmNkZGFmOWEzNDZmMWQ2YThlZWVlZTg3MjExYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC04NzYsNiArODc2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNjcm9s
bGFibGVBcmVhLgogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkU3RhcnRTY3JvbGxBbmltYXRpb24oKSBmaW5hbDsKIAogICAgIHN0YXRpYyBN
b25vdG9uaWNUaW1lIHNDdXJyZW50UGFpbnRUaW1lU3RhbXA7IC8vIHVzZWQgZm9yIGRldGVjdGlu
ZyBkZWNvZGVkIHJlc291cmNlIHRocmFzaCBpbiB0aGUgY2FjaGUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGFiMThiODI3OWFmZjhlZTg5YTg5YzIw
ZTVhMDM4ODVlNTM0ZDNjZDQuLmY2NTA0YWE2YmRhYWI5NjI0Y2QxZjliNjcyOTUyODgzMjAxNmMw
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTU0
LDcgKzU0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRv
cjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmwKIFNjcm9sbEFuaW1hdG9yOjpTY3Jv
bGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9s
bGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9zY3JvbGxDb250cm9sbGVyKCp0aGlz
KQotICAgICwgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX2tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IobWFrZVVuaXF1ZTxLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yPigqdGhpcywgbV9zY3JvbGxDb250cm9sbGVyKSkKIHsKIH0KQEAgLTM4NCwyMCArMzgzLDE1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3Jv
bGxBbmltYXRvcjo6Y3JlYXRlVGltZXIoRnVuCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnN0YXJ0
QW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQogewotICAgIGlm
IChtX3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lci5zdGFydFJlcGVh
dGluZygxX3MgLyA2MC4pOworICAgIGlmICghbV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQpIHsK
KyAgICAgICAgbV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQgPSB0cnVlOworICAgICAgICBtX3Nj
cm9sbGFibGVBcmVhLmRpZFN0YXJ0U2Nyb2xsQW5pbWF0aW9uKCk7CisgICAgfQogfQogCiB2b2lk
IFNjcm9sbEFuaW1hdG9yOjpzdG9wQW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXImKQogewotICAgIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyLnN0b3Ao
KTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRp
bWVyRmlyZWQoKQotewotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5hbmltYXRpb25DYWxsYmFjayhN
b25vdG9uaWNUaW1lOjpub3coKSk7CisgICAgbV9zY3JvbGxBbmltYXRpb25TY2hlZHVsZWQgPSBm
YWxzZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ2NSw0ICs0NTksMTEgQEAgZmxvYXQg
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbE9mZnNldEFkanVzdGVkRm9yU25hcHBpbmcoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMsIGNvbnMKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdGVk
U2Nyb2xsRGVzdGluYXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eUluU2Nyb2xsQXhpcywg
b3JpZ2luYWxPZmZzZXQpOwogfQogCitTY3JvbGxBbmltYXRpb25TdGF0dXMgU2Nyb2xsQW5pbWF0
b3I6OnNlcnZpY2VTY3JvbGxBbmltYXRpb24oTW9ub3RvbmljVGltZSB0aW1lKQoreworICAgIGlm
IChtX3Njcm9sbEFuaW1hdGlvblNjaGVkdWxlZCkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVy
LmFuaW1hdGlvbkNhbGxiYWNrKHRpbWUpOworICAgIHJldHVybiBtX3Njcm9sbEFuaW1hdGlvblNj
aGVkdWxlZCA/IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6QW5pbWF0aW5nIDogU2Nyb2xsQW5pbWF0
aW9uU3RhdHVzOjpOb3RBbmltYXRpbmc7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDZiNGExYTE4NTAwNDc4
OTU2MGMxZGMyYjk5ZDgxYTJjNDJmN2I4N2QuLjRlYTU4NGFiN2U2YWY1YzU3NWM5ZDg3MDRjN2Iz
MTBjYTU5YTU2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApA
QCAtMTIzLDEzICsxMjMsMTQgQEAgcHVibGljOgogICAgIGNvbnN0IExheW91dFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyogc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7CiAgICAgdm9pZCByZXNuYXBBZnRl
ckxheW91dCgpOwogCisgICAgU2Nyb2xsQW5pbWF0aW9uU3RhdHVzIHNlcnZpY2VTY3JvbGxBbmlt
YXRpb24oTW9ub3RvbmljVGltZSk7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1BbGxvd3NTY3JvbGxBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoY29uc3QgRmxvYXRTaXplJiBk
ZWx0YSk7CiAKLSAgICB2b2lkIHNjcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKCk7
CiAgICAgdm9pZCB1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKTsKIAogICAg
IEZsb2F0UG9pbnQgb2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
KSBjb25zdDsKQEAgLTE3NiwxMCArMTc3LDEyIEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxhYmxl
QXJlYSYgbV9zY3JvbGxhYmxlQXJlYTsKICAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9y
PiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ciBtX3Njcm9sbENvbnRyb2xsZXI7Ci0gICAgVGltZXIgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0
aW9uVGltZXI7CiAgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRQb3NpdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yPiBtX2tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3I7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Njcm9sbEFuaW1hdGlvblNjaGVkdWxl
ZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBmZTQyYzRlYzZlYmE0ZjA0OGY5NGZlZjU5
MDQ5MzY5MGJlNTM1NjVhLi45YmMzMGNkMjliZGE5MmMwYjZhMTBmMzViYWIyYjY5ZTFkN2NkZGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTM1Myw2ICsz
NTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAxLjBmOwogICAgIH0KIAorICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydFNjcm9sbEFuaW1hdGlvbigpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgU2Nyb2xsYWJsZUFyZWEoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5TY3JvbGxhYmxlQXJlYSgpOwpAQCAtNDEzLDYgKzQxNSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2luTGl2ZVJlc2l6ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Njcm9sbE9yaWdpbkNo
YW5nZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zY3JvbGxTaG91bGRDbGVhckxhdGNoZWRTdGF0
ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0FjdGl2ZVNjcm9sbEFuaW1hdGlvbiB7IGZhbHNl
IH07CiB9OwogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgU2Nyb2xsYWJsZUFyZWEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAppbmRleCBiZjAzOGJkNWZiMmFlYmI3
ZDM2MzFjOTcyOGRkNjBmZjNhYWM4ZGVmLi40NzY5ZjFkNThmOGJjM2NiNDJmOGNjMjRlN2Q1OGFi
MDIzOWY5N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCkBAIC0xMjAsMTIgKzEyMCwxMSBAQCBib29sIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZXRhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQg
bmV3RGVzdGluYXRpbwogCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZXRhcmdl
dEFuaW1hdGVkU2Nyb2xsQnkoRmxvYXRTaXplIG9mZnNldCkKIHsKLSAgICBpZiAoIWlzPFNjcm9s
bEFuaW1hdGlvblNtb290aD4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkKKyAgICBpZiAoIWlz
PFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSB8fCAhbV9j
dXJyZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiByZXRhcmdldEFuaW1hdGVkU2Nyb2xsQnkg
IiA8PCBvZmZzZXQpOwogCi0gICAgQVNTRVJUKG1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUo
KSk7CiAgICAgaWYgKGF1dG8gZGVzdGluYXRpb25PZmZzZXQgPSBtX2N1cnJlbnRBbmltYXRpb24t
PmRlc3RpbmF0aW9uT2Zmc2V0KCkpCiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRBbmltYXRpb24t
PnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKCpkZXN0aW5hdGlvbk9mZnNldCArIG9mZnNldCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFi
bGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFi
bGVBcmVhLmNwcAppbmRleCA3YTRkYzJjNjJmNWUxZGFkMDcwOTAyNTY4ZDFhNmMyODg5MTVhNTc5
Li5jNzdlZmVjNDFiNWFhYTgzMTYyMzY1NGYxZjA5NDRjYTc1MGVlZDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3Bw
CkBAIC0xODQwLDQgKzE4NDAsOSBAQCBTdHJpbmcgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6
ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIuZGVidWdEZXNjcmlw
dGlvbigpOwogfQogCit2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmRpZFN0YXJ0U2Ny
b2xsQW5pbWF0aW9uKCkKK3sKKyAgICBtX2xheWVyLnBhZ2UoKS5zY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSh7IFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCB9KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhLmgKaW5kZXggMDM2NTRjNzBiYjNhMGMzZDY1MTZhYWZjMjdhNWIxNmY2
MjU0MjlkNi4uOGQ0NTE4NzgyNjFhNjA1MTMyZGRjMzA1NGVkNmE5ZDAyNWJjM2U1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5oCkBAIC0xOTQsNiArMTk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nTW9ja1Njcm9sbEFu
aW1hdG9yTWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFN0cmluZyBk
ZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBkaWRTdGFydFNjcm9sbEFu
aW1hdGlvbigpIGZpbmFsOwogCiAgICAgSW50U2l6ZSB2aXNpYmxlU2l6ZSgpIGNvbnN0IGZpbmFs
OwogICAgIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNjM4NmZiYTJmNDk4YjVkNmI4MDIy
ZGIxODQyYjQ5NWYwZTU4YTBiYy4uNTk1YjhmZWEwNjE2ZTlkMmIyMGQ5NzJhY2YyNThjNGEyMzQ0
Mjk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAt
OTA4LDYgKzkwOCwxMSBAQCBTdHJpbmcgUmVuZGVyTGlzdEJveDo6ZGVidWdEZXNjcmlwdGlvbigp
IGNvbnN0CiAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6ZGVidWdEZXNjcmlwdGlvbigpOwogfQog
Cit2b2lkIFJlbmRlckxpc3RCb3g6OmRpZFN0YXJ0U2Nyb2xsQW5pbWF0aW9uKCkKK3sKKyAgICBw
YWdlKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3Jv
bGwgfSk7Cit9CisKIFJlZjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJh
cigpCiB7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggMmE3ZmUzMDc1NzA3YjRiMTVkNjk3MjU2NzgwZDNh
MTU1ODBhNjljZC4uNWI2NzBlMmIxOWM4ZDlhYjk1MmQxNGY5OThhNTYxZmM1Y2ViMzYxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0xNDEsNiArMTQxLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1vY2tTY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIGRpZFN0YXJ0U2Nyb2xsQW5pbWF0aW9uKCkgZmluYWw7CiAKICAgICAvLyBO
T1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJpZGRlbiBzZXRTY3Jv
bGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2b2lkIHNjcm9sbFRvKGludCBuZXdP
ZmZzZXQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>