<?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>197819</bug_id>
          
          <creation_ts>2019-05-11 15:45:11 -0700</creation_ts>
          <short_desc>eventSender.monitorWheelEvents() is very fragile</short_desc>
          <delta_ts>2020-03-21 12:10:58 -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>Tools / Tests</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=148407</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=198757</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jacob_uphoff</cc>
    
    <cc>jamesr</cc>
    
    <cc>jlewis3</cc>
    
    <cc>kangil.han</cc>
    
    <cc>Lawrence.j</cc>
    
    <cc>lforschler</cc>
    
    <cc>luiz</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1535389</commentid>
    <comment_count>0</comment_count>
      <attachid>369664</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-05-11 15:45:11 -0700</bug_when>
    <thetext>Created attachment 369664
Test with issues

I can&apos;t get a test using eventSender.monitorWheelEvents() to work. Test attached.

It always times out and I have no idea why. See comments in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540890</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-31 16:27:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/51319456&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580437</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-15 20:32:54 -0700</bug_when>
    <thetext>I&apos;ve spent way too long trying to make the eventSender.monitorWheelEvents() more robust. I think the design is fundamentally broken; there&apos;s no way to tell, when you get the &apos;ended&apos; phase on the scroll gesture, that you&apos;ll be starting a momentum phase and need to keep postponing the final callback.

A better design would be to use JSON to describe the sequence of events, and make a single call into EventSender that starts monitoring, and knows to keep monitoring until all the events have been dispatched and received by the web process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580656</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-16 13:34:00 -0700</bug_when>
    <thetext>Going to look at a UIScriptController replacement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631423</commentid>
    <comment_count>4</comment_count>
      <attachid>393917</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-18 16:57:18 -0700</bug_when>
    <thetext>Created attachment 393917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631425</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-18 16:57:22 -0700</bug_when>
    <thetext>*** Bug 209255 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631429</commentid>
    <comment_count>6</comment_count>
      <attachid>393917</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-18 17:02:54 -0700</bug_when>
    <thetext>Comment on attachment 393917
Patch

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

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:855
&gt; +    [[[mainFrame frameView] documentView] layout];

!

&gt; Tools/DumpRenderTree/mac/EventSendingController.mm:881
&gt; +    if (phase == 4 /* kCGScrollPhaseEnded */ || phase == 8 /* kCGScrollPhaseCancelled */)

Why can&apos;t we use the constants?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631439</commentid>
    <comment_count>7</comment_count>
      <attachid>393923</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-18 17:20:59 -0700</bug_when>
    <thetext>Created attachment 393923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631444</commentid>
    <comment_count>8</comment_count>
      <attachid>393923</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-03-18 17:34:03 -0700</bug_when>
    <thetext>Comment on attachment 393923
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Deflake tests using eventSender.monitorWheelEvents() by fixing several causes of flakiness,

This removes flaky expectation for one test, and changes another. Are you planning to watch results for other such tests, and remove the expectations after a while?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631459</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-18 18:02:42 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Comment on attachment 393923 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393923&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Deflake tests using eventSender.monitorWheelEvents() by fixing several causes of flakiness,
&gt; 
&gt; This removes flaky expectation for one test, and changes another. Are you
&gt; planning to watch results for other such tests, and remove the expectations
&gt; after a while?

I plan to remove flakey expectations for all tests which I suspect have been suffering from monitorWheelEvents() flakiness, after some local testing and EWSing. We might have to put some back if it turns out I did not fix them. I&apos;ll do that after this has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631484</commentid>
    <comment_count>10</comment_count>
      <attachid>393933</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-18 18:45:33 -0700</bug_when>
    <thetext>Created attachment 393933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631527</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-18 21:06:42 -0700</bug_when>
    <thetext>Committed r258679: &lt;https://trac.webkit.org/changeset/258679&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 393933.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632497</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 11:49:20 -0700</bug_when>
    <thetext>*** Bug 208160 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632499</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 11:52:52 -0700</bug_when>
    <thetext>*** Bug 208471 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632502</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 11:56:09 -0700</bug_when>
    <thetext>*** Bug 207518 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632504</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 11:57:47 -0700</bug_when>
    <thetext>*** Bug 207848 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632506</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 11:58:44 -0700</bug_when>
    <thetext>*** Bug 207953 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632508</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 12:01:06 -0700</bug_when>
    <thetext>*** Bug 207861 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632511</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 12:03:47 -0700</bug_when>
    <thetext>*** Bug 207120 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632514</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 12:06:04 -0700</bug_when>
    <thetext>*** Bug 171839 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632516</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 12:07:20 -0700</bug_when>
    <thetext>*** Bug 207948 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632518</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-21 12:10:58 -0700</bug_when>
    <thetext>*** Bug 158237 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>369664</attachid>
            <date>2019-05-11 15:45:11 -0700</date>
            <delta_ts>2019-05-11 15:45:11 -0700</delta_ts>
            <desc>Test with issues</desc>
            <filename>repaint-shared-on-scroll.html</filename>
            <type>text/html</type>
            <size>3105</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgaW50ZXJuYWw6QXN5bmNP
dmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgo8aHRtbD4KPGhlYWQ+CiAgICA8dGl0
bGU+VGVzdHMgcGFpbnRpbmcgb2YgYSBsYXllciB3aXRoIG9wYWNpdHkgaW50byBzaGFyZWQgYmFj
a2luZzwvdGl0bGU+CiAgICA8c3R5bGU+CiAgICAgICAgLnNjcm9sbGFibGUgewogICAgICAgICAg
ICBvdmVyZmxvdy15OiBzY3JvbGw7CiAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4OwogICAgICAgICAgICBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsKICAgICAgICB9CgkJCgkJLmJveC5zaGFyaW5nIHsKICAg
ICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKCQl9CgkJCgkJLmJveCB7CgkJCXBvc2l0
aW9uOiByZWxhdGl2ZTsKCQkJdG9wOiA1MHB4OwoJCQlsZWZ0OiA1MHB4OwogICAgICAgICAgICB3
aWR0aDogMTgwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTgwcHg7CiAgICAgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuOwoJCX0KCiAgICAgICAgLnNwYWNlciB7CiAgICAgICAgICAgIGhl
aWdodDogNTAwcHg7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzY3JpcHQ+CiAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKCiAgICAgICAgZnVuY3Rpb24gc2Nyb2xsRG93bigpCiAgICAgICAgewogICAgICAgICAg
ICBjb25zb2xlLmxvZygnc2Nyb2xsaW5nIGRvd24nKTsKICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7IC8vIERvIEkgbmVlZCB0aGlzIG9uY2UgcGVyIGdlc3R1cmUs
IG9yIGp1c3Qgb25jZT8KICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oNTAsIDUw
KTsKICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIC0xLCAiYmVnYW4iLCAibm9uZSIpOwogICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEwMCwgImNoYW5n
ZWQiLCAibm9uZSIpOwogICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEwMCwgIm5vbmUiLCAiY29udGludWUiKTsKICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIC0xMDAsICJub25lIiwgImNvbnRpbnVlIik7CiAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAibm9uZSIsICJlbmQi
KTsKICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgp
ID0+IHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzY3JvbGxpbmcgdXAnKTsKICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHNjcm9sbFVw
KCk7CiAgICAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxVcCgpCiAgICAgICAgewogICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsgLy8gSWYgSSBkb24ndCBjYWxsIHRoaXMgYSBzZWNvbmQg
dGltZSwgb25seSB0aGUgZmlyc3QKICAgICAgICAgICAgLy8gbW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzIGlzIHJ1biBhbmQgSSBoYXZlIG5vIGlkZWEgd2h5LgogICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgNTApOwogICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMSwgImJlZ2Fu
IiwgIm5vbmUiKTsKICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDEwMCwgImNoYW5nZWQiLCAibm9uZSIpOwogICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MTAwLCAibm9uZSIsICJjb250aW51ZSIpOwogICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMTAwLCAibm9uZSIsICJjb250aW51
ZSIpOwogICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgIm5vbmUiLCAiZW5kIik7CiAgICAgICAgICAgIC8vIFRoaXMgb25l
IG5ldmVyIGdldHMgY2FsbGVkLiBEb2VzIHRoZSBzZWNvbmQgY2FsbGJhY2sgcmVwbGFjZSB0aGUg
Zmlyc3Q/CiAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cygoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZG9uZScpOwogICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0K
CiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7CiAgICAgICAg
ICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgcmV0dXJuOwoKICAg
ICAgICAgICAgLy8gSXMgdGhpcyBzZXRUaW1lb3V0IG5lY2Vzc2FyeT8gV2h5PwogICAgICAgICAg
ICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgIHNjcm9sbERvd24oKTsKICAgICAg
ICAgICAgfSwgMCk7CiAgICAgICAgfSwgZmFsc2UpOwogICAgPC9zY3JpcHQ+CjwvaGVhZD4KPGJv
ZHk+CiAgICBTb21lIHRleHQgaGVyZS4KICAgIDxkaXYgY2xhc3M9InNjcm9sbGFibGUiPgogICAg
ICAgIDxkaXYgY2xhc3M9InNoYXJpbmcgYm94Ij4KCQkJPGRpdiBjbGFzcz0iaW5uZXIgYm94Ij48
L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZXIiPjwvZGl2Pgog
ICAgPC9kaXY+CjwvYm9keT4KPC9odG1sPgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393917</attachid>
            <date>2020-03-18 16:57:18 -0700</date>
            <delta_ts>2020-03-18 17:32:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197819-20200318165717.patch</filename>
            <type>text/plain</type>
            <size>58885</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4MjY0OTkxZWM4OTM2
NDY2OGUyNzdjZTA5MTZhZTIyN2MzZTgyZC4uN2YxMzI0MjE5MjA2NDA4OTg2OTBlMDZmNTgzMWYy
M2Q2NGM3OTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTAzLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpIGlzIHZlcnkgZnJhZ2lsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODE5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81MTMxOTQ1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBEZWZsYWtlIHRlc3RzIHVzaW5nIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpIGJ5IGZpeGluZyBzZXZlcmFsIGNhdXNlcyBvZiBmbGFraW5lc3MsCisgICAgICAgIGFkZGlu
ZyBiYWNrIGNoYW5nZXMgZnJvbSByMjU3ODQ0IHRoYXQgd2VyZSByZXZlcnRlZCBpbiByMjU4NTU4
LgorICAgICAgICAKKyAgICAgICAgRmlyc3QsIGhhdmUgRXZlbnRTZW5kaW5nQ29udHJvbGxlciBr
ZWVwIHRyYWNrIG9mIHdoZXRoZXIgaXQncyBzZWVuIHRoZW4gImVuZCIgZXZlbnQKKyAgICAgICAg
Zm9yIHRoZSBzY3JvbGxpbmcgYW5kIG1vbWVudHVtIHBoYXNlcywgYW5kIHBhc3MgdGhpcyBkb3du
IHRvIFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgd2hpY2gKKyAgICAgICAgbm93IHdhaXRzIHVudGls
IGl0IHNlZXMgdGhlc2UsIHdoaWNoIHByZXZlbnRzIHByZW1hdHVyZSB0cmlnZ2VyaW5nIHdoaWNo
IHdhcyBhIGNvbW1vbiBjYXVzZSBvZgorICAgICAgICBmYWlsdXJlIGJlZm9yZS4KKyAgICAgICAg
CisgICAgICAgIFNlY29uZCwgcmVtb3ZlIFdoZWVsRXZlbnRUZXN0TW9uaXRvcidzIDEvNjBzIHRp
bWVyIGFuZCBpbnN0ZWFkIGhhdmUgV2hlZWxFdmVudFRlc3RNb25pdG9yIHRlc3QKKyAgICAgICAg
Zm9yIGNvbXBsZXRpb24gaW4gYSBjYWxsb3V0IGZyb20gdGhlIGVuZCBvZiBQYWdlOjp1cGRhdGVS
ZW5kZXJpbmcoKSwgd2hpY2ggbWFrZXMgaXQgdGVzdAorICAgICAgICBhbmQgZmlyZSBhdCBhIG1v
cmUgY29uc2lzdGVudCB0aW1lLgorICAgICAgICAKKyAgICAgICAgVGhpcmQsIHB1c2ggV2hlZWxF
dmVudFRlc3RNb25pdG9yIHRvIHRoZSBTY3JvbGxpbmdUcmVlLCBzbyB0aGF0IHJlYXNvbnMgZm9y
IGRlZmVycmFsCisgICAgICAgIGNhbiBiZSBhZGRlZCBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4g
VGhpcyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB0aGUgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKCkK
KyAgICAgICAgdXNlZCB0byBzZW5kIHRoZSAiU2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCIgcmVh
c29uIHRvIHRoZSBtYWluIHRocmVhZCB3b3VsZCBnZXQgZGVsYXllZCwKKyAgICAgICAgYWxzbyBy
ZXN1bHRpbmcgaW4gYSBwcmVtYXR1cmUgdHJpZ2dlci4KKworICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDogVW5pZmllZCBzb3VyY2VzIQorICAgICAgICAqIGRv
bS9XaW5kb3dFdmVudExvb3AuY3BwOiBVbmlmaWVkIHNvdXJjZXMhCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjcm9sbE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwp
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0Fm
dGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OndoZWVsRXZlbnRU
ZXN0TW9uaXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjbGVhcldoZWVsRXZl
bnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc01vbml0b3JpbmdXaGVl
bEV2ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjplbnN1cmVXaGVlbEV2ZW50
VGVzdE1vbml0b3IpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6d2hlZWxFdmVudFRlc3RNb25pdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OldoZWVsRXZlbnRUZXN0TW9uaXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNsZWFyQWxsVGVzdERlZmVy
cmFscyk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RD
YWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OmRlZmVyRm9yUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpyZWNlaXZlZFdoZWVsRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpzY2hlZHVsZUNhbGxiYWNrQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpjaGVja1Nob3VsZEZpcmVD
YWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZp
Y2F0aW9uVGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RN
b25pdG9yOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
V2hlZWxFdmVudFRlc3RNb25pdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVz
dE1vbml0b3JDb21wbGV0aW9uRGVmZXJyZXI6OldoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRp
b25EZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3JDb21w
bGV0aW9uRGVmZXJyZXI6On5XaGVlbEV2ZW50VGVzdE1vbml0b3JDb21wbGV0aW9uRGVmZXJyZXIp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
TGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVX
aGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c3RhcnRNb25pdG9yaW5nV2hlZWxFdmVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN0b3BNb25pdG9y
aW5nV2hlZWxFdmVudHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZTo6c2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnJlY2VpdmVkV2hlZWxFdmVudCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlcldoZWVsRXZlbnRU
ZXN0Q29tcGxldGlvbkZvclJlYXNvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRlZFNjcm9sbGluZ1RyZWU6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFs
Rm9yUmVhc29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNj
cm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck1h
Yzo6c3RhcnRNb25pdG9yaW5nV2hlZWxFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWM6OnN0b3BNb25pdG9yaW5nV2hlZWxFdmVudHMpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmg6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW06CisgICAgICAgIChTY3JvbGxpbmdUcmVl
TWFjOjpzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IpOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1h
Yzo6cmVjZWl2ZWRXaGVlbEV2ZW50KToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVNYWM6OmRlZmVy
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKToKKyAgICAgICAgKFNjcm9sbGluZ1Ry
ZWVNYWM6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uIGNv
bnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldFdoZWVsRXZlbnRNb25pdG9yVGVzdENhbGxiYWNr
QW5kU3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0VGVz
dENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcik6IERlbGV0ZWQuCisgICAgICAgICog
dGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaDoKKwogMjAyMC0wMy0xNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjI1NDg1NikgQWRkIGV4Y2VwdGlvbiBmb3Igd2luZG93Lm9wZW5EYXRhYmFzZSB0byBub3QgbWFz
cXVlcmFkZSBhcyB1bmRlZmluZWQgaW4gY3VycmVudGx5IHNoaXBwaW5nIEplc3VzIENhbGxpbmcg
RGV2b3Rpb25hbCBhcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTVlMzlmMjc2NjQ5YWMzZjBiOWM5ZWQ5MzViZDc4
Y2M5ZGQwN2U2OC4uZThjN2M2OWEyYjczZDJjMTQyZWU0YWI4MjY4Y2VlMGY2ZDRhM2Y5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wMy0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKSBpcyB2ZXJ5IGZyYWdpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NzgxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTEzMTk0NTY+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmbGFrZSB0
ZXN0cyB1c2luZyBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKSBieSBmaXhpbmcgc2V2
ZXJhbCBjYXVzZXMgb2YgZmxha2luZXNzLAorICAgICAgICBhZGRpbmcgYmFjayBjaGFuZ2VzIGZy
b20gcjI1Nzg0NCB0aGF0IHdlcmUgcmV2ZXJ0ZWQgaW4gcjI1ODU1OC4KKyAgICAgICAgCisgICAg
ICAgIEZpcnN0LCBoYXZlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIga2VlcCB0cmFjayBvZiB3aGV0
aGVyIGl0J3Mgc2VlbiB0aGVuICJlbmQiIGV2ZW50CisgICAgICAgIGZvciB0aGUgc2Nyb2xsaW5n
IGFuZCBtb21lbnR1bSBwaGFzZXMsIGFuZCBwYXNzIHRoaXMgZG93biB0byBXaGVlbEV2ZW50VGVz
dE1vbml0b3IsIHdoaWNoCisgICAgICAgIG5vdyB3YWl0cyB1bnRpbCBpdCBzZWVzIHRoZXNlLCB3
aGljaCBwcmV2ZW50cyBwcmVtYXR1cmUgdHJpZ2dlcmluZyB3aGljaCB3YXMgYSBjb21tb24gY2F1
c2Ugb2YKKyAgICAgICAgZmFpbHVyZSBiZWZvcmUuCisgICAgICAgIAorICAgICAgICBTZWNvbmQs
IHJlbW92ZSBXaGVlbEV2ZW50VGVzdE1vbml0b3IncyAxLzYwcyB0aW1lciBhbmQgaW5zdGVhZCBo
YXZlIFdoZWVsRXZlbnRUZXN0TW9uaXRvciB0ZXN0CisgICAgICAgIGZvciBjb21wbGV0aW9uIGlu
IGEgY2FsbG91dCBmcm9tIHRoZSBlbmQgb2YgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCksIHdoaWNo
IG1ha2VzIGl0IHRlc3QKKyAgICAgICAgYW5kIGZpcmUgYXQgYSBtb3JlIGNvbnNpc3RlbnQgdGlt
ZS4KKyAgICAgICAgCisgICAgICAgIFRoaXJkLCBwdXNoIFdoZWVsRXZlbnRUZXN0TW9uaXRvciB0
byB0aGUgU2Nyb2xsaW5nVHJlZSwgc28gdGhhdCByZWFzb25zIGZvciBkZWZlcnJhbAorICAgICAg
ICBjYW4gYmUgYWRkZWQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuIFRoaXMgZml4ZXMgYW4gaXNz
dWUgd2hlcmUgdGhlIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaCgpCisgICAgICAgIHVzZWQgdG8g
c2VuZCB0aGUgIlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQiIHJlYXNvbiB0byB0aGUgbWFpbiB0
aHJlYWQgd291bGQgZ2V0IGRlbGF5ZWQsCisgICAgICAgIGFsc28gcmVzdWx0aW5nIGluIGEgcHJl
bWF0dXJlIHRyaWdnZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9s
bE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKwogMjAyMC0wMy0xNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBHVEsgYnVp
bGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5jcHAKaW5kZXggNjQ5M2ZlNmJhNTljYzVjMWVkNTE4MzIxZDNlZTZmMTdkNDRmMjg1OC4u
NGEzZjc1YmVmZDlmNThlNDYxYzFmN2NkOWM3YWJmYjVlZWEzN2JjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApAQCAtNjMs
NiArNjMsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2luY2x1ZGUg
PFdlYktpdEFkZGl0aW9ucy9BcHBsZVBheVNlc3Npb25BZGRpdGlvbnMuY3BwPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2luZG93RXZlbnRMb29wLmNwcAppbmRleCAzN2VmZTkwNzIyYTQxNzUwZGY4YTg0ZTkx
NTg2OGE5ZjIzNWZiMGYzLi5kOTE4OTA3MjJkODI2MWVhZjhiYTQ1NjAxZGU0ZWI1YTQ1NWIzNjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vV2luZG93RXZlbnRMb29wLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCBlOTJjZTJjZDRhNmE2Y2JlZDJmOWE5MWQ5YzJmZjI0YThlMGM2ZmU2Li5lZGUw
YjRhMDA4YWM5OTljMDRhNGNjNjhmN2FlZDlhYTJkYjZjZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0xMDMsNiArMTAzLDcgQEAKICNpbmNsdWRlICJWaXNpYmxlVW5p
dHMuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudERlbHRh
RmlsdGVyLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSAi
V2luZG93c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMjgyNSw2ICsyODI2LDE0IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
ZXZlbnQpCiAgICAgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBMT0dfV0lU
SF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIkV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudCBvbiBtYWluIHRocmVhZCwgcGhhc2UgIiA8PCBldmVudC5waGFzZSgp
IDw8ICIgbW9tZW50dW0gcGhhc2UgIiA8PCBldmVudC5tb21lbnR1bVBoYXNlKCkpOworICAgIGlm
IChhdXRvIG1vbml0b3IgPSBtX2ZyYW1lLnBhZ2UoKS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkp
CisgICAgICAgIG1vbml0b3ItPnJlY2VpdmVkV2hlZWxFdmVudChldmVudCk7CisKKyAgICBXaGVl
bEV2ZW50VGVzdE1vbml0b3JDb21wbGV0aW9uRGVmZXJyZXIgZGVmZXJyZXIobV9mcmFtZS5wYWdl
KCktPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpLmdldCgpLCB0aGlzLCBXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OkRlZmVyUmVhc29uOjpIYW5kbGluZ1doZWVsRXZlbnRPbk1haW5UaHJlYWQpOworI2Vu
ZGlmCisKICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0gdHJ1ZTsKICAgICBzZXRGcmFtZVdh
c1Njcm9sbGVkQnlVc2VyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAzNzNi
MzExY2M1MzBmNjQxMjc1NDM0YWRlNTJmOTBmYTlhYmI2M2U3Li41M2YxNzk4ZThjMmMxNWRmZDZm
NTlkZWFlNmM2MGY1M2Y2M2I0MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0y
NDQ1LDYgKzI0NDUsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZENoYW5nZVNjcm9sbE9mZnNldCgp
CiAKIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJ
bXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBjb25zdCBTY3JvbGxPZmZzZXQmIG5l
d09mZnNldCkKIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXaGVlbEV2ZW50VGVzdE1vbml0
b3JDb21wbGV0aW9uRGVmZXJyZXIgZGVmZXJyZXIoZnJhbWUoKS5wYWdlKCktPndoZWVsRXZlbnRU
ZXN0TW9uaXRvcigpLmdldCgpLCB0aGlzLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVh
c29uOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7CisjZW5kaWYKKwogICAgIHVwZGF0ZUxheWVy
UG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKTsKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0Fm
dGVyU2Nyb2xsaW5nKCk7CiAgICAgcmVwYWludFNsb3dSZXBhaW50T2JqZWN0cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggODMxMGQzMzJjY2I3MTI0ZWI4ZjFhYzBiN2VmMTg1MTg5NTA3ZGFjZi4u
MWRmOTg1N2U3ZjE0MWNkZjA1MWUyOTRkMTM4NmVmODRlMzllMTI2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCkBAIC0xMzAsNiArMTMwLDcgQEAKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCiAj
aW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudERlbHRhRmlsdGVy
LmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSAiV2lkZ2V0
LmgiCiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZExlYWtDb3VudGVyLmg+CkBAIC0xMzkwLDYgKzEzOTEsOSBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJV
cGRhdGVSZW5kZXJpbmcoKQogICAgICAgICBkb2N1bWVudC0+dXBkYXRlVG91Y2hFdmVudFJlZ2lv
bnMoKTsKICNlbmRpZgogCisgICAgaWYgKFVOTElLRUxZKGlzTW9uaXRvcmluZ1doZWVsRXZlbnRz
KCkpKQorICAgICAgICB3aGVlbEV2ZW50VGVzdE1vbml0b3IoKS0+Y2hlY2tTaG91bGRGaXJlQ2Fs
bGJhY2tzKCk7CisKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
bWFpbkZyYW1lKCkudHJlZSgpLmZpcnN0UmVuZGVyZWRDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+dHJlZSgpLnRyYXZlcnNlTmV4dFJlbmRlcmVkKCkpIHsKICAgICAgICAgYXV0byogZnJh
bWVWaWV3ID0gY2hpbGQtPnZpZXcoKTsKQEAgLTI2MjEsMTQgKzI2MjUsMzQgQEAgdm9pZCBQYWdl
OjpwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCh1aW50NjRfdCBjbGllbnRJZCkKIAog
I2VuZGlmCiAKK1JlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IFBhZ2U6OndoZWVsRXZlbnRU
ZXN0TW9uaXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2hlZWxFdmVudFRlc3RNb25pdG9y
OworfQorCit2b2lkIFBhZ2U6OmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKCkKK3sKKyAgICBp
ZiAobV9zY3JvbGxpbmdDb29yZGluYXRvcikKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRv
ci0+c3RvcE1vbml0b3JpbmdXaGVlbEV2ZW50cygpOworCisgICAgbV93aGVlbEV2ZW50VGVzdE1v
bml0b3IgPSBudWxscHRyOworfQorCitib29sIFBhZ2U6OmlzTW9uaXRvcmluZ1doZWVsRXZlbnRz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKK30KKwog
V2hlZWxFdmVudFRlc3RNb25pdG9yJiBQYWdlOjplbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3Io
KQogewogICAgIGlmICghbV93aGVlbEV2ZW50VGVzdE1vbml0b3IpIHsKLSAgICAgICAgbV93aGVl
bEV2ZW50VGVzdE1vbml0b3IgPSBhZG9wdFJlZihuZXcgV2hlZWxFdmVudFRlc3RNb25pdG9yKCkp
OworICAgICAgICBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9IGFkb3B0UmVmKG5ldyBXaGVlbEV2
ZW50VGVzdE1vbml0b3IoKnRoaXMpKTsKICAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgdGhl
IHNjcm9sbGluZyBjb29yZGluYXRvciBzbyB0aGF0IHRoZSBtYWluZnJhbWUgc2Nyb2xsaW5nIG5v
ZGUgY2FuIGV4cGVjdCB3aGVlbCBldmVudCB0ZXN0IHRyaWdnZXJzLgogICAgICAgICBpZiAoYXV0
byogZnJhbWVWaWV3ID0gbWFpbkZyYW1lKCkudmlldygpKSB7Ci0gICAgICAgICAgICBpZiAobV9z
Y3JvbGxpbmdDb29yZGluYXRvcikKKyAgICAgICAgICAgIGlmIChtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yKSB7CisgICAgICAgICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvci0+c3RhcnRNb25p
dG9yaW5nV2hlZWxFdmVudHMoKTsKICAgICAgICAgICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yLT51cGRhdGVJc01vbml0b3JpbmdXaGVlbEV2ZW50c0ZvckZyYW1lVmlldygqZnJhbWVWaWV3
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBm
MmQxMDM4MmM5NDI1NTFiOWM4YWMwNzYxZWU4MGE2OGE3ODRhZmI2Li44ODNmMTBjY2QwN2I3OTI1
MWM1M2I4ODBjZmJjYjM5MmUxYTg4NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNDAsNyArNDAsNiBA
QAogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJW
aWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlTdGF0ZS5oIgotI2luY2x1
ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTE0Nyw2
ICsxNDYsNyBAQCBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogY2xhc3MgVmlzaXRlZExpbmtTdG9y
ZTsKIGNsYXNzIFdlYkdMU3RhdGVUcmFja2VyOwogY2xhc3MgV2hlZWxFdmVudERlbHRhRmlsdGVy
OworY2xhc3MgV2hlZWxFdmVudFRlc3RNb25pdG9yOwogCiB1c2luZyBTaGFyZWRTdHJpbmdIYXNo
ID0gdWludDMyX3Q7CiAKQEAgLTY0OSwxMCArNjQ5LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXliYWNrVGFyZ2V0UGlja2VyV2FzRGlzbWlzc2VkKHVpbnQ2NF90KTsK
ICNlbmRpZgogCi0gICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gd2hlZWxFdmVudFRl
c3RNb25pdG9yKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2ZW50VGVzdE1vbml0b3I7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiB3aGVlbEV2ZW50
VGVzdE1vbml0b3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBXaGVlbEV2ZW50VGVzdE1v
bml0b3ImIGVuc3VyZVdoZWVsRXZlbnRUZXN0TW9uaXRvcigpOwotICAgIHZvaWQgY2xlYXJXaGVl
bEV2ZW50VGVzdE1vbml0b3IoKSB7IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yID0gbnVsbHB0cjsg
fQotICAgIGJvb2wgaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSBjb25zdCB7IHJldHVybiAhIW1f
d2hlZWxFdmVudFRlc3RNb25pdG9yOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcldo
ZWVsRXZlbnRUZXN0TW9uaXRvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNb25pdG9y
aW5nV2hlZWxFdmVudHMoKSBjb25zdDsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIGFs
bG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dz
TWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1do
ZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKaW5kZXggMjBlYjRkMGY4MjE0ODY0NDZkYTM1N2Y5MTg4
N2YyZGYxY2Y4YzExOS4uNDU1ZWMwZWI5OTIxMWU4N2I5YmZmNDRiZDFmMzFmODMxYzViODk1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcApAQCAt
MzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9u
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0
U3RyZWFtLmg+CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC00MCw0MiArNDIsNTEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XaGVlbEV2ZW50VGVzdE1vbml0b3I6OldoZWVsRXZlbnRUZXN0
TW9uaXRvcigpCi0gICAgOiBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVu
dCgpLCB0aGlzLCAmV2hlZWxFdmVudFRlc3RNb25pdG9yOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQp
CitXaGVlbEV2ZW50VGVzdE1vbml0b3I6OldoZWVsRXZlbnRUZXN0TW9uaXRvcihQYWdlJiBwYWdl
KQorICAgIDogbV9wYWdlKHBhZ2UpCiB7CiB9CiAKIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpjbGVhckFsbFRlc3REZWZlcnJhbHMoKQogeworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4
KTsKKwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9kZWZlckNvbXBsZXRpb25S
ZWFzb25zLmNsZWFyKCk7CiAgICAgbV9jb21wbGV0aW9uQ2FsbGJhY2sgPSBudWxscHRyOwotICAg
IG1fdGVzdEZvckNvbXBsZXRpb25UaW1lci5zdG9wKCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFdo
ZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgICAgICAoPSkgV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpjbGVhckFsbFRlc3REZWZlcnJhbHM6IGNsZWFyZWQgYWxsIHRlc3Qgc3RhdGUuIik7
CisgICAgbV9ldmVySGFkRGVmZXJyYWwgPSBmYWxzZTsKKyAgICBtX3JlY2VpdmVkV2hlZWxFbmRP
ckNhbmNlbCA9IGZhbHNlOworICAgIG1fcmVjZWl2ZWRNb21lbnR1bUVuZCA9IGZhbHNlOworICAg
IExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OmNsZWFyQWxsVGVzdERlZmVycmFsczogY2xlYXJlZCBhbGwgdGVz
dCBzdGF0ZS4iKTsKIH0KIAotdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxs
YmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb25DYWxsYmFjaykKK3ZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJh
Y2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4
cGVjdE1vbWVudHVtRW5kLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbkNhbGxiYWNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9jb21wbGV0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGZ1bmN0aW9uQ2FsbGJhY2spOwotICAgIAotICAgIGlmICghbV90ZXN0Rm9y
Q29tcGxldGlvblRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGVzdEZvckNvbXBsZXRpb25U
aW1lci5zdGFydFJlcGVhdGluZygxX3MgLyA2MC4pOworICAgIG1fZXhwZWN0V2hlZWxFbmRPckNh
bmNlbCA9IGV4cGVjdFdoZWVsRW5kT3JDYW5jZWw7CisgICAgbV9leHBlY3RNb21lbnR1bUVuZCA9
IGV4cGVjdE1vbWVudHVtRW5kOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0
TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxi
YWNrQW5kU3RhcnRNb25pdG9yaW5nIC0gZXhwZWN0IGVuZC9jYW5jZWwgIiA8PCBleHBlY3RXaGVl
bEVuZE9yQ2FuY2VsIDw8ICIsIGV4cGVjdCBtb21lbnVtIGVuZCAiIDw8IGV4cGVjdE1vbWVudHVt
RW5kKTsKIH0KIAogdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmRlZmVyRm9yUmVhc29uKFNj
cm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBEZWZlclJlYXNvbiByZWFzb24pCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRl
eCk7CisKICAgICBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuZW5zdXJlKGlkZW50aWZpZXIsIFtd
IHsKICAgICAgICAgcmV0dXJuIE9wdGlvblNldDxEZWZlclJlYXNvbj4oKTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWUuYWRkKHJlYXNvbik7Ci0gICAgCisKKyAgICBtX2V2ZXJIYWREZWZlcnJhbCA9
IHRydWU7CisKICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJl
YW0gPDwgIiAgICAgICg9KSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmRlZmVyRm9yUmVhc29uOiBp
ZD0iIDw8IGlkZW50aWZpZXIgPDwgIiwgcmVhc29uPSIgPDwgcmVhc29uKTsKIH0KIAogdm9pZCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlbW92ZURlZmVycmFsRm9yUmVhc29uKFNjcm9sbGFibGVB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBEZWZlclJlYXNvbiByZWFzb24pCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisKICAg
ICBhdXRvIGl0ID0gbV9kZWZlckNvbXBsZXRpb25SZWFzb25zLmZpbmQoaWRlbnRpZmllcik7CiAg
ICAgaWYgKGl0ID09IG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5lbmQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtODUsMjggKzk2LDcxIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpyZW1v
dmVEZWZlcnJhbEZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlCiAgICAgCiAg
ICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZGVmZXJDb21wbGV0aW9uUmVh
c29ucy5yZW1vdmUoaXQpOworCisgICAgc2NoZWR1bGVDYWxsYmFja0NoZWNrKCk7CiB9Ci0gICAg
Ci12b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVkKCkKKwor
dm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgaWYgKCFtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIExP
R19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCAtIHNjcm9sbGluZyBzdGlsbCBh
Y3RpdmUsIHJlYXNvbnMgIiA8PCBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMpOworICAgIGlmIChl
dmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQgfHwgZXZlbnQucGhh
c2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCkKKyAgICAgICAgbV9yZWNl
aXZlZFdoZWVsRW5kT3JDYW5jZWwgPSB0cnVlOworCisgICAgaWYgKGV2ZW50Lm1vbWVudHVtUGhh
c2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkKQorICAgICAgICBtX3JlY2VpdmVk
TW9tZW50dW1FbmQgPSB0cnVlOworfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2No
ZWR1bGVDYWxsYmFja0NoZWNrKCkKK3sKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAg
ICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGZ1bmN0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkNh
bGxiYWNrKTsKLSAgICBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIuc3RvcCgpOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cihtX3BhZ2UpXSB7Cisg
ICAgICAgIGlmICh3ZWFrUGFnZSkKKyAgICAgICAgICAgIHdlYWtQYWdlLT5zY2hlZHVsZVJlbmRl
cmluZ1VwZGF0ZSgpOworICAgIH0pOworfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgIGlm
ICghbV9kZWZlckNvbXBsZXRpb25SZWFzb25zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9H
X1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzIC0gc2Nyb2xsaW5nIHN0aWxs
IGFjdGl2ZSwgcmVhc29ucyAiIDw8IG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fZXZlckhhZERlZmVycmFs
KSB7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBz
dHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpjaGVja1Nob3VsZEZpcmVDYWxsYmFj
a3MgLSBoYXZlIG5vdCB5ZXQgc2VlbiBhbnkgZGVmZXJyYWwgcmVhc29ucyIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9leHBlY3RXaGVl
bEVuZE9yQ2FuY2VsICYmICFtX3JlY2VpdmVkV2hlZWxFbmRPckNhbmNlbCkgeworICAgICAgICAg
ICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzIC0gaGF2ZSBub3Qg
c2VlbiBlbmQgb2Ygb2Ygd2hlZWwgcGhhc2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChtX2V4cGVjdE1vbWVudHVtRW5kICYmICFtX3JlY2VpdmVkTW9t
ZW50dW1FbmQpIHsKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1v
bml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmly
ZUNhbGxiYWNrcyAtIGhhdmUgbm90IHNlZW4gZW5kIG9mIG9mIG1vbWVudHVtIHBoYXNlIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJF
QU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25p
dG9yOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQ6IHNjcm9sbGluZyBpcyBpZGxlLCBGSVJJTkcgVEVT
VCIpOwotICAgIGlmIChmdW5jdGlvbkNhbGxiYWNrKQorICAgIGlmIChhdXRvIGZ1bmN0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkNhbGxiYWNrKSkgeworICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpjaGVja1Nob3VsZEZpcmVDYWxsYmFja3M6IHNjcm9sbGluZyBpcyBpZGxlLCBG
SVJJTkcgVEVTVCIpOwogICAgICAgICBmdW5jdGlvbkNhbGxiYWNrKCk7CisgICAgfSBlbHNlCisg
ICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAi
ICBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcyAtIG5vIGNh
bGxiYWNrIik7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQogewogICAgIHN3aXRjaCAo
cmVhc29uKSB7CiAgICAgY2FzZSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkhhbmRsaW5nV2hlZWxF
dmVudDogdHMgPDwgImhhbmRsaW5nIHdoZWVsIGV2ZW50IjsgYnJlYWs7CisgICAgY2FzZSBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OkhhbmRsaW5nV2hlZWxFdmVudE9uTWFpblRocmVhZDogdHMgPDwg
ImhhbmRsaW5nIHdoZWVsIGV2ZW50IG9uIG1haW4gdGhyZWFkIjsgYnJlYWs7CiAgICAgY2FzZSBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OlJ1YmJlcmJhbmRJblByb2dyZXNzOiB0cyA8PCAicnViYmVy
YmFuZGluZyI7IGJyZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxT
bmFwSW5Qcm9ncmVzczogdHMgPDwgInNjcm9sbC1zbmFwcGluZyI7IGJyZWFrOwogICAgIGNhc2Ug
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkOiB0cyA8PCAi
c2Nyb2xsaW5nIHRocmVhZCBzeW5jIG5lZWRlZCI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmgKaW5kZXggZjlkODYxYWJhYWE2NTgyNzk5MGRkYThm
YWMyNjA0MWZhM2Y2MjRiMi4uZWVmYzA5OTMwMDczMTRmZWI0NDRhMWVkNGYwYmM2NTViODBmODMx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCkBAIC0y
OCw0NSArMjgsNzkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVs
RXZlbnQuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBQYWdlOworCiBjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3IgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8V2hlZWxFdmVudFRlc3RNb25pdG9yPiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2hlZWxFdmVudFRlc3RNb25pdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CisgICAgV2hlZWxFdmVudFRlc3RN
b25pdG9yKFBhZ2UmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGVzdENhbGxiYWNr
QW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9v
bCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVudHVtRW5kLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRlc3RE
ZWZlcnJhbHMoKTsKICAgICAKICAgICBlbnVtIERlZmVyUmVhc29uIHsKLSAgICAgICAgSGFuZGxp
bmdXaGVlbEV2ZW50ICAgICAgICAgID0gMSA8PCAwLAotICAgICAgICBSdWJiZXJiYW5kSW5Qcm9n
cmVzcyAgICAgICAgPSAxIDw8IDEsCi0gICAgICAgIFNjcm9sbFNuYXBJblByb2dyZXNzICAgICAg
ICA9IDEgPDwgMiwKLSAgICAgICAgU2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCAgID0gMSA8PCAz
LAotICAgICAgICBDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyAgICAgPSAxIDw8IDQsCisgICAgICAg
IEhhbmRsaW5nV2hlZWxFdmVudCAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEhhbmRs
aW5nV2hlZWxFdmVudE9uTWFpblRocmVhZCAgPSAxIDw8IDEsCisgICAgICAgIFJ1YmJlcmJhbmRJ
blByb2dyZXNzICAgICAgICAgICAgPSAxIDw8IDIsCisgICAgICAgIFNjcm9sbFNuYXBJblByb2dy
ZXNzICAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAgIFNjcm9sbGluZ1RocmVhZFN5bmNOZWVk
ZWQgICAgICAgPSAxIDw8IDQsCisgICAgICAgIENvbnRlbnRTY3JvbGxJblByb2dyZXNzICAgICAg
ICAgPSAxIDw8IDUsCiAgICAgfTsKICAgICB0eXBlZGVmIGNvbnN0IHZvaWQqIFNjcm9sbGFibGVB
cmVhSWRlbnRpZmllcjsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVjZWl2ZWRXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGVmZXJGb3JSZWFzb24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBEZWZlclJlYXNvbik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVEZWZlcnJhbEZvclJlYXNvbihTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXIsIERlZmVyUmVhc29uKTsKICAgICAKLSAgICB2b2lkIHRyaWdnZXJUZXN0
VGltZXJGaXJlZCgpOworICAgIHZvaWQgY2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCk7CiAKICAg
ICB1c2luZyBTY3JvbGxhYmxlQXJlYVJlYXNvbk1hcCA9IFdURjo6SGFzaE1hcDxTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXIsIE9wdGlvblNldDxEZWZlclJlYXNvbj4+OwogCiBwcml2YXRlOgorICAg
IHZvaWQgc2NoZWR1bGVDYWxsYmFja0NoZWNrKCk7CisKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4gbV9jb21wbGV0aW9uQ2FsbGJhY2s7Ci0gICAgUnVuTG9vcDo6VGltZXI8V2hlZWxFdmVudFRl
c3RNb25pdG9yPiBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXI7CisgICAgUGFnZSYgbV9wYWdlOwog
CisgICAgTG9jayBtX211dGV4OwogICAgIFNjcm9sbGFibGVBcmVhUmVhc29uTWFwIG1fZGVmZXJD
b21wbGV0aW9uUmVhc29uczsKKyAgICBib29sIG1fZXhwZWN0V2hlZWxFbmRPckNhbmNlbCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3JlY2VpdmVkV2hlZWxFbmRPckNhbmNlbCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2V4cGVjdE1vbWVudHVtRW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVjZWl2
ZWRNb21lbnR1bUVuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V2ZXJIYWREZWZlcnJhbCB7IGZh
bHNlIH07Cit9OworCitjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3JDb21wbGV0aW9uRGVmZXJy
ZXIgeworcHVibGljOgorICAgIFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZlcnJl
cihXaGVlbEV2ZW50VGVzdE1vbml0b3IqIG1vbml0b3IsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6RGVmZXJSZWFzb24gcmVhc29uKQorICAgICAgICA6IG1fbW9uaXRvcihtb25pdG9yKQorICAg
ICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVhc29uKHJlYXNv
bikKKyAgICB7CisgICAgICAgIGlmIChtX21vbml0b3IpCisgICAgICAgICAgICBtX21vbml0b3It
PmRlZmVyRm9yUmVhc29uKG1faWRlbnRpZmllciwgbV9yZWFzb24pOworICAgIH0KKyAgICAKKyAg
ICB+V2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyKCkKKyAgICB7CisgICAg
ICAgIGlmIChtX21vbml0b3IpCisgICAgICAgICAgICBtX21vbml0b3ItPnJlbW92ZURlZmVycmFs
Rm9yUmVhc29uKG1faWRlbnRpZmllciwgbV9yZWFzb24pOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBtX21vbml0b3I7CisgICAgV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAg
IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gbV9yZWFzb247CiB9OwogCiBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpEZWZlclJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGVkNzIwMzY3
NDM1MjNkNWM5YzkwYjNlYzg0NjA2N2MwMWZkNzA4ZGUuLjQ1MjA5OTkxY2M5Y2RjYzRjYTdlMjY4
MmFlNDYwOWVhYTNhOTIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xMzgsOCArMTM4
LDYgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRh
dGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogCiAgICAgYXV0byogcGFnZSA9IGZyYW1lVmlldy5m
cmFtZSgpLnBhZ2UoKTsKICAgICBpZiAocGFnZSAmJiBwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2
ZW50cygpKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3Is
IHN0cmVhbSA8PCAiICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91
dFVwZGF0ZWQ6IEV4cGVjdHMgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2VyOiAiIDw8IHBhZ2UtPmlz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpOwotCiAgICAgICAgIGF1dG8qIG5vZGUgPSBtX3Njcm9s
bGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbGluZ05vZGVJRCgp
KTsKICAgICAgICAgaWYgKCFpczxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9k
ZSkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MjYsMjkgKzgyNCw2IEBAIHZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5n
Tm9kZUlEIHNjcm9sCiAgICAgfQogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdAotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxF
dmVudHMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNvbnN0IGF1dG8mIHRyaWdnZXIg
PSBtX3BhZ2UtPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKSB7Ci0gICAgICAgIExPR19XSVRIX1NU
UkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICghKSBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpkZWZlckZvclJlYXNvbjogRGVmZXJyaW5nICIgPDwgaWRlbnRpZmll
ciA8PCAiIGZvciByZWFzb24gIiA8PCByZWFzb24pOwotICAgICAgICB0cmlnZ2VyLT5kZWZlckZv
clJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOwotICAgIH0KLX0KLQotdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZv
clJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29u
c3QKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV9wYWdlIHx8ICFt
X3BhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3Io
KSkgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJl
YW0gPDwgIiAgICAoISkgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlV2hlZWxFdmVu
dFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb246IERlZmVycmluZyAiIDw8IGlkZW50aWZp
ZXIgPDwgIiBmb3IgcmVhc29uICIgPDwgcmVhc29uKTsKLSAgICAgICAgdHJpZ2dlci0+cmVtb3Zl
RGVmZXJyYWxGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKLSAgICB9Ci19CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNmRh
MmU4MzE0NmNlYWYxNzk3MDY0MWFlY2JhNjdlYjVkZTk2OWJmYi4uMWFiMWY0NWRlMTZjZTA0NjMw
YjIyMWMzNzhjYmRkMmQwMTMxMGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNTUsOCArNTUs
NiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQg
aG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4KTsKLSAgICB2b2lkIGRlZmVy
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVh
c29uKSBjb25zdDsKLSAgICB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVy
cmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlm
aWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdDsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDA1MTNmZTc4NzY3MTEy
ZDNlMzkzMjdmNjRhZWQ4YzJjMDBkNjFmM2EuLjAwYzY5NjcyMzhmNDk3MjZmYWI0NGM2ZDgyMTA4
ZWIxY2VjODk2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTgwLDYgKzE4MCw5IEBAIHB1YmxpYzoKICAgICBF
dmVudFRyYWNraW5nUmVnaW9ucyBhYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlzTW9uaXRvcmluZ1doZWVsRXZlbnRzRm9yRnJhbWVW
aWV3KGNvbnN0IEZyYW1lVmlldyYpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRv
cmluZ1doZWVsRXZlbnRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nV2hl
ZWxFdmVudHMoKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAppbmRleCBjMmYyMDBkM2MzZDI3N2M2ZjU0YTUxNmQ4YmRlNDliNTE1ZWEz
ZTYzLi43OGRkNTA4MWMwYWE5YzE5YzE1NzE5N2ZlMmUxNTZjNzMxNTdlOTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtOTYsNiAr
OTYsOSBAQCBTY3JvbGxpbmdFdmVudFJlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgdwogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV90cmVlTXV0ZXgpOwogCisgICAgaWYgKGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAg
ICAgIHJlY2VpdmVkV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKwogICAgIGlmICghYXN5bmNGcmFt
ZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKCkpIHsKICAgICAgICAgaWYgKG1fcm9vdE5vZGUp
CiAgICAgICAgICAgICBtX3Jvb3ROb2RlLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDcx
OTFhMzc2MjNiOWUzNzIwMGI0NjkzM2NiMDI2MzZhNmFhZjdlMTIuLjVmNjg5Mzg3NzU2NmNhZDU3
Mjg2OWMwMmM2NzRmM2RiZTEyZmIzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXaGVlbEV2
ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAg
LTEwNyw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZl
bnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIC8qaG9y
aXpvbnRhbEluZGV4Ki8sIHVuc2lnbmVkIC8qdmVydGljYWxJbmRleCovKSB7IH0KIAorICAgIHZp
cnR1YWwgdm9pZCBzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVsRXZlbnRUZXN0
TW9uaXRvcj4mJikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENv
bXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlk
ZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNv
bihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgeyB9CiAjZW5kaWYKQEAgLTE3OCw2ICsxODEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5UmVsYXRlZE5vZGVzUmVjdXJzaXZlKFNjcm9s
bGluZ1RyZWVOb2RlJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxTY3Jv
bGxpbmdUcmVlTm9kZT4gc2Nyb2xsaW5nTm9kZUZvclBvaW50KEZsb2F0UG9pbnQpOworICAgIHZp
cnR1YWwgdm9pZCByZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikg
eyB9CiAKICAgICBMb2NrIG1fdHJlZU11dGV4OyAvLyBQcm90ZWN0cyB0aGUgc2Nyb2xsaW5nIHRy
ZWUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVk
U2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDgxMGFmZDQ0MzFmMmUxMWEzZWIwNDEyZWVlNWJjYWE3
ZWUyMGFjZWIuLjkwYTllYzZiNmRlOWFmN2E2YzdmMTVmZmRjNjE0NDhiODM3M2E0ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcApAQCAtOTksNyArOTksNiBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6
c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uID0gbm9kZS5jdXJyZW50U2Ny
b2xsUG9zaXRpb24oKTsKLQogICAgIGlmIChub2RlLmlzUm9vdE5vZGUoKSkKICAgICAgICAgc2V0
TWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogCkBAIC0xMTYsMTEgKzEx
NSwxMiBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRT
Y3JvbGwoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgIGlmIChtb25pdG9yaW5nV2hlZWxF
dmVudHMpCiAgICAgICAgIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKHJl
aW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50
aWZpZXI+KG5vZGUuc2Nyb2xsaW5nTm9kZUlEKCkpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNj
cm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOwogI2VuZGlmCi0gICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5v
ZGVJRCA9IG5vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3
cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgbW9uaXRvcmluZ1doZWVs
RXZlbnRzXSB7Ci0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNj
cm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlv
dXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbm9k
ZUlEID0gbm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdw
b3J0T3JpZ2luLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uLCBtb25pdG9yaW5nV2hlZWxF
dmVudHNdIHsKKyAgICAgICAgc3Ryb25nVGhpcy0+bV9zY3JvbGxpbmdDb29yZGluYXRvci0+c2No
ZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQ
b3NpdGlvbiwgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24pOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaWYgKG1vbml0b3JpbmdXaGVlbEV2ZW50
cykKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yZW1vdmVXaGVlbEV2ZW50VGVz
dENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihub2RlSUQpLCBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOworICAgICAgICAgICAgc3Ry
b25nVGhpcy0+cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24o
cmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllcj4obm9kZUlEKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRT
eW5jTmVlZGVkKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShtb25pdG9yaW5nV2hlZWxF
dmVudHMpOwogI2VuZGlmCkBAIC0yMDMsMjYgKzIwMyw2IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxp
bmdUcmVlOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
LCB1CiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRl
ZmVyUmVhc29uIHJlYXNvbikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5n
Q29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25d
IHsKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlZmVyV2hlZWxFdmVudFRlc3RDb21w
bGV0aW9uRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZl
cnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNv
bikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgaWRlbnRpZmllciwgcmVhc29uXSB7Ci0gICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZl
cnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOwotICAgIH0pOwotfQotCiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCAwNWRkYzVjZDAzOGI2OTU4
Mjk1MjQwOTcwMjVmNzI1MTA4YzViNmZmLi44MjMyZTFiNzczOTNlNzYxNTI0MTJhZDc5NTNkMTRi
ZmE3ZWQzMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuaApAQCAtNjUsOSArNjUsNiBAQCBwcm90ZWN0ZWQ6CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRp
Y2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2
ZXJ0aWNhbEluZGV4KSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENv
bXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlk
ZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24o
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggN2JmZDgxMWJlODBhMTdjNmE2
NzQzN2EwZTBkNDU3MzM1ZjNiMzYxOC4uMDg4MDMyYTRjNDhiZDBlMTdjZDFhNDg4ZDVjNWI4NTU0
NTk1OTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTQ3LDYgKzQ3LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgZmluYWw7CiAKICAgICB2b2lk
IHVwZGF0ZVRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKCk7CisKKyAgICB2b2lkIHN0YXJ0TW9uaXRv
cmluZ1doZWVsRXZlbnRzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMubW0KaW5kZXggNDJmMjIwNDE4Y2ZhZjE2YTVhMTcyOGJjNDkyMDE0OGU5MWU1ZmUyOC4u
YWNkODE3Y2IzMDRiZGE2MTgzMGJhODlkMDlkYTk4ZGI2YWZmZWY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbQpAQCAtMTM2LDYgKzEzNiwxNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjOjp1cGRhdGVUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpCiAgICAgdGlsZWRCYWNraW5nLT5z
ZXRTY3JvbGxpbmdNb2RlSW5kaWNhdGlvbihpbmRpY2F0b3JNb2RlKTsKIH0KIAordm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYzo6c3RhcnRNb25pdG9yaW5nV2hlZWxFdmVudHMoKQoreworICAg
IGF1dG8gbW9uaXRvciA9IG1fcGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CisgICAgc2Ny
b2xsaW5nVHJlZSgpLT5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoV1RGTW92ZShtb25pdG9yKSk7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnN0b3BNb25pdG9yaW5nV2hlZWxF
dmVudHMoKQoreworICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0V2hlZWxFdmVudFRlc3RNb25pdG9y
KG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKSAmJiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5oCmlu
ZGV4IDgwMTRkOWE2MmRkNmQ5YmRlMjE4ZjMyMmQxZmRiZTUxMmE3OWVlZTUuLjhkZGE5OTFmZjNl
Mzk5MTAyNDBjMGIxOGQzMzQxMDM2NDQ0ZjE2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuaApAQCAtMzEsNiArMzEsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsK
KwogY2xhc3MgU2Nyb2xsaW5nVHJlZU1hYyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRlZFNjcm9sbGlu
Z1RyZWUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZU1hYz4gY3JlYXRl
KEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3ImKTsKQEAgLTQyLDExICs0NCwyMCBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBzY3JvbGxpbmdOb2RlRm9yUG9pbnQo
RmxvYXRQb2ludCkgZmluYWw7CiAKKyAgICB2b2lkIHNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihS
ZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiYmKSBmaW5hbDsKKworICAgIHZvaWQgcmVjZWl2
ZWRXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOworCisgICAgdm9p
ZCBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpE
ZWZlclJlYXNvbikgZmluYWw7CisgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRp
b25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVh
SWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgZmluYWw7CisK
ICAgICB2b2lkIGxvY2tMYXllcnNGb3JIaXRUZXN0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB1bmxv
Y2tMYXllcnNGb3JIaXRUZXN0aW5nKCkgZmluYWw7CiAKICAgICAvLyBUaGlzIGxvY2sgcHJvdGVj
dHMgdGhlIENBTGF5ZXIvUGxhdGZvcm1DQUxheWVyIHRyZWUuCiAgICAgTG9jayBtX2xheWVySGl0
VGVzdE11dGV4OworICAgIAorICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IG1fd2hl
ZWxFdmVudFRlc3RNb25pdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5t
bQppbmRleCAyYjhlMzVmOTgwZWZjNGIwMDgzY2IyMjFjYTk4ZWU3ZWU1ZTcxNzgyLi5lMmNhNDVj
N2NmZDgyMmVjM2EzMjAxOTA5OTIwOGVlMzliZmY0MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVNYWMu
aCIKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIK
ICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZUZyYW1lSG9zdGluZ05vZGUuaCIKQEAgLTM1LDYgKzM2LDggQEAKICNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5oIgogI2luY2x1ZGUgIldlYkxheWVyLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RN
b25pdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAKQEAgLTE4OCw0
ICsxOTEsMzYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTWFjOjp1bmxvY2tMYXllcnNGb3JIaXRUZXN0
aW5nKCkKICAgICBtX2xheWVySGl0VGVzdE11dGV4LnVubG9jaygpOwogfQogCit2b2lkIFNjcm9s
bGluZ1RyZWVNYWM6OnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxFdmVudFRl
c3RNb25pdG9yPiYmIG1vbml0b3IpCit7CisgICAgbV93aGVlbEV2ZW50VGVzdE1vbml0b3IgPSBX
VEZNb3ZlKG1vbml0b3IpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVNYWM6OnJlY2VpdmVkV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQoreworICAgIGF1dG8gbW9u
aXRvciA9IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOworICAgIGlmIChtb25pdG9yKQorICAgICAg
ICBtb25pdG9yLT5yZWNlaXZlZFdoZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVNYWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVs
RXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQoreworICAgIGF1dG8gbW9uaXRv
ciA9IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOworICAgIGlmICghbW9uaXRvcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3Ry
ZWFtIDw8ICIgICAgKCEpIFNjcm9sbGluZ1RyZWVNYWM6OmRlZmVyRm9yUmVhc29uOiBEZWZlcnJp
bmcgb24gIiA8PCBpZGVudGlmaWVyIDw8ICIgZm9yIHJlYXNvbiAiIDw8IHJlYXNvbik7CisgICAg
bW9uaXRvci0+ZGVmZXJGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKK30KKwordm9pZCBT
Y3JvbGxpbmdUcmVlTWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZv
clJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikKK3sK
KyAgICBhdXRvIG1vbml0b3IgPSBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKKyAgICBpZiAoIW1v
bml0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50
VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICghKSBTY3JvbGxpbmdUcmVlTWFjOjpyZW1vdmVE
ZWZlcnJhbEZvclJlYXNvbjogUmVtb3ZpbmcgZGVmZXJyYWwgb24gIiA8PCBpZGVudGlmaWVyIDw8
ICIgZm9yIHJlYXNvbiAiIDw8IHJlYXNvbik7CisgICAgbW9uaXRvci0+cmVtb3ZlRGVmZXJyYWxG
b3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCA4ZDQ4ZTZkNDQ4MzY4NmNh
Mjk4MzkxY2QwMDNkYTIxY2JmYWRlZGY3Li5jNWU5ZTc2OWY3MGY0NGI5ZGRhOGY1MjJjOTAwNjEy
OTEzY2EyOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbQpAQCAtMzA3LDcgKzMwNyw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYzo6ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzCiAgICAg
aWYgKCFzY3JvbGxpbmdUcmVlKCkuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3Ry
ZWFtIDw8IGlzTWFpblRocmVhZCgpIDw8ICIgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmRlZmVyRm9yUmVhc29uOiBTVEFSVElORyBkZWZlcnJhbCBmb3IgIiA8PCBpZGVu
dGlmaWVyIDw8ICIgYmVjYXVzZSBvZiAiIDw8IHJlYXNvbik7CiAgICAgc2Nyb2xsaW5nVHJlZSgp
LmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNv
bik7CiB9CiAgICAgCkBAIC0zMTYsNyArMzE1LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnIK
ICAgICBpZiAoIXNjcm9sbGluZ1RyZWUoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9u
aXRvciwgc3RyZWFtIDw8IGlzTWFpblRocmVhZCgpIDw8ICIgIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVyRm9yUmVhc29uOiBFTkRJTkcgZGVmZXJyYWwgZm9yICIg
PDwgaWRlbnRpZmllciA8PCAiIGJlY2F1c2Ugb2YgIiA8PCByZWFzb24pOwogICAgIHNjcm9sbGlu
Z1RyZWUoKS5yZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihp
ZGVudGlmaWVyLCByZWFzb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMWI1Zjg5NWFjNDdjYjY4NWI4ZWUyNzVkY2I4
MGVhMzcyOTA1YzY2ZC4uNzJkM2ZjYTg1MGY0MzQ2NzlkMWFiMWNhZWMxM2FhZDg3NzZiYTVhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNw
cApAQCAtODgsNyArODgsNyBAQCB2b2lkIG1vbml0b3JXaGVlbEV2ZW50cyhXZWJDb3JlOjpGcmFt
ZSYgZnJhbWUpCiAgICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkuY2xlYXJB
bGxUZXN0RGVmZXJyYWxzKCk7CiB9CiAKLXZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3Rp
ZmljYXRpb25UaW1lcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBqc0NhbGxiYWNrRnVuY3Rpb24pCit2b2lkIHNldFdoZWVsRXZlbnRNb25p
dG9yVGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNh
bmNlbCwgYm9vbCBleHBlY3RNb21lbnR1bUVuZCwgV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYganNDYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5pc01v
bml0b3JpbmdXaGVlbEV2ZW50cygpKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIHNldFRlc3RDYWxs
YmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBKU0Nv
bnRleHRSZQogCiAgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9u
KTsKICAgICAKLSAgICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKS5zZXRUZXN0
Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKFs9XSh2b2lkKSB7CisgICAgcGFnZS0+
ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkuc2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25p
dG9yaW5nKGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGV4cGVjdE1vbWVudHVtRW5kLCBbPV0odm9p
ZCkgewogICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGpzQ2FsbGJhY2tG
dW5jdGlvbiwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIEpTVmFsdWVV
bnByb3RlY3QoY29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCmluZGV4IDc5YWVmZWY0
NTFhMDg2MWFlNDdiYzIwYmFhY2JlM2M4MmYzZGUwMDUuLjJjMzYxNjMwZGQ0NGNmOWY0OTYyZTc5
OTliZDJkNmQxNTE5OGVhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMv
V2ViQ29yZVRlc3RTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJD
b3JlVGVzdFN1cHBvcnQuaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZVRlc3RT
dXBwb3J0IHsKIHZvaWQgaW5qZWN0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZikgVEVTVF9T
VVBQT1JUX0VYUE9SVDsKIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmKSBU
RVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBtb25pdG9yV2hlZWxFdmVudHMoV2ViQ29yZTo6RnJh
bWUmKSBURVNUX1NVUFBPUlRfRVhQT1JUOwotdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5v
dGlmaWNhdGlvblRpbWVyKFdlYkNvcmU6OkZyYW1lJiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJl
ZikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKK3ZvaWQgc2V0V2hlZWxFdmVudE1vbml0b3JUZXN0Q2Fs
bGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29s
IGV4cGVjdE1vbWVudHVtRW5kLCBXZWJDb3JlOjpGcmFtZSYsIEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RNb25p
dG9yKFdlYkNvcmU6OkZyYW1lJikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAogdm9pZCBzZXRMb2dD
aGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA1ZDgwNTk3NzlkZDE2Zjk3
ZWMyYTJiZDY5NmFhZjQ1YTg0YjUxMmZlLi5hZTY4NzZlNWQ5ZGFmM2I4NzUxMjFkMmFkZTMzNGJj
MzJmZWFjYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNzA0LDcgKzcwNCw3
IEBAIHZvaWQgV0tCdW5kbGVQYWdlU3RhcnRNb25pdG9yaW5nU2Nyb2xsT3BlcmF0aW9ucyhXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0
b3IoKS5jbGVhckFsbFRlc3REZWZlcnJhbHMoKTsKIH0KIAotYm9vbCBXS0J1bmRsZVBhZ2VSZWdp
c3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lk
KiBjb250ZXh0KQorYm9vbCBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBs
ZXRpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5v
dGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5jZWws
IGJvb2wgZXhwZWN0TW9tZW50dW1FbmQsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjYWxs
YmFjaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIGJvb2wgV0tC
dW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSCiAgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5pc01vbml0b3JpbmdXaGVl
bEV2ZW50cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcGFnZS0+ZW5zdXJl
V2hlZWxFdmVudFRlc3RNb25pdG9yKCkuc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRp
b25UaW1lcihbPV0oKSB7CisgICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCku
c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGV4cGVjdFdoZWVsRW5kT3JDYW5jZWws
IGV4cGVjdE1vbWVudHVtRW5kLCBbPV0oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IDI4
M2MxMTRkMDViNzQxZjJjNjg1MmNiOTJjNWM3ZGE2ZmNlZWVhMTAuLjRmODNiOGVmMGM4MDJiY2Mx
YjNkN2JjZjk0MmNlYWVhMTQ3ZWFhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTEy
MSw3ICsxMjEsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlQ29weUdyb3Vw
SWRlbnRpZmllcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKIHR5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlUGFnZVRlc3ROb3RpZmljYXRpb25DYWxsYmFjaykodm9pZCogY29udGV4dCk7CiAvLyBSZXR1
cm5zIHRydWUgIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCwgZWxzZSBm
YWxzZS4KLVdLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9u
Q29tcGxldGlvbkNhbGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlm
aWNhdGlvbkNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KTsKK1dLX0VYUE9SVCBib29sIFdLQnVuZGxl
UGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrLCBib29sIGV4cGVjdFdo
ZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhwZWN0TW9tZW50dW1FbmQsIHZvaWQqIGNvbnRleHQpOwog
CiAvLyBDYWxsIHRoZSBnaXZlbiBjYWxsYmFjayBhZnRlciBib3RoIGEgcG9zdFRhc2soKSBvbiB0
aGUgcGFnZSdzIGRvY3VtZW50J3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYW5kIGEgemVyby1k
ZWxheSB0aW1lci4KIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNhbGxBZnRlclRhc2tzQW5k
VGltZXJzKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxi
YWNrLCB2b2lkKiBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA1OWQ0ODc4NWI1OTYwZDg0YmRiNzUxZjNmZDE4YTk2OWYwYWRlOTcy
Li40OTg3YzM1YzFkN2MwNjg5MjJjZDJiYWEyZGRiMWQ5MDk2YjFmNWU1IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIw
MjAtMDMtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCkgaXMgdmVyeSBmcmFnaWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MTkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzUxMzE5NDU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIERlZmxha2UgdGVzdHMgdXNpbmcgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCkgYnkgZml4aW5nIHNldmVyYWwgY2F1c2VzIG9mIGZsYWtpbmVzcywK
KyAgICAgICAgYWRkaW5nIGJhY2sgY2hhbmdlcyBmcm9tIHIyNTc4NDQgdGhhdCB3ZXJlIHJldmVy
dGVkIGluIHIyNTg1NTguCisgICAgICAgIAorICAgICAgICBGaXJzdCwgaGF2ZSBFdmVudFNlbmRp
bmdDb250cm9sbGVyIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBpdCdzIHNlZW4gdGhlbiAiZW5kIiBl
dmVudAorICAgICAgICBmb3IgdGhlIHNjcm9sbGluZyBhbmQgbW9tZW50dW0gcGhhc2VzLCBhbmQg
cGFzcyB0aGlzIGRvd24gdG8gV2hlZWxFdmVudFRlc3RNb25pdG9yLCB3aGljaAorICAgICAgICBu
b3cgd2FpdHMgdW50aWwgaXQgc2VlcyB0aGVzZSwgd2hpY2ggcHJldmVudHMgcHJlbWF0dXJlIHRy
aWdnZXJpbmcgd2hpY2ggd2FzIGEgY29tbW9uIGNhdXNlIG9mCisgICAgICAgIGZhaWx1cmUgYmVm
b3JlLgorICAgICAgICAKKyAgICAgICAgU2Vjb25kLCByZW1vdmUgV2hlZWxFdmVudFRlc3RNb25p
dG9yJ3MgMS82MHMgdGltZXIgYW5kIGluc3RlYWQgaGF2ZSBXaGVlbEV2ZW50VGVzdE1vbml0b3Ig
dGVzdAorICAgICAgICBmb3IgY29tcGxldGlvbiBpbiBhIGNhbGxvdXQgZnJvbSB0aGUgZW5kIG9m
IFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpLCB3aGljaCBtYWtlcyBpdCB0ZXN0CisgICAgICAgIGFu
ZCBmaXJlIGF0IGEgbW9yZSBjb25zaXN0ZW50IHRpbWUuCisgICAgICAgIAorICAgICAgICBUaGly
ZCwgcHVzaCBXaGVlbEV2ZW50VGVzdE1vbml0b3IgdG8gdGhlIFNjcm9sbGluZ1RyZWUsIHNvIHRo
YXQgcmVhc29ucyBmb3IgZGVmZXJyYWwKKyAgICAgICAgY2FuIGJlIGFkZGVkIG9uIHRoZSBzY3Jv
bGxpbmcgdGhyZWFkLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdoZXJlIHRoZSBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goKQorICAgICAgICB1c2VkIHRvIHNlbmQgdGhlICJTY3JvbGxpbmdUaHJlYWRT
eW5jTmVlZGVkIiByZWFzb24gdG8gdGhlIG1haW4gdGhyZWFkIHdvdWxkIGdldCBkZWxheWVkLAor
ICAgICAgICBhbHNvIHJlc3VsdGluZyBpbiBhIHByZW1hdHVyZSB0cmlnZ2VyLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVNjcm9sbEJ5WDphbmRZOndpdGhXaGVlbDph
bmRNb21lbnR1bVBoYXNlczpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBt
b25pdG9yV2hlZWxFdmVudHNdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBj
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXM6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKG1vdXNlU2Nyb2xsQnkpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6Om1vbml0b3JXaGVlbEV2ZW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisK
IDIwMjAtMDMtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgV0tVSURlbGVnYXRlUHJpdmF0ZSBTUEkgX3dlYlZpZXc6cHJpbnRGcmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjoKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4IDg4ZWU2NmE2ODYzOWRiOGI4YTI1YTI2OGEwMzAx
NTlhNGZlZmQ5N2UuLjhhMjdhZTBlYzQ3YjAyMjc0M2Q4YTFlNTVjYmFmZjcxOWNlMWI2ZjAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
aApAQCAtMzgsNiArMzgsMTAgQEAgQGludGVyZmFjZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIDog
TlNPYmplY3QgPERPTUV2ZW50TGlzdGVuZXI+CiAgICAgTlNUaW1lSW50ZXJ2YWwgbGFzdENsaWNr
OwogICAgIGludCBldmVudE51bWJlcjsKICAgICBkb3VibGUgdGltZU9mZnNldDsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgQk9PTCBfc2VudFdoZWVsUGhhc2VFbmRPckNhbmNlbDsKKyAgICBCT09M
IF9zZW50TW9tZW50dW1QaGFzZUVuZDsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgTlNNdXRhYmxlQXJyYXkqIHRvdWNoZXM7CiAgICAgdW5zaWduZWQgY3VycmVudFRvdWNo
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNl
bmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0KaW5kZXggZjc2MDQ5ZmY3NWI2ZTM3NGI3ZjRkNzRkMGUzOWY2ODI1MjZi
MGZmYS4uZDg2ZjEyZjRhMTBhYzEzZDBlNjE0NTM4NWU3YmQ1ZThlYjc5ODc4YSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAg
LTg1Miw2ICs4NTIsOCBAQCAtICh2b2lkKW1vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQp
eQogLSAodm9pZCltb3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkgd2l0aFdoZWVsOihO
U1N0cmluZyopcGhhc2VOYW1lIGFuZE1vbWVudHVtUGhhc2VzOihOU1N0cmluZyopbW9tZW50dW1O
YW1lCiB7CiAjaWYgUExBVEZPUk0oTUFDKQorICAgIFtbW21haW5GcmFtZSBmcmFtZVZpZXddIGRv
Y3VtZW50Vmlld10gbGF5b3V0XTsKKwogICAgIHVpbnQzMl90IHBoYXNlID0gMDsKICAgICBpZiAo
W3BoYXNlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAibm9uZSJdKQogICAgICAgICBwaGFzZSA9IDA7
CkBAIC04NzYsNiArODc4LDEyIEBAIC0gKHZvaWQpbW91c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6
KGludCl5IHdpdGhXaGVlbDooTlNTdHJpbmcqKXBoYXNlTmFtZSBhbmRNb21lCiAgICAgZWxzZSBp
ZiAoW21vbWVudHVtTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkKICAgICAgICAgbW9tZW50
dW0gPSAzOyAvLyBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlRW5kOwogCisgICAgaWYgKHBoYXNlID09
IDQgLyoga0NHU2Nyb2xsUGhhc2VFbmRlZCAqLyB8fCBwaGFzZSA9PSA4IC8qIGtDR1Njcm9sbFBo
YXNlQ2FuY2VsbGVkICovKQorICAgICAgICBfc2VudFdoZWVsUGhhc2VFbmRPckNhbmNlbCA9IFlF
UzsKKworICAgIGlmIChtb21lbnR1bSA9PSAzIC8qIGtDR01vbWVudHVtU2Nyb2xsUGhhc2VFbmQg
Ki8pCisgICAgICAgIF9zZW50TW9tZW50dW1QaGFzZUVuZCA9IFlFUzsKKwogICAgIENHRXZlbnRS
ZWYgY2dTY3JvbGxFdmVudCA9IENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50KE5VTEwsIGtD
R1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgpOwogCiAgICAgLy8gU2V0IHRoZSBDR0V2ZW50
IGxvY2F0aW9uIGluIGZsaXBwZWQgY29vcmRzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdCBzY3JlZW4s
IHdoaWNoCkBAIC0xMzg3LDYgKzEzOTUsOCBAQCAtICh2b2lkKW1vbml0b3JXaGVlbEV2ZW50cwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAorICAgIF9zZW50V2hlZWxQaGFzZUVu
ZE9yQ2FuY2VsID0gTk87CisgICAgX3NlbnRNb21lbnR1bVBoYXNlRW5kID0gTk87CiAgICAgV2Vi
Q29yZVRlc3RTdXBwb3J0Ojptb25pdG9yV2hlZWxFdmVudHMoKmZyYW1lKTsKICNlbmRpZgogfQpA
QCAtMTQwMyw3ICsxNDEzLDcgQEAgLSAodm9pZCljYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXM6
KFdlYlNjcmlwdE9iamVjdCopY2FsbGJhY2sKICAgICAgICAgcmV0dXJuOwogCiAgICAgSlNHbG9i
YWxDb250ZXh0UmVmIGdsb2JhbENvbnRleHQgPSBbbWFpbkZyYW1lIGdsb2JhbENvbnRleHRdOwot
ICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRp
b25UaW1lcigqZnJhbWUsIGdsb2JhbENvbnRleHQsIGpzQ2FsbGJhY2tGdW5jdGlvbik7CisgICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRXaGVlbEV2ZW50TW9uaXRvclRlc3RDYWxsYmFja0FuZFN0
YXJ0TW9uaXRvcmluZyhfc2VudFdoZWVsUGhhc2VFbmRPckNhbmNlbCwgX3NlbnRNb21lbnR1bVBo
YXNlRW5kLCAqZnJhbWUsIGdsb2JhbENvbnRleHQsIGpzQ2FsbGJhY2tGdW5jdGlvbik7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2VuZGVy
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5jcHAKaW5kZXggNzJi
MGQ1OWQ2MGExYTYzNDdjN2NlYzgyNTA3ZDliNjlkNDkzOWJlZS4uYTI3MzQ5MTYwNjVhOTBkNGVl
ZjNlNjE1NjUyMWRlMzcxMzk5Yzc5NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRT
ZW5kZXIuY3BwCkBAIC04MzIsNiArODMyLDEwIEBAIHZvaWQgbW91c2VTY3JvbGxCeShkb3VibGUg
eCwgZG91YmxlIHksIGJvb2wgY29udGludW91cykKICAgICBSRUNUIHJlY3Q7CiAgICAgOjpHZXRX
aW5kb3dSZWN0KHdlYlZpZXdXaW5kb3csICZyZWN0KTsKIAorICAgIENPTVB0cjxJV2ViRnJhbWVQ
cml2YXRlPiBmcmFtZVByaXZhdGU7CisgICAgaWYgKFNVQ0NFRURFRChmcmFtZS0+UXVlcnlJbnRl
cmZhY2UoJmZyYW1lUHJpdmF0ZSkpKQorICAgICAgICBmcmFtZVByaXZhdGUtPmxheW91dCgpOwor
CiAgICAgaWYgKHgpIHsKICAgICAgICAgVUlOVCBzY3JvbGxDaGFycyA9IDE7CiAgICAgICAgIDo6
U3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJX0dFVFdIRUVMU0NST0xMQ0hBUlMsIDAsICZzY3JvbGxD
aGFycywgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCBjOWE1MmMxNWY3
NzA4MzA2ODNjOGVmZjY4OTQyOWJkMGJjMWY1NjQ1Li4wYzFmMDY3MzM3YmY3OTljMzEzNzk2OTI5
NDljNGVlODUzNmY2ZTQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKQEAgLTQ5
Miw2ICs0OTIsMTIgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoaW50IHgsIGludAogCiAgICAgdWludDY0X3QgcGhh
c2UgPSBjZ0V2ZW50UGhhc2VGcm9tU3RyaW5nKHBoYXNlU3RyKTsKICAgICB1aW50NjRfdCBtb21l
bnR1bSA9IGNnRXZlbnRNb21lbnR1bVBoYXNlRnJvbVN0cmluZyhtb21lbnR1bVN0cik7CisgICAg
CisgICAgaWYgKHBoYXNlID09IDQgLyoga0NHU2Nyb2xsUGhhc2VFbmRlZCAqLyB8fCBwaGFzZSA9
PSA4IC8qIGtDR1Njcm9sbFBoYXNlQ2FuY2VsbGVkICovKQorICAgICAgICBtX3NlbnRXaGVlbFBo
YXNlRW5kT3JDYW5jZWwgPSB0cnVlOworICAgIAorICAgIGlmIChtb21lbnR1bSA9PSAzIC8qIGtD
R01vbWVudHVtU2Nyb2xsUGhhc2VFbmQgKi8pCisgICAgICAgIG1fc2VudFdoZWVsTW9tZW50dW1Q
aGFzZUVuZCA9IHRydWU7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGhhc2VLZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQaGFzZSIpKTsKICAgICBX
S1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gcGhhc2VSZWYgPSBhZG9wdFdLKFdLVUludDY0Q3JlYXRl
KHBoYXNlKSk7CkBAIC02MDgsNiArNjE0LDggQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb25pdG9yV2hlZWxFdmVudHMoKQogewogICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOwogICAgIAorICAgIG1fc2Vu
dFdoZWVsUGhhc2VFbmRPckNhbmNlbCA9IGZhbHNlOworICAgIG1fc2VudFdoZWVsTW9tZW50dW1Q
aGFzZUVuZCA9IGZhbHNlOwogICAgIFdLQnVuZGxlUGFnZVN0YXJ0TW9uaXRvcmluZ1Njcm9sbE9w
ZXJhdGlvbnMocGFnZSk7CiB9CiAKQEAgLTY1MCw3ICs2NTgsNyBAQCB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0
aW9uQ2FsbAogCiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhID0gbWFrZVVu
aXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxi
YWNrT2JqZWN0KTsKICAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIgPSBz
Y3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhLnJlbGVhc2UoKTsKLSAgICBib29sIGNhbGxiYWNr
V2lsbEJlQ2FsbGVkID0gV0tCdW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0
aW9uQ2FsbGJhY2socGFnZSwgZXhlY3V0ZUNhbGxiYWNrLCBzY3JvbGxDb21wbGV0aW9uQ2FsbGJh
Y2tEYXRhUHRyKTsKKyAgICBib29sIGNhbGxiYWNrV2lsbEJlQ2FsbGVkID0gV0tCdW5kbGVQYWdl
UmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2socGFnZSwgZXhlY3V0ZUNh
bGxiYWNrLCBtX3NlbnRXaGVlbFBoYXNlRW5kT3JDYW5jZWwsIG1fc2VudFdoZWVsTW9tZW50dW1Q
aGFzZUVuZCwgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7CiAgICAgaWYgKCFjYWxs
YmFja1dpbGxCZUNhbGxlZCkgewogICAgICAgICAvLyBSZWFzc2lnbiByYXcgcG9pbnRlciB0byBz
dGQ6OnVuaXF1ZV9wdHI8PiBzbyBpdCB3aWxsIG5vdCBiZSBsZWFrZWQuCiAgICAgICAgIHNjcm9s
bENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVzZXQoc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0
YVB0cik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4IDIyNTRiMzQxODM3ODE5ODAy
NDQwMGZmYjc5ZGM2ZWJmYTM5NTVjM2YuLjUyMzI2YWM4NTA4MmQwYzJkZTlhYmU5NTVmMjYxODUw
ZWM4OTgzMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBAIC04Nyw2ICs4Nyw4IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRXZlbnRTZW5kaW5nQ29udHJvbGxlcigpOwogICAgIFdL
UG9pbnQgbV9wb3NpdGlvbjsKKyAgICBib29sIG1fc2VudFdoZWVsUGhhc2VFbmRPckNhbmNlbCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3NlbnRXaGVlbE1vbWVudHVtUGhhc2VFbmQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjkwZDE1OTNhNzViZmE5NWFmMjQ2
M2M4Y2U1YzZlYzYwNzE4Zjc0NS4uNWI3ZGY5OWY0YjlmYmVkNzZjMzVmNmM5NjJiOTBmNDMxZjY2
NWY0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAzLTE4ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpIGlzIHZlcnkgZnJhZ2lsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTMxOTQ1
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZsb3cuaHRtbDogTmVlZCB0byBj
YWxsIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpCisgICAgICAgIGZvciBlYWNoIHN1
YnRlc3QuCisKIDIwMjAtMDMtMTcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoMjU3ODQ0KTogZmFzdC9zY3JvbGxpbmcvc2Nyb2xs
LWNvbnRhaW5lci1ob3Jpem9udGFsbHkuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMDZjYWFhMTQzMmFhNWMy
OGE1OTc4OTUxMmVhZjkyZjczZDdjMDUwMi4uMjMyMTZiODUxNmUzZWE1MmVhZTIyNWZlMTBiNTlm
ZTFiMTY0MzdmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMTA1OSw4ICsxMDU5LDYgQEAgd2Via2l0Lm9yZy9iLzIwODAxNCBbIERlYnVn
IF0gaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9uby1zdWJwcm90b2NvbC5odG0KIAog
d2Via2l0Lm9yZy9iLzIwODA2MiBodHRwL3dwdC9mZXRjaC9kaXNhYmxlLXNwZWN1bGF0aXZlLWZv
ci1yZWxvYWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDgxNjAgZmFz
dC9zY3JvbGxpbmcvb3ZlcmZsb3ctc2Nyb2xsLXBhc3QtbWF4Lmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQotCiB3ZWJraXQub3JnL2IvMjA4MjIyIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjL1JUQ1BlZXJDb25uZWN0aW9uLWljZUNvbm5lY3Rpb25TdGF0ZS5o
dHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwODM0MCB3ZWJncHUv
d2hsc2wvdGV4dHVyZXMtc2FtcGxlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZDY2ZWMyNDI0MDI2
MTI2MjY5MWY0NjliMmUwZmFjMGZmNmU5NTQyLi5lOTQ1Y2VjM2MwNjBkOGQ3ZWY1ZmNmYTlhNzll
YjNhOTE1MmU4ZWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMjc1LDYgKzI3NSw4IEBAIGZhc3QvZXZlbnRzL3Njcm9sbC1pbi1zY2FsZWQtcGFnZS13
aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy93aGVlbGV2
ZW50LWluLWhvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0
L2V2ZW50cy93aGVlbGV2ZW50LWluLXZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbCBbIEZh
aWx1cmUgXQogc2Nyb2xsYmFycy9zY3JvbGwtcnRsLW9yLWJ0LWxheWVyLmh0bWwgWyBUaW1lb3V0
IF0KK3dlYmtpdC5vcmcvYi8yMDg1NTkgZmFzdC9zY3JvbGxpbmcvYXJyb3cta2V5LXNjcm9sbC1p
bi1ydGwtZG9jdW1lbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODU1OSBmYXN0L3Nj
cm9sbGluZy9wcm9ncmFtbWF0aWMtc2Nyb2xsLXRvLXplcm8temVyby5odG1sIFsgU2tpcCBdCiAK
ICMgVE9ETyBOZWVkcyB0ZXN0UnVubmVyLmVuYWJsZUF1dG9SZXNpemVNb2RlKCkKIGZhc3QvYXV0
b3Jlc2l6ZS8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWwKaW5kZXggZjIyYmY5NjZjZTZlNDM1
YWRlZmQ3NGNmMDRlOWE3YjgwOTEzNjA3Yy4uNjQzNjllMjkzNjJlMDI2ZmY3MWQyNzc0ZDY1YTli
ZGRkNWZlNzJiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWwKQEAgLTU2LDYgKzU2LDggQEAKICAgICAg
ICAgICAgICAgICB4OiBkaXZUYXJnZXQuc2Nyb2xsTGVmdCwKICAgICAgICAgICAgICAgICB5OiBk
aXZUYXJnZXQuc2Nyb2xsVG9wCiAgICAgICAgICAgICB9OworCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKDEwMCwgMTAwKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgMCwgImJlZ2FuIiwgIm5vbmUiKTsKICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygtMSwgMCwgImNoYW5nZWQiLCAibm9uZSIpOwpAQCAtODQsNiArODYsNyBAQAogICAgICAgICAg
ICAgICAgIHk6IGRpdlRhcmdldC5zY3JvbGxUb3AKICAgICAgICAgICAgIH07CiAKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwogICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oMTAwLCAxMDApOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDEsIDEsICJiZWdhbiIsICJub25l
Iik7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMSwgMSwgImNoYW5nZWQiLCAibm9uZSIpOwpAQCAtMTA4LDYgKzExMSw3IEBA
CiAgICAgICAgICAgICAgICAgeTogZGl2VGFyZ2V0LnNjcm9sbFRvcAogICAgICAgICAgICAgfTsK
IAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMDAsIDEwMCk7CiAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIC0xLCAi
YmVnYW4iLCAibm9uZSIpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAtMSwgImNoYW5nZWQiLCAibm9uZSIpOwpAQCAt
MTIyLDcgKzEyNiw2IEBACiAKICAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkgewogICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOwogICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoZmFsc2UpOwogICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsR2xpZGVUZXN0LCAwKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7Cg==
</data>
<flag name="review"
          id="409314"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393923</attachid>
            <date>2020-03-18 17:20:59 -0700</date>
            <delta_ts>2020-03-18 18:45:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197819-20200318172058.patch</filename>
            <type>text/plain</type>
            <size>60080</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4MjY0OTkxZWM4OTM2
NDY2OGUyNzdjZTA5MTZhZTIyN2MzZTgyZC4uMWI2NWJlNzRlN2FjNzkxMmNiMTdlYmRkMTk0ZWIz
ZTllN2ZmZDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTAzLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpIGlzIHZlcnkgZnJhZ2lsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODE5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81MTMxOTQ1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIERlZmxha2UgdGVzdHMgdXNpbmcgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCkg
YnkgZml4aW5nIHNldmVyYWwgY2F1c2VzIG9mIGZsYWtpbmVzcywKKyAgICAgICAgYWRkaW5nIGJh
Y2sgY2hhbmdlcyBmcm9tIHIyNTc4NDQgdGhhdCB3ZXJlIHJldmVydGVkIGluIHIyNTg1NTguCisg
ICAgICAgIAorICAgICAgICBGaXJzdCwgaGF2ZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIGtlZXAg
dHJhY2sgb2Ygd2hldGhlciBpdCdzIHNlZW4gdGhlbiAiZW5kIiBldmVudAorICAgICAgICBmb3Ig
dGhlIHNjcm9sbGluZyBhbmQgbW9tZW50dW0gcGhhc2VzLCBhbmQgcGFzcyB0aGlzIGRvd24gdG8g
V2hlZWxFdmVudFRlc3RNb25pdG9yLCB3aGljaAorICAgICAgICBub3cgd2FpdHMgdW50aWwgaXQg
c2VlcyB0aGVzZSwgd2hpY2ggcHJldmVudHMgcHJlbWF0dXJlIHRyaWdnZXJpbmcgd2hpY2ggd2Fz
IGEgY29tbW9uIGNhdXNlIG9mCisgICAgICAgIGZhaWx1cmUgYmVmb3JlLgorICAgICAgICAKKyAg
ICAgICAgU2Vjb25kLCByZW1vdmUgV2hlZWxFdmVudFRlc3RNb25pdG9yJ3MgMS82MHMgdGltZXIg
YW5kIGluc3RlYWQgaGF2ZSBXaGVlbEV2ZW50VGVzdE1vbml0b3IgdGVzdAorICAgICAgICBmb3Ig
Y29tcGxldGlvbiBpbiBhIGNhbGxvdXQgZnJvbSB0aGUgZW5kIG9mIFBhZ2U6OnVwZGF0ZVJlbmRl
cmluZygpLCB3aGljaCBtYWtlcyBpdCB0ZXN0CisgICAgICAgIGFuZCBmaXJlIGF0IGEgbW9yZSBj
b25zaXN0ZW50IHRpbWUuCisgICAgICAgIAorICAgICAgICBUaGlyZCwgcHVzaCBXaGVlbEV2ZW50
VGVzdE1vbml0b3IgdG8gdGhlIFNjcm9sbGluZ1RyZWUsIHNvIHRoYXQgcmVhc29ucyBmb3IgZGVm
ZXJyYWwKKyAgICAgICAgY2FuIGJlIGFkZGVkIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLiBUaGlz
IGZpeGVzIGFuIGlzc3VlIHdoZXJlIHRoZSBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goKQorICAg
ICAgICB1c2VkIHRvIHNlbmQgdGhlICJTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkIiByZWFzb24g
dG8gdGhlIG1haW4gdGhyZWFkIHdvdWxkIGdldCBkZWxheWVkLAorICAgICAgICBhbHNvIHJlc3Vs
dGluZyBpbiBhIHByZW1hdHVyZSB0cmlnZ2VyLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uY3BwOiBVbmlmaWVkIHNvdXJjZXMhCisgICAgICAgICogZG9tL1dp
bmRvd0V2ZW50TG9vcC5jcHA6IFVuaWZpZWQgc291cmNlcyEKKyAgICAgICAgKiBwYWdlL0V2ZW50
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6c2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbCk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRvQWZ0ZXJV
cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6d2hlZWxFdmVudFRlc3RN
b25pdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNsZWFyV2hlZWxFdmVudFRl
c3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzTW9uaXRvcmluZ1doZWVsRXZl
bnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVuc3VyZVdoZWVsRXZlbnRUZXN0
TW9uaXRvcik6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojp3aGVlbEV2ZW50VGVzdE1vbml0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6Y2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aXNNb25pdG9yaW5nV2hlZWxFdmVudHMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6V2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxi
YWNrQW5kU3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6ZGVmZXJGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRl
c3RNb25pdG9yOjpyZW1vdmVEZWZlcnJhbEZvclJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNjaGVkdWxlQ2FsbGJhY2tDaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmlyZUNhbGxi
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6
OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRp
b25UaW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9XaGVl
bEV2ZW50VGVzdE1vbml0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9u
aXRvckNvbXBsZXRpb25EZWZlcnJlcjo6V2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRl
ZmVycmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRp
b25EZWZlcnJlcjo6fldoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZlcnJlcik6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlv
dXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlbW92ZVdoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdGFydE1vbml0b3JpbmdXaGVlbEV2ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c3RvcE1vbml0b3JpbmdX
aGVlbEV2ZW50cyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlOjpzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZTo6cmVjZWl2ZWRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmRlZmVyV2hlZWxFdmVudFRlc3RD
b21wbGV0aW9uRm9yUmVhc29uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZTo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JS
ZWFzb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xs
aW5nVHJlZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpz
dGFydE1vbml0b3JpbmdXaGVlbEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvck1hYzo6c3RvcE1vbml0b3JpbmdXaGVlbEV2ZW50cyk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVNYWM6
OnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChTY3JvbGxpbmdUcmVlTWFjOjpy
ZWNlaXZlZFdoZWVsRXZlbnQpOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1hYzo6ZGVmZXJXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24pOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1h
Yzo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24pOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24gY29uc3Qp
OgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0V2hlZWxFdmVudE1vbml0b3JUZXN0Q2FsbGJhY2tBbmRT
dGFydE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRUZXN0Q2Fs
bGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oOgorCiAyMDIwLTAzLTE3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjU0
ODU2KSBBZGQgZXhjZXB0aW9uIGZvciB3aW5kb3cub3BlbkRhdGFiYXNlIHRvIG5vdCBtYXNxdWVy
YWRlIGFzIHVuZGVmaW5lZCBpbiBjdXJyZW50bHkgc2hpcHBpbmcgSmVzdXMgQ2FsbGluZyBEZXZv
dGlvbmFsIGFwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNWUzOWYyNzY2NDlhYzNmMGI5YzllZDkzNWJkNzhjYzlk
ZDA3ZTY4Li5mNDVlMWUzYTFhM2ExYjU5ZTZmMWYyZDAzMGZhZGVmMWQ0MDZiZDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAzLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
IGlzIHZlcnkgZnJhZ2lsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk3ODE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTMxOTQ1Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIERlZmxha2UgdGVzdHMgdXNp
bmcgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCkgYnkgZml4aW5nIHNldmVyYWwgY2F1
c2VzIG9mIGZsYWtpbmVzcywKKyAgICAgICAgYWRkaW5nIGJhY2sgY2hhbmdlcyBmcm9tIHIyNTc4
NDQgdGhhdCB3ZXJlIHJldmVydGVkIGluIHIyNTg1NTguCisgICAgICAgIAorICAgICAgICBGaXJz
dCwgaGF2ZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBpdCdz
IHNlZW4gdGhlbiAiZW5kIiBldmVudAorICAgICAgICBmb3IgdGhlIHNjcm9sbGluZyBhbmQgbW9t
ZW50dW0gcGhhc2VzLCBhbmQgcGFzcyB0aGlzIGRvd24gdG8gV2hlZWxFdmVudFRlc3RNb25pdG9y
LCB3aGljaAorICAgICAgICBub3cgd2FpdHMgdW50aWwgaXQgc2VlcyB0aGVzZSwgd2hpY2ggcHJl
dmVudHMgcHJlbWF0dXJlIHRyaWdnZXJpbmcgd2hpY2ggd2FzIGEgY29tbW9uIGNhdXNlIG9mCisg
ICAgICAgIGZhaWx1cmUgYmVmb3JlLgorICAgICAgICAKKyAgICAgICAgU2Vjb25kLCByZW1vdmUg
V2hlZWxFdmVudFRlc3RNb25pdG9yJ3MgMS82MHMgdGltZXIgYW5kIGluc3RlYWQgaGF2ZSBXaGVl
bEV2ZW50VGVzdE1vbml0b3IgdGVzdAorICAgICAgICBmb3IgY29tcGxldGlvbiBpbiBhIGNhbGxv
dXQgZnJvbSB0aGUgZW5kIG9mIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpLCB3aGljaCBtYWtlcyBp
dCB0ZXN0CisgICAgICAgIGFuZCBmaXJlIGF0IGEgbW9yZSBjb25zaXN0ZW50IHRpbWUuCisgICAg
ICAgIAorICAgICAgICBUaGlyZCwgcHVzaCBXaGVlbEV2ZW50VGVzdE1vbml0b3IgdG8gdGhlIFNj
cm9sbGluZ1RyZWUsIHNvIHRoYXQgcmVhc29ucyBmb3IgZGVmZXJyYWwKKyAgICAgICAgY2FuIGJl
IGFkZGVkIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdoZXJl
IHRoZSBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goKQorICAgICAgICB1c2VkIHRvIHNlbmQgdGhl
ICJTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkIiByZWFzb24gdG8gdGhlIG1haW4gdGhyZWFkIHdv
dWxkIGdldCBkZWxheWVkLAorICAgICAgICBhbHNvIHJlc3VsdGluZyBpbiBhIHByZW1hdHVyZSB0
cmlnZ2VyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRp
b25Db21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisKIDIwMjAtMDMtMTcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggR1RLIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3Bw
CmluZGV4IDY0OTNmZTZiYTU5Y2M1YzFlZDUxODMyMWQzZWU2ZjE3ZDQ0ZjI4NTguLjRhM2Y3NWJl
ZmQ5ZjU4ZTQ2MWMxZjdjZDljN2FiZmI1ZWVhMzdiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTYzLDYgKzYzLDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uQWRkaXRpb25zLmNwcD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dp
bmRvd0V2ZW50TG9vcC5jcHAKaW5kZXggMzdlZmU5MDcyMmE0MTc1MGRmOGE4NGU5MTU4NjhhOWYy
MzVmYjBmMy4uZDkxODkwNzIyZDgyNjFlYWY4YmE0NTYwMWRlNGViNWE0NTViMzY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggZTkyY2UyY2Q0YTZhNmNiZWQyZjlhOTFkOWMyZmYyNGE4ZTBjNmZlNi4uZWRlMGI0YTAwOGFj
OTk5YzA0YTRjYzY4ZjdhZWQ5YWEyZGI2Y2VhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAj
aW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5o
IgorI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTI4MjUsNiArMjgyNiwxNCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQog
ICAgIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTE9HX1dJVEhfU1RSRUFN
KFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICJFdmVudEhhbmRsZXI6OmhhbmRsZVdo
ZWVsRXZlbnQgb24gbWFpbiB0aHJlYWQsIHBoYXNlICIgPDwgZXZlbnQucGhhc2UoKSA8PCAiIG1v
bWVudHVtIHBoYXNlICIgPDwgZXZlbnQubW9tZW50dW1QaGFzZSgpKTsKKyAgICBpZiAoYXV0byBt
b25pdG9yID0gbV9mcmFtZS5wYWdlKCktPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKQorICAgICAg
ICBtb25pdG9yLT5yZWNlaXZlZFdoZWVsRXZlbnQoZXZlbnQpOworCisgICAgV2hlZWxFdmVudFRl
c3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIGRlZmVycmVyKG1fZnJhbWUucGFnZSgpLT53aGVl
bEV2ZW50VGVzdE1vbml0b3IoKS5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpE
ZWZlclJlYXNvbjo6SGFuZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkKTsKKyNlbmRpZgorCiAg
ICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVudCA9IHRydWU7CiAgICAgc2V0RnJhbWVXYXNTY3JvbGxl
ZEJ5VXNlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMzczYjMxMWNjNTMw
ZjY0MTI3NTQzNGFkZTUyZjkwZmE5YWJiNjNlNy4uNTNmMTc5OGU4YzJjMTVkZmQ2ZjU5ZGVhZTZj
NjBmNTNmNjNiNDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjQ0NSw2ICsy
NDQ1LDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKQogCiB2b2lk
IEZyYW1lVmlldzo6c2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25z
dCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQp
CiB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxl
dGlvbkRlZmVycmVyIGRlZmVycmVyKGZyYW1lKCkucGFnZSgpLT53aGVlbEV2ZW50VGVzdE1vbml0
b3IoKS5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbjo6Q29u
dGVudFNjcm9sbEluUHJvZ3Jlc3MpOworI2VuZGlmCisKICAgICB1cGRhdGVMYXllclBvc2l0aW9u
c0FmdGVyU2Nyb2xsaW5nKCk7CiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9s
bGluZygpOwogICAgIHJlcGFpbnRTbG93UmVwYWludE9iamVjdHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDgzMTBkMzMyY2NiNzEyNGViOGYxYWMwYjdlZjE4NTE4OTUwN2RhY2YuLjFkZjk4NTdl
N2YxNDFjZGYwNTFlMjk0ZDEzODZlZjg0ZTM5ZTEyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MTMwLDYgKzEzMCw3IEBACiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgogI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5oIgorI2lu
Y2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oPgpAQCAtMTM5MCw2ICsxMzkxLDkgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKCkKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCk7CiAj
ZW5kaWYKIAorICAgIGlmIChVTkxJS0VMWShpc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSkKKyAg
ICAgICAgd2hlZWxFdmVudFRlc3RNb25pdG9yKCktPmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcygp
OworCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1haW5GcmFt
ZSgpLnRyZWUoKS5maXJzdFJlbmRlcmVkQ2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS50cmF2ZXJzZU5leHRSZW5kZXJlZCgpKSB7CiAgICAgICAgIGF1dG8qIGZyYW1lVmlldyA9
IGNoaWxkLT52aWV3KCk7CkBAIC0yNjIxLDE0ICsyNjI1LDM0IEBAIHZvaWQgUGFnZTo6cGxheWJh
Y2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQodWludDY0X3QgY2xpZW50SWQpCiAKICNlbmRpZgog
CitSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBQYWdlOjp3aGVlbEV2ZW50VGVzdE1vbml0
b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKK30KKwor
dm9pZCBQYWdlOjpjbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpCit7CisgICAgaWYgKG1fc2Ny
b2xsaW5nQ29vcmRpbmF0b3IpCisgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnN0b3BN
b25pdG9yaW5nV2hlZWxFdmVudHMoKTsKKworICAgIG1fd2hlZWxFdmVudFRlc3RNb25pdG9yID0g
bnVsbHB0cjsKK30KKworYm9vbCBQYWdlOjppc01vbml0b3JpbmdXaGVlbEV2ZW50cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICEhbV93aGVlbEV2ZW50VGVzdE1vbml0b3I7Cit9CisKIFdoZWVsRXZl
bnRUZXN0TW9uaXRvciYgUGFnZTo6ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkKIHsKICAg
ICBpZiAoIW1fd2hlZWxFdmVudFRlc3RNb25pdG9yKSB7Ci0gICAgICAgIG1fd2hlZWxFdmVudFRl
c3RNb25pdG9yID0gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKKyAgICAg
ICAgbV93aGVlbEV2ZW50VGVzdE1vbml0b3IgPSBhZG9wdFJlZihuZXcgV2hlZWxFdmVudFRlc3RN
b25pdG9yKCp0aGlzKSk7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxp
bmcgY29vcmRpbmF0b3Igc28gdGhhdCB0aGUgbWFpbmZyYW1lIHNjcm9sbGluZyBub2RlIGNhbiBl
eHBlY3Qgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2Vycy4KICAgICAgICAgaWYgKGF1dG8qIGZyYW1l
VmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKSkgewotICAgICAgICAgICAgaWYgKG1fc2Nyb2xsaW5n
Q29vcmRpbmF0b3IpCisgICAgICAgICAgICBpZiAobV9zY3JvbGxpbmdDb29yZGluYXRvcikgewor
ICAgICAgICAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnN0YXJ0TW9uaXRvcmluZ1do
ZWVsRXZlbnRzKCk7CiAgICAgICAgICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvci0+dXBk
YXRlSXNNb25pdG9yaW5nV2hlZWxFdmVudHNGb3JGcmFtZVZpZXcoKmZyYW1lVmlldyk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZjJkMTAzODJj
OTQyNTUxYjljOGFjMDc2MWVlODBhNjhhNzg0YWZiNi4uODgzZjEwY2NkMDdiNzkyNTFjNTNiODgw
Y2ZiY2IzOTJlMWE4ODU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNs
dWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJWaXNpYmlsaXR5U3RhdGUuaCIKLSNpbmNsdWRlICJXaGVl
bEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xNDcsNiArMTQ2LDcg
QEAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiBjbGFz
cyBXZWJHTFN0YXRlVHJhY2tlcjsKIGNsYXNzIFdoZWVsRXZlbnREZWx0YUZpbHRlcjsKK2NsYXNz
IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKIAogdXNpbmcgU2hhcmVkU3RyaW5nSGFzaCA9IHVpbnQz
Ml90OwogCkBAIC02NDksMTAgKzY0OSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCh1aW50NjRfdCk7CiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IHdoZWVsRXZlbnRUZXN0TW9uaXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gd2hlZWxFdmVudFRlc3RNb25p
dG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgV2hlZWxFdmVudFRlc3RNb25pdG9yJiBl
bnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKLSAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRl
c3RNb25pdG9yKCkgeyBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9IG51bGxwdHI7IH0KLSAgICBi
b29sIGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gISFtX3doZWVsRXZl
bnRUZXN0TW9uaXRvcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJXaGVlbEV2ZW50
VGVzdE1vbml0b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTW9uaXRvcmluZ1doZWVs
RXZlbnRzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgYm9vbCBhbGxvd3NNZWRp
YURvY3VtZW50SW5saW5lUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX2FsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjazsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9X
aGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50
VGVzdE1vbml0b3IuY3BwCmluZGV4IDIwZWI0ZDBmODIxNDg2NDQ2ZGEzNTdmOTE4ODdmMmRmMWNm
OGMxMTkuLjg2ZWY2MjVhMGQ1NDA3NTJhZTlkODA1ODI5NzQ0ZDllNzkyY2Y4ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKQEAgLTMwLDcgKzMw
LDkgQEAKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKIAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtNDAsNDIgKzQyLDU2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV2hlZWxFdmVudFRlc3RNb25pdG9yOjpXaGVlbEV2ZW50VGVzdE1vbml0b3Io
KQotICAgIDogbV90ZXN0Rm9yQ29tcGxldGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhp
cywgJldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVkKQorV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpXaGVlbEV2ZW50VGVzdE1vbml0b3IoUGFnZSYgcGFnZSkKKyAgICA6
IG1fcGFnZShwYWdlKQogewogfQogCiB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJB
bGxUZXN0RGVmZXJyYWxzKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5j
bGVhcigpOwogICAgIG1fY29tcGxldGlvbkNhbGxiYWNrID0gbnVsbHB0cjsKLSAgICBtX3Rlc3RG
b3JDb21wbGV0aW9uVGltZXIuc3RvcCgpOwotICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50
VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICAgKD0pIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
Y2xlYXJBbGxUZXN0RGVmZXJyYWxzOiBjbGVhcmVkIGFsbCB0ZXN0IHN0YXRlLiIpOworICAgIG1f
ZXZlckhhZERlZmVycmFsID0gZmFsc2U7CisgICAgbV9yZWNlaXZlZFdoZWVsRW5kT3JDYW5jZWwg
PSBmYWxzZTsKKyAgICBtX3JlY2VpdmVkTW9tZW50dW1FbmQgPSBmYWxzZTsKKyAgICBMT0dfV0lU
SF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpjbGVhckFsbFRlc3REZWZlcnJhbHM6IGNsZWFyZWQgYWxsIHRlc3Qgc3RhdGUu
Iik7CiB9CiAKLXZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRT
dGFydE5vdGlmaWNhdGlvblRpbWVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uQ2Fs
bGJhY2spCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3Rh
cnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBleHBlY3RNb21l
bnR1bUVuZCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb25DYWxsYmFjaykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShmdW5jdGlvbkNhbGxiYWNrKTsKLSAgICAKLSAgICBpZiAoIW1fdGVzdEZvckNvbXBsZXRp
b25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIuc3Rh
cnRSZXBlYXRpbmcoMV9zIC8gNjAuKTsKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisg
ICAgbV9leHBlY3RXaGVlbEVuZE9yQ2FuY2VsID0gZXhwZWN0V2hlZWxFbmRPckNhbmNlbDsKKyAg
ICBtX2V4cGVjdE1vbWVudHVtRW5kID0gZXhwZWN0TW9tZW50dW1FbmQ7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShleHBlY3RXaGVlbEVuZE9yQ2FuY2VsKTsKKyAgICBVTlVTRURfUEFSQU0oZXhw
ZWN0TW9tZW50dW1FbmQpOworI2VuZGlmCisKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVu
dFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0
Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcgLSBleHBlY3QgZW5kL2NhbmNlbCAiIDw8IGV4cGVj
dFdoZWVsRW5kT3JDYW5jZWwgPDwgIiwgZXhwZWN0IG1vbWVudW0gZW5kICIgPDwgZXhwZWN0TW9t
ZW50dW1FbmQpOwogfQogCiB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6ZGVmZXJGb3JSZWFz
b24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIERlZmVyUmVhc29uIHJlYXNv
bikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9jayht
X211dGV4KTsKKwogICAgIG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5lbnN1cmUoaWRlbnRpZmll
ciwgW10gewogICAgICAgICByZXR1cm4gT3B0aW9uU2V0PERlZmVyUmVhc29uPigpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS5hZGQocmVhc29uKTsKLSAgICAKKworICAgIG1fZXZlckhhZERlZmVy
cmFsID0gdHJ1ZTsKKwogICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3Is
IHN0cmVhbSA8PCAiICAgICAgKD0pIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6ZGVmZXJGb3JSZWFz
b246IGlkPSIgPDwgaWRlbnRpZmllciA8PCAiLCByZWFzb249IiA8PCByZWFzb24pOwogfQogCiB2
b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIERlZmVyUmVhc29uIHJlYXNvbikKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KwogICAgIGF1dG8gaXQgPSBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuZmluZChpZGVudGlmaWVy
KTsKICAgICBpZiAoaXQgPT0gbV9kZWZlckNvbXBsZXRpb25SZWFzb25zLmVuZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC04NSwyOCArMTAxLDczIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpyZW1vdmVEZWZlcnJhbEZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlCiAg
ICAgCiAgICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZGVmZXJDb21wbGV0
aW9uUmVhc29ucy5yZW1vdmUoaXQpOworCisgICAgc2NoZWR1bGVDYWxsYmFja0NoZWNrKCk7CiB9
Ci0gICAgCi12b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVk
KCkKKwordm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKCFtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCAtIHNjcm9sbGluZyBz
dGlsbCBhY3RpdmUsIHJlYXNvbnMgIiA8PCBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMpOworI2lm
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAoZXZlbnQucGhhc2UoKSA9PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkIHx8IGV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgIG1fcmVjZWl2ZWRXaGVlbEVuZE9yQ2FuY2Vs
ID0gdHJ1ZTsKKworICAgIGlmIChldmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgbV9yZWNlaXZlZE1vbWVudHVtRW5kID0gdHJ1ZTsK
KyNlbmRpZgorfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2NoZWR1bGVDYWxsYmFj
a0NoZWNrKCkKK3sKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgbV9wYWdlLnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIGZ1bmN0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkNhbGxiYWNrKTsKLSAg
ICBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIuc3RvcCgpOworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cihtX3BhZ2UpXSB7CisgICAgICAgIGlmICh3
ZWFrUGFnZSkKKyAgICAgICAgICAgIHdlYWtQYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgp
OworICAgIH0pOworfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2hlY2tTaG91bGRG
aXJlQ2FsbGJhY2tzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHsKKyAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgIGlmICghbV9kZWZlckNv
bXBsZXRpb25SZWFzb25zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzIC0gc2Nyb2xsaW5nIHN0aWxsIGFjdGl2ZSwgcmVh
c29ucyAiIDw8IG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fZXZlckhhZERlZmVycmFsKSB7CisgICAgICAg
ICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpjaGVja1Nob3VsZEZpcmVDYWxsYmFja3MgLSBoYXZlIG5v
dCB5ZXQgc2VlbiBhbnkgZGVmZXJyYWwgcmVhc29ucyIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9leHBlY3RXaGVlbEVuZE9yQ2FuY2Vs
ICYmICFtX3JlY2VpdmVkV2hlZWxFbmRPckNhbmNlbCkgeworICAgICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzIC0gaGF2ZSBub3Qgc2VlbiBlbmQgb2Yg
b2Ygd2hlZWwgcGhhc2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtX2V4cGVjdE1vbWVudHVtRW5kICYmICFtX3JlY2VpdmVkTW9tZW50dW1FbmQpIHsK
KyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVh
bSA8PCAiICBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcyAt
IGhhdmUgbm90IHNlZW4gZW5kIG9mIG9mIG1vbWVudHVtIHBoYXNlIik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVu
dFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjp0cmlnZ2Vy
VGVzdFRpbWVyRmlyZWQ6IHNjcm9sbGluZyBpcyBpZGxlLCBGSVJJTkcgVEVTVCIpOwotICAgIGlm
IChmdW5jdGlvbkNhbGxiYWNrKQorICAgIGlmIChhdXRvIGZ1bmN0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkNhbGxiYWNrKSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hl
ZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpj
aGVja1Nob3VsZEZpcmVDYWxsYmFja3M6IHNjcm9sbGluZyBpcyBpZGxlLCBGSVJJTkcgVEVTVCIp
OwogICAgICAgICBmdW5jdGlvbkNhbGxiYWNrKCk7CisgICAgfSBlbHNlCisgICAgICAgIExPR19X
SVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcyAtIG5vIGNhbGxiYWNrIik7CiB9
CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQogewogICAgIHN3aXRjaCAocmVhc29uKSB7CiAg
ICAgY2FzZSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkhhbmRsaW5nV2hlZWxFdmVudDogdHMgPDwg
ImhhbmRsaW5nIHdoZWVsIGV2ZW50IjsgYnJlYWs7CisgICAgY2FzZSBXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OkhhbmRsaW5nV2hlZWxFdmVudE9uTWFpblRocmVhZDogdHMgPDwgImhhbmRsaW5nIHdo
ZWVsIGV2ZW50IG9uIG1haW4gdGhyZWFkIjsgYnJlYWs7CiAgICAgY2FzZSBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OlJ1YmJlcmJhbmRJblByb2dyZXNzOiB0cyA8PCAicnViYmVyYmFuZGluZyI7IGJy
ZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxTbmFwSW5Qcm9ncmVz
czogdHMgPDwgInNjcm9sbC1zbmFwcGluZyI7IGJyZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkOiB0cyA8PCAic2Nyb2xsaW5nIHRo
cmVhZCBzeW5jIG5lZWRlZCI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVu
dFRlc3RNb25pdG9yLmgKaW5kZXggZjlkODYxYWJhYWE2NTgyNzk5MGRkYThmYWMyNjA0MWZhM2Y2
MjRiMi4uZWVmYzA5OTMwMDczMTRmZWI0NDRhMWVkNGYwYmM2NTViODBmODMxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCkBAIC0yOCw0NSArMjgsNzkg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQYWdlOworCiBj
bGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3IgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V2hlZWxFdmVudFRlc3RNb25pdG9yPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2hlZWxF
dmVudFRlc3RNb25pdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CisgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yKFBhZ2Um
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3Rp
ZmljYXRpb25UaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVl
bEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVudHVtRW5kLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRlc3REZWZlcnJhbHMoKTsK
ICAgICAKICAgICBlbnVtIERlZmVyUmVhc29uIHsKLSAgICAgICAgSGFuZGxpbmdXaGVlbEV2ZW50
ICAgICAgICAgID0gMSA8PCAwLAotICAgICAgICBSdWJiZXJiYW5kSW5Qcm9ncmVzcyAgICAgICAg
PSAxIDw8IDEsCi0gICAgICAgIFNjcm9sbFNuYXBJblByb2dyZXNzICAgICAgICA9IDEgPDwgMiwK
LSAgICAgICAgU2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCAgID0gMSA8PCAzLAotICAgICAgICBD
b250ZW50U2Nyb2xsSW5Qcm9ncmVzcyAgICAgPSAxIDw8IDQsCisgICAgICAgIEhhbmRsaW5nV2hl
ZWxFdmVudCAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEhhbmRsaW5nV2hlZWxFdmVu
dE9uTWFpblRocmVhZCAgPSAxIDw8IDEsCisgICAgICAgIFJ1YmJlcmJhbmRJblByb2dyZXNzICAg
ICAgICAgICAgPSAxIDw8IDIsCisgICAgICAgIFNjcm9sbFNuYXBJblByb2dyZXNzICAgICAgICAg
ICAgPSAxIDw8IDMsCisgICAgICAgIFNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQgICAgICAgPSAx
IDw8IDQsCisgICAgICAgIENvbnRlbnRTY3JvbGxJblByb2dyZXNzICAgICAgICAgPSAxIDw8IDUs
CiAgICAgfTsKICAgICB0eXBlZGVmIGNvbnN0IHZvaWQqIFNjcm9sbGFibGVBcmVhSWRlbnRpZmll
cjsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVjZWl2ZWRXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVmZXJGb3JSZWFz
b24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBEZWZlclJlYXNvbik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVEZWZlcnJhbEZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIERlZmVyUmVhc29uKTsKICAgICAKLSAgICB2b2lkIHRyaWdnZXJUZXN0VGltZXJGaXJlZCgp
OworICAgIHZvaWQgY2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCk7CiAKICAgICB1c2luZyBTY3Jv
bGxhYmxlQXJlYVJlYXNvbk1hcCA9IFdURjo6SGFzaE1hcDxTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIE9wdGlvblNldDxEZWZlclJlYXNvbj4+OwogCiBwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1
bGVDYWxsYmFja0NoZWNrKCk7CisKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb21wbGV0
aW9uQ2FsbGJhY2s7Ci0gICAgUnVuTG9vcDo6VGltZXI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBt
X3Rlc3RGb3JDb21wbGV0aW9uVGltZXI7CisgICAgUGFnZSYgbV9wYWdlOwogCisgICAgTG9jayBt
X211dGV4OwogICAgIFNjcm9sbGFibGVBcmVhUmVhc29uTWFwIG1fZGVmZXJDb21wbGV0aW9uUmVh
c29uczsKKyAgICBib29sIG1fZXhwZWN0V2hlZWxFbmRPckNhbmNlbCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3JlY2VpdmVkV2hlZWxFbmRPckNhbmNlbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V4
cGVjdE1vbWVudHVtRW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVjZWl2ZWRNb21lbnR1bUVu
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V2ZXJIYWREZWZlcnJhbCB7IGZhbHNlIH07Cit9Owor
CitjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3JDb21wbGV0aW9uRGVmZXJyZXIgeworcHVibGlj
OgorICAgIFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZlcnJlcihXaGVlbEV2ZW50
VGVzdE1vbml0b3IqIG1vbml0b3IsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFy
ZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFz
b24gcmVhc29uKQorICAgICAgICA6IG1fbW9uaXRvcihtb25pdG9yKQorICAgICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVhc29uKHJlYXNvbikKKyAgICB7Cisg
ICAgICAgIGlmIChtX21vbml0b3IpCisgICAgICAgICAgICBtX21vbml0b3ItPmRlZmVyRm9yUmVh
c29uKG1faWRlbnRpZmllciwgbV9yZWFzb24pOworICAgIH0KKyAgICAKKyAgICB+V2hlZWxFdmVu
dFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyKCkKKyAgICB7CisgICAgICAgIGlmIChtX21v
bml0b3IpCisgICAgICAgICAgICBtX21vbml0b3ItPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKG1f
aWRlbnRpZmllciwgbV9yZWFzb24pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2hl
ZWxFdmVudFRlc3RNb25pdG9yPiBtX21vbml0b3I7CisgICAgV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gbV9yZWFzb247CiB9OwogCiBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZl
clJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGVkNzIwMzY3NDM1MjNkNWM5Yzkw
YjNlYzg0NjA2N2MwMWZkNzA4ZGUuLjQ1MjA5OTkxY2M5Y2RjYzRjYTdlMjY4MmFlNDYwOWVhYTNh
OTIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xMzgsOCArMTM4LDYgQEAgdm9pZCBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmll
dyYgZnJhbWVWaWV3KQogCiAgICAgYXV0byogcGFnZSA9IGZyYW1lVmlldy5mcmFtZSgpLnBhZ2Uo
KTsKICAgICBpZiAocGFnZSAmJiBwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSB7Ci0g
ICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAi
ICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQ6IEV4
cGVjdHMgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2VyOiAiIDw8IHBhZ2UtPmlzTW9uaXRvcmluZ1do
ZWVsRXZlbnRzKCkpOwotCiAgICAgICAgIGF1dG8qIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbGluZ05vZGVJRCgpKTsKICAgICAgICAg
aWYgKCFpczxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC04MjYsMjkgKzgyNCw2IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlEIHNjcm9s
CiAgICAgfQogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmRlZmVyV2hlZWxF
dmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVm
ZXJSZWFzb24gcmVhc29uKSBjb25zdAotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNvbnN0IGF1dG8mIHRyaWdnZXIgPSBtX3BhZ2UtPndo
ZWVsRXZlbnRUZXN0TW9uaXRvcigpKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICghKSBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpkZWZlckZvclJlYXNvbjogRGVmZXJyaW5nICIgPDwgaWRlbnRpZmllciA8PCAiIGZvciBy
ZWFzb24gIiA8PCByZWFzb24pOwotICAgICAgICB0cmlnZ2VyLT5kZWZlckZvclJlYXNvbihpZGVu
dGlmaWVyLCByZWFzb24pOwotICAgIH0KLX0KLQotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKLXsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChjb25zdCBh
dXRvJiB0cmlnZ2VyID0gbV9wYWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSkgewotICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgICAo
ISkgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0
aW9uRGVmZXJyYWxGb3JSZWFzb246IERlZmVycmluZyAiIDw8IGlkZW50aWZpZXIgPDwgIiBmb3Ig
cmVhc29uICIgPDwgcmVhc29uKTsKLSAgICAgICAgdHJpZ2dlci0+cmVtb3ZlRGVmZXJyYWxGb3JS
ZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKLSAgICB9Ci19CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNmRhMmU4MzE0NmNlYWYx
Nzk3MDY0MWFlY2JhNjdlYjVkZTk2OWJmYi4uMWFiMWY0NWRlMTZjZTA0NjMwYjIyMWMzNzhjYmRk
MmQwMTMxMGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNTUsOCArNTUsNiBAQCBwdWJsaWM6
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2
ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbElu
ZGV4LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4KTsKLSAgICB2b2lkIGRlZmVyV2hlZWxFdmVudFRl
c3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFy
ZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdDsK
LSAgICB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29u
KFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDA1MTNmZTc4NzY3MTEyZDNlMzkzMjdmNjRh
ZWQ4YzJjMDBkNjFmM2EuLjAwYzY5NjcyMzhmNDk3MjZmYWI0NGM2ZDgyMTA4ZWIxY2VjODk2ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaApAQCAtMTgwLDYgKzE4MCw5IEBAIHB1YmxpYzoKICAgICBFdmVudFRyYWNraW5n
UmVnaW9ucyBhYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUlzTW9uaXRvcmluZ1doZWVsRXZlbnRzRm9yRnJhbWVWaWV3KGNvbnN0IEZy
YW1lVmlldyYpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nV2hlZWxFdmVudHMoKSB7
IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2Uq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cAppbmRleCBjMmYyMDBkM2MzZDI3N2M2ZjU0YTUxNmQ4YmRlNDliNTE1ZWEzZTYzLi43OGRkNTA4
MWMwYWE5YzE5YzE1NzE5N2ZlMmUxNTZjNzMxNTdlOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtOTYsNiArOTYsOSBAQCBTY3Jv
bGxpbmdFdmVudFJlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgdwogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmVlTXV0ZXgp
OwogCisgICAgaWYgKGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgIHJlY2VpdmVk
V2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKwogICAgIGlmICghYXN5bmNGcmFtZU9yT3ZlcmZsb3dT
Y3JvbGxpbmdFbmFibGVkKCkpIHsKICAgICAgICAgaWYgKG1fcm9vdE5vZGUpCiAgICAgICAgICAg
ICBtX3Jvb3ROb2RlLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDcxOTFhMzc2MjNiOWUz
NzIwMGI0NjkzM2NiMDI2MzZhNmFhZjdlMTIuLjVmNjg5Mzg3NzU2NmNhZDU3Mjg2OWMwMmM2NzRm
M2RiZTEyZmIzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0
b3IuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTEwNyw2ICsxMDgs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVTY3Jv
bGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIC8qaG9yaXpvbnRhbEluZGV4
Ki8sIHVuc2lnbmVkIC8qdmVydGljYWxJbmRleCovKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4mJikg
eyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JS
ZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25p
dG9yOjpEZWZlclJlYXNvbikgeyB9CiAjZW5kaWYKQEAgLTE3OCw2ICsxODEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5UmVsYXRlZE5vZGVzUmVjdXJzaXZlKFNjcm9sbGluZ1RyZWVOb2Rl
Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9k
ZT4gc2Nyb2xsaW5nTm9kZUZvclBvaW50KEZsb2F0UG9pbnQpOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9CiAKICAgICBM
b2NrIG1fdHJlZU11dGV4OyAvLyBQcm90ZWN0cyB0aGUgc2Nyb2xsaW5nIHRyZWUuCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IDgxMGFmZDQ0MzFmMmUxMWEzZWIwNDEyZWVlNWJjYWE3ZWUyMGFjZWIuLjkw
YTllYzZiNmRlOWFmN2E2YzdmMTVmZmRjNjE0NDhiODM3M2E0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApA
QCAtOTksNyArOTksNiBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJl
ZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uID0gbm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24o
KTsKLQogICAgIGlmIChub2RlLmlzUm9vdE5vZGUoKSkKICAgICAgICAgc2V0TWFpbkZyYW1lU2Ny
b2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogCkBAIC0xMTYsMTEgKzExNSwxMiBAQCB2b2lk
IFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZAogICAgIGlmIChtb25pdG9yaW5nV2hlZWxFdmVudHMpCiAgICAg
ICAgIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nh
c3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KG5vZGUu
c2Nyb2xsaW5nTm9kZUlEKCkpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGluZ1RocmVh
ZFN5bmNOZWVkZWQpOwogI2VuZGlmCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3Jv
bGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCA9IG5vZGUu
c2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgbW9uaXRvcmluZ1doZWVsRXZlbnRzXSB7Ci0g
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9u
QWZ0ZXJBc3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9y
aWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3N0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbm9kZUlEID0gbm9kZS5z
Y3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBz
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uLCBtb25pdG9yaW5nV2hlZWxFdmVudHNdIHsKKyAg
ICAgICAgc3Ryb25nVGhpcy0+bV9zY3JvbGxpbmdDb29yZGluYXRvci0+c2NoZWR1bGVVcGRhdGVT
Y3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbGF5
b3V0Vmlld3BvcnRPcmlnaW4sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAgICAgaWYgKG1vbml0b3JpbmdXaGVlbEV2ZW50cykKLSAgICAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25E
ZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihub2RlSUQpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6
OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOworICAgICAgICAgICAgc3Ryb25nVGhpcy0+cmVt
b3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRf
Y2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4obm9k
ZUlEKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsK
ICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShtb25pdG9yaW5nV2hlZWxFdmVudHMpOwogI2Vu
ZGlmCkBAIC0yMDMsMjYgKzIwMyw2IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCB1CiAgICAgfSk7
CiB9CiAKLXZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29t
cGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJl
YXNvbikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
PSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKLSAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVh
c29uKGlkZW50aWZpZXIsIHJlYXNvbik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNv
bihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikKLXsKLSAgICBp
ZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxp
bmdDb29yZGluYXRvciwgaWRlbnRpZmllciwgcmVhc29uXSB7Ci0gICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5yZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNv
bihpZGVudGlmaWVyLCByZWFzb24pOwotICAgIH0pOwotfQotCiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCAwNWRkYzVjZDAzOGI2OTU4Mjk1MjQwOTcwMjVm
NzI1MTA4YzViNmZmLi44MjMyZTFiNzczOTNlNzYxNTI0MTJhZDc5NTNkMTRiZmE3ZWQzMzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaApAQCAtNjUsOSArNjUsNiBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGlu
Z05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4
KSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JS
ZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIG92ZXJyaWRlOwotICAgIHZvaWQgcmVt
b3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6RGVmZXJSZWFzb24pIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdD
b29yZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggN2JmZDgxMWJlODBhMTdjNmE2NzQzN2EwZTBkNDU3
MzM1ZjNiMzYxOC4uMDg4MDMyYTRjNDhiZDBlMTdjZDFhNDg4ZDVjNWI4NTU0NTk1OTQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTQ3LDYgKzQ3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVk
U2Nyb2xsaW5nSW5kaWNhdG9yKCk7CisKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkgZmluYWw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5k
ZXggNDJmMjIwNDE4Y2ZhZjE2YTVhMTcyOGJjNDkyMDE0OGU5MWU1ZmUyOC4uYWNkODE3Y2IzMDRi
ZGE2MTgzMGJhODlkMDlkYTk4ZGI2YWZmZWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpA
QCAtMTM2LDYgKzEzNiwxNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp1cGRhdGVU
aWxlZFNjcm9sbGluZ0luZGljYXRvcigpCiAgICAgdGlsZWRCYWNraW5nLT5zZXRTY3JvbGxpbmdN
b2RlSW5kaWNhdGlvbihpbmRpY2F0b3JNb2RlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvck1hYzo6c3RhcnRNb25pdG9yaW5nV2hlZWxFdmVudHMoKQoreworICAgIGF1dG8gbW9uaXRv
ciA9IG1fcGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CisgICAgc2Nyb2xsaW5nVHJlZSgp
LT5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoV1RGTW92ZShtb25pdG9yKSk7Cit9CisKK3ZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnN0b3BNb25pdG9yaW5nV2hlZWxFdmVudHMoKQorewor
ICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKG51bGxwdHIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5oCmluZGV4IDgwMTRkOWE2
MmRkNmQ5YmRlMjE4ZjMyMmQxZmRiZTUxMmE3OWVlZTUuLjhkZGE5OTFmZjNlMzk5MTAyNDBjMGIx
OGQzMzQxMDM2NDQ0ZjE2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuaApAQCAtMzEsNiArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKKwogY2xhc3MgU2Ny
b2xsaW5nVHJlZU1hYyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRlZFNjcm9sbGluZ1RyZWUgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZU1hYz4gY3JlYXRlKEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3ImKTsKQEAgLTQyLDExICs0NCwyMCBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBzY3JvbGxpbmdOb2RlRm9yUG9pbnQoRmxvYXRQb2ludCkg
ZmluYWw7CiAKKyAgICB2b2lkIHNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxF
dmVudFRlc3RNb25pdG9yPiYmKSBmaW5hbDsKKworICAgIHZvaWQgcmVjZWl2ZWRXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOworCisgICAgdm9pZCBkZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZv
clJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgZmluYWw7CisKICAgICB2b2lkIGxv
Y2tMYXllcnNGb3JIaXRUZXN0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB1bmxvY2tMYXllcnNGb3JI
aXRUZXN0aW5nKCkgZmluYWw7CiAKICAgICAvLyBUaGlzIGxvY2sgcHJvdGVjdHMgdGhlIENBTGF5
ZXIvUGxhdGZvcm1DQUxheWVyIHRyZWUuCiAgICAgTG9jayBtX2xheWVySGl0VGVzdE11dGV4Owor
ICAgIAorICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IG1fd2hlZWxFdmVudFRlc3RN
b25pdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQppbmRleCAyYjhl
MzVmOTgwZWZjNGIwMDgzY2IyMjFjYTk4ZWU3ZWU1ZTcxNzgyLi5lMmNhNDVjN2NmZDgyMmVjM2Ez
MjAxOTA5OTIwOGVlMzliZmY0MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVNYWMuaCIKIAorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuaCIKQEAgLTM1LDYgKzM2LDggQEAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgogI2lu
Y2x1ZGUgIldlYkxheWVyLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgJiYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAKQEAgLTE4OCw0ICsxOTEsMzYgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlTWFjOjp1bmxvY2tMYXllcnNGb3JIaXRUZXN0aW5nKCkKICAgICBt
X2xheWVySGl0VGVzdE11dGV4LnVubG9jaygpOwogfQogCit2b2lkIFNjcm9sbGluZ1RyZWVNYWM6
OnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiYm
IG1vbml0b3IpCit7CisgICAgbV93aGVlbEV2ZW50VGVzdE1vbml0b3IgPSBXVEZNb3ZlKG1vbml0
b3IpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVNYWM6OnJlY2VpdmVkV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQoreworICAgIGF1dG8gbW9uaXRvciA9IG1fd2hl
ZWxFdmVudFRlc3RNb25pdG9yOworICAgIGlmIChtb25pdG9yKQorICAgICAgICBtb25pdG9yLT5y
ZWNlaXZlZFdoZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVNYWM6OmRl
ZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQoreworICAgIGF1dG8gbW9uaXRvciA9IG1fd2hlZWxF
dmVudFRlc3RNb25pdG9yOworICAgIGlmICghbW9uaXRvcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgICAg
KCEpIFNjcm9sbGluZ1RyZWVNYWM6OmRlZmVyRm9yUmVhc29uOiBEZWZlcnJpbmcgb24gIiA8PCBp
ZGVudGlmaWVyIDw8ICIgZm9yIHJlYXNvbiAiIDw8IHJlYXNvbik7CisgICAgbW9uaXRvci0+ZGVm
ZXJGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
TWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikKK3sKKyAgICBhdXRvIG1v
bml0b3IgPSBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKKyAgICBpZiAoIW1vbml0b3IpCisgICAg
ICAgIHJldHVybjsKKworICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3Is
IHN0cmVhbSA8PCAiICAgICghKSBTY3JvbGxpbmdUcmVlTWFjOjpyZW1vdmVEZWZlcnJhbEZvclJl
YXNvbjogUmVtb3ZpbmcgZGVmZXJyYWwgb24gIiA8PCBpZGVudGlmaWVyIDw8ICIgZm9yIHJlYXNv
biAiIDw8IHJlYXNvbik7CisgICAgbW9uaXRvci0+cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24oaWRl
bnRpZmllciwgcmVhc29uKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCA4ZDQ4ZTZkNDQ4MzY4NmNhMjk4MzkxY2QwMDNk
YTIxY2JmYWRlZGY3Li5jNWU5ZTc2OWY3MGY0NGI5ZGRhOGY1MjJjOTAwNjEyOTEzY2EyOTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAt
MzA3LDcgKzMwNyw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzCiAgICAgaWYgKCFzY3JvbGxp
bmdUcmVlKCkuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8IGlzTWFp
blRocmVhZCgpIDw8ICIgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRl
ZmVyRm9yUmVhc29uOiBTVEFSVElORyBkZWZlcnJhbCBmb3IgIiA8PCBpZGVudGlmaWVyIDw8ICIg
YmVjYXVzZSBvZiAiIDw8IHJlYXNvbik7CiAgICAgc2Nyb2xsaW5nVHJlZSgpLmRlZmVyV2hlZWxF
dmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CiB9CiAgICAg
CkBAIC0zMTYsNyArMzE1LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnIKICAgICBpZiAoIXNj
cm9sbGluZ1RyZWUoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFt
IDw8IGlzTWFpblRocmVhZCgpIDw8ICIgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmRlZmVyRm9yUmVhc29uOiBFTkRJTkcgZGVmZXJyYWwgZm9yICIgPDwgaWRlbnRpZmll
ciA8PCAiIGJlY2F1c2Ugb2YgIiA8PCByZWFzb24pOwogICAgIHNjcm9sbGluZ1RyZWUoKS5yZW1v
dmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCBy
ZWFzb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNv
cmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5jcHAKaW5kZXggMWI1Zjg5NWFjNDdjYjY4NWI4ZWUyNzVkY2I4MGVhMzcyOTA1YzY2
ZC4uNzJkM2ZjYTg1MGY0MzQ2NzlkMWFiMWNhZWMxM2FhZDg3NzZiYTVhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIG1vbml0b3JXaGVlbEV2ZW50cyhXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCiAg
ICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkuY2xlYXJBbGxUZXN0RGVmZXJy
YWxzKCk7CiB9CiAKLXZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1l
cihXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBqc0NhbGxiYWNrRnVuY3Rpb24pCit2b2lkIHNldFdoZWVsRXZlbnRNb25pdG9yVGVzdENhbGxi
YWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBl
eHBlY3RNb21lbnR1bUVuZCwgV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYganNDYWxsYmFja0Z1bmN0aW9uKQogewogICAgIFBhZ2UqIHBhZ2Ug
PSBmcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5pc01vbml0b3JpbmdXaGVl
bEV2ZW50cygpKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIHNldFRlc3RDYWxsYmFja0FuZFN0YXJ0
Tm90aWZpY2F0aW9uVGltZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBKU0NvbnRleHRSZQogCiAg
ICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICAgICAKLSAg
ICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKS5zZXRUZXN0Q2FsbGJhY2tBbmRT
dGFydE5vdGlmaWNhdGlvblRpbWVyKFs9XSh2b2lkKSB7CisgICAgcGFnZS0+ZW5zdXJlV2hlZWxF
dmVudFRlc3RNb25pdG9yKCkuc2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGV4cGVj
dFdoZWVsRW5kT3JDYW5jZWwsIGV4cGVjdE1vbWVudHVtRW5kLCBbPV0odm9pZCkgewogICAgICAg
ICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGpzQ2FsbGJhY2tGdW5jdGlvbiwgbnVs
bHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoY29u
dGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCmluZGV4IDc5YWVmZWY0NTFhMDg2MWFlNDdi
YzIwYmFhY2JlM2M4MmYzZGUwMDUuLjJjMzYxNjMwZGQ0NGNmOWY0OTYyZTc5OTliZDJkNmQxNTE5
OGVhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIHZv
aWQgaW5qZWN0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZikgVEVTVF9TVVBQT1JUX0VYUE9S
VDsKIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwogdm9pZCBtb25pdG9yV2hlZWxFdmVudHMoV2ViQ29yZTo6RnJhbWUmKSBURVNUX1NV
UFBPUlRfRVhQT1JUOwotdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRp
bWVyKFdlYkNvcmU6OkZyYW1lJiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikgVEVTVF9TVVBQ
T1JUX0VYUE9SVDsKK3ZvaWQgc2V0V2hlZWxFdmVudE1vbml0b3JUZXN0Q2FsbGJhY2tBbmRTdGFy
dE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVu
dHVtRW5kLCBXZWJDb3JlOjpGcmFtZSYsIEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYpIFRFU1Rf
U1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKFdlYkNvcmU6
OkZyYW1lJikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAogdm9pZCBzZXRMb2dDaGFubmVsVG9BY2N1
bXVsYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKSBURVNUX1NVUFBPUlRfRVhQT1JUOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA1ZDgwNTk3NzlkZDE2Zjk3ZWMyYTJiZDY5NmFh
ZjQ1YTg0YjUxMmZlLi5hZTY4NzZlNWQ5ZGFmM2I4NzUxMjFkMmFkZTMzNGJjMzJmZWFjYzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgV0tC
dW5kbGVQYWdlU3RhcnRNb25pdG9yaW5nU2Nyb2xsT3BlcmF0aW9ucyhXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZikKICAgICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKS5jbGVhckFs
bFRlc3REZWZlcnJhbHMoKTsKIH0KIAotYm9vbCBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9w
ZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5k
bGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQor
Ym9vbCBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFj
ayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNh
bGxiYWNrIGNhbGxiYWNrLCBib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhwZWN0
TW9tZW50dW1FbmQsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjYWxsYmFjaykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIGJvb2wgV0tCdW5kbGVQYWdlUmVn
aXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSCiAgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRl
c3RNb25pdG9yKCkuc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihbPV0o
KSB7CisgICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkuc2V0VGVzdENhbGxi
YWNrQW5kU3RhcnRNb25pdG9yaW5nKGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGV4cGVjdE1vbWVu
dHVtRW5kLCBbPV0oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IDI4M2MxMTRkMDViNzQx
ZjJjNjg1MmNiOTJjNWM3ZGE2ZmNlZWVhMTAuLjRmODNiOGVmMGM4MDJiY2MxYjNkN2JjZjk0MmNl
YWVhMTQ3ZWFhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTEyMSw3ICsxMjEsNyBA
QCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlQ29weUdyb3VwSWRlbnRpZmllcihX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVRlc3RO
b3RpZmljYXRpb25DYWxsYmFjaykodm9pZCogY29udGV4dCk7CiAvLyBSZXR1cm5zIHRydWUgIGlm
IHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCwgZWxzZSBmYWxzZS4KLVdLX0VY
UE9SVCBib29sIFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNh
bGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxi
YWNrLCB2b2lkKiBjb250ZXh0KTsKK1dLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZVJlZ2lzdGVy
U2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrLCBib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5j
ZWwsIGJvb2wgZXhwZWN0TW9tZW50dW1FbmQsIHZvaWQqIGNvbnRleHQpOwogCiAvLyBDYWxsIHRo
ZSBnaXZlbiBjYWxsYmFjayBhZnRlciBib3RoIGEgcG9zdFRhc2soKSBvbiB0aGUgcGFnZSdzIGRv
Y3VtZW50J3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYW5kIGEgemVyby1kZWxheSB0aW1lci4K
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNhbGxBZnRlclRhc2tzQW5kVGltZXJzKFdLQnVu
ZGxlUGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrLCB2b2lkKiBj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1OWQ0ODc4NWI1OTYwZDg0YmRiNzUxZjNmZDE4YTk2OWYwYWRlOTcyLi4yYWVmNWUwMDEy
YWY2MjQ0ZTIyNDllMzUwNDNlOWYwMmI5YjIwNDhjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMTggIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCkgaXMgdmVyeSBmcmFnaWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MTkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzUxMzE5NDU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgRGVmbGFrZSB0ZXN0cyB1c2luZyBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KSBieSBmaXhpbmcgc2V2ZXJhbCBjYXVzZXMgb2YgZmxha2luZXNzLAorICAgICAgICBhZGRpbmcg
YmFjayBjaGFuZ2VzIGZyb20gcjI1Nzg0NCB0aGF0IHdlcmUgcmV2ZXJ0ZWQgaW4gcjI1ODU1OC4K
KyAgICAgICAgCisgICAgICAgIEZpcnN0LCBoYXZlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIga2Vl
cCB0cmFjayBvZiB3aGV0aGVyIGl0J3Mgc2VlbiB0aGVuICJlbmQiIGV2ZW50CisgICAgICAgIGZv
ciB0aGUgc2Nyb2xsaW5nIGFuZCBtb21lbnR1bSBwaGFzZXMsIGFuZCBwYXNzIHRoaXMgZG93biB0
byBXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHdoaWNoCisgICAgICAgIG5vdyB3YWl0cyB1bnRpbCBp
dCBzZWVzIHRoZXNlLCB3aGljaCBwcmV2ZW50cyBwcmVtYXR1cmUgdHJpZ2dlcmluZyB3aGljaCB3
YXMgYSBjb21tb24gY2F1c2Ugb2YKKyAgICAgICAgZmFpbHVyZSBiZWZvcmUuCisgICAgICAgIAor
ICAgICAgICBTZWNvbmQsIHJlbW92ZSBXaGVlbEV2ZW50VGVzdE1vbml0b3IncyAxLzYwcyB0aW1l
ciBhbmQgaW5zdGVhZCBoYXZlIFdoZWVsRXZlbnRUZXN0TW9uaXRvciB0ZXN0CisgICAgICAgIGZv
ciBjb21wbGV0aW9uIGluIGEgY2FsbG91dCBmcm9tIHRoZSBlbmQgb2YgUGFnZTo6dXBkYXRlUmVu
ZGVyaW5nKCksIHdoaWNoIG1ha2VzIGl0IHRlc3QKKyAgICAgICAgYW5kIGZpcmUgYXQgYSBtb3Jl
IGNvbnNpc3RlbnQgdGltZS4KKyAgICAgICAgCisgICAgICAgIFRoaXJkLCBwdXNoIFdoZWVsRXZl
bnRUZXN0TW9uaXRvciB0byB0aGUgU2Nyb2xsaW5nVHJlZSwgc28gdGhhdCByZWFzb25zIGZvciBk
ZWZlcnJhbAorICAgICAgICBjYW4gYmUgYWRkZWQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuIFRo
aXMgZml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaCgpCisg
ICAgICAgIHVzZWQgdG8gc2VuZCB0aGUgIlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQiIHJlYXNv
biB0byB0aGUgbWFpbiB0aHJlYWQgd291bGQgZ2V0IGRlbGF5ZWQsCisgICAgICAgIGFsc28gcmVz
dWx0aW5nIGluIGEgcHJlbWF0dXJlIHRyaWdnZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdD
b250cm9sbGVyIG1vdXNlU2Nyb2xsQnlYOmFuZFk6d2l0aFdoZWVsOmFuZE1vbWVudHVtUGhhc2Vz
Ol0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIG1vbml0b3JXaGVlbEV2ZW50
c10pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIGNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlczpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIu
Y3BwOgorICAgICAgICAobW91c2VTY3JvbGxCeSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW9uaXRv
cldoZWVsRXZlbnRzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKwogMjAyMC0wMy0xNyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBX
S1VJRGVsZWdhdGVQcml2YXRlIFNQSSBfd2ViVmlldzpwcmludEZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmgKaW5kZXggODhlZTY2YTY4NjM5ZGI4YjhhMjVhMjY4YTAzMDE1OWE0ZmVmZDk3ZS4uOGEy
N2FlMGVjNDdiMDIyNzQzZDhhMWU1NWNiYWZmNzE5Y2UxYjZmMCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBAIC0zOCw2ICszOCwx
MCBAQCBAaW50ZXJmYWNlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgOiBOU09iamVjdCA8RE9NRXZl
bnRMaXN0ZW5lcj4KICAgICBOU1RpbWVJbnRlcnZhbCBsYXN0Q2xpY2s7CiAgICAgaW50IGV2ZW50
TnVtYmVyOwogICAgIGRvdWJsZSB0aW1lT2Zmc2V0OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBC
T09MIF9zZW50V2hlZWxQaGFzZUVuZE9yQ2FuY2VsOworICAgIEJPT0wgX3NlbnRNb21lbnR1bVBo
YXNlRW5kOworI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU011dGFibGVB
cnJheSogdG91Y2hlczsKICAgICB1bnNpZ25lZCBjdXJyZW50VG91Y2hJZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpp
bmRleCBmNzYwNDlmZjc1YjZlMzc0YjdmNGQ3NGQwZTM5ZjY4MjUyNmIwZmZhLi5kYzkyODc4MTdh
ZTJhZTM5ZTc2YjU2YmZjNmM2M2FlMTFjNWQ0Mjk1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtODUyLDI5ICs4NTIsMzcg
QEAgLSAodm9pZCltb3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkKIC0gKHZvaWQpbW91
c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IHdpdGhXaGVlbDooTlNTdHJpbmcqKXBoYXNl
TmFtZSBhbmRNb21lbnR1bVBoYXNlczooTlNTdHJpbmcqKW1vbWVudHVtTmFtZQogewogI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBbW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxh
eW91dF07CisKICAgICB1aW50MzJfdCBwaGFzZSA9IDA7CiAgICAgaWYgKFtwaGFzZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBAIm5vbmUiXSkKICAgICAgICAgcGhhc2UgPSAwOwogICAgIGVsc2UgaWYg
KFtwaGFzZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAImJlZ2FuIl0pCi0gICAgICAgIHBoYXNlID0g
MTsgLy8ga0NHU2Nyb2xsUGhhc2VCZWdhbgorICAgICAgICBwaGFzZSA9IGtDR1Njcm9sbFBoYXNl
QmVnYW47CiAgICAgZWxzZSBpZiAoW3BoYXNlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiY2hhbmdl
ZCJdKQotICAgICAgICBwaGFzZSA9IDI7IC8vIGtDR1Njcm9sbFBoYXNlQ2hhbmdlZDsKKyAgICAg
ICAgcGhhc2UgPSBrQ0dTY3JvbGxQaGFzZUNoYW5nZWQ7CiAgICAgZWxzZSBpZiAoW3BoYXNlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IEAiZW5kZWQiXSkKLSAgICAgICAgcGhhc2UgPSA0OyAvLyBrQ0dT
Y3JvbGxQaGFzZUVuZGVkCisgICAgICAgIHBoYXNlID0ga0NHU2Nyb2xsUGhhc2VFbmRlZDsKICAg
ICBlbHNlIGlmIChbcGhhc2VOYW1lIGlzRXF1YWxUb1N0cmluZzogQCJjYW5jZWxsZWQiXSkKLSAg
ICAgICAgcGhhc2UgPSA4OyAvLyBrQ0dTY3JvbGxQaGFzZUNhbmNlbGxlZAorICAgICAgICBwaGFz
ZSA9IGtDR1Njcm9sbFBoYXNlQ2FuY2VsbGVkOwogICAgIGVsc2UgaWYgKFtwaGFzZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBAIm1heWJlZ2luIl0pCi0gICAgICAgIHBoYXNlID0gMTI4OyAvLyBrQ0dT
Y3JvbGxQaGFzZU1heUJlZ2luCisgICAgICAgIHBoYXNlID0ga0NHU2Nyb2xsUGhhc2VNYXlCZWdp
bjsKIAogICAgIHVpbnQzMl90IG1vbWVudHVtID0gMDsKICAgICBpZiAoW21vbWVudHVtTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IEAibm9uZSJdKQotICAgICAgICBtb21lbnR1bSA9IDA7IC8va0NHTW9t
ZW50dW1TY3JvbGxQaGFzZU5vbmU7CisgICAgICAgIG1vbWVudHVtID0ga0NHTW9tZW50dW1TY3Jv
bGxQaGFzZU5vbmU7CiAgICAgZWxzZSBpZiAoW21vbWVudHVtTmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJiZWdpbiJdKQotICAgICAgICBtb21lbnR1bSA9IDE7IC8vIGtDR01vbWVudHVtU2Nyb2xsUGhh
c2VCZWdpbjsKKyAgICAgICAgbW9tZW50dW0gPSBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlQmVnaW47
CiAgICAgZWxzZSBpZiAoW21vbWVudHVtTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJjb250aW51ZSJd
KQotICAgICAgICBtb21lbnR1bSA9IDI7IC8vIGtDR01vbWVudHVtU2Nyb2xsUGhhc2VDb250aW51
ZTsKKyAgICAgICAgbW9tZW50dW0gPSBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlQ29udGludWU7CiAg
ICAgZWxzZSBpZiAoW21vbWVudHVtTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkKLSAgICAg
ICAgbW9tZW50dW0gPSAzOyAvLyBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlRW5kOworICAgICAgICBt
b21lbnR1bSA9IGtDR01vbWVudHVtU2Nyb2xsUGhhc2VFbmQ7CisKKyAgICBpZiAocGhhc2UgPT0g
a0NHU2Nyb2xsUGhhc2VFbmRlZCB8fCBwaGFzZSA9PSBrQ0dTY3JvbGxQaGFzZUNhbmNlbGxlZCkK
KyAgICAgICAgX3NlbnRXaGVlbFBoYXNlRW5kT3JDYW5jZWwgPSBZRVM7CisKKyAgICBpZiAobW9t
ZW50dW0gPT0ga0NHTW9tZW50dW1TY3JvbGxQaGFzZUVuZCkKKyAgICAgICAgX3NlbnRNb21lbnR1
bVBoYXNlRW5kID0gWUVTOwogCiAgICAgQ0dFdmVudFJlZiBjZ1Njcm9sbEV2ZW50ID0gQ0dFdmVu
dENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQoTlVMTCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwg
eSwgeCk7CiAKQEAgLTEzODcsNiArMTM5NSw4IEBAIC0gKHZvaWQpbW9uaXRvcldoZWVsRXZlbnRz
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgX3NlbnRXaGVlbFBoYXNl
RW5kT3JDYW5jZWwgPSBOTzsKKyAgICBfc2VudE1vbWVudHVtUGhhc2VFbmQgPSBOTzsKICAgICBX
ZWJDb3JlVGVzdFN1cHBvcnQ6Om1vbml0b3JXaGVlbEV2ZW50cygqZnJhbWUpOwogI2VuZGlmCiB9
CkBAIC0xNDAzLDcgKzE0MTMsNyBAQCAtICh2b2lkKWNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
czooV2ViU2NyaXB0T2JqZWN0KiljYWxsYmFjawogICAgICAgICByZXR1cm47CiAKICAgICBKU0ds
b2JhbENvbnRleHRSZWYgZ2xvYmFsQ29udGV4dCA9IFttYWluRnJhbWUgZ2xvYmFsQ29udGV4dF07
Ci0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNh
dGlvblRpbWVyKCpmcmFtZSwgZ2xvYmFsQ29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKKyAg
ICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldFdoZWVsRXZlbnRNb25pdG9yVGVzdENhbGxiYWNrQW5k
U3RhcnRNb25pdG9yaW5nKF9zZW50V2hlZWxQaGFzZUVuZE9yQ2FuY2VsLCBfc2VudE1vbWVudHVt
UGhhc2VFbmQsICpmcmFtZSwgZ2xvYmFsQ29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5k
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2VuZGVyLmNwcAppbmRleCA3
MmIwZDU5ZDYwYTFhNjM0N2M3Y2VjODI1MDdkOWI2OWQ0OTM5YmVlLi5hMjczNDkxNjA2NWE5MGQ0
ZWVmM2U2MTU2NTIxZGUzNzEzOTljNzk0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVu
dFNlbmRlci5jcHAKQEAgLTgzMiw2ICs4MzIsMTAgQEAgdm9pZCBtb3VzZVNjcm9sbEJ5KGRvdWJs
ZSB4LCBkb3VibGUgeSwgYm9vbCBjb250aW51b3VzKQogICAgIFJFQ1QgcmVjdDsKICAgICA6Okdl
dFdpbmRvd1JlY3Qod2ViVmlld1dpbmRvdywgJnJlY3QpOwogCisgICAgQ09NUHRyPElXZWJGcmFt
ZVByaXZhdGU+IGZyYW1lUHJpdmF0ZTsKKyAgICBpZiAoU1VDQ0VFREVEKGZyYW1lLT5RdWVyeUlu
dGVyZmFjZSgmZnJhbWVQcml2YXRlKSkpCisgICAgICAgIGZyYW1lUHJpdmF0ZS0+bGF5b3V0KCk7
CisKICAgICBpZiAoeCkgewogICAgICAgICBVSU5UIHNjcm9sbENoYXJzID0gMTsKICAgICAgICAg
OjpTeXN0ZW1QYXJhbWV0ZXJzSW5mbyhTUElfR0VUV0hFRUxTQ1JPTExDSEFSUywgMCwgJnNjcm9s
bENoYXJzLCAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGM5YTUyYzE1
Zjc3MDgzMDY4M2M4ZWZmNjg5NDI5YmQwYmMxZjU2NDUuLjBjMWYwNjczMzdiZjc5OWMzMTM3OTY5
Mjk0OWM0ZWU4NTM2ZjZlNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAt
NDkyLDYgKzQ5MiwxMiBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhpbnQgeCwgaW50CiAKICAgICB1aW50NjRfdCBw
aGFzZSA9IGNnRXZlbnRQaGFzZUZyb21TdHJpbmcocGhhc2VTdHIpOwogICAgIHVpbnQ2NF90IG1v
bWVudHVtID0gY2dFdmVudE1vbWVudHVtUGhhc2VGcm9tU3RyaW5nKG1vbWVudHVtU3RyKTsKKyAg
ICAKKyAgICBpZiAocGhhc2UgPT0gNCAvKiBrQ0dTY3JvbGxQaGFzZUVuZGVkICovIHx8IHBoYXNl
ID09IDggLyoga0NHU2Nyb2xsUGhhc2VDYW5jZWxsZWQgKi8pCisgICAgICAgIG1fc2VudFdoZWVs
UGhhc2VFbmRPckNhbmNlbCA9IHRydWU7CisgICAgCisgICAgaWYgKG1vbWVudHVtID09IDMgLyog
a0NHTW9tZW50dW1TY3JvbGxQaGFzZUVuZCAqLykKKyAgICAgICAgbV9zZW50V2hlZWxNb21lbnR1
bVBoYXNlRW5kID0gdHJ1ZTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwaGFzZUtl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBoYXNlIikpOwogICAg
IFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBwaGFzZVJlZiA9IGFkb3B0V0soV0tVSW50NjRDcmVh
dGUocGhhc2UpKTsKQEAgLTYwOCw2ICs2MTQsOCBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6Om1vbml0b3JXaGVlbEV2ZW50cygpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CiAgICAgCisgICAgbV9z
ZW50V2hlZWxQaGFzZUVuZE9yQ2FuY2VsID0gZmFsc2U7CisgICAgbV9zZW50V2hlZWxNb21lbnR1
bVBoYXNlRW5kID0gZmFsc2U7CiAgICAgV0tCdW5kbGVQYWdlU3RhcnRNb25pdG9yaW5nU2Nyb2xs
T3BlcmF0aW9ucyhwYWdlKTsKIH0KIApAQCAtNjUwLDcgKzY1OCw3IEBAIHZvaWQgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVu
Y3Rpb25DYWxsCiAKICAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBtYWtl
VW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2Fs
bGJhY2tPYmplY3QpOwogICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9
IHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVsZWFzZSgpOwotICAgIGJvb2wgY2FsbGJh
Y2tXaWxsQmVDYWxsZWQgPSBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBs
ZXRpb25DYWxsYmFjayhwYWdlLCBleGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxs
YmFja0RhdGFQdHIpOworICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBXS0J1bmRsZVBh
Z2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdlLCBleGVjdXRl
Q2FsbGJhY2ssIG1fc2VudFdoZWVsUGhhc2VFbmRPckNhbmNlbCwgbV9zZW50V2hlZWxNb21lbnR1
bVBoYXNlRW5kLCBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyKTsKICAgICBpZiAoIWNh
bGxiYWNrV2lsbEJlQ2FsbGVkKSB7CiAgICAgICAgIC8vIFJlYXNzaWduIHJhdyBwb2ludGVyIHRv
IHN0ZDo6dW5pcXVlX3B0cjw+IHNvIGl0IHdpbGwgbm90IGJlIGxlYWtlZC4KICAgICAgICAgc2Ny
b2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZXNldChzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tE
YXRhUHRyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKaW5kZXggMjI1NGIzNDE4Mzc4MTk4
MDI0NDAwZmZiNzlkYzZlYmZhMzk1NWMzZi4uNTIzMjZhYzg1MDgyZDBjMmRlOWFiZTk1NWYyNjE4
NTBlYzg5ODMwNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKQEAgLTg3LDYgKzg3LDgg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyKCk7CiAgICAg
V0tQb2ludCBtX3Bvc2l0aW9uOworICAgIGJvb2wgbV9zZW50V2hlZWxQaGFzZUVuZE9yQ2FuY2Vs
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2VudFdoZWVsTW9tZW50dW1QaGFzZUVuZCB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2OTBkMTU5M2E3NWJmYTk1YWYy
NDYzYzhjZTVjNmVjNjA3MThmNzQ1Li5hYWNhYTE2ZGRiZmIzNjZmNjFhYmNlNDNlZTdiMWM5ZjM0
YjU5ZTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMtMTggIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCkgaXMgdmVyeSBmcmFnaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUxMzE5
NDU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJkLW92ZXJmbG93Lmh0bWw6IE5lZWQgdG8gY2Fs
bCBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKQorICAgICAgICBmb3IgZWFjaCBzdWJ0
ZXN0LgorCiAyMDIwLTAzLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKDI1Nzg0NCk6IGZhc3Qvc2Nyb2xsaW5nL3Njcm9sbC1j
b250YWluZXItaG9yaXpvbnRhbGx5Lmh0bWwgaXMgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA2Y2FhYTE0MzJhYTVjMjhh
NTk3ODk1MTJlYWY5MmY3M2Q3YzA1MDIuLjIzMjE2Yjg1MTZlM2VhNTJlYWUyMjVmZTEwYjU5ZmUx
YjE2NDM3ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTEwNTksOCArMTA1OSw2IEBAIHdlYmtpdC5vcmcvYi8yMDgwMTQgWyBEZWJ1ZyBd
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvbm8tc3VicHJvdG9jb2wuaHRtCiAKIHdl
YmtpdC5vcmcvYi8yMDgwNjIgaHR0cC93cHQvZmV0Y2gvZGlzYWJsZS1zcGVjdWxhdGl2ZS1mb3It
cmVsb2FkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjA4MTYwIGZhc3Qv
c2Nyb2xsaW5nL292ZXJmbG93LXNjcm9sbC1wYXN0LW1heC5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
LQogd2Via2l0Lm9yZy9iLzIwODIyMiBbIFJlbGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1pY2VDb25uZWN0aW9uU3RhdGUuaHR0
cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMDgzNDAgd2ViZ3B1L3do
bHNsL3RleHR1cmVzLXNhbXBsZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGQ2NmVjMjQyNDAyNjEy
NjI2OTFmNDY5YjJlMGZhYzBmZjZlOTU0Mi4uZTk0NWNlYzNjMDYwZDhkN2VmNWZjZmE5YTc5ZWIz
YTkxNTJlOGVlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTI3NSw2ICsyNzUsOCBAQCBmYXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0
aC1vdmVyZmxvdy1oaWRkZW4uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvd2hlZWxldmVu
dC1pbi1ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9l
dmVudHMvd2hlZWxldmVudC1pbi12ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwgWyBGYWls
dXJlIF0KIHNjcm9sbGJhcnMvc2Nyb2xsLXJ0bC1vci1idC1sYXllci5odG1sIFsgVGltZW91dCBd
Cit3ZWJraXQub3JnL2IvMjA4NTU5IGZhc3Qvc2Nyb2xsaW5nL2Fycm93LWtleS1zY3JvbGwtaW4t
cnRsLWRvY3VtZW50Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg1NTkgZmFzdC9zY3Jv
bGxpbmcvcHJvZ3JhbW1hdGljLXNjcm9sbC10by16ZXJvLXplcm8uaHRtbCBbIFNraXAgXQogCiAj
IFRPRE8gTmVlZHMgdGVzdFJ1bm5lci5lbmFibGVBdXRvUmVzaXplTW9kZSgpCiBmYXN0L2F1dG9y
ZXNpemUvIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZsb3cuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5odG1sCmluZGV4IGYyMmJmOTY2Y2U2ZTQzNWFk
ZWZkNzRjZjA0ZTlhN2I4MDkxMzYwN2MuLjY0MzY5ZTI5MzYyZTAyNmZmNzFkMjc3NGQ2NWE5YmRk
ZDVmZTcyYjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5odG1sCkBAIC01Niw2ICs1Niw4IEBACiAgICAgICAg
ICAgICAgICAgeDogZGl2VGFyZ2V0LnNjcm9sbExlZnQsCiAgICAgICAgICAgICAgICAgeTogZGl2
VGFyZ2V0LnNjcm9sbFRvcAogICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbygxMDAsIDEwMCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIDAsICJiZWdhbiIsICJub25lIik7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
LTEsIDAsICJjaGFuZ2VkIiwgIm5vbmUiKTsKQEAgLTg0LDYgKzg2LDcgQEAKICAgICAgICAgICAg
ICAgICB5OiBkaXZUYXJnZXQuc2Nyb2xsVG9wCiAgICAgICAgICAgICB9OwogCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKDEwMCwgMTAwKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygxLCAxLCAiYmVnYW4iLCAibm9uZSIp
OwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDEsIDEsICJjaGFuZ2VkIiwgIm5vbmUiKTsKQEAgLTEwOCw2ICsxMTEsNyBAQAog
ICAgICAgICAgICAgICAgIHk6IGRpdlRhcmdldC5zY3JvbGxUb3AKICAgICAgICAgICAgIH07CiAK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwogICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAwLCAxMDApOwogICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAtMSwgImJl
Z2FuIiwgIm5vbmUiKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygtMSwgLTEsICJjaGFuZ2VkIiwgIm5vbmUiKTsKQEAgLTEy
Miw3ICsxMjYsNiBAQAogCiAgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpIHsKICAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0UGxhdGZv
cm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KHNjcm9sbEdsaWRlVGVzdCwgMCk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393933</attachid>
            <date>2020-03-18 18:45:33 -0700</date>
            <delta_ts>2020-03-18 21:06:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197819-20200318184532.patch</filename>
            <type>text/plain</type>
            <size>60606</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4MjY0OTkxZWM4OTM2
NDY2OGUyNzdjZTA5MTZhZTIyN2MzZTgyZC4uMWI2NWJlNzRlN2FjNzkxMmNiMTdlYmRkMTk0ZWIz
ZTllN2ZmZDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTAzLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpIGlzIHZlcnkgZnJhZ2lsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODE5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81MTMxOTQ1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIERlZmxha2UgdGVzdHMgdXNpbmcgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCkg
YnkgZml4aW5nIHNldmVyYWwgY2F1c2VzIG9mIGZsYWtpbmVzcywKKyAgICAgICAgYWRkaW5nIGJh
Y2sgY2hhbmdlcyBmcm9tIHIyNTc4NDQgdGhhdCB3ZXJlIHJldmVydGVkIGluIHIyNTg1NTguCisg
ICAgICAgIAorICAgICAgICBGaXJzdCwgaGF2ZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIGtlZXAg
dHJhY2sgb2Ygd2hldGhlciBpdCdzIHNlZW4gdGhlbiAiZW5kIiBldmVudAorICAgICAgICBmb3Ig
dGhlIHNjcm9sbGluZyBhbmQgbW9tZW50dW0gcGhhc2VzLCBhbmQgcGFzcyB0aGlzIGRvd24gdG8g
V2hlZWxFdmVudFRlc3RNb25pdG9yLCB3aGljaAorICAgICAgICBub3cgd2FpdHMgdW50aWwgaXQg
c2VlcyB0aGVzZSwgd2hpY2ggcHJldmVudHMgcHJlbWF0dXJlIHRyaWdnZXJpbmcgd2hpY2ggd2Fz
IGEgY29tbW9uIGNhdXNlIG9mCisgICAgICAgIGZhaWx1cmUgYmVmb3JlLgorICAgICAgICAKKyAg
ICAgICAgU2Vjb25kLCByZW1vdmUgV2hlZWxFdmVudFRlc3RNb25pdG9yJ3MgMS82MHMgdGltZXIg
YW5kIGluc3RlYWQgaGF2ZSBXaGVlbEV2ZW50VGVzdE1vbml0b3IgdGVzdAorICAgICAgICBmb3Ig
Y29tcGxldGlvbiBpbiBhIGNhbGxvdXQgZnJvbSB0aGUgZW5kIG9mIFBhZ2U6OnVwZGF0ZVJlbmRl
cmluZygpLCB3aGljaCBtYWtlcyBpdCB0ZXN0CisgICAgICAgIGFuZCBmaXJlIGF0IGEgbW9yZSBj
b25zaXN0ZW50IHRpbWUuCisgICAgICAgIAorICAgICAgICBUaGlyZCwgcHVzaCBXaGVlbEV2ZW50
VGVzdE1vbml0b3IgdG8gdGhlIFNjcm9sbGluZ1RyZWUsIHNvIHRoYXQgcmVhc29ucyBmb3IgZGVm
ZXJyYWwKKyAgICAgICAgY2FuIGJlIGFkZGVkIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLiBUaGlz
IGZpeGVzIGFuIGlzc3VlIHdoZXJlIHRoZSBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goKQorICAg
ICAgICB1c2VkIHRvIHNlbmQgdGhlICJTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkIiByZWFzb24g
dG8gdGhlIG1haW4gdGhyZWFkIHdvdWxkIGdldCBkZWxheWVkLAorICAgICAgICBhbHNvIHJlc3Vs
dGluZyBpbiBhIHByZW1hdHVyZSB0cmlnZ2VyLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uY3BwOiBVbmlmaWVkIHNvdXJjZXMhCisgICAgICAgICogZG9tL1dp
bmRvd0V2ZW50TG9vcC5jcHA6IFVuaWZpZWQgc291cmNlcyEKKyAgICAgICAgKiBwYWdlL0V2ZW50
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVs
RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6c2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbCk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRvQWZ0ZXJV
cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6d2hlZWxFdmVudFRlc3RN
b25pdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNsZWFyV2hlZWxFdmVudFRl
c3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzTW9uaXRvcmluZ1doZWVsRXZl
bnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVuc3VyZVdoZWVsRXZlbnRUZXN0
TW9uaXRvcik6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojp3aGVlbEV2ZW50VGVzdE1vbml0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6Y2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aXNNb25pdG9yaW5nV2hlZWxFdmVudHMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6V2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxi
YWNrQW5kU3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6ZGVmZXJGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRl
c3RNb25pdG9yOjpyZW1vdmVEZWZlcnJhbEZvclJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNjaGVkdWxlQ2FsbGJhY2tDaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmlyZUNhbGxi
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6
OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRp
b25UaW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9XaGVl
bEV2ZW50VGVzdE1vbml0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9u
aXRvckNvbXBsZXRpb25EZWZlcnJlcjo6V2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRl
ZmVycmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRp
b25EZWZlcnJlcjo6fldoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZlcnJlcik6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlv
dXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlbW92ZVdoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdGFydE1vbml0b3JpbmdXaGVlbEV2ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c3RvcE1vbml0b3JpbmdX
aGVlbEV2ZW50cyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlOjpzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZTo6cmVjZWl2ZWRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmRlZmVyV2hlZWxFdmVudFRlc3RD
b21wbGV0aW9uRm9yUmVhc29uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZTo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JS
ZWFzb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xs
aW5nVHJlZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpz
dGFydE1vbml0b3JpbmdXaGVlbEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvck1hYzo6c3RvcE1vbml0b3JpbmdXaGVlbEV2ZW50cyk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVNYWM6
OnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChTY3JvbGxpbmdUcmVlTWFjOjpy
ZWNlaXZlZFdoZWVsRXZlbnQpOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1hYzo6ZGVmZXJXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24pOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1h
Yzo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24pOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24gY29uc3Qp
OgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0V2hlZWxFdmVudE1vbml0b3JUZXN0Q2FsbGJhY2tBbmRT
dGFydE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRUZXN0Q2Fs
bGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oOgorCiAyMDIwLTAzLTE3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjU0
ODU2KSBBZGQgZXhjZXB0aW9uIGZvciB3aW5kb3cub3BlbkRhdGFiYXNlIHRvIG5vdCBtYXNxdWVy
YWRlIGFzIHVuZGVmaW5lZCBpbiBjdXJyZW50bHkgc2hpcHBpbmcgSmVzdXMgQ2FsbGluZyBEZXZv
dGlvbmFsIGFwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNWUzOWYyNzY2NDlhYzNmMGI5YzllZDkzNWJkNzhjYzlk
ZDA3ZTY4Li5mNDVlMWUzYTFhM2ExYjU5ZTZmMWYyZDAzMGZhZGVmMWQ0MDZiZDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAzLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
IGlzIHZlcnkgZnJhZ2lsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk3ODE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTMxOTQ1Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIERlZmxha2UgdGVzdHMgdXNp
bmcgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCkgYnkgZml4aW5nIHNldmVyYWwgY2F1
c2VzIG9mIGZsYWtpbmVzcywKKyAgICAgICAgYWRkaW5nIGJhY2sgY2hhbmdlcyBmcm9tIHIyNTc4
NDQgdGhhdCB3ZXJlIHJldmVydGVkIGluIHIyNTg1NTguCisgICAgICAgIAorICAgICAgICBGaXJz
dCwgaGF2ZSBFdmVudFNlbmRpbmdDb250cm9sbGVyIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBpdCdz
IHNlZW4gdGhlbiAiZW5kIiBldmVudAorICAgICAgICBmb3IgdGhlIHNjcm9sbGluZyBhbmQgbW9t
ZW50dW0gcGhhc2VzLCBhbmQgcGFzcyB0aGlzIGRvd24gdG8gV2hlZWxFdmVudFRlc3RNb25pdG9y
LCB3aGljaAorICAgICAgICBub3cgd2FpdHMgdW50aWwgaXQgc2VlcyB0aGVzZSwgd2hpY2ggcHJl
dmVudHMgcHJlbWF0dXJlIHRyaWdnZXJpbmcgd2hpY2ggd2FzIGEgY29tbW9uIGNhdXNlIG9mCisg
ICAgICAgIGZhaWx1cmUgYmVmb3JlLgorICAgICAgICAKKyAgICAgICAgU2Vjb25kLCByZW1vdmUg
V2hlZWxFdmVudFRlc3RNb25pdG9yJ3MgMS82MHMgdGltZXIgYW5kIGluc3RlYWQgaGF2ZSBXaGVl
bEV2ZW50VGVzdE1vbml0b3IgdGVzdAorICAgICAgICBmb3IgY29tcGxldGlvbiBpbiBhIGNhbGxv
dXQgZnJvbSB0aGUgZW5kIG9mIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpLCB3aGljaCBtYWtlcyBp
dCB0ZXN0CisgICAgICAgIGFuZCBmaXJlIGF0IGEgbW9yZSBjb25zaXN0ZW50IHRpbWUuCisgICAg
ICAgIAorICAgICAgICBUaGlyZCwgcHVzaCBXaGVlbEV2ZW50VGVzdE1vbml0b3IgdG8gdGhlIFNj
cm9sbGluZ1RyZWUsIHNvIHRoYXQgcmVhc29ucyBmb3IgZGVmZXJyYWwKKyAgICAgICAgY2FuIGJl
IGFkZGVkIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdoZXJl
IHRoZSBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goKQorICAgICAgICB1c2VkIHRvIHNlbmQgdGhl
ICJTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkIiByZWFzb24gdG8gdGhlIG1haW4gdGhyZWFkIHdv
dWxkIGdldCBkZWxheWVkLAorICAgICAgICBhbHNvIHJlc3VsdGluZyBpbiBhIHByZW1hdHVyZSB0
cmlnZ2VyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRp
b25Db21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisKIDIwMjAtMDMtMTcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggR1RLIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3Bw
CmluZGV4IDY0OTNmZTZiYTU5Y2M1YzFlZDUxODMyMWQzZWU2ZjE3ZDQ0ZjI4NTguLjRhM2Y3NWJl
ZmQ5ZjU4ZTQ2MWMxZjdjZDljN2FiZmI1ZWVhMzdiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTYzLDYgKzYzLDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvQXBwbGVQYXlTZXNzaW9uQWRkaXRpb25zLmNwcD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dp
bmRvd0V2ZW50TG9vcC5jcHAKaW5kZXggMzdlZmU5MDcyMmE0MTc1MGRmOGE4NGU5MTU4NjhhOWYy
MzVmYjBmMy4uZDkxODkwNzIyZDgyNjFlYWY4YmE0NTYwMWRlNGViNWE0NTViMzY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1dpbmRvd0V2ZW50TG9vcC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggZTkyY2UyY2Q0YTZhNmNiZWQyZjlhOTFkOWMyZmYyNGE4ZTBjNmZlNi4uZWRlMGI0YTAwOGFj
OTk5YzA0YTRjYzY4ZjdhZWQ5YWEyZGI2Y2VhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAj
aW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5o
IgorI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTI4MjUsNiArMjgyNiwxNCBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQog
ICAgIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTE9HX1dJVEhfU1RSRUFN
KFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICJFdmVudEhhbmRsZXI6OmhhbmRsZVdo
ZWVsRXZlbnQgb24gbWFpbiB0aHJlYWQsIHBoYXNlICIgPDwgZXZlbnQucGhhc2UoKSA8PCAiIG1v
bWVudHVtIHBoYXNlICIgPDwgZXZlbnQubW9tZW50dW1QaGFzZSgpKTsKKyAgICBpZiAoYXV0byBt
b25pdG9yID0gbV9mcmFtZS5wYWdlKCktPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKQorICAgICAg
ICBtb25pdG9yLT5yZWNlaXZlZFdoZWVsRXZlbnQoZXZlbnQpOworCisgICAgV2hlZWxFdmVudFRl
c3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIGRlZmVycmVyKG1fZnJhbWUucGFnZSgpLT53aGVl
bEV2ZW50VGVzdE1vbml0b3IoKS5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpE
ZWZlclJlYXNvbjo6SGFuZGxpbmdXaGVlbEV2ZW50T25NYWluVGhyZWFkKTsKKyNlbmRpZgorCiAg
ICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVudCA9IHRydWU7CiAgICAgc2V0RnJhbWVXYXNTY3JvbGxl
ZEJ5VXNlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMzczYjMxMWNjNTMw
ZjY0MTI3NTQzNGFkZTUyZjkwZmE5YWJiNjNlNy4uNTNmMTc5OGU4YzJjMTVkZmQ2ZjU5ZGVhZTZj
NjBmNTNmNjNiNDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjQ0NSw2ICsy
NDQ1LDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKQogCiB2b2lk
IEZyYW1lVmlldzo6c2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25z
dCBTY3JvbGxPZmZzZXQmIG9sZE9mZnNldCwgY29uc3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQp
CiB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxl
dGlvbkRlZmVycmVyIGRlZmVycmVyKGZyYW1lKCkucGFnZSgpLT53aGVlbEV2ZW50VGVzdE1vbml0
b3IoKS5nZXQoKSwgdGhpcywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbjo6Q29u
dGVudFNjcm9sbEluUHJvZ3Jlc3MpOworI2VuZGlmCisKICAgICB1cGRhdGVMYXllclBvc2l0aW9u
c0FmdGVyU2Nyb2xsaW5nKCk7CiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9s
bGluZygpOwogICAgIHJlcGFpbnRTbG93UmVwYWludE9iamVjdHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDgzMTBkMzMyY2NiNzEyNGViOGYxYWMwYjdlZjE4NTE4OTUwN2RhY2YuLjFkZjk4NTdl
N2YxNDFjZGYwNTFlMjk0ZDEzODZlZjg0ZTM5ZTEyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MTMwLDYgKzEzMCw3IEBACiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdG9yZS5oIgogI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnREZWx0YUZpbHRlci5oIgorI2lu
Y2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oPgpAQCAtMTM5MCw2ICsxMzkxLDkgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKCkKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCk7CiAj
ZW5kaWYKIAorICAgIGlmIChVTkxJS0VMWShpc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSkKKyAg
ICAgICAgd2hlZWxFdmVudFRlc3RNb25pdG9yKCktPmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcygp
OworCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1haW5GcmFt
ZSgpLnRyZWUoKS5maXJzdFJlbmRlcmVkQ2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS50cmF2ZXJzZU5leHRSZW5kZXJlZCgpKSB7CiAgICAgICAgIGF1dG8qIGZyYW1lVmlldyA9
IGNoaWxkLT52aWV3KCk7CkBAIC0yNjIxLDE0ICsyNjI1LDM0IEBAIHZvaWQgUGFnZTo6cGxheWJh
Y2tUYXJnZXRQaWNrZXJXYXNEaXNtaXNzZWQodWludDY0X3QgY2xpZW50SWQpCiAKICNlbmRpZgog
CitSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBQYWdlOjp3aGVlbEV2ZW50VGVzdE1vbml0
b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKK30KKwor
dm9pZCBQYWdlOjpjbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpCit7CisgICAgaWYgKG1fc2Ny
b2xsaW5nQ29vcmRpbmF0b3IpCisgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnN0b3BN
b25pdG9yaW5nV2hlZWxFdmVudHMoKTsKKworICAgIG1fd2hlZWxFdmVudFRlc3RNb25pdG9yID0g
bnVsbHB0cjsKK30KKworYm9vbCBQYWdlOjppc01vbml0b3JpbmdXaGVlbEV2ZW50cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICEhbV93aGVlbEV2ZW50VGVzdE1vbml0b3I7Cit9CisKIFdoZWVsRXZl
bnRUZXN0TW9uaXRvciYgUGFnZTo6ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkKIHsKICAg
ICBpZiAoIW1fd2hlZWxFdmVudFRlc3RNb25pdG9yKSB7Ci0gICAgICAgIG1fd2hlZWxFdmVudFRl
c3RNb25pdG9yID0gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKKyAgICAg
ICAgbV93aGVlbEV2ZW50VGVzdE1vbml0b3IgPSBhZG9wdFJlZihuZXcgV2hlZWxFdmVudFRlc3RN
b25pdG9yKCp0aGlzKSk7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxp
bmcgY29vcmRpbmF0b3Igc28gdGhhdCB0aGUgbWFpbmZyYW1lIHNjcm9sbGluZyBub2RlIGNhbiBl
eHBlY3Qgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2Vycy4KICAgICAgICAgaWYgKGF1dG8qIGZyYW1l
VmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKSkgewotICAgICAgICAgICAgaWYgKG1fc2Nyb2xsaW5n
Q29vcmRpbmF0b3IpCisgICAgICAgICAgICBpZiAobV9zY3JvbGxpbmdDb29yZGluYXRvcikgewor
ICAgICAgICAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnN0YXJ0TW9uaXRvcmluZ1do
ZWVsRXZlbnRzKCk7CiAgICAgICAgICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvci0+dXBk
YXRlSXNNb25pdG9yaW5nV2hlZWxFdmVudHNGb3JGcmFtZVZpZXcoKmZyYW1lVmlldyk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZjJkMTAzODJj
OTQyNTUxYjljOGFjMDc2MWVlODBhNjhhNzg0YWZiNi4uODgzZjEwY2NkMDdiNzkyNTFjNTNiODgw
Y2ZiY2IzOTJlMWE4ODU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNs
dWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJWaXNpYmlsaXR5U3RhdGUuaCIKLSNpbmNsdWRlICJXaGVl
bEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xNDcsNiArMTQ2LDcg
QEAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CiBjbGFz
cyBXZWJHTFN0YXRlVHJhY2tlcjsKIGNsYXNzIFdoZWVsRXZlbnREZWx0YUZpbHRlcjsKK2NsYXNz
IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKIAogdXNpbmcgU2hhcmVkU3RyaW5nSGFzaCA9IHVpbnQz
Ml90OwogCkBAIC02NDksMTAgKzY0OSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwbGF5YmFja1RhcmdldFBpY2tlcldhc0Rpc21pc3NlZCh1aW50NjRfdCk7CiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IHdoZWVsRXZlbnRUZXN0TW9uaXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gd2hlZWxFdmVudFRlc3RNb25p
dG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgV2hlZWxFdmVudFRlc3RNb25pdG9yJiBl
bnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKLSAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRl
c3RNb25pdG9yKCkgeyBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9IG51bGxwdHI7IH0KLSAgICBi
b29sIGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gISFtX3doZWVsRXZl
bnRUZXN0TW9uaXRvcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJXaGVlbEV2ZW50
VGVzdE1vbml0b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTW9uaXRvcmluZ1doZWVs
RXZlbnRzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgYm9vbCBhbGxvd3NNZWRp
YURvY3VtZW50SW5saW5lUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX2FsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjazsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9X
aGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50
VGVzdE1vbml0b3IuY3BwCmluZGV4IDIwZWI0ZDBmODIxNDg2NDQ2ZGEzNTdmOTE4ODdmMmRmMWNm
OGMxMTkuLjg2ZWY2MjVhMGQ1NDA3NTJhZTlkODA1ODI5NzQ0ZDllNzkyY2Y4ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKQEAgLTMwLDcgKzMw
LDkgQEAKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKIAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtNDAsNDIgKzQyLDU2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV2hlZWxFdmVudFRlc3RNb25pdG9yOjpXaGVlbEV2ZW50VGVzdE1vbml0b3Io
KQotICAgIDogbV90ZXN0Rm9yQ29tcGxldGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhp
cywgJldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVkKQorV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpXaGVlbEV2ZW50VGVzdE1vbml0b3IoUGFnZSYgcGFnZSkKKyAgICA6
IG1fcGFnZShwYWdlKQogewogfQogCiB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJB
bGxUZXN0RGVmZXJyYWxzKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5j
bGVhcigpOwogICAgIG1fY29tcGxldGlvbkNhbGxiYWNrID0gbnVsbHB0cjsKLSAgICBtX3Rlc3RG
b3JDb21wbGV0aW9uVGltZXIuc3RvcCgpOwotICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50
VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICAgKD0pIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
Y2xlYXJBbGxUZXN0RGVmZXJyYWxzOiBjbGVhcmVkIGFsbCB0ZXN0IHN0YXRlLiIpOworICAgIG1f
ZXZlckhhZERlZmVycmFsID0gZmFsc2U7CisgICAgbV9yZWNlaXZlZFdoZWVsRW5kT3JDYW5jZWwg
PSBmYWxzZTsKKyAgICBtX3JlY2VpdmVkTW9tZW50dW1FbmQgPSBmYWxzZTsKKyAgICBMT0dfV0lU
SF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpjbGVhckFsbFRlc3REZWZlcnJhbHM6IGNsZWFyZWQgYWxsIHRlc3Qgc3RhdGUu
Iik7CiB9CiAKLXZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRT
dGFydE5vdGlmaWNhdGlvblRpbWVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uQ2Fs
bGJhY2spCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3Rh
cnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBleHBlY3RNb21l
bnR1bUVuZCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb25DYWxsYmFjaykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShmdW5jdGlvbkNhbGxiYWNrKTsKLSAgICAKLSAgICBpZiAoIW1fdGVzdEZvckNvbXBsZXRp
b25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIuc3Rh
cnRSZXBlYXRpbmcoMV9zIC8gNjAuKTsKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisg
ICAgbV9leHBlY3RXaGVlbEVuZE9yQ2FuY2VsID0gZXhwZWN0V2hlZWxFbmRPckNhbmNlbDsKKyAg
ICBtX2V4cGVjdE1vbWVudHVtRW5kID0gZXhwZWN0TW9tZW50dW1FbmQ7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShleHBlY3RXaGVlbEVuZE9yQ2FuY2VsKTsKKyAgICBVTlVTRURfUEFSQU0oZXhw
ZWN0TW9tZW50dW1FbmQpOworI2VuZGlmCisKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVu
dFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0
Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcgLSBleHBlY3QgZW5kL2NhbmNlbCAiIDw8IGV4cGVj
dFdoZWVsRW5kT3JDYW5jZWwgPDwgIiwgZXhwZWN0IG1vbWVudW0gZW5kICIgPDwgZXhwZWN0TW9t
ZW50dW1FbmQpOwogfQogCiB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6ZGVmZXJGb3JSZWFz
b24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIERlZmVyUmVhc29uIHJlYXNv
bikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9jayht
X211dGV4KTsKKwogICAgIG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5lbnN1cmUoaWRlbnRpZmll
ciwgW10gewogICAgICAgICByZXR1cm4gT3B0aW9uU2V0PERlZmVyUmVhc29uPigpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS5hZGQocmVhc29uKTsKLSAgICAKKworICAgIG1fZXZlckhhZERlZmVy
cmFsID0gdHJ1ZTsKKwogICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3Is
IHN0cmVhbSA8PCAiICAgICAgKD0pIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6ZGVmZXJGb3JSZWFz
b246IGlkPSIgPDwgaWRlbnRpZmllciA8PCAiLCByZWFzb249IiA8PCByZWFzb24pOwogfQogCiB2
b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIERlZmVyUmVhc29uIHJlYXNvbikKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
KwogICAgIGF1dG8gaXQgPSBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuZmluZChpZGVudGlmaWVy
KTsKICAgICBpZiAoaXQgPT0gbV9kZWZlckNvbXBsZXRpb25SZWFzb25zLmVuZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC04NSwyOCArMTAxLDczIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpyZW1vdmVEZWZlcnJhbEZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlCiAg
ICAgCiAgICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZGVmZXJDb21wbGV0
aW9uUmVhc29ucy5yZW1vdmUoaXQpOworCisgICAgc2NoZWR1bGVDYWxsYmFja0NoZWNrKCk7CiB9
Ci0gICAgCi12b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVk
KCkKKwordm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKCFtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCAtIHNjcm9sbGluZyBz
dGlsbCBhY3RpdmUsIHJlYXNvbnMgIiA8PCBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMpOworI2lm
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAoZXZlbnQucGhhc2UoKSA9PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkIHx8IGV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgIG1fcmVjZWl2ZWRXaGVlbEVuZE9yQ2FuY2Vs
ID0gdHJ1ZTsKKworICAgIGlmIChldmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgbV9yZWNlaXZlZE1vbWVudHVtRW5kID0gdHJ1ZTsK
KyNlbmRpZgorfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2NoZWR1bGVDYWxsYmFj
a0NoZWNrKCkKK3sKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgbV9wYWdlLnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIGZ1bmN0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkNhbGxiYWNrKTsKLSAg
ICBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIuc3RvcCgpOworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cihtX3BhZ2UpXSB7CisgICAgICAgIGlmICh3
ZWFrUGFnZSkKKyAgICAgICAgICAgIHdlYWtQYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgp
OworICAgIH0pOworfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2hlY2tTaG91bGRG
aXJlQ2FsbGJhY2tzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHsKKyAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgIGlmICghbV9kZWZlckNv
bXBsZXRpb25SZWFzb25zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzIC0gc2Nyb2xsaW5nIHN0aWxsIGFjdGl2ZSwgcmVh
c29ucyAiIDw8IG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fZXZlckhhZERlZmVycmFsKSB7CisgICAgICAg
ICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpjaGVja1Nob3VsZEZpcmVDYWxsYmFja3MgLSBoYXZlIG5v
dCB5ZXQgc2VlbiBhbnkgZGVmZXJyYWwgcmVhc29ucyIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9leHBlY3RXaGVlbEVuZE9yQ2FuY2Vs
ICYmICFtX3JlY2VpdmVkV2hlZWxFbmRPckNhbmNlbCkgeworICAgICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzIC0gaGF2ZSBub3Qgc2VlbiBlbmQgb2Yg
b2Ygd2hlZWwgcGhhc2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtX2V4cGVjdE1vbWVudHVtRW5kICYmICFtX3JlY2VpdmVkTW9tZW50dW1FbmQpIHsK
KyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVh
bSA8PCAiICBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcyAt
IGhhdmUgbm90IHNlZW4gZW5kIG9mIG9mIG1vbWVudHVtIHBoYXNlIik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVu
dFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjp0cmlnZ2Vy
VGVzdFRpbWVyRmlyZWQ6IHNjcm9sbGluZyBpcyBpZGxlLCBGSVJJTkcgVEVTVCIpOwotICAgIGlm
IChmdW5jdGlvbkNhbGxiYWNrKQorICAgIGlmIChhdXRvIGZ1bmN0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkNhbGxiYWNrKSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hl
ZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpj
aGVja1Nob3VsZEZpcmVDYWxsYmFja3M6IHNjcm9sbGluZyBpcyBpZGxlLCBGSVJJTkcgVEVTVCIp
OwogICAgICAgICBmdW5jdGlvbkNhbGxiYWNrKCk7CisgICAgfSBlbHNlCisgICAgICAgIExPR19X
SVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcyAtIG5vIGNhbGxiYWNrIik7CiB9
CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQogewogICAgIHN3aXRjaCAocmVhc29uKSB7CiAg
ICAgY2FzZSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkhhbmRsaW5nV2hlZWxFdmVudDogdHMgPDwg
ImhhbmRsaW5nIHdoZWVsIGV2ZW50IjsgYnJlYWs7CisgICAgY2FzZSBXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OkhhbmRsaW5nV2hlZWxFdmVudE9uTWFpblRocmVhZDogdHMgPDwgImhhbmRsaW5nIHdo
ZWVsIGV2ZW50IG9uIG1haW4gdGhyZWFkIjsgYnJlYWs7CiAgICAgY2FzZSBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OlJ1YmJlcmJhbmRJblByb2dyZXNzOiB0cyA8PCAicnViYmVyYmFuZGluZyI7IGJy
ZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxTbmFwSW5Qcm9ncmVz
czogdHMgPDwgInNjcm9sbC1zbmFwcGluZyI7IGJyZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkOiB0cyA8PCAic2Nyb2xsaW5nIHRo
cmVhZCBzeW5jIG5lZWRlZCI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVu
dFRlc3RNb25pdG9yLmgKaW5kZXggZjlkODYxYWJhYWE2NTgyNzk5MGRkYThmYWMyNjA0MWZhM2Y2
MjRiMi4uZWVmYzA5OTMwMDczMTRmZWI0NDRhMWVkNGYwYmM2NTViODBmODMxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCkBAIC0yOCw0NSArMjgsNzkg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQYWdlOworCiBj
bGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3IgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V2hlZWxFdmVudFRlc3RNb25pdG9yPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2hlZWxF
dmVudFRlc3RNb25pdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CisgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yKFBhZ2Um
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3Rp
ZmljYXRpb25UaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVl
bEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVudHVtRW5kLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRlc3REZWZlcnJhbHMoKTsK
ICAgICAKICAgICBlbnVtIERlZmVyUmVhc29uIHsKLSAgICAgICAgSGFuZGxpbmdXaGVlbEV2ZW50
ICAgICAgICAgID0gMSA8PCAwLAotICAgICAgICBSdWJiZXJiYW5kSW5Qcm9ncmVzcyAgICAgICAg
PSAxIDw8IDEsCi0gICAgICAgIFNjcm9sbFNuYXBJblByb2dyZXNzICAgICAgICA9IDEgPDwgMiwK
LSAgICAgICAgU2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCAgID0gMSA8PCAzLAotICAgICAgICBD
b250ZW50U2Nyb2xsSW5Qcm9ncmVzcyAgICAgPSAxIDw8IDQsCisgICAgICAgIEhhbmRsaW5nV2hl
ZWxFdmVudCAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEhhbmRsaW5nV2hlZWxFdmVu
dE9uTWFpblRocmVhZCAgPSAxIDw8IDEsCisgICAgICAgIFJ1YmJlcmJhbmRJblByb2dyZXNzICAg
ICAgICAgICAgPSAxIDw8IDIsCisgICAgICAgIFNjcm9sbFNuYXBJblByb2dyZXNzICAgICAgICAg
ICAgPSAxIDw8IDMsCisgICAgICAgIFNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQgICAgICAgPSAx
IDw8IDQsCisgICAgICAgIENvbnRlbnRTY3JvbGxJblByb2dyZXNzICAgICAgICAgPSAxIDw8IDUs
CiAgICAgfTsKICAgICB0eXBlZGVmIGNvbnN0IHZvaWQqIFNjcm9sbGFibGVBcmVhSWRlbnRpZmll
cjsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVjZWl2ZWRXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVmZXJGb3JSZWFz
b24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBEZWZlclJlYXNvbik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVEZWZlcnJhbEZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIERlZmVyUmVhc29uKTsKICAgICAKLSAgICB2b2lkIHRyaWdnZXJUZXN0VGltZXJGaXJlZCgp
OworICAgIHZvaWQgY2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCk7CiAKICAgICB1c2luZyBTY3Jv
bGxhYmxlQXJlYVJlYXNvbk1hcCA9IFdURjo6SGFzaE1hcDxTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIE9wdGlvblNldDxEZWZlclJlYXNvbj4+OwogCiBwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1
bGVDYWxsYmFja0NoZWNrKCk7CisKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb21wbGV0
aW9uQ2FsbGJhY2s7Ci0gICAgUnVuTG9vcDo6VGltZXI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBt
X3Rlc3RGb3JDb21wbGV0aW9uVGltZXI7CisgICAgUGFnZSYgbV9wYWdlOwogCisgICAgTG9jayBt
X211dGV4OwogICAgIFNjcm9sbGFibGVBcmVhUmVhc29uTWFwIG1fZGVmZXJDb21wbGV0aW9uUmVh
c29uczsKKyAgICBib29sIG1fZXhwZWN0V2hlZWxFbmRPckNhbmNlbCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3JlY2VpdmVkV2hlZWxFbmRPckNhbmNlbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V4
cGVjdE1vbWVudHVtRW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVjZWl2ZWRNb21lbnR1bUVu
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V2ZXJIYWREZWZlcnJhbCB7IGZhbHNlIH07Cit9Owor
CitjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3JDb21wbGV0aW9uRGVmZXJyZXIgeworcHVibGlj
OgorICAgIFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZlcnJlcihXaGVlbEV2ZW50
VGVzdE1vbml0b3IqIG1vbml0b3IsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFy
ZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFz
b24gcmVhc29uKQorICAgICAgICA6IG1fbW9uaXRvcihtb25pdG9yKQorICAgICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVhc29uKHJlYXNvbikKKyAgICB7Cisg
ICAgICAgIGlmIChtX21vbml0b3IpCisgICAgICAgICAgICBtX21vbml0b3ItPmRlZmVyRm9yUmVh
c29uKG1faWRlbnRpZmllciwgbV9yZWFzb24pOworICAgIH0KKyAgICAKKyAgICB+V2hlZWxFdmVu
dFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyKCkKKyAgICB7CisgICAgICAgIGlmIChtX21v
bml0b3IpCisgICAgICAgICAgICBtX21vbml0b3ItPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKG1f
aWRlbnRpZmllciwgbV9yZWFzb24pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2hl
ZWxFdmVudFRlc3RNb25pdG9yPiBtX21vbml0b3I7CisgICAgV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gbV9yZWFzb247CiB9OwogCiBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZl
clJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGVkNzIwMzY3NDM1MjNkNWM5Yzkw
YjNlYzg0NjA2N2MwMWZkNzA4ZGUuLjQ1MjA5OTkxY2M5Y2RjYzRjYTdlMjY4MmFlNDYwOWVhYTNh
OTIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xMzgsOCArMTM4LDYgQEAgdm9pZCBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmll
dyYgZnJhbWVWaWV3KQogCiAgICAgYXV0byogcGFnZSA9IGZyYW1lVmlldy5mcmFtZSgpLnBhZ2Uo
KTsKICAgICBpZiAocGFnZSAmJiBwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSB7Ci0g
ICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAi
ICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQ6IEV4
cGVjdHMgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2VyOiAiIDw8IHBhZ2UtPmlzTW9uaXRvcmluZ1do
ZWVsRXZlbnRzKCkpOwotCiAgICAgICAgIGF1dG8qIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbGluZ05vZGVJRCgpKTsKICAgICAgICAg
aWYgKCFpczxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC04MjYsMjkgKzgyNCw2IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlEIHNjcm9s
CiAgICAgfQogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmRlZmVyV2hlZWxF
dmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVm
ZXJSZWFzb24gcmVhc29uKSBjb25zdAotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNvbnN0IGF1dG8mIHRyaWdnZXIgPSBtX3BhZ2UtPndo
ZWVsRXZlbnRUZXN0TW9uaXRvcigpKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2
ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICghKSBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpkZWZlckZvclJlYXNvbjogRGVmZXJyaW5nICIgPDwgaWRlbnRpZmllciA8PCAiIGZvciBy
ZWFzb24gIiA8PCByZWFzb24pOwotICAgICAgICB0cmlnZ2VyLT5kZWZlckZvclJlYXNvbihpZGVu
dGlmaWVyLCByZWFzb24pOwotICAgIH0KLX0KLQotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKLXsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChjb25zdCBh
dXRvJiB0cmlnZ2VyID0gbV9wYWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSkgewotICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgICAo
ISkgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0
aW9uRGVmZXJyYWxGb3JSZWFzb246IERlZmVycmluZyAiIDw8IGlkZW50aWZpZXIgPDwgIiBmb3Ig
cmVhc29uICIgPDwgcmVhc29uKTsKLSAgICAgICAgdHJpZ2dlci0+cmVtb3ZlRGVmZXJyYWxGb3JS
ZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKLSAgICB9Ci19CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNmRhMmU4MzE0NmNlYWYx
Nzk3MDY0MWFlY2JhNjdlYjVkZTk2OWJmYi4uMWFiMWY0NWRlMTZjZTA0NjMwYjIyMWMzNzhjYmRk
MmQwMTMxMGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNTUsOCArNTUsNiBAQCBwdWJsaWM6
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2
ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbElu
ZGV4LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4KTsKLSAgICB2b2lkIGRlZmVyV2hlZWxFdmVudFRl
c3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFy
ZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdDsK
LSAgICB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29u
KFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDA1MTNmZTc4NzY3MTEyZDNlMzkzMjdmNjRh
ZWQ4YzJjMDBkNjFmM2EuLjAwYzY5NjcyMzhmNDk3MjZmYWI0NGM2ZDgyMTA4ZWIxY2VjODk2ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaApAQCAtMTgwLDYgKzE4MCw5IEBAIHB1YmxpYzoKICAgICBFdmVudFRyYWNraW5n
UmVnaW9ucyBhYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUlzTW9uaXRvcmluZ1doZWVsRXZlbnRzRm9yRnJhbWVWaWV3KGNvbnN0IEZy
YW1lVmlldyYpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nV2hlZWxFdmVudHMoKSB7
IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2Uq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cAppbmRleCBjMmYyMDBkM2MzZDI3N2M2ZjU0YTUxNmQ4YmRlNDliNTE1ZWEzZTYzLi43OGRkNTA4
MWMwYWE5YzE5YzE1NzE5N2ZlMmUxNTZjNzMxNTdlOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtOTYsNiArOTYsOSBAQCBTY3Jv
bGxpbmdFdmVudFJlc3VsdCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgdwogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmVlTXV0ZXgp
OwogCisgICAgaWYgKGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgIHJlY2VpdmVk
V2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKwogICAgIGlmICghYXN5bmNGcmFtZU9yT3ZlcmZsb3dT
Y3JvbGxpbmdFbmFibGVkKCkpIHsKICAgICAgICAgaWYgKG1fcm9vdE5vZGUpCiAgICAgICAgICAg
ICBtX3Jvb3ROb2RlLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDcxOTFhMzc2MjNiOWUz
NzIwMGI0NjkzM2NiMDI2MzZhNmFhZjdlMTIuLjVmNjg5Mzg3NzU2NmNhZDU3Mjg2OWMwMmM2NzRm
M2RiZTEyZmIzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0
b3IuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTEwNyw2ICsxMDgs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVTY3Jv
bGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIC8qaG9yaXpvbnRhbEluZGV4
Ki8sIHVuc2lnbmVkIC8qdmVydGljYWxJbmRleCovKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4mJikg
eyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JS
ZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25p
dG9yOjpEZWZlclJlYXNvbikgeyB9CiAjZW5kaWYKQEAgLTE3OCw2ICsxODEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5UmVsYXRlZE5vZGVzUmVjdXJzaXZlKFNjcm9sbGluZ1RyZWVOb2Rl
Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9k
ZT4gc2Nyb2xsaW5nTm9kZUZvclBvaW50KEZsb2F0UG9pbnQpOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyB9CiAKICAgICBM
b2NrIG1fdHJlZU11dGV4OyAvLyBQcm90ZWN0cyB0aGUgc2Nyb2xsaW5nIHRyZWUuCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IDgxMGFmZDQ0MzFmMmUxMWEzZWIwNDEyZWVlNWJjYWE3ZWUyMGFjZWIuLjkw
YTllYzZiNmRlOWFmN2E2YzdmMTVmZmRjNjE0NDhiODM3M2E0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApA
QCAtOTksNyArOTksNiBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJl
ZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uID0gbm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24o
KTsKLQogICAgIGlmIChub2RlLmlzUm9vdE5vZGUoKSkKICAgICAgICAgc2V0TWFpbkZyYW1lU2Ny
b2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogCkBAIC0xMTYsMTEgKzExNSwxMiBAQCB2b2lk
IFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZAogICAgIGlmIChtb25pdG9yaW5nV2hlZWxFdmVudHMpCiAgICAg
ICAgIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nh
c3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KG5vZGUu
c2Nyb2xsaW5nTm9kZUlEKCkpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGluZ1RocmVh
ZFN5bmNOZWVkZWQpOwogI2VuZGlmCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3Jv
bGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCA9IG5vZGUu
c2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgbW9uaXRvcmluZ1doZWVsRXZlbnRzXSB7Ci0g
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9u
QWZ0ZXJBc3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9y
aWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3N0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbm9kZUlEID0gbm9kZS5z
Y3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBz
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uLCBtb25pdG9yaW5nV2hlZWxFdmVudHNdIHsKKyAg
ICAgICAgc3Ryb25nVGhpcy0+bV9zY3JvbGxpbmdDb29yZGluYXRvci0+c2NoZWR1bGVVcGRhdGVT
Y3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbGF5
b3V0Vmlld3BvcnRPcmlnaW4sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAgICAgaWYgKG1vbml0b3JpbmdXaGVlbEV2ZW50cykKLSAgICAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25E
ZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihub2RlSUQpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6
OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOworICAgICAgICAgICAgc3Ryb25nVGhpcy0+cmVt
b3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRf
Y2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4obm9k
ZUlEKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsK
ICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShtb25pdG9yaW5nV2hlZWxFdmVudHMpOwogI2Vu
ZGlmCkBAIC0yMDMsMjYgKzIwMyw2IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCB1CiAgICAgfSk7
CiB9CiAKLXZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29t
cGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJl
YXNvbikKLXsKLSAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
PSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKLSAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVh
c29uKGlkZW50aWZpZXIsIHJlYXNvbik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNv
bihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikKLXsKLSAgICBp
ZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxp
bmdDb29yZGluYXRvciwgaWRlbnRpZmllciwgcmVhc29uXSB7Ci0gICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5yZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNv
bihpZGVudGlmaWVyLCByZWFzb24pOwotICAgIH0pOwotfQotCiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCAwNWRkYzVjZDAzOGI2OTU4Mjk1MjQwOTcwMjVm
NzI1MTA4YzViNmZmLi44MjMyZTFiNzczOTNlNzYxNTI0MTJhZDc5NTNkMTRiZmE3ZWQzMzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaApAQCAtNjUsOSArNjUsNiBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGlu
Z05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4
KSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JS
ZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIG92ZXJyaWRlOwotICAgIHZvaWQgcmVt
b3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6RGVmZXJSZWFzb24pIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdD
b29yZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggN2JmZDgxMWJlODBhMTdjNmE2NzQzN2EwZTBkNDU3
MzM1ZjNiMzYxOC4uMDg4MDMyYTRjNDhiZDBlMTdjZDFhNDg4ZDVjNWI4NTU0NTk1OTQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTQ3LDYgKzQ3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVk
U2Nyb2xsaW5nSW5kaWNhdG9yKCk7CisKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkgZmluYWw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5k
ZXggNDJmMjIwNDE4Y2ZhZjE2YTVhMTcyOGJjNDkyMDE0OGU5MWU1ZmUyOC4uYWNkODE3Y2IzMDRi
ZGE2MTgzMGJhODlkMDlkYTk4ZGI2YWZmZWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpA
QCAtMTM2LDYgKzEzNiwxNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp1cGRhdGVU
aWxlZFNjcm9sbGluZ0luZGljYXRvcigpCiAgICAgdGlsZWRCYWNraW5nLT5zZXRTY3JvbGxpbmdN
b2RlSW5kaWNhdGlvbihpbmRpY2F0b3JNb2RlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvck1hYzo6c3RhcnRNb25pdG9yaW5nV2hlZWxFdmVudHMoKQoreworICAgIGF1dG8gbW9uaXRv
ciA9IG1fcGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CisgICAgc2Nyb2xsaW5nVHJlZSgp
LT5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoV1RGTW92ZShtb25pdG9yKSk7Cit9CisKK3ZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnN0b3BNb25pdG9yaW5nV2hlZWxFdmVudHMoKQorewor
ICAgIHNjcm9sbGluZ1RyZWUoKS0+c2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKG51bGxwdHIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5oCmluZGV4IDgwMTRkOWE2
MmRkNmQ5YmRlMjE4ZjMyMmQxZmRiZTUxMmE3OWVlZTUuLjhkZGE5OTFmZjNlMzk5MTAyNDBjMGIx
OGQzMzQxMDM2NDQ0ZjE2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuaApAQCAtMzEsNiArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKKwogY2xhc3MgU2Ny
b2xsaW5nVHJlZU1hYyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRlZFNjcm9sbGluZ1RyZWUgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZU1hYz4gY3JlYXRlKEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3ImKTsKQEAgLTQyLDExICs0NCwyMCBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBzY3JvbGxpbmdOb2RlRm9yUG9pbnQoRmxvYXRQb2ludCkg
ZmluYWw7CiAKKyAgICB2b2lkIHNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxF
dmVudFRlc3RNb25pdG9yPiYmKSBmaW5hbDsKKworICAgIHZvaWQgcmVjZWl2ZWRXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOworCisgICAgdm9pZCBkZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZv
clJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgZmluYWw7CisKICAgICB2b2lkIGxv
Y2tMYXllcnNGb3JIaXRUZXN0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB1bmxvY2tMYXllcnNGb3JI
aXRUZXN0aW5nKCkgZmluYWw7CiAKICAgICAvLyBUaGlzIGxvY2sgcHJvdGVjdHMgdGhlIENBTGF5
ZXIvUGxhdGZvcm1DQUxheWVyIHRyZWUuCiAgICAgTG9jayBtX2xheWVySGl0VGVzdE11dGV4Owor
ICAgIAorICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IG1fd2hlZWxFdmVudFRlc3RN
b25pdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQppbmRleCAyYjhl
MzVmOTgwZWZjNGIwMDgzY2IyMjFjYTk4ZWU3ZWU1ZTcxNzgyLi5lMmNhNDVjN2NmZDgyMmVjM2Ez
MjAxOTA5OTIwOGVlMzliZmY0MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVNYWMuaCIKIAorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuaCIKQEAgLTM1LDYgKzM2LDggQEAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgogI2lu
Y2x1ZGUgIldlYkxheWVyLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgJiYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAKQEAgLTE4OCw0ICsxOTEsMzYgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlTWFjOjp1bmxvY2tMYXllcnNGb3JIaXRUZXN0aW5nKCkKICAgICBt
X2xheWVySGl0VGVzdE11dGV4LnVubG9jaygpOwogfQogCit2b2lkIFNjcm9sbGluZ1RyZWVNYWM6
OnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiYm
IG1vbml0b3IpCit7CisgICAgbV93aGVlbEV2ZW50VGVzdE1vbml0b3IgPSBXVEZNb3ZlKG1vbml0
b3IpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVNYWM6OnJlY2VpdmVkV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQoreworICAgIGF1dG8gbW9uaXRvciA9IG1fd2hl
ZWxFdmVudFRlc3RNb25pdG9yOworICAgIGlmIChtb25pdG9yKQorICAgICAgICBtb25pdG9yLT5y
ZWNlaXZlZFdoZWVsRXZlbnQoZXZlbnQpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVNYWM6OmRl
ZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQoreworICAgIGF1dG8gbW9uaXRvciA9IG1fd2hlZWxF
dmVudFRlc3RNb25pdG9yOworICAgIGlmICghbW9uaXRvcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgICAg
KCEpIFNjcm9sbGluZ1RyZWVNYWM6OmRlZmVyRm9yUmVhc29uOiBEZWZlcnJpbmcgb24gIiA8PCBp
ZGVudGlmaWVyIDw8ICIgZm9yIHJlYXNvbiAiIDw8IHJlYXNvbik7CisgICAgbW9uaXRvci0+ZGVm
ZXJGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
TWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikKK3sKKyAgICBhdXRvIG1v
bml0b3IgPSBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKKyAgICBpZiAoIW1vbml0b3IpCisgICAg
ICAgIHJldHVybjsKKworICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3Is
IHN0cmVhbSA8PCAiICAgICghKSBTY3JvbGxpbmdUcmVlTWFjOjpyZW1vdmVEZWZlcnJhbEZvclJl
YXNvbjogUmVtb3ZpbmcgZGVmZXJyYWwgb24gIiA8PCBpZGVudGlmaWVyIDw8ICIgZm9yIHJlYXNv
biAiIDw8IHJlYXNvbik7CisgICAgbW9uaXRvci0+cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24oaWRl
bnRpZmllciwgcmVhc29uKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCA4ZDQ4ZTZkNDQ4MzY4NmNhMjk4MzkxY2QwMDNk
YTIxY2JmYWRlZGY3Li5jNWU5ZTc2OWY3MGY0NGI5ZGRhOGY1MjJjOTAwNjEyOTEzY2EyOTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAt
MzA3LDcgKzMwNyw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzCiAgICAgaWYgKCFzY3JvbGxp
bmdUcmVlKCkuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8IGlzTWFp
blRocmVhZCgpIDw8ICIgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRl
ZmVyRm9yUmVhc29uOiBTVEFSVElORyBkZWZlcnJhbCBmb3IgIiA8PCBpZGVudGlmaWVyIDw8ICIg
YmVjYXVzZSBvZiAiIDw8IHJlYXNvbik7CiAgICAgc2Nyb2xsaW5nVHJlZSgpLmRlZmVyV2hlZWxF
dmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CiB9CiAgICAg
CkBAIC0zMTYsNyArMzE1LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnIKICAgICBpZiAoIXNj
cm9sbGluZ1RyZWUoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFt
IDw8IGlzTWFpblRocmVhZCgpIDw8ICIgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OmRlZmVyRm9yUmVhc29uOiBFTkRJTkcgZGVmZXJyYWwgZm9yICIgPDwgaWRlbnRpZmll
ciA8PCAiIGJlY2F1c2Ugb2YgIiA8PCByZWFzb24pOwogICAgIHNjcm9sbGluZ1RyZWUoKS5yZW1v
dmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCBy
ZWFzb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNv
cmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5jcHAKaW5kZXggMWI1Zjg5NWFjNDdjYjY4NWI4ZWUyNzVkY2I4MGVhMzcyOTA1YzY2
ZC4uNzJkM2ZjYTg1MGY0MzQ2NzlkMWFiMWNhZWMxM2FhZDg3NzZiYTVhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIG1vbml0b3JXaGVlbEV2ZW50cyhXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCiAg
ICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkuY2xlYXJBbGxUZXN0RGVmZXJy
YWxzKCk7CiB9CiAKLXZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1l
cihXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBqc0NhbGxiYWNrRnVuY3Rpb24pCit2b2lkIHNldFdoZWVsRXZlbnRNb25pdG9yVGVzdENhbGxi
YWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBl
eHBlY3RNb21lbnR1bUVuZCwgV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYganNDYWxsYmFja0Z1bmN0aW9uKQogewogICAgIFBhZ2UqIHBhZ2Ug
PSBmcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5pc01vbml0b3JpbmdXaGVl
bEV2ZW50cygpKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIHNldFRlc3RDYWxsYmFja0FuZFN0YXJ0
Tm90aWZpY2F0aW9uVGltZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBKU0NvbnRleHRSZQogCiAg
ICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICAgICAKLSAg
ICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKS5zZXRUZXN0Q2FsbGJhY2tBbmRT
dGFydE5vdGlmaWNhdGlvblRpbWVyKFs9XSh2b2lkKSB7CisgICAgcGFnZS0+ZW5zdXJlV2hlZWxF
dmVudFRlc3RNb25pdG9yKCkuc2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGV4cGVj
dFdoZWVsRW5kT3JDYW5jZWwsIGV4cGVjdE1vbWVudHVtRW5kLCBbPV0odm9pZCkgewogICAgICAg
ICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGpzQ2FsbGJhY2tGdW5jdGlvbiwgbnVs
bHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoY29u
dGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCmluZGV4IDc5YWVmZWY0NTFhMDg2MWFlNDdi
YzIwYmFhY2JlM2M4MmYzZGUwMDUuLjJjMzYxNjMwZGQ0NGNmOWY0OTYyZTc5OTliZDJkNmQxNTE5
OGVhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIHZv
aWQgaW5qZWN0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZikgVEVTVF9TVVBQT1JUX0VYUE9S
VDsKIHZvaWQgcmVzZXRJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwogdm9pZCBtb25pdG9yV2hlZWxFdmVudHMoV2ViQ29yZTo6RnJhbWUmKSBURVNUX1NV
UFBPUlRfRVhQT1JUOwotdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRp
bWVyKFdlYkNvcmU6OkZyYW1lJiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikgVEVTVF9TVVBQ
T1JUX0VYUE9SVDsKK3ZvaWQgc2V0V2hlZWxFdmVudE1vbml0b3JUZXN0Q2FsbGJhY2tBbmRTdGFy
dE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVu
dHVtRW5kLCBXZWJDb3JlOjpGcmFtZSYsIEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYpIFRFU1Rf
U1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKFdlYkNvcmU6
OkZyYW1lJikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAogdm9pZCBzZXRMb2dDaGFubmVsVG9BY2N1
bXVsYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKSBURVNUX1NVUFBPUlRfRVhQT1JUOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA1ZDgwNTk3NzlkZDE2Zjk3ZWMyYTJiZDY5NmFh
ZjQ1YTg0YjUxMmZlLi5hZTY4NzZlNWQ5ZGFmM2I4NzUxMjFkMmFkZTMzNGJjMzJmZWFjYzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNzA0LDcgKzcwNCw3IEBAIHZvaWQgV0tC
dW5kbGVQYWdlU3RhcnRNb25pdG9yaW5nU2Nyb2xsT3BlcmF0aW9ucyhXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZikKICAgICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKS5jbGVhckFs
bFRlc3REZWZlcnJhbHMoKTsKIH0KIAotYm9vbCBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9w
ZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5k
bGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQor
Ym9vbCBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFj
ayhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNh
bGxiYWNrIGNhbGxiYWNrLCBib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhwZWN0
TW9tZW50dW1FbmQsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjYWxsYmFjaykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIGJvb2wgV0tCdW5kbGVQYWdlUmVn
aXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSCiAgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRl
c3RNb25pdG9yKCkuc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihbPV0o
KSB7CisgICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCkuc2V0VGVzdENhbGxi
YWNrQW5kU3RhcnRNb25pdG9yaW5nKGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGV4cGVjdE1vbWVu
dHVtRW5kLCBbPV0oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IDI4M2MxMTRkMDViNzQx
ZjJjNjg1MmNiOTJjNWM3ZGE2ZmNlZWVhMTAuLjRmODNiOGVmMGM4MDJiY2MxYjNkN2JjZjk0MmNl
YWVhMTQ3ZWFhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTEyMSw3ICsxMjEsNyBA
QCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlQ29weUdyb3VwSWRlbnRpZmllcihX
S0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVRlc3RO
b3RpZmljYXRpb25DYWxsYmFjaykodm9pZCogY29udGV4dCk7CiAvLyBSZXR1cm5zIHRydWUgIGlm
IHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCwgZWxzZSBmYWxzZS4KLVdLX0VY
UE9SVCBib29sIFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNh
bGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxi
YWNrLCB2b2lkKiBjb250ZXh0KTsKK1dLX0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZVJlZ2lzdGVy
U2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrLCBib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5j
ZWwsIGJvb2wgZXhwZWN0TW9tZW50dW1FbmQsIHZvaWQqIGNvbnRleHQpOwogCiAvLyBDYWxsIHRo
ZSBnaXZlbiBjYWxsYmFjayBhZnRlciBib3RoIGEgcG9zdFRhc2soKSBvbiB0aGUgcGFnZSdzIGRv
Y3VtZW50J3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYW5kIGEgemVyby1kZWxheSB0aW1lci4K
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZUNhbGxBZnRlclRhc2tzQW5kVGltZXJzKFdLQnVu
ZGxlUGFnZVJlZiwgV0tCdW5kbGVQYWdlVGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrLCB2b2lkKiBj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1OWQ0ODc4NWI1OTYwZDg0YmRiNzUxZjNmZDE4YTk2OWYwYWRlOTcyLi4yYWVmNWUwMDEy
YWY2MjQ0ZTIyNDllMzUwNDNlOWYwMmI5YjIwNDhjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMTggIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCkgaXMgdmVyeSBmcmFnaWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MTkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzUxMzE5NDU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgRGVmbGFrZSB0ZXN0cyB1c2luZyBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KSBieSBmaXhpbmcgc2V2ZXJhbCBjYXVzZXMgb2YgZmxha2luZXNzLAorICAgICAgICBhZGRpbmcg
YmFjayBjaGFuZ2VzIGZyb20gcjI1Nzg0NCB0aGF0IHdlcmUgcmV2ZXJ0ZWQgaW4gcjI1ODU1OC4K
KyAgICAgICAgCisgICAgICAgIEZpcnN0LCBoYXZlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIga2Vl
cCB0cmFjayBvZiB3aGV0aGVyIGl0J3Mgc2VlbiB0aGVuICJlbmQiIGV2ZW50CisgICAgICAgIGZv
ciB0aGUgc2Nyb2xsaW5nIGFuZCBtb21lbnR1bSBwaGFzZXMsIGFuZCBwYXNzIHRoaXMgZG93biB0
byBXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHdoaWNoCisgICAgICAgIG5vdyB3YWl0cyB1bnRpbCBp
dCBzZWVzIHRoZXNlLCB3aGljaCBwcmV2ZW50cyBwcmVtYXR1cmUgdHJpZ2dlcmluZyB3aGljaCB3
YXMgYSBjb21tb24gY2F1c2Ugb2YKKyAgICAgICAgZmFpbHVyZSBiZWZvcmUuCisgICAgICAgIAor
ICAgICAgICBTZWNvbmQsIHJlbW92ZSBXaGVlbEV2ZW50VGVzdE1vbml0b3IncyAxLzYwcyB0aW1l
ciBhbmQgaW5zdGVhZCBoYXZlIFdoZWVsRXZlbnRUZXN0TW9uaXRvciB0ZXN0CisgICAgICAgIGZv
ciBjb21wbGV0aW9uIGluIGEgY2FsbG91dCBmcm9tIHRoZSBlbmQgb2YgUGFnZTo6dXBkYXRlUmVu
ZGVyaW5nKCksIHdoaWNoIG1ha2VzIGl0IHRlc3QKKyAgICAgICAgYW5kIGZpcmUgYXQgYSBtb3Jl
IGNvbnNpc3RlbnQgdGltZS4KKyAgICAgICAgCisgICAgICAgIFRoaXJkLCBwdXNoIFdoZWVsRXZl
bnRUZXN0TW9uaXRvciB0byB0aGUgU2Nyb2xsaW5nVHJlZSwgc28gdGhhdCByZWFzb25zIGZvciBk
ZWZlcnJhbAorICAgICAgICBjYW4gYmUgYWRkZWQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuIFRo
aXMgZml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaCgpCisg
ICAgICAgIHVzZWQgdG8gc2VuZCB0aGUgIlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQiIHJlYXNv
biB0byB0aGUgbWFpbiB0aHJlYWQgd291bGQgZ2V0IGRlbGF5ZWQsCisgICAgICAgIGFsc28gcmVz
dWx0aW5nIGluIGEgcHJlbWF0dXJlIHRyaWdnZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdD
b250cm9sbGVyIG1vdXNlU2Nyb2xsQnlYOmFuZFk6d2l0aFdoZWVsOmFuZE1vbWVudHVtUGhhc2Vz
Ol0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIG1vbml0b3JXaGVlbEV2ZW50
c10pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIGNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlczpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIu
Y3BwOgorICAgICAgICAobW91c2VTY3JvbGxCeSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW9uaXRv
cldoZWVsRXZlbnRzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKwogMjAyMC0wMy0xNyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBX
S1VJRGVsZWdhdGVQcml2YXRlIFNQSSBfd2ViVmlldzpwcmludEZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmgKaW5kZXggODhlZTY2YTY4NjM5ZGI4YjhhMjVhMjY4YTAzMDE1OWE0ZmVmZDk3ZS4uOGEy
N2FlMGVjNDdiMDIyNzQzZDhhMWU1NWNiYWZmNzE5Y2UxYjZmMCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBAIC0zOCw2ICszOCwx
MCBAQCBAaW50ZXJmYWNlIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgOiBOU09iamVjdCA8RE9NRXZl
bnRMaXN0ZW5lcj4KICAgICBOU1RpbWVJbnRlcnZhbCBsYXN0Q2xpY2s7CiAgICAgaW50IGV2ZW50
TnVtYmVyOwogICAgIGRvdWJsZSB0aW1lT2Zmc2V0OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBC
T09MIF9zZW50V2hlZWxQaGFzZUVuZE9yQ2FuY2VsOworICAgIEJPT0wgX3NlbnRNb21lbnR1bVBo
YXNlRW5kOworI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU011dGFibGVB
cnJheSogdG91Y2hlczsKICAgICB1bnNpZ25lZCBjdXJyZW50VG91Y2hJZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpp
bmRleCBmNzYwNDlmZjc1YjZlMzc0YjdmNGQ3NGQwZTM5ZjY4MjUyNmIwZmZhLi5kYzkyODc4MTdh
ZTJhZTM5ZTc2YjU2YmZjNmM2M2FlMTFjNWQ0Mjk1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtODUyLDI5ICs4NTIsMzcg
QEAgLSAodm9pZCltb3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkKIC0gKHZvaWQpbW91
c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IHdpdGhXaGVlbDooTlNTdHJpbmcqKXBoYXNl
TmFtZSBhbmRNb21lbnR1bVBoYXNlczooTlNTdHJpbmcqKW1vbWVudHVtTmFtZQogewogI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBbW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxh
eW91dF07CisKICAgICB1aW50MzJfdCBwaGFzZSA9IDA7CiAgICAgaWYgKFtwaGFzZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBAIm5vbmUiXSkKICAgICAgICAgcGhhc2UgPSAwOwogICAgIGVsc2UgaWYg
KFtwaGFzZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAImJlZ2FuIl0pCi0gICAgICAgIHBoYXNlID0g
MTsgLy8ga0NHU2Nyb2xsUGhhc2VCZWdhbgorICAgICAgICBwaGFzZSA9IGtDR1Njcm9sbFBoYXNl
QmVnYW47CiAgICAgZWxzZSBpZiAoW3BoYXNlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiY2hhbmdl
ZCJdKQotICAgICAgICBwaGFzZSA9IDI7IC8vIGtDR1Njcm9sbFBoYXNlQ2hhbmdlZDsKKyAgICAg
ICAgcGhhc2UgPSBrQ0dTY3JvbGxQaGFzZUNoYW5nZWQ7CiAgICAgZWxzZSBpZiAoW3BoYXNlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IEAiZW5kZWQiXSkKLSAgICAgICAgcGhhc2UgPSA0OyAvLyBrQ0dT
Y3JvbGxQaGFzZUVuZGVkCisgICAgICAgIHBoYXNlID0ga0NHU2Nyb2xsUGhhc2VFbmRlZDsKICAg
ICBlbHNlIGlmIChbcGhhc2VOYW1lIGlzRXF1YWxUb1N0cmluZzogQCJjYW5jZWxsZWQiXSkKLSAg
ICAgICAgcGhhc2UgPSA4OyAvLyBrQ0dTY3JvbGxQaGFzZUNhbmNlbGxlZAorICAgICAgICBwaGFz
ZSA9IGtDR1Njcm9sbFBoYXNlQ2FuY2VsbGVkOwogICAgIGVsc2UgaWYgKFtwaGFzZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBAIm1heWJlZ2luIl0pCi0gICAgICAgIHBoYXNlID0gMTI4OyAvLyBrQ0dT
Y3JvbGxQaGFzZU1heUJlZ2luCisgICAgICAgIHBoYXNlID0ga0NHU2Nyb2xsUGhhc2VNYXlCZWdp
bjsKIAogICAgIHVpbnQzMl90IG1vbWVudHVtID0gMDsKICAgICBpZiAoW21vbWVudHVtTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IEAibm9uZSJdKQotICAgICAgICBtb21lbnR1bSA9IDA7IC8va0NHTW9t
ZW50dW1TY3JvbGxQaGFzZU5vbmU7CisgICAgICAgIG1vbWVudHVtID0ga0NHTW9tZW50dW1TY3Jv
bGxQaGFzZU5vbmU7CiAgICAgZWxzZSBpZiAoW21vbWVudHVtTmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJiZWdpbiJdKQotICAgICAgICBtb21lbnR1bSA9IDE7IC8vIGtDR01vbWVudHVtU2Nyb2xsUGhh
c2VCZWdpbjsKKyAgICAgICAgbW9tZW50dW0gPSBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlQmVnaW47
CiAgICAgZWxzZSBpZiAoW21vbWVudHVtTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJjb250aW51ZSJd
KQotICAgICAgICBtb21lbnR1bSA9IDI7IC8vIGtDR01vbWVudHVtU2Nyb2xsUGhhc2VDb250aW51
ZTsKKyAgICAgICAgbW9tZW50dW0gPSBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlQ29udGludWU7CiAg
ICAgZWxzZSBpZiAoW21vbWVudHVtTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkKLSAgICAg
ICAgbW9tZW50dW0gPSAzOyAvLyBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlRW5kOworICAgICAgICBt
b21lbnR1bSA9IGtDR01vbWVudHVtU2Nyb2xsUGhhc2VFbmQ7CisKKyAgICBpZiAocGhhc2UgPT0g
a0NHU2Nyb2xsUGhhc2VFbmRlZCB8fCBwaGFzZSA9PSBrQ0dTY3JvbGxQaGFzZUNhbmNlbGxlZCkK
KyAgICAgICAgX3NlbnRXaGVlbFBoYXNlRW5kT3JDYW5jZWwgPSBZRVM7CisKKyAgICBpZiAobW9t
ZW50dW0gPT0ga0NHTW9tZW50dW1TY3JvbGxQaGFzZUVuZCkKKyAgICAgICAgX3NlbnRNb21lbnR1
bVBoYXNlRW5kID0gWUVTOwogCiAgICAgQ0dFdmVudFJlZiBjZ1Njcm9sbEV2ZW50ID0gQ0dFdmVu
dENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQoTlVMTCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwg
eSwgeCk7CiAKQEAgLTEzODcsNiArMTM5NSw4IEBAIC0gKHZvaWQpbW9uaXRvcldoZWVsRXZlbnRz
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgX3NlbnRXaGVlbFBoYXNl
RW5kT3JDYW5jZWwgPSBOTzsKKyAgICBfc2VudE1vbWVudHVtUGhhc2VFbmQgPSBOTzsKICAgICBX
ZWJDb3JlVGVzdFN1cHBvcnQ6Om1vbml0b3JXaGVlbEV2ZW50cygqZnJhbWUpOwogI2VuZGlmCiB9
CkBAIC0xNDAzLDcgKzE0MTMsNyBAQCAtICh2b2lkKWNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
czooV2ViU2NyaXB0T2JqZWN0KiljYWxsYmFjawogICAgICAgICByZXR1cm47CiAKICAgICBKU0ds
b2JhbENvbnRleHRSZWYgZ2xvYmFsQ29udGV4dCA9IFttYWluRnJhbWUgZ2xvYmFsQ29udGV4dF07
Ci0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNh
dGlvblRpbWVyKCpmcmFtZSwgZ2xvYmFsQ29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKKyAg
ICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldFdoZWVsRXZlbnRNb25pdG9yVGVzdENhbGxiYWNrQW5k
U3RhcnRNb25pdG9yaW5nKF9zZW50V2hlZWxQaGFzZUVuZE9yQ2FuY2VsLCBfc2VudE1vbWVudHVt
UGhhc2VFbmQsICpmcmFtZSwgZ2xvYmFsQ29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5k
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2VuZGVyLmNwcAppbmRleCA3
MmIwZDU5ZDYwYTFhNjM0N2M3Y2VjODI1MDdkOWI2OWQ0OTM5YmVlLi5lN2UyOGM0YWU5ZDNlZGIx
YWJmZDUyMTVkOTJkMmZhNzc3ZGEzZWI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVu
dFNlbmRlci5jcHAKQEAgLTgzMiw2ICs4MzIsMTAgQEAgdm9pZCBtb3VzZVNjcm9sbEJ5KGRvdWJs
ZSB4LCBkb3VibGUgeSwgYm9vbCBjb250aW51b3VzKQogICAgIFJFQ1QgcmVjdDsKICAgICA6Okdl
dFdpbmRvd1JlY3Qod2ViVmlld1dpbmRvdywgJnJlY3QpOwogCisgICAgQ09NUHRyPElXZWJGcmFt
ZVByaXZhdGU+IGZyYW1lUHJpdmF0ZTsKKyAgICBpZiAoU1VDQ0VFREVEKGZyYW1lLT5RdWVyeUlu
dGVyZmFjZSgmZnJhbWVQcml2YXRlKSkpCisgICAgICAgIGZyYW1lUHJpdmF0ZS0+bGF5b3V0KCk7
CisKICAgICBpZiAoeCkgewogICAgICAgICBVSU5UIHNjcm9sbENoYXJzID0gMTsKICAgICAgICAg
OjpTeXN0ZW1QYXJhbWV0ZXJzSW5mbyhTUElfR0VUV0hFRUxTQ1JPTExDSEFSUywgMCwgJnNjcm9s
bENoYXJzLCAwKTsKQEAgLTkyMyw3ICs5MjcsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIFdlYkNv
cmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHN0YXRpY19jYXN0PFdlYkZyYW1lKj4oZnJhbWUy
LmdldCgpKSk7Ci0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFy
dE5vdGlmaWNhdGlvblRpbWVyKCpjb3JlRnJhbWUsIGdsb2JhbENvbnRleHQsIGpzQ2FsbGJhY2tG
dW5jdGlvbik7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRXaGVlbEV2ZW50TW9uaXRvclRl
c3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyhmYWxzZSwgZmFsc2UsICpjb3JlRnJhbWUsIGds
b2JhbENvbnRleHQsIGpzQ2FsbGJhY2tGdW5jdGlvbik7CiAKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApp
bmRleCBjOWE1MmMxNWY3NzA4MzA2ODNjOGVmZjY4OTQyOWJkMGJjMWY1NjQ1Li4wYzFmMDY3MzM3
YmY3OTljMzEzNzk2OTI5NDljNGVlODUzNmY2ZTQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5jcHAKQEAgLTQ5Miw2ICs0OTIsMTIgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoaW50IHgsIGludAogCiAg
ICAgdWludDY0X3QgcGhhc2UgPSBjZ0V2ZW50UGhhc2VGcm9tU3RyaW5nKHBoYXNlU3RyKTsKICAg
ICB1aW50NjRfdCBtb21lbnR1bSA9IGNnRXZlbnRNb21lbnR1bVBoYXNlRnJvbVN0cmluZyhtb21l
bnR1bVN0cik7CisgICAgCisgICAgaWYgKHBoYXNlID09IDQgLyoga0NHU2Nyb2xsUGhhc2VFbmRl
ZCAqLyB8fCBwaGFzZSA9PSA4IC8qIGtDR1Njcm9sbFBoYXNlQ2FuY2VsbGVkICovKQorICAgICAg
ICBtX3NlbnRXaGVlbFBoYXNlRW5kT3JDYW5jZWwgPSB0cnVlOworICAgIAorICAgIGlmIChtb21l
bnR1bSA9PSAzIC8qIGtDR01vbWVudHVtU2Nyb2xsUGhhc2VFbmQgKi8pCisgICAgICAgIG1fc2Vu
dFdoZWVsTW9tZW50dW1QaGFzZUVuZCA9IHRydWU7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gcGhhc2VLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQ
aGFzZSIpKTsKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gcGhhc2VSZWYgPSBhZG9wdFdL
KFdLVUludDY0Q3JlYXRlKHBoYXNlKSk7CkBAIC02MDgsNiArNjE0LDggQEAgdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMoKQogewogICAgIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOwog
ICAgIAorICAgIG1fc2VudFdoZWVsUGhhc2VFbmRPckNhbmNlbCA9IGZhbHNlOworICAgIG1fc2Vu
dFdoZWVsTW9tZW50dW1QaGFzZUVuZCA9IGZhbHNlOwogICAgIFdLQnVuZGxlUGFnZVN0YXJ0TW9u
aXRvcmluZ1Njcm9sbE9wZXJhdGlvbnMocGFnZSk7CiB9CiAKQEAgLTY1MCw3ICs2NTgsNyBAQCB2
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhK
U1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAogCiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJh
Y2tEYXRhID0gbWFrZVVuaXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhPihjb250ZXh0
LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKICAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxs
YmFja0RhdGFQdHIgPSBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhLnJlbGVhc2UoKTsKLSAg
ICBib29sIGNhbGxiYWNrV2lsbEJlQ2FsbGVkID0gV0tCdW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxP
cGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2socGFnZSwgZXhlY3V0ZUNhbGxiYWNrLCBzY3JvbGxD
b21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyKTsKKyAgICBib29sIGNhbGxiYWNrV2lsbEJlQ2FsbGVk
ID0gV0tCdW5kbGVQYWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2so
cGFnZSwgZXhlY3V0ZUNhbGxiYWNrLCBtX3NlbnRXaGVlbFBoYXNlRW5kT3JDYW5jZWwsIG1fc2Vu
dFdoZWVsTW9tZW50dW1QaGFzZUVuZCwgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7
CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewogICAgICAgICAvLyBSZWFzc2lnbiBy
YXcgcG9pbnRlciB0byBzdGQ6OnVuaXF1ZV9wdHI8PiBzbyBpdCB3aWxsIG5vdCBiZSBsZWFrZWQu
CiAgICAgICAgIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVzZXQoc2Nyb2xsQ29tcGxl
dGlvbkNhbGxiYWNrRGF0YVB0cik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCmluZGV4IDIy
NTRiMzQxODM3ODE5ODAyNDQwMGZmYjc5ZGM2ZWJmYTM5NTVjM2YuLjUyMzI2YWM4NTA4MmQwYzJk
ZTlhYmU5NTVmMjYxODUwZWM4OTgzMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCkBA
IC04Nyw2ICs4Nyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcigpOwogICAgIFdLUG9pbnQgbV9wb3NpdGlvbjsKKyAgICBib29sIG1fc2VudFdoZWVsUGhh
c2VFbmRPckNhbmNlbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3NlbnRXaGVlbE1vbWVudHVtUGhh
c2VFbmQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjkwZDE1
OTNhNzViZmE5NWFmMjQ2M2M4Y2U1YzZlYzYwNzE4Zjc0NS4uYWFjYWExNmRkYmZiMzY2ZjYxYWJj
ZTQzZWU3YjFjOWYzNGI1OWU0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAzLTE4ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpIGlzIHZlcnkgZnJhZ2lsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODE5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81MTMxOTQ1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS0yZC1vdmVyZmxvdy5odG1s
OiBOZWVkIHRvIGNhbGwgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCkKKyAgICAgICAg
Zm9yIGVhY2ggc3VidGVzdC4KKwogMjAyMC0wMy0xNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OICgyNTc4NDQpOiBmYXN0L3Njcm9s
bGluZy9zY3JvbGwtY29udGFpbmVyLWhvcml6b250YWxseS5odG1sIGlzIHRpbWluZyBvdXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwNmNh
YWExNDMyYWE1YzI4YTU5Nzg5NTEyZWFmOTJmNzNkN2MwNTAyLi4yMzIxNmI4NTE2ZTNlYTUyZWFl
MjI1ZmUxMGI1OWZlMWIxNjQzN2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMDU5LDggKzEwNTksNiBAQCB3ZWJraXQub3JnL2IvMjA4
MDE0IFsgRGVidWcgXSBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL25vLXN1YnByb3Rv
Y29sLmh0bQogCiB3ZWJraXQub3JnL2IvMjA4MDYyIGh0dHAvd3B0L2ZldGNoL2Rpc2FibGUtc3Bl
Y3VsYXRpdmUtZm9yLXJlbG9hZC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9i
LzIwODE2MCBmYXN0L3Njcm9sbGluZy9vdmVyZmxvdy1zY3JvbGwtcGFzdC1tYXguaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMDgyMjIgWyBSZWxlYXNlIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24taWNlQ29ubmVj
dGlvblN0YXRlLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA4
MzQwIHdlYmdwdS93aGxzbC90ZXh0dXJlcy1zYW1wbGUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFp
bHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRk
NjZlYzI0MjQwMjYxMjYyNjkxZjQ2OWIyZTBmYWMwZmY2ZTk1NDIuLmU5NDVjZWMzYzA2MGQ4ZDdl
ZjVmY2ZhOWE3OWViM2E5MTUyZThlZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0yNzUsNiArMjc1LDggQEAgZmFzdC9ldmVudHMvc2Nyb2xsLWluLXNj
YWxlZC1wYWdlLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZl
bnRzL3doZWVsZXZlbnQtaW4taG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwgWyBGYWls
dXJlIF0KIGZhc3QvZXZlbnRzL3doZWVsZXZlbnQtaW4tdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sIFsgRmFpbHVyZSBdCiBzY3JvbGxiYXJzL3Njcm9sbC1ydGwtb3ItYnQtbGF5ZXIuaHRt
bCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIwODU1OSBmYXN0L3Njcm9sbGluZy9hcnJvdy1r
ZXktc2Nyb2xsLWluLXJ0bC1kb2N1bWVudC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4
NTU5IGZhc3Qvc2Nyb2xsaW5nL3Byb2dyYW1tYXRpYy1zY3JvbGwtdG8temVyby16ZXJvLmh0bWwg
WyBTa2lwIF0KIAogIyBUT0RPIE5lZWRzIHRlc3RSdW5uZXIuZW5hYmxlQXV0b1Jlc2l6ZU1vZGUo
KQogZmFzdC9hdXRvcmVzaXplLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LTJk
LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZsb3cuaHRtbAppbmRleCBmMjJi
Zjk2NmNlNmU0MzVhZGVmZDc0Y2YwNGU5YTdiODA5MTM2MDdjLi42NDM2OWUyOTM2MmUwMjZmZjcx
ZDI3NzRkNjVhOWJkZGQ1ZmU3MmI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZs
b3cuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktMmQtb3ZlcmZsb3cuaHRtbApAQCAtNTYsNiArNTYs
OCBAQAogICAgICAgICAgICAgICAgIHg6IGRpdlRhcmdldC5zY3JvbGxMZWZ0LAogICAgICAgICAg
ICAgICAgIHk6IGRpdlRhcmdldC5zY3JvbGxUb3AKICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwogICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oMTAwLCAxMDApOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKC0xLCAwLCAiYmVnYW4iLCAibm9u
ZSIpOwogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKC0xLCAwLCAiY2hhbmdlZCIsICJub25lIik7CkBAIC04NCw2ICs4Niw3IEBA
CiAgICAgICAgICAgICAgICAgeTogZGl2VGFyZ2V0LnNjcm9sbFRvcAogICAgICAgICAgICAgfTsK
IAorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMDAsIDEwMCk7CiAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMSwgMSwgImJl
Z2FuIiwgIm5vbmUiKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygxLCAxLCAiY2hhbmdlZCIsICJub25lIik7CkBAIC0xMDgs
NiArMTExLDcgQEAKICAgICAgICAgICAgICAgICB5OiBkaXZUYXJnZXQuc2Nyb2xsVG9wCiAgICAg
ICAgICAgICB9OwogCisgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgMTAwKTsKICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygtMSwgLTEsICJiZWdhbiIsICJub25lIik7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoLTEsIC0xLCAiY2hhbmdlZCIsICJu
b25lIik7CkBAIC0xMjIsNyArMTI2LDYgQEAKIAogICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKSB7
CiAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CiAgICAgICAgICAgICAgICAgaW50ZXJu
YWxzLnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChmYWxzZSk7
CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxHbGlkZVRlc3QsIDApOwogICAgICAg
ICAgICAgfSBlbHNlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>