<?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>165316</bug_id>
          
          <creation_ts>2016-12-02 11:00:10 -0800</creation_ts>
          <short_desc>[OWR] Unskip fast/mediastream/MediaStream-video-element-track-stop.html</short_desc>
          <delta_ts>2017-01-09 03:04:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Alejandro G. Castro">alex</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eocanha</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1255769</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-02 11:00:10 -0800</bug_when>
    <thetext>We have to add proper support to the videoTracks interface and solve the modifycation of the ended attribute in the tracks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255779</commentid>
    <comment_count>1</comment_count>
      <attachid>295968</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-02 11:31:24 -0800</bug_when>
    <thetext>Created attachment 295968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255780</commentid>
    <comment_count>2</comment_count>
      <attachid>295969</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-02 11:32:34 -0800</bug_when>
    <thetext>Created attachment 295969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256275</commentid>
    <comment_count>3</comment_count>
      <attachid>295969</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-12-05 00:09:41 -0800</bug_when>
    <thetext>Comment on attachment 295969
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:29
&gt; +#include &quot;MediaPlayerPrivateGStreamer.h&quot;

Why is this needed?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:405
&gt; +    /* auto mediaSource = OWR_MEDIA_SOURCE(realTimeMediaSource.mediaSource()); */

left-over? :)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:412
&gt; +        if (track.enabled())
&gt; +            g_object_set(m_audioRenderer.get(), &quot;disabled&quot;, false, nullptr);
&gt; +        else
&gt; +            g_object_set(m_audioRenderer.get(), &quot;disabled&quot;, true, nullptr);

g_object_set(m_audioRenderer.get(), &quot;disabled&quot;, !track.enabled(), nullptr);

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:421
&gt; +            videoTrack-&gt;setSelected(false);

There&apos;s no need to call setSelected(true) in the other condition?

&gt; Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:359
&gt; +        source = adoptRef(new RealtimeAudioSourceOwr(nullptr, id, type, name));
&gt; +        name = &quot;remote audio&quot;;

Shouldn&apos;t name be assigned before source?

&gt; Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:363
&gt; +        source = adoptRef(new RealtimeVideoSourceOwr(nullptr, id, type, name));
&gt; +        name = &quot;remote video&quot;;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259433</commentid>
    <comment_count>4</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-13 10:23:21 -0800</bug_when>
    <thetext>Thanks for the review :)

(In reply to comment #3)
&gt; Comment on attachment 295969 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295969&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:29
&gt; &gt; +#include &quot;MediaPlayerPrivateGStreamer.h&quot;
&gt; 
&gt; Why is this needed?
&gt; 

Left-over, I&apos;ll fix it.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:405
&gt; &gt; +    /* auto mediaSource = OWR_MEDIA_SOURCE(realTimeMediaSource.mediaSource()); */
&gt; 
&gt; left-over? :)
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:412
&gt; &gt; +        if (track.enabled())
&gt; &gt; +            g_object_set(m_audioRenderer.get(), &quot;disabled&quot;, false, nullptr);
&gt; &gt; +        else
&gt; &gt; +            g_object_set(m_audioRenderer.get(), &quot;disabled&quot;, true, nullptr);
&gt; 
&gt; g_object_set(m_audioRenderer.get(), &quot;disabled&quot;, !track.enabled(), nullptr);
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:421
&gt; &gt; +            videoTrack-&gt;setSelected(false);
&gt; 
&gt; There&apos;s no need to call setSelected(true) in the other condition?
&gt; 

Yep, the selection should happen when we load or unmute because it is enabled by default, but it is true we have to go back if we enable again. I&apos;ll review the logic again to make sure we have all the cases considering both specs involved.

&gt; &gt; Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:359
&gt; &gt; +        source = adoptRef(new RealtimeAudioSourceOwr(nullptr, id, type, name));
&gt; &gt; +        name = &quot;remote audio&quot;;
&gt; 
&gt; Shouldn&apos;t name be assigned before source?
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:363
&gt; &gt; +        source = adoptRef(new RealtimeVideoSourceOwr(nullptr, id, type, name));
&gt; &gt; +        name = &quot;remote video&quot;;
&gt; 
&gt; Ditto

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260112</commentid>
    <comment_count>5</comment_count>
      <attachid>297188</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-15 02:49:21 -0800</bug_when>
    <thetext>Created attachment 297188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260120</commentid>
    <comment_count>6</comment_count>
      <attachid>297188</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 05:16:09 -0800</bug_when>
    <thetext>Comment on attachment 297188
Patch

Clearing flags on attachment: 297188

Committed r209860: &lt;http://trac.webkit.org/changeset/209860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260121</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 05:16:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260911</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-17 01:30:42 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 297188 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 297188
&gt; 
&gt; Committed r209860: &lt;http://trac.webkit.org/changeset/209860&gt;

It made 50+ tests crash on the GTK bot and the bot doeesn&apos;t run  any more tests after 50+ crashes. See build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260912</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-17 02:17:36 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; Comment on attachment 297188 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 297188
&gt; &gt; 
&gt; &gt; Committed r209860: &lt;http://trac.webkit.org/changeset/209860&gt;
&gt; 
&gt; It made 50+ tests crash on the GTK bot and the bot doeesn&apos;t run  any more
&gt; tests after 50+ crashes. See build.webkit.org for details.

Thanks for the heads up, I&apos;ll check the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260949</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-12-17 11:13:44 -0800</bug_when>
    <thetext>This looks serious, the OWR player is selected for non-mediastream use-cases. I&apos;ll roll the patch out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260950</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-12-17 11:16:10 -0800</bug_when>
    <thetext>
Thread 1 (Thread 0x2b4948768940 (LWP 20524)):
#0  0x00002b4939551f1b in _ZN7WebCore30MediaPlayerPrivateGStreamerOwr7setSizeERKNS_7IntSizeE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#1  0x00002b49392f39f6 in _ZN7WebCore11RenderVideo12updatePlayerEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#2  0x00002b4938c8b0d1 in _ZN7WebCore16HTMLVideoElement14setDisplayModeENS_16HTMLMediaElement11DisplayModeE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#3  0x00002b4938c8b225 in _ZN7WebCore16HTMLVideoElement18updateDisplayStateEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#4  0x00002b4938c57dda in _ZN7WebCore16HTMLMediaElement12loadResourceERKNS_3URLERNS_11ContentTypeERKN3WTF6StringE () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#5  0x00002b4938c58961 in _ZN7WebCore16HTMLMediaElement19selectMediaResourceEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#6  0x00002b4938c5a0ba in _ZN7WebCore16HTMLMediaElement23pendingActionTimerFiredEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#7  0x00002b4938fb428f in _ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#8  0x00002b493c3b74ba in _ZZN3WTF7RunLoop9TimerBaseC4ERS0_ENUlPvE_4_FUNES3_ () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#9  0x00002b493febeecd in g_main_dispatch () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:3122
#10 g_main_context_dispatch () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:3737
#11 0x00002b493febf268 in g_main_context_iterate () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:3808
#12 0x00002b493febf582 in g_main_loop_run () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:4002
#13 0x00002b493c3b7860 in _ZN3WTF7RunLoop3runEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#14 0x00002b49385fcd42 in WebProcessMainUnix () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#15 0x00002b4942171b45 in __libc_start_main (main=0x400bf0 &lt;main&gt;, argc=2, argv=0x7ffe8dab93b8, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=0x7ffe8dab93a8) at libc-start.c:287
#16 0x0000000000400c45 in _start ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260954</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-12-17 11:34:10 -0800</bug_when>
    <thetext>Manual rollout in https://trac.webkit.org/changeset/209968 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262281</commentid>
    <comment_count>13</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-22 03:15:02 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Manual rollout in https://trac.webkit.org/changeset/209968 .

Thanks for the rollout, the engine selection code allows the elements to call API functions such as setSize even when it failed, until it gets the definitive engine, so we have to protect from that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262282</commentid>
    <comment_count>14</comment_count>
      <attachid>297651</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-22 03:53:55 -0800</bug_when>
    <thetext>Created attachment 297651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262541</commentid>
    <comment_count>15</comment_count>
      <attachid>297651</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-12-23 01:50:04 -0800</bug_when>
    <thetext>Comment on attachment 297651
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:492
&gt; +        auto&amp; realTimeMediaSource = static_cast&lt;RealtimeMediaSourceOwr&amp;&gt;(m_videoTrack-&gt;source());

Have you checked if naturalSize() can be called before loading, during the player private selection process? In that case, m_videoTrack might be null and you could be dereferencing a null pointer. I suspect there might also be other cases where m_videoTrack could be null at this point.

&gt; Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:76
&gt; +    const RealtimeMediaSourceSettings&amp; settings() const;

To my understanding, this should keep being &quot;override&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262542</commentid>
    <comment_count>16</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-23 01:57:09 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #15)
&gt; Comment on attachment 297651 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297651&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:492
&gt; &gt; +        auto&amp; realTimeMediaSource = static_cast&lt;RealtimeMediaSourceOwr&amp;&gt;(m_videoTrack-&gt;source());
&gt; 
&gt; Have you checked if naturalSize() can be called before loading, during the
&gt; player private selection process? In that case, m_videoTrack might be null
&gt; and you could be dereferencing a null pointer. I suspect there might also be
&gt; other cases where m_videoTrack could be null at this point.
&gt; 

Good catch, yeah, m_videoTrack must be always protected.

&gt; &gt; Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:76
&gt; &gt; +    const RealtimeMediaSourceSettings&amp; settings() const;
&gt; 
&gt; To my understanding, this should keep being &quot;override&quot;.

Yep, it is a typo merging in the last refactor.

Thanks again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262543</commentid>
    <comment_count>17</comment_count>
      <attachid>297707</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-12-23 01:58:45 -0800</bug_when>
    <thetext>Created attachment 297707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262688</commentid>
    <comment_count>18</comment_count>
      <attachid>297707</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-12-25 02:35:22 -0800</bug_when>
    <thetext>Comment on attachment 297707
Patch

Ok, hopefully this time it will stick :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264922</commentid>
    <comment_count>19</comment_count>
      <attachid>297707</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-09 03:04:36 -0800</bug_when>
    <thetext>Comment on attachment 297707
Patch

Clearing flags on attachment: 297707

Committed r210499: &lt;http://trac.webkit.org/changeset/210499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264923</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-09 03:04:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295968</attachid>
            <date>2016-12-02 11:31:24 -0800</date>
            <delta_ts>2016-12-02 11:32:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165316-20161202203053.patch</filename>
            <type>text/plain</type>
            <size>30770</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5M2I1YjI5MTQ5ZWY5
MmJhMzY0ZWVjN2FmOTQxZDY3ZTAyYWFkZS4uYTQ4M2JlNzUzMmY2NDUzZDA3YWEyYmVjZjY2MzIx
MGI3NmE4MDY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE2LTEyLTAyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtPV1JdIFVuc2tp
cCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC5o
dG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUz
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhl
ZCB0aGUgZW5kZWQgc3VwcG9ydCBvZiB0aGUgdmlkZW8gZWxlbWVudCBpbiB0aGUgT1dSIHBsYXll
ciBhbmQKKyAgICAgICAgZml4ZWQgdGhlIHZpZGVvVHJhY2tzIHN1cHBvcnQuIE5vdyB0aGUgT1cg
cGxheWVyIHByb3Blcmx5IGFkZHMgYW5kCisgICAgICAgIHJlbW92ZXMgdGhlIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MuIEFkZGVkIHRoZSBnZXRTZXR0aW5ncyBzdXBwb3J0CisgICAgICAgIHRvIHRo
ZSBtZWRpYXN0cmVhbSBpbnRlcmZhY2UuIFNvbHZlZCBhbHNvIHRoZSBzaXplIGhhbmRsaW5nIGlu
CisgICAgICAgIHNvbWUgb2YgdGhlIGVuYWJsZS9tdXRlZCBzaXR1YXRpb25zLgorCisgICAgICAg
IFVuc2tpcHBpbmcgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRy
YWNrLXN0b3AuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZTogQWRk
ZWQgdGhlIG5ldworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcCB3aXRoIHRoZSBu
ZXcgY29kZSBoYW5kbGluZyB0aGUKKyAgICAgICAgc2V0dGluZ3MuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IpOgorICAgICAgICBSZWxlYXNlIHRoZSBuZXcgdmlk
ZW8gYW5kIGF1ZGlvIG1hcHMgdGhhdCBjcmVhdGVzIGEgcmVsYXRpb25zaGlwCisgICAgICAgIG9m
IHRoZSBtZWRpYXN0cmVhbSB0cmFja3Mgd2l0aCB0aGUgbWVkaWF0cmFja3Mgb2YgdGhlIHZpZGVv
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnBsYXkpOiBTZXQgZW5kZWQgdG8KKyAgICAgICAgZmFsc2Ugd2hlbiB3ZSBzdGFydCBwbGF5
aW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjps
b2FkKTogQ3JlYXRlIHRoZSBtZWRpYQorICAgICAgICB0cmFja3MgdG8gdGhlIHBsYXllciBzbyB0
aGF0IHRoZSB2aWRlb1RyYWNrcyBBUEkgcmV0dXJucyBpdCwgYW5kCisgICAgICAgIGFkZCBhbiBl
bnRyeSBpbiB0aGUgbWFwIHRvIGJlIGFibGUgdG8gcmVzdG9yZSBpdCB1c2luZyB0aGUKKyAgICAg
ICAgbWVkaWFzdHJlYW0gdHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OnN0b3ApOiBTZXQgdGhlIHNpemUgdG8KKyAgICAgICAgemVybyB3aGVu
IHRoZSBzdHJlYW0gc3RvcHMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQpOiBNYWtlIHN1cmUKKyAgICAgICAgd2Ugc2V0IHRoZSBl
bmRlZCB2YXJpYWJsZSB0byB0cnVlIGFuZCBjYWxsIHRoZSB0aW1lQ2hhbmdlIHRvCisgICAgICAg
IG1vZGlmeSB0aGUgc3RhdGUgb2YgdGhlIHBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6bWF5YmVIYW5kbGVDaGFuZ2VNdXRlZFN0YXRlKToK
KyAgICAgICAgV2hlbiB1bm11dGUgd2Ugc2VsZWN0IHRoYXQgdHJhY2sgaW4gdGhlIHZpZGVvIGVs
ZW1lbnQsIHJlcXVpcmVkCisgICAgICAgIGZvciB0aGUgZ2V0U2VsZWN0ZWQgQVBJLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0VuYWJsZWRD
aGFuZ2VkKToKKyAgICAgICAgSGFuZGxlIHByb3Blcmx5IHRoZSBzaXR1YXRpb24gd2hlbiB0aGUg
dXNlciBjaGFuZ2VkIHRoZSBlbmFibGVkCisgICAgICAgIHZhbHVlLCB3ZSBkaXNhYmxlIHRoZSBy
ZW5kZXJpbmcgYW5kIGZvciB0aGUgdmlkZW8gd2UgY2hhbmdlIHNvbWUKKyAgICAgICAgb2YgdGhl
IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
T3dyOjpzZXRTaXplKTogTW9kaWZ5IHRoZQorICAgICAgICBzaXplIG9mIHRoZSBzb3VyY2UuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6Om5hdHVyYWxT
aXplKTogT3ZlcnJpZGVkCisgICAgICAgIHRvIG1ha2Ugc3VyZSB3ZSByZXR1cm4gYSBzaXplIGV2
ZW4gd2hlbiB0aGUgc2FtcGxlIGlzIG5vdCByZWFkeQorICAgICAgICBmb3IgZ3N0LgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJPd3IuaDoKKyAgICAgICAgQWRkZWQgdGhlIGVuZGVkIGF0dHJpYnV0ZSBhbmQgdGhlIG1hcHMu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50
T3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRPd3I6OmNyZWF0ZU11dGVk
UmVtb3RlU291cmNlKTogVXNlIHRoZSBuZXcKKyAgICAgICAgcmVhbHRpbWUgdmlkZW8gYW5kIGF1
ZGlvIHNvdXJjZXMgY2xhc3NlcywgdGhpcyBuZXcgY2xhc3NlcworICAgICAgICBpbXBsZW1lbnQg
dGhlIHNldHRpbmdzIG9mIGVhY2ggdHlwZSBvZiBtZWRpYSBlbGVtZW50LgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpt
ZWRpYVNvdXJjZXNBdmFpbGFibGUpOgorICAgICAgICBVc2UgdGhlIG5ldyBhdWRpbyBhbmQgdmlk
ZW8gc291cmNlIGNsYXNzZXMgaW5zdGVhZCBvZiB0aGUgZ2VuZXJhbAorICAgICAgICBvbmUgaW4g
b3JkZXIgdG8gaGFuZGxlIHRoZSBzZXR0aW5ncyBwcm9wZXJseS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuY3BwOiBBZGRl
ZAorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c2V0dGluZ3MpOiBJ
bml0aWFsaXplIHVzaW5nIHRoZQorICAgICAgICBzdWJjbGFzcyBhbmQgcmV0dXJuIHRoZSBuZXcg
Y3VycmVudFNldHRpbmdzIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VPd3I6OnN1cHBvcnRlZENvbnN0cmFpbnRzKTogQ2FsbCB0aGUKKyAgICAgICAgc3Vi
Y2xhc3MgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6aW5pdGlhbGl6ZVNl
dHRpbmdzKTogQWRkZWQgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSB0aGUgc2V0dGluZ3MgYmVmb3Jl
IHJldHVybmluZyB0aGUgdmFsdWUuIEltcGxlbWVudGVkIGluCisgICAgICAgIHRoZSBzdWJjbGFz
cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VPd3I6OmluaXRpYWxpemVT
dXBwb3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIEFkZGVkIHRvIGluaXRpYWxpemUgdGhlIHN1
cHBvcnRlZCBzZXR0aW5ncyBvZiB0aGUKKyAgICAgICAgbWVkaWEuIEltcGxlbWVudGVkIGluIHRo
ZSBzdWJjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VPd3I6OnNl
dHRpbmdzKTogTW92ZWQgdG8gdGhlIGNwcAorICAgICAgICBmaWxlLCBpbXBsZW1lbnRlZCB1c2lu
ZyB0aGUgaW5pdGlhbGl6ZSBmdW5jdGlvbnMgb2YgdGhlIHN1YmNsYXNzCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZpZGVvU291cmNlT3dyLmg6IEFk
ZGVkCisgICAgICAgIHRoaXMgbmV3IGNsYXNzIHRvIGhhbmRsZSB0aGUgc2V0dGluZ3Mgb2YgdGhl
IHZpZGVvIGVsZW1lbnRzLiBUaGUKKyAgICAgICAgY2xhc3MgaW5pdGlhbGl6ZXMgdGhlIHNldHRp
bmdzIGFuZCB0aGUgc3VwcG9ydGVkU2V0dGluZ3MuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZUF1ZGlvU291cmNlT3dyLmg6IEFkZGVkCisgICAgICAg
IHRoaXMgbmV3IGNsYXNzIHRvIGhhbmRsZSB0aGUgc2V0dGluZ3Mgb2YgdGhlIGF1ZGlvIGVsZW1l
bnRzLiBUaGUKKyAgICAgICAgY2xhc3MgaW5pdGlhbGl6ZXMgdGhlIHNldHRpbmdzIGFuZCB0aGUg
c3VwcG9ydGVkU2V0dGluZ3MuCisKKwogMjAxNi0xMi0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5DYWlybyBidWlsZCBhZnRl
ciByMjA4OTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggNzZk
ZTA4NWExYzdkNWUyMDVhNTUxNzY4NGIwZTgxYWM0NGFjZGNiMi4uYjRjYzA5NmZiZWZmNzgxYzVj
MjU0MGE3NzQ5ZWE4NjgzZjBkNDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1l
ci5jbWFrZQpAQCAtMTYsNiArMTYsNyBAQCBpZiAoRU5BQkxFX01FRElBX1NUUkVBTSkKIAogICAg
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvT3BlbldlYlJUQ1V0aWxp
dGllcy5jcHAKKyAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGlt
ZU1lZGlhU291cmNlT3dyLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCiAgICAgKQogZW5kaWYgKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKaW5k
ZXggM2YwMGU4ZDFkMzI1MzNlNjhkMjcxZDU1Y2JkYTdkY2IwOTExZGM4NC4uOWVjNDUyODE1NDQ4
YmM3MTE0YjQxYWRhMzUwNDE1NDg1ZDk0N2RkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lu
Y2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlT3dyLmgiCkBAIC01Niw2ICs1Nyw5IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cigpCiAgICAg
aWYgKGhhc1ZpZGVvKCkpCiAgICAgICAgIG1fdmlkZW9UcmFjay0+cmVtb3ZlT2JzZXJ2ZXIoKnRo
aXMpOwogCisgICAgbV9hdWRpb1RyYWNrTWFwLmNsZWFyKCk7CisgICAgbV92aWRlb1RyYWNrTWFw
LmNsZWFyKCk7CisKICAgICBzdG9wKCk7CiB9CiAKQEAgLTY5LDYgKzczLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnBsYXkoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgbV9lbmRlZCA9IGZhbHNlOwogICAgIG1fcGF1c2VkID0gZmFsc2U7CiAKICAgICBH
U1RfREVCVUcoIkNvbm5lY3RpbmcgdG8gbGl2ZSBzdHJlYW0sIGRlc2NyaXB0b3I6ICVwIiwgbV9z
dHJlYW1Qcml2YXRlLmdldCgpKTsKQEAgLTIwMSw2ICsyMDYsOSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck93cjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbVByaXZh
dGUpCiAgICAgICAgICAgICAgICAgU3RyaW5nIHByZVNlbGVjdGVkRGV2aWNlID0gZ2V0ZW52KCJX
RUJLSVRfQVVESU9fREVWSUNFIik7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmVTZWxlY3RlZERl
dmljZSB8fCAocHJlU2VsZWN0ZWREZXZpY2UgPT0gdHJhY2stPmxhYmVsKCkpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fYXVkaW9UcmFjayA9IHRyYWNrOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUoKm1f
YXVkaW9UcmFjay5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fcGxheWVyLT5hZGRBdWRp
b1RyYWNrKCphdWRpb1RyYWNrKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hdWRpb1RyYWNrTWFw
LmFkZCh0cmFjay0+aWQoKSwgYXVkaW9UcmFjayk7CiAgICAgICAgICAgICAgICAgICAgIG9ic2Vy
dmVUcmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjEw
LDYgKzIxOCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6bG9hZChN
ZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbVByaXZhdGUpCiAgICAgICAgICAgICAgICAgU3RyaW5n
IHByZVNlbGVjdGVkRGV2aWNlID0gZ2V0ZW52KCJXRUJLSVRfVklERU9fREVWSUNFIik7CiAgICAg
ICAgICAgICAgICAgaWYgKCFwcmVTZWxlY3RlZERldmljZSB8fCAocHJlU2VsZWN0ZWREZXZpY2Ug
PT0gdHJhY2stPmxhYmVsKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fdmlkZW9UcmFjayA9
IHRyYWNrOworICAgICAgICAgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fdmlkZW9UcmFjay5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIHZpZGVvVHJhY2stPnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICAgICAg
ICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdmlkZW9UcmFjayk7CisgICAgICAgICAg
ICAgICAgICAgIG1fdmlkZW9UcmFja01hcC5hZGQodHJhY2stPmlkKCksIHZpZGVvVHJhY2spOwog
ICAgICAgICAgICAgICAgICAgICBvYnNlcnZlVHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTI1Niw2ICsyNjgsMTAgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJPd3I6OnN0b3AoKQogICAgICAgICBHU1RfREVCVUcoIlN0b3A6IGRpc2Nv
bm5lY3RpbmcgdmlkZW8iKTsKICAgICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5n
ZXQoKSwgImRpc2FibGVkIiwgVFJVRSwgbnVsbHB0cik7CiAgICAgICAgIG93cl9tZWRpYV9yZW5k
ZXJlcl9zZXRfc291cmNlKE9XUl9NRURJQV9SRU5ERVJFUihtX3ZpZGVvUmVuZGVyZXIuZ2V0KCkp
LCBudWxscHRyKTsKKyAgICAgICAgYXV0byYgcmVhbFRpbWVNZWRpYVNvdXJjZSA9IHN0YXRpY19j
YXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3ImPihtX3ZpZGVvVHJhY2stPnNvdXJjZSgpKTsKKyAg
ICAgICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRXaWR0aCgwKTsKKyAgICAgICAgcmVhbFRpbWVN
ZWRpYVNvdXJjZS5zZXRIZWlnaHQoMCk7CisKICAgICB9CiB9CiAKQEAgLTMzMCw2ICszNDYsOSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmRlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIGdfb2JqZWN0X3NldChtX2F1ZGlvUmVu
ZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIFRSVUUsIG51bGxwdHIpOwogICAgIGVsc2UgaWYgKCZ0
cmFjayA9PSBtX3ZpZGVvVHJhY2spCiAgICAgICAgIGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVy
ZXIuZ2V0KCksICJkaXNhYmxlZCIsIFRSVUUsIG51bGxwdHIpOworCisgICAgbV9lbmRlZCA9IHRy
dWU7CisgICAgbV9wbGF5ZXItPnRpbWVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYgdHJhY2spCkBAIC0zNjEsNiArMzgwLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3I6Om1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZShNZWRpYVN0cmVhbVRyYWMK
ICAgICAgICAgaWYgKCFyZWFsVGltZU1lZGlhU291cmNlLm11dGVkKCkpIHsKICAgICAgICAgICAg
IGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIGZhbHNlLCBu
dWxscHRyKTsKICAgICAgICAgICAgIG93cl9tZWRpYV9yZW5kZXJlcl9zZXRfc291cmNlKE9XUl9N
RURJQV9SRU5ERVJFUihtX3ZpZGVvUmVuZGVyZXIuZ2V0KCkpLCBtZWRpYVNvdXJjZSk7CisgICAg
ICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0KHRyYWNrLmlkKCkp
OworICAgICAgICAgICAgdmlkZW9UcmFjay0+c2V0U2VsZWN0ZWQodHJ1ZSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgpLCAi
ZGlzYWJsZWQiLCB0cnVlLCBudWxscHRyKTsKICAgICAgICAgICAgIG93cl9tZWRpYV9yZW5kZXJl
cl9zZXRfc291cmNlKE9XUl9NRURJQV9SRU5ERVJFUihtX3ZpZGVvUmVuZGVyZXIuZ2V0KCkpLCBu
dWxscHRyKTsKQEAgLTM3OSw3ICs0MDAsMzAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJPd3I6OnRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXQKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0VuYWJsZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKICAgICBHU1RfREVCVUcoIiVzIHRyYWNr
IG5vdyAlcyIsIHRyYWNrLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyA/ICJh
dWRpbyI6InZpZGVvIiwgdHJhY2suZW5hYmxlZCgpID8gImVuYWJsZWQiOiJkaXNhYmxlZCIpOwot
ICAgIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZSh0cmFjayk7CisKKyAgICBhdXRvJiByZWFs
VGltZU1lZGlhU291cmNlID0gc3RhdGljX2Nhc3Q8UmVhbHRpbWVNZWRpYVNvdXJjZU93ciY+KHRy
YWNrLnNvdXJjZSgpKTsKKyAgICAvKiBhdXRvIG1lZGlhU291cmNlID0gT1dSX01FRElBX1NPVVJD
RShyZWFsVGltZU1lZGlhU291cmNlLm1lZGlhU291cmNlKCkpOyAqLworCisgICAgc3dpdGNoICh0
cmFjay50eXBlKCkpIHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgorICAg
ICAgICBpZiAodHJhY2suZW5hYmxlZCgpKQorICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fYXVk
aW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVkIiwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBnX29iamVjdF9zZXQobV9hdWRpb1JlbmRlcmVyLmdldCgpLCAiZGlz
YWJsZWQiLCB0cnVlLCBudWxscHRyKTsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvOgorICAgICAgICBpZiAodHJhY2suZW5hYmxlZCgpKQorICAgICAgICAgICAgZ19vYmplY3Rf
c2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVkIiwgZmFsc2UsIG51bGxwdHIpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVyZXIu
Z2V0KCksICJkaXNhYmxlZCIsIHRydWUsIG51bGxwdHIpOworICAgICAgICAgICAgcmVhbFRpbWVN
ZWRpYVNvdXJjZS5zZXRXaWR0aCgwKTsKKyAgICAgICAgICAgIHJlYWxUaW1lTWVkaWFTb3VyY2Uu
c2V0SGVpZ2h0KDApOworICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gbV92aWRlb1RyYWNr
TWFwLmdldCh0cmFjay5pZCgpKTsKKyAgICAgICAgICAgIHZpZGVvVHJhY2stPnNldFNlbGVjdGVk
KGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6Ok5vbmU6CisgICAgICAgIEdTVF9XQVJOSU5HKCJUcnlpbmcgdG8gY2hhbmdlIGVu
YWJsZWQgc3RhdGUgb2YgYSB0cmFjayB3aXRoIE5vbmUgdHlwZSIpOworICAgIH0KIH0KIAogR3N0
RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpjcmVhdGVWaWRlb1Npbmso
KQpAQCAtNDI2LDYgKzQ3MCwyMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93
cjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnNldFNpemUoc2l6ZSk7CiAgICAgaWYgKG1fdmlkZW9SZW5kZXJlcikKICAg
ICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgIndpZHRoIiwgc2l6ZS53
aWR0aCgpLCAiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQoKSwgbnVsbHB0cik7CisKKyAgICBhdXRvJiBy
ZWFsVGltZU1lZGlhU291cmNlID0gc3RhdGljX2Nhc3Q8UmVhbHRpbWVNZWRpYVNvdXJjZU93ciY+
KG1fdmlkZW9UcmFjay0+c291cmNlKCkpOworICAgIHJlYWxUaW1lTWVkaWFTb3VyY2Uuc2V0V2lk
dGgoc2l6ZS53aWR0aCgpKTsKKyAgICByZWFsVGltZU1lZGlhU291cmNlLnNldEhlaWdodChzaXpl
LmhlaWdodCgpKTsKK30KKworRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93
cjo6bmF0dXJhbFNpemUoKSBjb25zdAoreworICAgIGF1dG8gc2l6ZSA9IE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCk7CisKKyAgICAvLyBJbiBjYXNlIHdlIGFy
ZSBub3QgcGxheWluZyB0aGUgdmlkZW8gd2UgcmV0dXJuIHRoZSBzaXplIHdlIHNldCB0byB0aGUg
bWVkaWEgc291cmNlLgorICAgIGlmIChzaXplLmlzWmVybygpKSB7CisgICAgICAgIGF1dG8mIHJl
YWxUaW1lTWVkaWFTb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGltZU1lZGlhU291cmNlT3dyJj4o
bV92aWRlb1RyYWNrLT5zb3VyY2UoKSk7CisgICAgICAgIHJldHVybiByZWFsVGltZU1lZGlhU291
cmNlLnNpemUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2l6ZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck93ci5oCmluZGV4IGU2MjJkNDI1OWY2YTljYTkyM2Y2ZjEwNDJiOWFkN2FjYmJiODczYWIuLjA4
OTI1MmE1NzJhOTAyNTdiMzc3MWU3M2RjZDllN2YwYTBiMDg2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmgKQEAgLTIyLDggKzIyLDEwIEBA
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RS
RUFNRVIpICYmIFVTRShPUEVOV0VCUlRDKQogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX093ckdzdFZpZGVv
UmVuZGVyZXIgT3dyR3N0VmlkZW9SZW5kZXJlcjsKIHR5cGVkZWYgc3RydWN0IF9Pd3JHc3RBdWRp
b1JlbmRlcmVyIE93ckdzdEF1ZGlvUmVuZGVyZXI7CkBAIC00Miw2ICs0NCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAKKyAgICBGbG9hdFNp
emUgbmF0dXJhbFNpemUoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBHc3RFbGVtZW50
KiBjcmVhdGVWaWRlb1NpbmsoKSBmaW5hbDsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F1ZGlvU2luay5nZXQoKTsgfQpAQCAtODcsNiArOTEsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0K
KyAgICBib29sIGVuZGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lbmRlZDsgfQogCiAgICAg
Ly8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIGltcGxlbWVudGF0aW9uLgogICAg
IHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsOwpAQCAtMTAz
LDEyICsxMDgsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRT
dGF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBtX3BhdXNlZCB7IHRy
dWUgfTsKKyAgICBib29sIG1fZW5kZWQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gbV92aWRlb1RyYWNrOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4gbV9hdWRpb1RyYWNrOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdWRpb1Np
bms7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9zdHJlYW1Qcml2YXRlOwogICAg
IEdSZWZQdHI8T3dyR3N0VmlkZW9SZW5kZXJlcj4gbV92aWRlb1JlbmRlcmVyOwogICAgIEdSZWZQ
dHI8T3dyR3N0QXVkaW9SZW5kZXJlcj4gbV9hdWRpb1JlbmRlcmVyOworCisgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNr
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
TWVkaWFFbmRwb2ludE93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCmluZGV4IGE3YTIxZjRhZjEzMTlhMWNi
YzZhZDA3OGU2OWFhNjk3NmQyN2ZiZmMuLjA1MTkwYzM3N2M1ZmFjM2NlNTFkZWQzMTRlZWZiMGZl
ZWUxNjMwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApAQCAtMzks
NyArMzksOCBAQAogI2luY2x1ZGUgIk9wZW5XZWJSVENVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQ
ZWVyQ29ubmVjdGlvblN0YXRlcy5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
IgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZUF1ZGlvU291cmNlT3dyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oIgog
I2luY2x1ZGUgPG93ci9vd3IuaD4KICNpbmNsdWRlIDxvd3Ivb3dyX2F1ZGlvX3BheWxvYWQuaD4K
ICNpbmNsdWRlIDxvd3Ivb3dyX2NyeXB0b191dGlscy5oPgpAQCAtMzUwLDE1ICszNTEsMjEgQEAg
UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1lZGlhRW5kcG9pbnRPd3I6OmNyZWF0ZU11dGVkUmVt
b3RlU291cmNlKGNvbnN0IFN0cmluZyYKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJpbmcg
aWQoIm5vdCB1c2VkIik7CisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I+IHNvdXJj
ZTsKIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW86IG5hbWUgPSAicmVtb3RlIGF1ZGlvIjsgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlbzogbmFtZSA9ICJyZW1vdGUgdmlkZW8iOyBicmVhazsKKyAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgorICAgICAgICBzb3VyY2UgPSBhZG9wdFJlZihu
ZXcgUmVhbHRpbWVBdWRpb1NvdXJjZU93cihudWxscHRyLCBpZCwgdHlwZSwgbmFtZSkpOworICAg
ICAgICBuYW1lID0gInJlbW90ZSBhdWRpbyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW86CisgICAgICAgIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBS
ZWFsdGltZVZpZGVvU291cmNlT3dyKG51bGxwdHIsIGlkLCB0eXBlLCBuYW1lKSk7CisgICAgICAg
IG5hbWUgPSAicmVtb3RlIHZpZGVvIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZU93cj4gc291cmNlID0gYWRvcHRSZWYo
bmV3IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IobnVsbHB0ciwgaWQsIHR5cGUsIG5hbWUpKTsKICAg
ICBtX211dGVkUmVtb3RlU291cmNlcy5zZXQobWlkLCBzb3VyY2UpOwogCiAgICAgcmV0dXJuICpz
b3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9v
cGVud2VicnRjL1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzNDlmMDUxYjBmMzZjMzQ0MzhlNDMyZmE3MzhiMjEwN2U5NDkyOTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1LDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1IE1ldHJv
bG9naWNhbAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQorCisjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZU93ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJl
YWx0aW1lQXVkaW9Tb3VyY2VPd3IgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZU93ciB7Citw
dWJsaWM6CitSZWFsdGltZUF1ZGlvU291cmNlT3dyKE93ck1lZGlhU291cmNlKiBtZWRpYVNvdXJj
ZSwgY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlT3dyKG1lZGlhU291cmNl
LCBpZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQorCitSZWFsdGltZUF1ZGlvU291cmNlT3dy
KGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZU93cihpZCwgdHlwZSwgbmFt
ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVhbHRpbWVBdWRpb1NvdXJjZU93cigp
IHsgfQorCisgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIGZp
bmFsIHsKKyAgICAgICAgaWYgKG1fY3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhz
dXBwb3J0ZWRDb25zdHJhaW50cygpKTsKKworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRE
ZXZpY2VJZChpZCgpKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoT1BFTldFQlJUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCmluZGV4
IDY3YzkxYjhlNGFhY2QxYzA0YzRjMTBmNjAwMTRlNjczZjZhZmQ1NWEuLmYzZTZmMWZlZDlkMjRi
Zjg3Y2M4NzRmMjY1MzMwNDRmZjkwNDg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcApAQCAtNDAsNyArNDAsOSBAQAogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiT3BlbldlYlJUQ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lQXVk
aW9Tb3VyY2VPd3IuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oIgogI2luY2x1ZGUgIlVVSUQu
aCIKICNpbmNsdWRlIDxvd3Ivb3dyLmg+CiAjaW5jbHVkZSA8b3dyL293cl9sb2NhbC5oPgpAQCAt
MTQ5LDE2ICsxNTEsMjEgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjptZWRp
YVNvdXJjZXNBdmFpbGFibGUoR0xpc3QqIHNvdXJjZXMpCiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWVkaWFTb3VyY2UgPSBhZG9w
dFJlZigqbmV3IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VU
eXBlLCBzb3VyY2VOYW1lKSk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlT3dy
PiBtZWRpYVNvdXJjZTsKKyAgICAgICAgaWYgKG1lZGlhU291cmNlVHlwZSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbykKKyAgICAgICAgICAgIG1lZGlhU291cmNlID0gYWRvcHRSZWYobmV3
IFJlYWx0aW1lQXVkaW9Tb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VUeXBlLCBzb3Vy
Y2VOYW1lKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lZGlhU291cmNlID0gYWRvcHRS
ZWYobmV3IFJlYWx0aW1lVmlkZW9Tb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VUeXBl
LCBzb3VyY2VOYW1lKSk7CiAKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZU93ck1hcDo6aXRl
cmF0b3Igc291cmNlSXRlcmF0b3IgPSBtX3NvdXJjZU1hcC5maW5kKGlkKTsKICAgICAgICAgaWYg
KHNvdXJjZUl0ZXJhdG9yID09IG1fc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgbV9zb3Vy
Y2VNYXAuYWRkKGlkLCBtZWRpYVNvdXJjZS5jb3B5UmVmKCkpOwogCiAgICAgICAgIGlmIChtZWRp
YVR5cGUgJiBPV1JfTUVESUFfVFlQRV9BVURJTykKLSAgICAgICAgICAgIGF1ZGlvU291cmNlcy5h
cHBlbmQoV1RGTW92ZShtZWRpYVNvdXJjZSkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChtZWRpYVNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgZWxzZSBpZiAobWVk
aWFUeXBlICYgT1dSX01FRElBX1RZUEVfVklERU8pCi0gICAgICAgICAgICB2aWRlb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUobWVkaWFTb3VyY2UpKTsKKyAgICAgICAgICAgIHZpZGVvU291cmNlcy5h
cHBlbmQobWVkaWFTb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisKICAgICB9CiAKICAgICBpZiAo
dmlkZW9Tb3VyY2VzLmlzRW1wdHkoKSAmJiBhdWRpb1NvdXJjZXMuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFs
dGltZU1lZGlhU291cmNlT3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3
NDk5ZDM4MDA2NmYxNGFiNmM5Y2IwMDg3YmU0YjZkZDA4Nzg1ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVN
ZWRpYVNvdXJjZU93ci5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VPd3I6OnNldHRpbmdzKCkgY29uc3QKK3sKKyAgICBjb25zdF9jYXN0PFJlYWx0aW1lTWVkaWFT
b3VyY2VPd3ImPigqdGhpcykuaW5pdGlhbGl6ZVNldHRpbmdzKCk7CisgICAgcmV0dXJuIG1fY3Vy
cmVudFNldHRpbmdzOworfQorCitSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMmIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKK3sKKyAg
ICBpZiAobV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0RldmljZUlkKCkpCisgICAgICAg
IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOworCisgICAgbV9zdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAgIGluaXRpYWxpemVTdXBwb3J0ZWRD
b25zdHJhaW50cyhtX3N1cHBvcnRlZENvbnN0cmFpbnRzKTsKKworICAgIHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoT1BFTldFQlJUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRp
YVNvdXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKaW5kZXggMDFiMmI3ZWEzYjBkYmE2OTVhMDMx
YzM0MjdlOGUwMmQ2NzBhMzc2NC4uNTg4Y2EyYjFiMzY4YzdjZjZmNWNkMTc2Y2Q5ZDU0MjMyMTcw
YTU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Bl
bndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKQEAg
LTczLDEzICs3MywyMiBAQCBSZWFsdGltZU1lZGlhU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgUwogICAgIH0KIAogICAgIHZp
cnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGll
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0gICAgdmlydHVhbCBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50U2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdDsKIAogICAgIE93ck1lZGlhU291cmNlKiBtZWRpYVNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTb3VyY2U7IH0KIAorcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMmKSB7IH07CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpOworCisgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOworCiBwcml2YXRlOgorCisgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7
CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0
aWVzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsK
KwogICAgIE93ck1lZGlhU291cmNlKiBtX21lZGlhU291cmNlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZp
ZGVvU291cmNlT3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzY2YTNlMmI5NjEz
NjBlODg2YjNkMDZjYmVkOTEzMTMyZmIxNDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZpZGVvU291cmNl
T3dyLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwyMDE2IEln
YWxpYSBTLkwKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNZXRyb2xvZ2ljYWwKKyAqCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoT1BFTldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VPd3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWFsdGltZVZpZGVvU291cmNlT3dy
IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IgeworcHVibGljOgorUmVhbHRpbWVWaWRl
b1NvdXJjZU93cihPd3JNZWRpYVNvdXJjZSogbWVkaWFTb3VyY2UsIGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZU93cihtZWRpYVNvdXJjZSwgaWQsIHR5cGUsIG5hbWUpCisg
ICAgeworICAgIH0KKworUmVhbHRpbWVWaWRlb1NvdXJjZU93cihjb25zdCBTdHJpbmcmIGlkLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6
IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoaWQsIHR5cGUsIG5hbWUpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgflJlYWx0aW1lVmlkZW9Tb3VyY2VPd3IoKSB7IH0KKworICAgIGJvb2wgYXBw
bHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIGZpbmFsIHsKKyAgICAgICAgaWYgKG1f
Y3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jdXJy
ZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJhaW50cygp
KTsKKworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKKworICAg
ICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOworICAgICAg
ICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aChzaXplKCkud2lkdGgoKSk7CisgICAgICAgIG1f
Y3VycmVudFNldHRpbmdzLnNldEhlaWdodChzaXplKCkuaGVpZ2h0KCkpOworICAgIH0KKworICAg
IHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpIGZpbmFsIHsKKyAgICAg
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGYWNpbmdNb2RlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bik7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRz
LnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNl
dFN1cHBvcnRzSGVpZ2h0KHRydWUpOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRT
dXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5z
ZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoT1BFTldFQlJU
QykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3MTVmNjIwMzU1ZDlhNjcyNDcxMTNkYzc4OTZkYjg4YWUzODY2MGE1Li4zNjU5
NjA0NTc3MGMwMGM1ZmNlYTI5Y2Y3NDk0ZTdlYzE5ZDBmNjMyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTYtMTItMDIgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisK
KyAgICAgICAgW09XUl0gVW5za2lwIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8t
ZWxlbWVudC10cmFjay1zdG9wLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcHBl
ZCB0aGUgdGVzdCBhbmQgbW92ZWQgdGhlCisgICAgICAgIHN0b3Agb25lLCBub3cgaXQgZG9lcyBu
b3QgdGltZW91dCBiZWNhdXNlIHdlIGNvcnJlY3RseSBoYW5kbGUgdGhlCisgICAgICAgIGVuZGVk
IHZhbHVlIGJ1dCBzdGlsbCBmYWlscywgd2UgbmVlZCBtb3JlIGZlYXR1cmVzIGluIHRoZSBtb2Nr
CisgICAgICAgIGNsYXNzZXMgZm9yIG93ci4KKwogMjAxNi0xMi0wMSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIEZh
ZGUgY29udHJvbHMgaW4gd2hlbiBlbnRlcmluZyBhbmQgZXhpdGluZyBmdWxsc2NyZWVuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRlMzVjZmU1MmY1YmNi
ODMyOGVhYWVmNWU5ZGU1NTJlYTczNjJmZGYuLjVjNjVmNzg5NWQyOTZmOGQ1NGY1ZjY5YzI1NWZj
MDdmN2ViMGRkYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMDgsNyArMzA4LDYgQEAgd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvZXZlbnRzL2NvbnN0
cnVjdG9ycy9tZWRpYS1zdHJlYW0tZXZlbnQtY29uc3RydWN0b3IuaHRtbAogd2Via2l0Lm9yZy9i
Lzc5MjAzIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9kZXN0aW5hdGlvbm5vZGUuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vu
b2RlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAz
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTEzNDQgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS1hZGQtZW5kZWQtdHJhY2tzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTEzNDQg
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9tb2NrLW1lZGlhLXNvdXJj
ZS5odG1sIFsgU2tpcCBdCkBAIC0zMTcsNiArMzE2LDcgQEAgd2Via2l0Lm9yZy9iLzE2MDk5NiBm
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRp
c2EKIHdlYmtpdC5vcmcvYi8xNjA5OTYgZmFzdC9tZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50
cy1hZHZhbmNlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYwOTk2IGZhc3QvbWVkaWFz
dHJlYW0vYXBwbHktY29uc3RyYWludHMtYXVkaW8uaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzE2MDk5NiBmYXN0L21lZGlhc3RyZWFtL2FwcGx5LWNvbnN0cmFpbnRzLXZpZGVvLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8xNjE5NTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LWRpc3BsYXlzLWJ1ZmZlci5odG1sIFsgU2tpcCBdCiAKICMgUHJveGltaXR5
IEV2ZW50cyBpcyBub3Qgc3VwcG9ydGVkLgogd2Via2l0Lm9yZy9iLzk5MDYwIHByb3hpbWl0eSBb
IEZhaWx1cmUgXQpAQCAtNzc1LDggKzc3NSw2IEBAIHdlYmtpdC5vcmcvYi8xMTc3NTYgbWVkaWEv
dHJhY2svbWVkaWEtZWxlbWVudC1lbnF1ZXVlLWV2ZW50LWNyYXNoLmh0bWwgWyBUaW1lb3V0CiAK
IHdlYmtpdC5vcmcvYi8xNTM5MzcgaHR0cC90ZXN0cy9taXNjL2RldGFjaC1kdXJpbmctbm90aWZ5
RG9uZS5odG1sIFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8xNjE5NTYgZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWRpc3BsYXlzLWJ1ZmZlci5odG1sIFsg
VGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xMzE1NDYgbWVkaWEvdHJhY2svdHJhY2staW4tYmFu
ZC5odG1sIFsgQ3Jhc2ggVGltZW91dCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2Mzc4MiBt
ZWRpYS92aWRlby1wbGF5ZWQtcmFuZ2VzLTEuaHRtbCBbIENyYXNoIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295969</attachid>
            <date>2016-12-02 11:32:34 -0800</date>
            <delta_ts>2016-12-15 02:49:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165316-20161202203202.patch</filename>
            <type>text/plain</type>
            <size>30770</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5M2I1YjI5MTQ5ZWY5
MmJhMzY0ZWVjN2FmOTQxZDY3ZTAyYWFkZS4uYTQ4M2JlNzUzMmY2NDUzZDA3YWEyYmVjZjY2MzIx
MGI3NmE4MDY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE2LTEyLTAyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtPV1JdIFVuc2tp
cCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC5o
dG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUz
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhl
ZCB0aGUgZW5kZWQgc3VwcG9ydCBvZiB0aGUgdmlkZW8gZWxlbWVudCBpbiB0aGUgT1dSIHBsYXll
ciBhbmQKKyAgICAgICAgZml4ZWQgdGhlIHZpZGVvVHJhY2tzIHN1cHBvcnQuIE5vdyB0aGUgT1cg
cGxheWVyIHByb3Blcmx5IGFkZHMgYW5kCisgICAgICAgIHJlbW92ZXMgdGhlIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MuIEFkZGVkIHRoZSBnZXRTZXR0aW5ncyBzdXBwb3J0CisgICAgICAgIHRvIHRo
ZSBtZWRpYXN0cmVhbSBpbnRlcmZhY2UuIFNvbHZlZCBhbHNvIHRoZSBzaXplIGhhbmRsaW5nIGlu
CisgICAgICAgIHNvbWUgb2YgdGhlIGVuYWJsZS9tdXRlZCBzaXR1YXRpb25zLgorCisgICAgICAg
IFVuc2tpcHBpbmcgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRy
YWNrLXN0b3AuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZTogQWRk
ZWQgdGhlIG5ldworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcCB3aXRoIHRoZSBu
ZXcgY29kZSBoYW5kbGluZyB0aGUKKyAgICAgICAgc2V0dGluZ3MuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IpOgorICAgICAgICBSZWxlYXNlIHRoZSBuZXcgdmlk
ZW8gYW5kIGF1ZGlvIG1hcHMgdGhhdCBjcmVhdGVzIGEgcmVsYXRpb25zaGlwCisgICAgICAgIG9m
IHRoZSBtZWRpYXN0cmVhbSB0cmFja3Mgd2l0aCB0aGUgbWVkaWF0cmFja3Mgb2YgdGhlIHZpZGVv
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnBsYXkpOiBTZXQgZW5kZWQgdG8KKyAgICAgICAgZmFsc2Ugd2hlbiB3ZSBzdGFydCBwbGF5
aW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjps
b2FkKTogQ3JlYXRlIHRoZSBtZWRpYQorICAgICAgICB0cmFja3MgdG8gdGhlIHBsYXllciBzbyB0
aGF0IHRoZSB2aWRlb1RyYWNrcyBBUEkgcmV0dXJucyBpdCwgYW5kCisgICAgICAgIGFkZCBhbiBl
bnRyeSBpbiB0aGUgbWFwIHRvIGJlIGFibGUgdG8gcmVzdG9yZSBpdCB1c2luZyB0aGUKKyAgICAg
ICAgbWVkaWFzdHJlYW0gdHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OnN0b3ApOiBTZXQgdGhlIHNpemUgdG8KKyAgICAgICAgemVybyB3aGVu
IHRoZSBzdHJlYW0gc3RvcHMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQpOiBNYWtlIHN1cmUKKyAgICAgICAgd2Ugc2V0IHRoZSBl
bmRlZCB2YXJpYWJsZSB0byB0cnVlIGFuZCBjYWxsIHRoZSB0aW1lQ2hhbmdlIHRvCisgICAgICAg
IG1vZGlmeSB0aGUgc3RhdGUgb2YgdGhlIHBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6bWF5YmVIYW5kbGVDaGFuZ2VNdXRlZFN0YXRlKToK
KyAgICAgICAgV2hlbiB1bm11dGUgd2Ugc2VsZWN0IHRoYXQgdHJhY2sgaW4gdGhlIHZpZGVvIGVs
ZW1lbnQsIHJlcXVpcmVkCisgICAgICAgIGZvciB0aGUgZ2V0U2VsZWN0ZWQgQVBJLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0VuYWJsZWRD
aGFuZ2VkKToKKyAgICAgICAgSGFuZGxlIHByb3Blcmx5IHRoZSBzaXR1YXRpb24gd2hlbiB0aGUg
dXNlciBjaGFuZ2VkIHRoZSBlbmFibGVkCisgICAgICAgIHZhbHVlLCB3ZSBkaXNhYmxlIHRoZSBy
ZW5kZXJpbmcgYW5kIGZvciB0aGUgdmlkZW8gd2UgY2hhbmdlIHNvbWUKKyAgICAgICAgb2YgdGhl
IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
T3dyOjpzZXRTaXplKTogTW9kaWZ5IHRoZQorICAgICAgICBzaXplIG9mIHRoZSBzb3VyY2UuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6Om5hdHVyYWxT
aXplKTogT3ZlcnJpZGVkCisgICAgICAgIHRvIG1ha2Ugc3VyZSB3ZSByZXR1cm4gYSBzaXplIGV2
ZW4gd2hlbiB0aGUgc2FtcGxlIGlzIG5vdCByZWFkeQorICAgICAgICBmb3IgZ3N0LgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJPd3IuaDoKKyAgICAgICAgQWRkZWQgdGhlIGVuZGVkIGF0dHJpYnV0ZSBhbmQgdGhlIG1hcHMu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50
T3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRPd3I6OmNyZWF0ZU11dGVk
UmVtb3RlU291cmNlKTogVXNlIHRoZSBuZXcKKyAgICAgICAgcmVhbHRpbWUgdmlkZW8gYW5kIGF1
ZGlvIHNvdXJjZXMgY2xhc3NlcywgdGhpcyBuZXcgY2xhc3NlcworICAgICAgICBpbXBsZW1lbnQg
dGhlIHNldHRpbmdzIG9mIGVhY2ggdHlwZSBvZiBtZWRpYSBlbGVtZW50LgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpt
ZWRpYVNvdXJjZXNBdmFpbGFibGUpOgorICAgICAgICBVc2UgdGhlIG5ldyBhdWRpbyBhbmQgdmlk
ZW8gc291cmNlIGNsYXNzZXMgaW5zdGVhZCBvZiB0aGUgZ2VuZXJhbAorICAgICAgICBvbmUgaW4g
b3JkZXIgdG8gaGFuZGxlIHRoZSBzZXR0aW5ncyBwcm9wZXJseS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuY3BwOiBBZGRl
ZAorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c2V0dGluZ3MpOiBJ
bml0aWFsaXplIHVzaW5nIHRoZQorICAgICAgICBzdWJjbGFzcyBhbmQgcmV0dXJuIHRoZSBuZXcg
Y3VycmVudFNldHRpbmdzIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VPd3I6OnN1cHBvcnRlZENvbnN0cmFpbnRzKTogQ2FsbCB0aGUKKyAgICAgICAgc3Vi
Y2xhc3MgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHN1cHBvcnRlZFNldHRpbmdzLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6aW5pdGlhbGl6ZVNl
dHRpbmdzKTogQWRkZWQgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSB0aGUgc2V0dGluZ3MgYmVmb3Jl
IHJldHVybmluZyB0aGUgdmFsdWUuIEltcGxlbWVudGVkIGluCisgICAgICAgIHRoZSBzdWJjbGFz
cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VPd3I6OmluaXRpYWxpemVT
dXBwb3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIEFkZGVkIHRvIGluaXRpYWxpemUgdGhlIHN1
cHBvcnRlZCBzZXR0aW5ncyBvZiB0aGUKKyAgICAgICAgbWVkaWEuIEltcGxlbWVudGVkIGluIHRo
ZSBzdWJjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VPd3I6OnNl
dHRpbmdzKTogTW92ZWQgdG8gdGhlIGNwcAorICAgICAgICBmaWxlLCBpbXBsZW1lbnRlZCB1c2lu
ZyB0aGUgaW5pdGlhbGl6ZSBmdW5jdGlvbnMgb2YgdGhlIHN1YmNsYXNzCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZpZGVvU291cmNlT3dyLmg6IEFk
ZGVkCisgICAgICAgIHRoaXMgbmV3IGNsYXNzIHRvIGhhbmRsZSB0aGUgc2V0dGluZ3Mgb2YgdGhl
IHZpZGVvIGVsZW1lbnRzLiBUaGUKKyAgICAgICAgY2xhc3MgaW5pdGlhbGl6ZXMgdGhlIHNldHRp
bmdzIGFuZCB0aGUgc3VwcG9ydGVkU2V0dGluZ3MuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZUF1ZGlvU291cmNlT3dyLmg6IEFkZGVkCisgICAgICAg
IHRoaXMgbmV3IGNsYXNzIHRvIGhhbmRsZSB0aGUgc2V0dGluZ3Mgb2YgdGhlIGF1ZGlvIGVsZW1l
bnRzLiBUaGUKKyAgICAgICAgY2xhc3MgaW5pdGlhbGl6ZXMgdGhlIHNldHRpbmdzIGFuZCB0aGUg
c3VwcG9ydGVkU2V0dGluZ3MuCisKKwogMjAxNi0xMi0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5DYWlybyBidWlsZCBhZnRl
ciByMjA4OTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggNzZk
ZTA4NWExYzdkNWUyMDVhNTUxNzY4NGIwZTgxYWM0NGFjZGNiMi4uYjRjYzA5NmZiZWZmNzgxYzVj
MjU0MGE3NzQ5ZWE4NjgzZjBkNDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1l
ci5jbWFrZQpAQCAtMTYsNiArMTYsNyBAQCBpZiAoRU5BQkxFX01FRElBX1NUUkVBTSkKIAogICAg
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvT3BlbldlYlJUQ1V0aWxp
dGllcy5jcHAKKyAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGlt
ZU1lZGlhU291cmNlT3dyLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCiAgICAgKQogZW5kaWYgKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKaW5k
ZXggM2YwMGU4ZDFkMzI1MzNlNjhkMjcxZDU1Y2JkYTdkY2IwOTExZGM4NC4uOWVjNDUyODE1NDQ4
YmM3MTE0YjQxYWRhMzUwNDE1NDg1ZDk0N2RkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lu
Y2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlT3dyLmgiCkBAIC01Niw2ICs1Nyw5IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cigpCiAgICAg
aWYgKGhhc1ZpZGVvKCkpCiAgICAgICAgIG1fdmlkZW9UcmFjay0+cmVtb3ZlT2JzZXJ2ZXIoKnRo
aXMpOwogCisgICAgbV9hdWRpb1RyYWNrTWFwLmNsZWFyKCk7CisgICAgbV92aWRlb1RyYWNrTWFw
LmNsZWFyKCk7CisKICAgICBzdG9wKCk7CiB9CiAKQEAgLTY5LDYgKzczLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnBsYXkoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgbV9lbmRlZCA9IGZhbHNlOwogICAgIG1fcGF1c2VkID0gZmFsc2U7CiAKICAgICBH
U1RfREVCVUcoIkNvbm5lY3RpbmcgdG8gbGl2ZSBzdHJlYW0sIGRlc2NyaXB0b3I6ICVwIiwgbV9z
dHJlYW1Qcml2YXRlLmdldCgpKTsKQEAgLTIwMSw2ICsyMDYsOSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck93cjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbVByaXZh
dGUpCiAgICAgICAgICAgICAgICAgU3RyaW5nIHByZVNlbGVjdGVkRGV2aWNlID0gZ2V0ZW52KCJX
RUJLSVRfQVVESU9fREVWSUNFIik7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmVTZWxlY3RlZERl
dmljZSB8fCAocHJlU2VsZWN0ZWREZXZpY2UgPT0gdHJhY2stPmxhYmVsKCkpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fYXVkaW9UcmFjayA9IHRyYWNrOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUoKm1f
YXVkaW9UcmFjay5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fcGxheWVyLT5hZGRBdWRp
b1RyYWNrKCphdWRpb1RyYWNrKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hdWRpb1RyYWNrTWFw
LmFkZCh0cmFjay0+aWQoKSwgYXVkaW9UcmFjayk7CiAgICAgICAgICAgICAgICAgICAgIG9ic2Vy
dmVUcmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjEw
LDYgKzIxOCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6bG9hZChN
ZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbVByaXZhdGUpCiAgICAgICAgICAgICAgICAgU3RyaW5n
IHByZVNlbGVjdGVkRGV2aWNlID0gZ2V0ZW52KCJXRUJLSVRfVklERU9fREVWSUNFIik7CiAgICAg
ICAgICAgICAgICAgaWYgKCFwcmVTZWxlY3RlZERldmljZSB8fCAocHJlU2VsZWN0ZWREZXZpY2Ug
PT0gdHJhY2stPmxhYmVsKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fdmlkZW9UcmFjayA9
IHRyYWNrOworICAgICAgICAgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fdmlkZW9UcmFjay5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIHZpZGVvVHJhY2stPnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICAgICAg
ICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdmlkZW9UcmFjayk7CisgICAgICAgICAg
ICAgICAgICAgIG1fdmlkZW9UcmFja01hcC5hZGQodHJhY2stPmlkKCksIHZpZGVvVHJhY2spOwog
ICAgICAgICAgICAgICAgICAgICBvYnNlcnZlVHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTI1Niw2ICsyNjgsMTAgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJPd3I6OnN0b3AoKQogICAgICAgICBHU1RfREVCVUcoIlN0b3A6IGRpc2Nv
bm5lY3RpbmcgdmlkZW8iKTsKICAgICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5n
ZXQoKSwgImRpc2FibGVkIiwgVFJVRSwgbnVsbHB0cik7CiAgICAgICAgIG93cl9tZWRpYV9yZW5k
ZXJlcl9zZXRfc291cmNlKE9XUl9NRURJQV9SRU5ERVJFUihtX3ZpZGVvUmVuZGVyZXIuZ2V0KCkp
LCBudWxscHRyKTsKKyAgICAgICAgYXV0byYgcmVhbFRpbWVNZWRpYVNvdXJjZSA9IHN0YXRpY19j
YXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3ImPihtX3ZpZGVvVHJhY2stPnNvdXJjZSgpKTsKKyAg
ICAgICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRXaWR0aCgwKTsKKyAgICAgICAgcmVhbFRpbWVN
ZWRpYVNvdXJjZS5zZXRIZWlnaHQoMCk7CisKICAgICB9CiB9CiAKQEAgLTMzMCw2ICszNDYsOSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmRlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIGdfb2JqZWN0X3NldChtX2F1ZGlvUmVu
ZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIFRSVUUsIG51bGxwdHIpOwogICAgIGVsc2UgaWYgKCZ0
cmFjayA9PSBtX3ZpZGVvVHJhY2spCiAgICAgICAgIGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVy
ZXIuZ2V0KCksICJkaXNhYmxlZCIsIFRSVUUsIG51bGxwdHIpOworCisgICAgbV9lbmRlZCA9IHRy
dWU7CisgICAgbV9wbGF5ZXItPnRpbWVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYgdHJhY2spCkBAIC0zNjEsNiArMzgwLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3I6Om1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZShNZWRpYVN0cmVhbVRyYWMK
ICAgICAgICAgaWYgKCFyZWFsVGltZU1lZGlhU291cmNlLm11dGVkKCkpIHsKICAgICAgICAgICAg
IGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIGZhbHNlLCBu
dWxscHRyKTsKICAgICAgICAgICAgIG93cl9tZWRpYV9yZW5kZXJlcl9zZXRfc291cmNlKE9XUl9N
RURJQV9SRU5ERVJFUihtX3ZpZGVvUmVuZGVyZXIuZ2V0KCkpLCBtZWRpYVNvdXJjZSk7CisgICAg
ICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0KHRyYWNrLmlkKCkp
OworICAgICAgICAgICAgdmlkZW9UcmFjay0+c2V0U2VsZWN0ZWQodHJ1ZSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgpLCAi
ZGlzYWJsZWQiLCB0cnVlLCBudWxscHRyKTsKICAgICAgICAgICAgIG93cl9tZWRpYV9yZW5kZXJl
cl9zZXRfc291cmNlKE9XUl9NRURJQV9SRU5ERVJFUihtX3ZpZGVvUmVuZGVyZXIuZ2V0KCkpLCBu
dWxscHRyKTsKQEAgLTM3OSw3ICs0MDAsMzAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJPd3I6OnRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXQKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0VuYWJsZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKICAgICBHU1RfREVCVUcoIiVzIHRyYWNr
IG5vdyAlcyIsIHRyYWNrLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyA/ICJh
dWRpbyI6InZpZGVvIiwgdHJhY2suZW5hYmxlZCgpID8gImVuYWJsZWQiOiJkaXNhYmxlZCIpOwot
ICAgIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZSh0cmFjayk7CisKKyAgICBhdXRvJiByZWFs
VGltZU1lZGlhU291cmNlID0gc3RhdGljX2Nhc3Q8UmVhbHRpbWVNZWRpYVNvdXJjZU93ciY+KHRy
YWNrLnNvdXJjZSgpKTsKKyAgICAvKiBhdXRvIG1lZGlhU291cmNlID0gT1dSX01FRElBX1NPVVJD
RShyZWFsVGltZU1lZGlhU291cmNlLm1lZGlhU291cmNlKCkpOyAqLworCisgICAgc3dpdGNoICh0
cmFjay50eXBlKCkpIHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgorICAg
ICAgICBpZiAodHJhY2suZW5hYmxlZCgpKQorICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fYXVk
aW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVkIiwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBnX29iamVjdF9zZXQobV9hdWRpb1JlbmRlcmVyLmdldCgpLCAiZGlz
YWJsZWQiLCB0cnVlLCBudWxscHRyKTsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvOgorICAgICAgICBpZiAodHJhY2suZW5hYmxlZCgpKQorICAgICAgICAgICAgZ19vYmplY3Rf
c2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVkIiwgZmFsc2UsIG51bGxwdHIpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVyZXIu
Z2V0KCksICJkaXNhYmxlZCIsIHRydWUsIG51bGxwdHIpOworICAgICAgICAgICAgcmVhbFRpbWVN
ZWRpYVNvdXJjZS5zZXRXaWR0aCgwKTsKKyAgICAgICAgICAgIHJlYWxUaW1lTWVkaWFTb3VyY2Uu
c2V0SGVpZ2h0KDApOworICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gbV92aWRlb1RyYWNr
TWFwLmdldCh0cmFjay5pZCgpKTsKKyAgICAgICAgICAgIHZpZGVvVHJhY2stPnNldFNlbGVjdGVk
KGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6Ok5vbmU6CisgICAgICAgIEdTVF9XQVJOSU5HKCJUcnlpbmcgdG8gY2hhbmdlIGVu
YWJsZWQgc3RhdGUgb2YgYSB0cmFjayB3aXRoIE5vbmUgdHlwZSIpOworICAgIH0KIH0KIAogR3N0
RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpjcmVhdGVWaWRlb1Npbmso
KQpAQCAtNDI2LDYgKzQ3MCwyMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93
cjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnNldFNpemUoc2l6ZSk7CiAgICAgaWYgKG1fdmlkZW9SZW5kZXJlcikKICAg
ICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgIndpZHRoIiwgc2l6ZS53
aWR0aCgpLCAiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQoKSwgbnVsbHB0cik7CisKKyAgICBhdXRvJiBy
ZWFsVGltZU1lZGlhU291cmNlID0gc3RhdGljX2Nhc3Q8UmVhbHRpbWVNZWRpYVNvdXJjZU93ciY+
KG1fdmlkZW9UcmFjay0+c291cmNlKCkpOworICAgIHJlYWxUaW1lTWVkaWFTb3VyY2Uuc2V0V2lk
dGgoc2l6ZS53aWR0aCgpKTsKKyAgICByZWFsVGltZU1lZGlhU291cmNlLnNldEhlaWdodChzaXpl
LmhlaWdodCgpKTsKK30KKworRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93
cjo6bmF0dXJhbFNpemUoKSBjb25zdAoreworICAgIGF1dG8gc2l6ZSA9IE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCk7CisKKyAgICAvLyBJbiBjYXNlIHdlIGFy
ZSBub3QgcGxheWluZyB0aGUgdmlkZW8gd2UgcmV0dXJuIHRoZSBzaXplIHdlIHNldCB0byB0aGUg
bWVkaWEgc291cmNlLgorICAgIGlmIChzaXplLmlzWmVybygpKSB7CisgICAgICAgIGF1dG8mIHJl
YWxUaW1lTWVkaWFTb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGltZU1lZGlhU291cmNlT3dyJj4o
bV92aWRlb1RyYWNrLT5zb3VyY2UoKSk7CisgICAgICAgIHJldHVybiByZWFsVGltZU1lZGlhU291
cmNlLnNpemUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2l6ZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck93ci5oCmluZGV4IGU2MjJkNDI1OWY2YTljYTkyM2Y2ZjEwNDJiOWFkN2FjYmJiODczYWIuLjA4
OTI1MmE1NzJhOTAyNTdiMzc3MWU3M2RjZDllN2YwYTBiMDg2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJPd3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmgKQEAgLTIyLDggKzIyLDEwIEBA
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RS
RUFNRVIpICYmIFVTRShPUEVOV0VCUlRDKQogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX093ckdzdFZpZGVv
UmVuZGVyZXIgT3dyR3N0VmlkZW9SZW5kZXJlcjsKIHR5cGVkZWYgc3RydWN0IF9Pd3JHc3RBdWRp
b1JlbmRlcmVyIE93ckdzdEF1ZGlvUmVuZGVyZXI7CkBAIC00Miw2ICs0NCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAKKyAgICBGbG9hdFNp
emUgbmF0dXJhbFNpemUoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBHc3RFbGVtZW50
KiBjcmVhdGVWaWRlb1NpbmsoKSBmaW5hbDsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F1ZGlvU2luay5nZXQoKTsgfQpAQCAtODcsNiArOTEsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0K
KyAgICBib29sIGVuZGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lbmRlZDsgfQogCiAgICAg
Ly8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIGltcGxlbWVudGF0aW9uLgogICAg
IHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsOwpAQCAtMTAz
LDEyICsxMDgsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRT
dGF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBtX3BhdXNlZCB7IHRy
dWUgfTsKKyAgICBib29sIG1fZW5kZWQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gbV92aWRlb1RyYWNrOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4gbV9hdWRpb1RyYWNrOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdWRpb1Np
bms7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9zdHJlYW1Qcml2YXRlOwogICAg
IEdSZWZQdHI8T3dyR3N0VmlkZW9SZW5kZXJlcj4gbV92aWRlb1JlbmRlcmVyOwogICAgIEdSZWZQ
dHI8T3dyR3N0QXVkaW9SZW5kZXJlcj4gbV9hdWRpb1JlbmRlcmVyOworCisgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNr
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
TWVkaWFFbmRwb2ludE93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCmluZGV4IGE3YTIxZjRhZjEzMTlhMWNi
YzZhZDA3OGU2OWFhNjk3NmQyN2ZiZmMuLjA1MTkwYzM3N2M1ZmFjM2NlNTFkZWQzMTRlZWZiMGZl
ZWUxNjMwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApAQCAtMzks
NyArMzksOCBAQAogI2luY2x1ZGUgIk9wZW5XZWJSVENVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQ
ZWVyQ29ubmVjdGlvblN0YXRlcy5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
IgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZUF1ZGlvU291cmNlT3dyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oIgog
I2luY2x1ZGUgPG93ci9vd3IuaD4KICNpbmNsdWRlIDxvd3Ivb3dyX2F1ZGlvX3BheWxvYWQuaD4K
ICNpbmNsdWRlIDxvd3Ivb3dyX2NyeXB0b191dGlscy5oPgpAQCAtMzUwLDE1ICszNTEsMjEgQEAg
UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1lZGlhRW5kcG9pbnRPd3I6OmNyZWF0ZU11dGVkUmVt
b3RlU291cmNlKGNvbnN0IFN0cmluZyYKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJpbmcg
aWQoIm5vdCB1c2VkIik7CisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I+IHNvdXJj
ZTsKIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW86IG5hbWUgPSAicmVtb3RlIGF1ZGlvIjsgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlbzogbmFtZSA9ICJyZW1vdGUgdmlkZW8iOyBicmVhazsKKyAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgorICAgICAgICBzb3VyY2UgPSBhZG9wdFJlZihu
ZXcgUmVhbHRpbWVBdWRpb1NvdXJjZU93cihudWxscHRyLCBpZCwgdHlwZSwgbmFtZSkpOworICAg
ICAgICBuYW1lID0gInJlbW90ZSBhdWRpbyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW86CisgICAgICAgIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBS
ZWFsdGltZVZpZGVvU291cmNlT3dyKG51bGxwdHIsIGlkLCB0eXBlLCBuYW1lKSk7CisgICAgICAg
IG5hbWUgPSAicmVtb3RlIHZpZGVvIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZU93cj4gc291cmNlID0gYWRvcHRSZWYo
bmV3IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IobnVsbHB0ciwgaWQsIHR5cGUsIG5hbWUpKTsKICAg
ICBtX211dGVkUmVtb3RlU291cmNlcy5zZXQobWlkLCBzb3VyY2UpOwogCiAgICAgcmV0dXJuICpz
b3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9v
cGVud2VicnRjL1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzNDlmMDUxYjBmMzZjMzQ0MzhlNDMyZmE3MzhiMjEwN2U5NDkyOTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1LDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1IE1ldHJv
bG9naWNhbAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQorCisjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZU93ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJl
YWx0aW1lQXVkaW9Tb3VyY2VPd3IgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZU93ciB7Citw
dWJsaWM6CitSZWFsdGltZUF1ZGlvU291cmNlT3dyKE93ck1lZGlhU291cmNlKiBtZWRpYVNvdXJj
ZSwgY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlT3dyKG1lZGlhU291cmNl
LCBpZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQorCitSZWFsdGltZUF1ZGlvU291cmNlT3dy
KGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZU93cihpZCwgdHlwZSwgbmFt
ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVhbHRpbWVBdWRpb1NvdXJjZU93cigp
IHsgfQorCisgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIGZp
bmFsIHsKKyAgICAgICAgaWYgKG1fY3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhz
dXBwb3J0ZWRDb25zdHJhaW50cygpKTsKKworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRE
ZXZpY2VJZChpZCgpKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoT1BFTldFQlJUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCmluZGV4
IDY3YzkxYjhlNGFhY2QxYzA0YzRjMTBmNjAwMTRlNjczZjZhZmQ1NWEuLmYzZTZmMWZlZDlkMjRi
Zjg3Y2M4NzRmMjY1MzMwNDRmZjkwNDg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcApAQCAtNDAsNyArNDAsOSBAQAogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiT3BlbldlYlJUQ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lQXVk
aW9Tb3VyY2VPd3IuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oIgogI2luY2x1ZGUgIlVVSUQu
aCIKICNpbmNsdWRlIDxvd3Ivb3dyLmg+CiAjaW5jbHVkZSA8b3dyL293cl9sb2NhbC5oPgpAQCAt
MTQ5LDE2ICsxNTEsMjEgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjptZWRp
YVNvdXJjZXNBdmFpbGFibGUoR0xpc3QqIHNvdXJjZXMpCiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWVkaWFTb3VyY2UgPSBhZG9w
dFJlZigqbmV3IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VU
eXBlLCBzb3VyY2VOYW1lKSk7CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlT3dy
PiBtZWRpYVNvdXJjZTsKKyAgICAgICAgaWYgKG1lZGlhU291cmNlVHlwZSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbykKKyAgICAgICAgICAgIG1lZGlhU291cmNlID0gYWRvcHRSZWYobmV3
IFJlYWx0aW1lQXVkaW9Tb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VUeXBlLCBzb3Vy
Y2VOYW1lKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lZGlhU291cmNlID0gYWRvcHRS
ZWYobmV3IFJlYWx0aW1lVmlkZW9Tb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VUeXBl
LCBzb3VyY2VOYW1lKSk7CiAKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZU93ck1hcDo6aXRl
cmF0b3Igc291cmNlSXRlcmF0b3IgPSBtX3NvdXJjZU1hcC5maW5kKGlkKTsKICAgICAgICAgaWYg
KHNvdXJjZUl0ZXJhdG9yID09IG1fc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgbV9zb3Vy
Y2VNYXAuYWRkKGlkLCBtZWRpYVNvdXJjZS5jb3B5UmVmKCkpOwogCiAgICAgICAgIGlmIChtZWRp
YVR5cGUgJiBPV1JfTUVESUFfVFlQRV9BVURJTykKLSAgICAgICAgICAgIGF1ZGlvU291cmNlcy5h
cHBlbmQoV1RGTW92ZShtZWRpYVNvdXJjZSkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChtZWRpYVNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgZWxzZSBpZiAobWVk
aWFUeXBlICYgT1dSX01FRElBX1RZUEVfVklERU8pCi0gICAgICAgICAgICB2aWRlb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUobWVkaWFTb3VyY2UpKTsKKyAgICAgICAgICAgIHZpZGVvU291cmNlcy5h
cHBlbmQobWVkaWFTb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisKICAgICB9CiAKICAgICBpZiAo
dmlkZW9Tb3VyY2VzLmlzRW1wdHkoKSAmJiBhdWRpb1NvdXJjZXMuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFs
dGltZU1lZGlhU291cmNlT3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3
NDk5ZDM4MDA2NmYxNGFiNmM5Y2IwMDg3YmU0YjZkZDA4Nzg1ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVN
ZWRpYVNvdXJjZU93ci5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VPd3I6OnNldHRpbmdzKCkgY29uc3QKK3sKKyAgICBjb25zdF9jYXN0PFJlYWx0aW1lTWVkaWFT
b3VyY2VPd3ImPigqdGhpcykuaW5pdGlhbGl6ZVNldHRpbmdzKCk7CisgICAgcmV0dXJuIG1fY3Vy
cmVudFNldHRpbmdzOworfQorCitSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMmIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKK3sKKyAg
ICBpZiAobV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0RldmljZUlkKCkpCisgICAgICAg
IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOworCisgICAgbV9zdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAgIGluaXRpYWxpemVTdXBwb3J0ZWRD
b25zdHJhaW50cyhtX3N1cHBvcnRlZENvbnN0cmFpbnRzKTsKKworICAgIHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoT1BFTldFQlJUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRp
YVNvdXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKaW5kZXggMDFiMmI3ZWEzYjBkYmE2OTVhMDMx
YzM0MjdlOGUwMmQ2NzBhMzc2NC4uNTg4Y2EyYjFiMzY4YzdjZjZmNWNkMTc2Y2Q5ZDU0MjMyMTcw
YTU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Bl
bndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKQEAg
LTczLDEzICs3MywyMiBAQCBSZWFsdGltZU1lZGlhU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgUwogICAgIH0KIAogICAgIHZp
cnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGll
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0gICAgdmlydHVhbCBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50U2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdDsKIAogICAgIE93ck1lZGlhU291cmNlKiBtZWRpYVNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTb3VyY2U7IH0KIAorcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMmKSB7IH07CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpOworCisgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOworCiBwcml2YXRlOgorCisgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7
CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0
aWVzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsK
KwogICAgIE93ck1lZGlhU291cmNlKiBtX21lZGlhU291cmNlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZp
ZGVvU291cmNlT3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzY2YTNlMmI5NjEz
NjBlODg2YjNkMDZjYmVkOTEzMTMyZmIxNDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZpZGVvU291cmNl
T3dyLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwyMDE2IEln
YWxpYSBTLkwKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNZXRyb2xvZ2ljYWwKKyAqCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoT1BFTldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VPd3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWFsdGltZVZpZGVvU291cmNlT3dy
IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IgeworcHVibGljOgorUmVhbHRpbWVWaWRl
b1NvdXJjZU93cihPd3JNZWRpYVNvdXJjZSogbWVkaWFTb3VyY2UsIGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZU93cihtZWRpYVNvdXJjZSwgaWQsIHR5cGUsIG5hbWUpCisg
ICAgeworICAgIH0KKworUmVhbHRpbWVWaWRlb1NvdXJjZU93cihjb25zdCBTdHJpbmcmIGlkLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6
IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoaWQsIHR5cGUsIG5hbWUpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgflJlYWx0aW1lVmlkZW9Tb3VyY2VPd3IoKSB7IH0KKworICAgIGJvb2wgYXBw
bHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIGZpbmFsIHsKKyAgICAgICAgaWYgKG1f
Y3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jdXJy
ZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJhaW50cygp
KTsKKworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKKworICAg
ICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOworICAgICAg
ICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aChzaXplKCkud2lkdGgoKSk7CisgICAgICAgIG1f
Y3VycmVudFNldHRpbmdzLnNldEhlaWdodChzaXplKCkuaGVpZ2h0KCkpOworICAgIH0KKworICAg
IHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpIGZpbmFsIHsKKyAgICAg
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGYWNpbmdNb2RlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bik7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRz
LnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNl
dFN1cHBvcnRzSGVpZ2h0KHRydWUpOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRT
dXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5z
ZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoT1BFTldFQlJU
QykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3MTVmNjIwMzU1ZDlhNjcyNDcxMTNkYzc4OTZkYjg4YWUzODY2MGE1Li4zNjU5
NjA0NTc3MGMwMGM1ZmNlYTI5Y2Y3NDk0ZTdlYzE5ZDBmNjMyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTYtMTItMDIgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisK
KyAgICAgICAgW09XUl0gVW5za2lwIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8t
ZWxlbWVudC10cmFjay1zdG9wLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcHBl
ZCB0aGUgdGVzdCBhbmQgbW92ZWQgdGhlCisgICAgICAgIHN0b3Agb25lLCBub3cgaXQgZG9lcyBu
b3QgdGltZW91dCBiZWNhdXNlIHdlIGNvcnJlY3RseSBoYW5kbGUgdGhlCisgICAgICAgIGVuZGVk
IHZhbHVlIGJ1dCBzdGlsbCBmYWlscywgd2UgbmVlZCBtb3JlIGZlYXR1cmVzIGluIHRoZSBtb2Nr
CisgICAgICAgIGNsYXNzZXMgZm9yIG93ci4KKwogMjAxNi0xMi0wMSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIEZh
ZGUgY29udHJvbHMgaW4gd2hlbiBlbnRlcmluZyBhbmQgZXhpdGluZyBmdWxsc2NyZWVuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRlMzVjZmU1MmY1YmNi
ODMyOGVhYWVmNWU5ZGU1NTJlYTczNjJmZGYuLjVjNjVmNzg5NWQyOTZmOGQ1NGY1ZjY5YzI1NWZj
MDdmN2ViMGRkYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMDgsNyArMzA4LDYgQEAgd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvZXZlbnRzL2NvbnN0
cnVjdG9ycy9tZWRpYS1zdHJlYW0tZXZlbnQtY29uc3RydWN0b3IuaHRtbAogd2Via2l0Lm9yZy9i
Lzc5MjAzIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9kZXN0aW5hdGlvbm5vZGUuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vu
b2RlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAz
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTEzNDQgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS1hZGQtZW5kZWQtdHJhY2tzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTEzNDQg
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9tb2NrLW1lZGlhLXNvdXJj
ZS5odG1sIFsgU2tpcCBdCkBAIC0zMTcsNiArMzE2LDcgQEAgd2Via2l0Lm9yZy9iLzE2MDk5NiBm
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRp
c2EKIHdlYmtpdC5vcmcvYi8xNjA5OTYgZmFzdC9tZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50
cy1hZHZhbmNlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYwOTk2IGZhc3QvbWVkaWFz
dHJlYW0vYXBwbHktY29uc3RyYWludHMtYXVkaW8uaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzE2MDk5NiBmYXN0L21lZGlhc3RyZWFtL2FwcGx5LWNvbnN0cmFpbnRzLXZpZGVvLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8xNjE5NTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LWRpc3BsYXlzLWJ1ZmZlci5odG1sIFsgU2tpcCBdCiAKICMgUHJveGltaXR5
IEV2ZW50cyBpcyBub3Qgc3VwcG9ydGVkLgogd2Via2l0Lm9yZy9iLzk5MDYwIHByb3hpbWl0eSBb
IEZhaWx1cmUgXQpAQCAtNzc1LDggKzc3NSw2IEBAIHdlYmtpdC5vcmcvYi8xMTc3NTYgbWVkaWEv
dHJhY2svbWVkaWEtZWxlbWVudC1lbnF1ZXVlLWV2ZW50LWNyYXNoLmh0bWwgWyBUaW1lb3V0CiAK
IHdlYmtpdC5vcmcvYi8xNTM5MzcgaHR0cC90ZXN0cy9taXNjL2RldGFjaC1kdXJpbmctbm90aWZ5
RG9uZS5odG1sIFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8xNjE5NTYgZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWRpc3BsYXlzLWJ1ZmZlci5odG1sIFsg
VGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xMzE1NDYgbWVkaWEvdHJhY2svdHJhY2staW4tYmFu
ZC5odG1sIFsgQ3Jhc2ggVGltZW91dCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2Mzc4MiBt
ZWRpYS92aWRlby1wbGF5ZWQtcmFuZ2VzLTEuaHRtbCBbIENyYXNoIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297188</attachid>
            <date>2016-12-15 02:49:21 -0800</date>
            <delta_ts>2016-12-22 03:53:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165316-20161215114827.patch</filename>
            <type>text/plain</type>
            <size>31397</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM5NDQ3NTgyYzE0MDgz
NTU5ZGQ1YTY5MWNjNTZmYzg3ZmM0N2YzZi4uYzRhYjAwMDgzMmEzYTVmMmVlYWQwZGZiNTBhNTMy
NjdhNTdkNGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTEyLTAyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtPV1JdIFVuc2tp
cCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC5o
dG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUz
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhl
ZCB0aGUgZW5kZWQgc3VwcG9ydCBvZiB0aGUgdmlkZW8gZWxlbWVudCBpbiB0aGUgT1dSIHBsYXll
ciBhbmQKKyAgICAgICAgZml4ZWQgdGhlIHZpZGVvVHJhY2tzIHN1cHBvcnQuIE5vdyB0aGUgT1cg
cGxheWVyIHByb3Blcmx5IGFkZHMgYW5kCisgICAgICAgIHJlbW92ZXMgdGhlIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MuIEFkZGVkIHRoZSBnZXRTZXR0aW5ncyBzdXBwb3J0CisgICAgICAgIHRvIHRo
ZSBtZWRpYXN0cmVhbSBpbnRlcmZhY2UuIFNvbHZlZCBhbHNvIHRoZSBzaXplIGhhbmRsaW5nIGlu
CisgICAgICAgIHNvbWUgb2YgdGhlIGVuYWJsZS9tdXRlZCBzaXR1YXRpb25zLgorCisgICAgICAg
IFVuc2tpcHBpbmcgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRy
YWNrLXN0b3AuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZTogQWRk
ZWQgdGhlIG5ldworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcCB3aXRoIHRoZSBu
ZXcgY29kZSBoYW5kbGluZyB0aGUKKyAgICAgICAgc2V0dGluZ3MuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IpOgorICAgICAgICBSZWxlYXNlIHRoZSBuZXcgdmlk
ZW8gYW5kIGF1ZGlvIG1hcHMgdGhhdCBjcmVhdGVzIGEgcmVsYXRpb25zaGlwCisgICAgICAgIG9m
IHRoZSBtZWRpYXN0cmVhbSB0cmFja3Mgd2l0aCB0aGUgbWVkaWF0cmFja3Mgb2YgdGhlIHZpZGVv
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnBsYXkpOiBTZXQgZW5kZWQgdG8KKyAgICAgICAgZmFsc2Ugd2hlbiB3ZSBzdGFydCBwbGF5
aW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjps
b2FkKTogQ3JlYXRlIHRoZSBtZWRpYQorICAgICAgICB0cmFja3MgdG8gdGhlIHBsYXllciBzbyB0
aGF0IHRoZSB2aWRlb1RyYWNrcyBBUEkgcmV0dXJucyBpdCwgYW5kCisgICAgICAgIGFkZCBhbiBl
bnRyeSBpbiB0aGUgbWFwIHRvIGJlIGFibGUgdG8gcmVzdG9yZSBpdCB1c2luZyB0aGUKKyAgICAg
ICAgbWVkaWFzdHJlYW0gdHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OmRpc2FibGVNZWRpYVRyYWNrcyk6CisgICAgICAgIE1vdmUgc29tZSBw
YXJ0IG9mIHRoZSBzdG9wIGZ1bmN0aW9uIHRvIHRoaXMgb25lIGluIG9yZGVyIHRvIHVzZSBpdAor
ICAgICAgICBpbiBwYXVzZSBtZXRob2QgYW5kIGF2b2lkIGNoYW5naW5nIHRoZSB2aWRlbyBzZWxl
Y3Rpb24gaW4gdGhhdAorICAgICAgICBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpzdG9wKTogTm93IHdlIGNhbGwgdGhlCisgICAgICAgIGZ1
bmN0aW9uIGRpc2FibGVNZWRpYVRyYWNrcyBhbmQgd2UgYWxzbyBjaGFuZ2UgdGVoIHNlbGVjdGVk
CisgICAgICAgIHZpZGVvVHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQpOiBGb3IKKyAgICAgICAgdmlkZW9UcmFjayByZXNl
dCB0aGUgc2l6ZSBhbmQgdGhlIHNlbGVjdGVkIGVsZW1lbnQuIEluIGNhc2UgdGhlcmUKKyAgICAg
ICAgaXMgbm8gbWVkaWEgcGxheWluZyB3ZSBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBlbmRlZCB2YXJp
YWJsZSB0byB0cnVlCisgICAgICAgIGFuZCBjYWxsIHRoZSB0aW1lQ2hhbmdlIHRvIG1vZGlmeSB0
aGUgc3RhdGUgb2YgdGhlIHBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIEhhbmRsZSBw
cm9wZXJseSB0aGUgc2l0dWF0aW9uIHdoZW4gdGhlIHVzZXIgY2hhbmdlZCB0aGUgZW5hYmxlZAor
ICAgICAgICB2YWx1ZSwgd2UgZGlzYWJsZSB0aGUgbWVkaWEuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnNldFNpemUpOiBNb2RpZnkgdGhlCisgICAg
ICAgIHNpemUgb2YgdGhlIHNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6bmF0dXJhbFNpemUpOiBPdmVycmlkZWQKKyAgICAgICAgdG8gbWFr
ZSBzdXJlIHdlIHJldHVybiBhIHNpemUgZXZlbiB3aGVuIHRoZSBzYW1wbGUgaXMgbm90IHJlYWR5
CisgICAgICAgIGZvciBnc3QuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oOgorICAgICAgICBBZGRlZCB0aGUgZW5k
ZWQgYXR0cmlidXRlIGFuZCB0aGUgbWFwcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmRwb2ludE93cjo6Y3JlYXRlTXV0ZWRSZW1vdGVTb3VyY2UpOiBVc2UgdGhlIG5ldworICAg
ICAgICByZWFsdGltZSB2aWRlbyBhbmQgYXVkaW8gc291cmNlcyBjbGFzc2VzLCB0aGlzIG5ldyBj
bGFzc2VzCisgICAgICAgIGltcGxlbWVudCB0aGUgc2V0dGluZ3Mgb2YgZWFjaCB0eXBlIG9mIG1l
ZGlhIGVsZW1lbnQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6Om1lZGlhU291cmNlc0F2YWlsYWJsZSk6CisgICAgICAg
IFVzZSB0aGUgbmV3IGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2UgY2xhc3NlcyBpbnN0ZWFkIG9mIHRo
ZSBnZW5lcmFsCisgICAgICAgIG9uZSBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHNldHRpbmdzIHBy
b3Blcmx5LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVNZWRpYVNvdXJjZU93ci5jcHA6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlT3dyOjpzZXR0aW5ncyk6IEluaXRpYWxpemUgdXNpbmcgdGhlCisgICAgICAgIHN1
YmNsYXNzIGFuZCByZXR1cm4gdGhlIG5ldyBjdXJyZW50U2V0dGluZ3MgYXR0cmlidXRlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c3VwcG9ydGVkQ29uc3RyYWlu
dHMpOiBDYWxsIHRoZQorICAgICAgICBzdWJjbGFzcyBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3Vw
cG9ydGVkU2V0dGluZ3MuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlT3dyOjppbml0aWFsaXplU2V0dGluZ3MpOiBBZGRlZCB0bworICAgICAgICBpbml0
aWFsaXplIHRoZSBzZXR0aW5ncyBiZWZvcmUgcmV0dXJuaW5nIHRoZSB2YWx1ZS4gSW1wbGVtZW50
ZWQgaW4KKyAgICAgICAgdGhlIHN1YmNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZU93cjo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKToKKyAgICAgICAg
QWRkZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3VwcG9ydGVkIHNldHRpbmdzIG9mIHRoZQorICAgICAg
ICBtZWRpYS4gSW1wbGVtZW50ZWQgaW4gdGhlIHN1YmNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c2V0dGluZ3MpOiBNb3ZlZCB0byB0aGUgY3BwCisgICAg
ICAgIGZpbGUsIGltcGxlbWVudGVkIHVzaW5nIHRoZSBpbml0aWFsaXplIGZ1bmN0aW9ucyBvZiB0
aGUgc3ViY2xhc3MKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lVmlkZW9Tb3VyY2VPd3IuaDogQWRkZWQKKyAgICAgICAgdGhpcyBuZXcgY2xhc3MgdG8g
aGFuZGxlIHRoZSBzZXR0aW5ncyBvZiB0aGUgdmlkZW8gZWxlbWVudHMuIFRoZQorICAgICAgICBj
bGFzcyBpbml0aWFsaXplcyB0aGUgc2V0dGluZ3MgYW5kIHRoZSBzdXBwb3J0ZWRTZXR0aW5ncy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lQXVkaW9T
b3VyY2VPd3IuaDogQWRkZWQKKyAgICAgICAgdGhpcyBuZXcgY2xhc3MgdG8gaGFuZGxlIHRoZSBz
ZXR0aW5ncyBvZiB0aGUgYXVkaW8gZWxlbWVudHMuIFRoZQorICAgICAgICBjbGFzcyBpbml0aWFs
aXplcyB0aGUgc2V0dGluZ3MgYW5kIHRoZSBzdXBwb3J0ZWRTZXR0aW5ncy4KKworCiAyMDE2LTEy
LTEyICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2Vy
XSBNZWRpYVF1ZXJ5UGFyc2VyIHNob3VsZCB1c2UgUmVmIGFuZCBub3QgUmVmUHRyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggNzZkZTA4NWExYzdkNWUyMDVhNTUx
NzY4NGIwZTgxYWM0NGFjZGNiMi4uYjRjYzA5NmZiZWZmNzgxYzVjMjU0MGE3NzQ5ZWE4NjgzZjBk
NDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtMTYsNiAr
MTYsNyBAQCBpZiAoRU5BQkxFX01FRElBX1NUUkVBTSkKIAogICAgICAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvT3BlbldlYlJUQ1V0aWxpdGllcy5jcHAKKyAgICAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmNw
cAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJPd3IuY3BwCiAgICAgKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKaW5kZXggM2YwMGU4ZDFkMzI1MzNl
NjhkMjcxZDU1Y2JkYTdkY2IwOTExZGM4NC4uZTNhMDY4OTVkNTE2NjdhMWQ5MGNiOTg1MzVjYmY4
YTc3NjgwZTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck93ci5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyT3dyOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyKCkKICAgICBpZiAoaGFzVmlk
ZW8oKSkKICAgICAgICAgbV92aWRlb1RyYWNrLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAKKyAg
ICBtX2F1ZGlvVHJhY2tNYXAuY2xlYXIoKTsKKyAgICBtX3ZpZGVvVHJhY2tNYXAuY2xlYXIoKTsK
KwogICAgIHN0b3AoKTsKIH0KIApAQCAtNjksNiArNzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6cGxheSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBt
X2VuZGVkID0gZmFsc2U7CiAgICAgbV9wYXVzZWQgPSBmYWxzZTsKIAogICAgIEdTVF9ERUJVRygi
Q29ubmVjdGluZyB0byBsaXZlIHN0cmVhbSwgZGVzY3JpcHRvcjogJXAiLCBtX3N0cmVhbVByaXZh
dGUuZ2V0KCkpOwpAQCAtODQsNyArODgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck93cjo6cGF1c2UoKQogewogICAgIEdTVF9ERUJVRygiUGF1c2UiKTsKICAgICBtX3BhdXNl
ZCA9IHRydWU7Ci0gICAgc3RvcCgpOworICAgIGRpc2FibGVNZWRpYVRyYWNrcygpOwogfQogCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6aGFzVmlkZW8oKSBjb25zdApAQCAt
MjAxLDYgKzIwNSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpsb2Fk
KE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtUHJpdmF0ZSkKICAgICAgICAgICAgICAgICBTdHJp
bmcgcHJlU2VsZWN0ZWREZXZpY2UgPSBnZXRlbnYoIldFQktJVF9BVURJT19ERVZJQ0UiKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXByZVNlbGVjdGVkRGV2aWNlIHx8IChwcmVTZWxlY3RlZERldmlj
ZSA9PSB0cmFjay0+bGFiZWwoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9hdWRpb1RyYWNr
ID0gdHJhY2s7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9hdWRpb1RyYWNrLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soKmF1ZGlvVHJhY2spOworICAg
ICAgICAgICAgICAgICAgICBtX2F1ZGlvVHJhY2tNYXAuYWRkKHRyYWNrLT5pZCgpLCBhdWRpb1Ry
YWNrKTsKICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZVRyYWNrID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMTAsNiArMjE3LDEwIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFt
UHJpdmF0ZSkKICAgICAgICAgICAgICAgICBTdHJpbmcgcHJlU2VsZWN0ZWREZXZpY2UgPSBnZXRl
bnYoIldFQktJVF9WSURFT19ERVZJQ0UiKTsKICAgICAgICAgICAgICAgICBpZiAoIXByZVNlbGVj
dGVkRGV2aWNlIHx8IChwcmVTZWxlY3RlZERldmljZSA9PSB0cmFjay0+bGFiZWwoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV92aWRlb1RyYWNrID0gdHJhY2s7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0
ZSgqbV92aWRlb1RyYWNrLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmFk
ZFZpZGVvVHJhY2soKnZpZGVvVHJhY2spOworICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNr
LT5zZXRTZWxlY3RlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgbV92aWRlb1RyYWNrTWFw
LmFkZCh0cmFjay0+aWQoKSwgdmlkZW9UcmFjayk7CiAgICAgICAgICAgICAgICAgICAgIG9ic2Vy
dmVUcmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjQ1
LDIwICsyNTYsMzEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmRpZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpzdG9wKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyT3dyOjpkaXNhYmxlTWVkaWFUcmFja3MoKQogewogICAgIGlmIChtX2F1ZGlvVHJh
Y2spIHsKICAgICAgICAgR1NUX0RFQlVHKCJTdG9wOiBkaXNjb25uZWN0aW5nIGF1ZGlvIik7Ci0g
ICAgICAgIGdfb2JqZWN0X3NldChtX2F1ZGlvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIFRS
VUUsIG51bGxwdHIpOworICAgICAgICBnX29iamVjdF9zZXQobV9hdWRpb1JlbmRlcmVyLmdldCgp
LCAiZGlzYWJsZWQiLCB0cnVlLCBudWxscHRyKTsKICAgICAgICAgb3dyX21lZGlhX3JlbmRlcmVy
X3NldF9zb3VyY2UoT1dSX01FRElBX1JFTkRFUkVSKG1fYXVkaW9SZW5kZXJlci5nZXQoKSksIG51
bGxwdHIpOwogICAgIH0KKwogICAgIGlmIChtX3ZpZGVvVHJhY2spIHsKICAgICAgICAgR1NUX0RF
QlVHKCJTdG9wOiBkaXNjb25uZWN0aW5nIHZpZGVvIik7Ci0gICAgICAgIGdfb2JqZWN0X3NldCht
X3ZpZGVvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIFRSVUUsIG51bGxwdHIpOworICAgICAg
ICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCB0cnVlLCBu
dWxscHRyKTsKICAgICAgICAgb3dyX21lZGlhX3JlbmRlcmVyX3NldF9zb3VyY2UoT1dSX01FRElB
X1JFTkRFUkVSKG1fdmlkZW9SZW5kZXJlci5nZXQoKSksIG51bGxwdHIpOwogICAgIH0KIH0KIAor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnN0b3AoKQoreworICAgIGRpc2Fi
bGVNZWRpYVRyYWNrcygpOworICAgIGlmIChtX3ZpZGVvVHJhY2spIHsKKyAgICAgICAgYXV0byB2
aWRlb1RyYWNrID0gbV92aWRlb1RyYWNrTWFwLmdldChtX3ZpZGVvVHJhY2stPmlkKCkpOworICAg
ICAgICBpZiAodmlkZW9UcmFjaykKKyAgICAgICAgICAgIHZpZGVvVHJhY2stPnNldFNlbGVjdGVk
KGZhbHNlKTsKKyAgICB9Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dy
OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsK
ICAgICBpZiAoaW5pdGlhbGl6ZUdTdHJlYW1lckFuZEdTdHJlYW1lckRlYnVnZ2luZygpKSB7CkBA
IC0zMjcsOSArMzQ5LDI1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0
cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKICAgICB9CiAKICAgICBp
ZiAoJnRyYWNrID09IG1fYXVkaW9UcmFjaykKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fYXVkaW9S
ZW5kZXJlci5nZXQoKSwgImRpc2FibGVkIiwgVFJVRSwgbnVsbHB0cik7Ci0gICAgZWxzZSBpZiAo
JnRyYWNrID09IG1fdmlkZW9UcmFjaykKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5k
ZXJlci5nZXQoKSwgImRpc2FibGVkIiwgVFJVRSwgbnVsbHB0cik7CisgICAgICAgIGdfb2JqZWN0
X3NldChtX2F1ZGlvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIHRydWUsIG51bGxwdHIpOwor
ICAgIGVsc2UgaWYgKCZ0cmFjayA9PSBtX3ZpZGVvVHJhY2spIHsKKyAgICAgICAgZ19vYmplY3Rf
c2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVkIiwgdHJ1ZSwgbnVsbHB0cik7Cisg
ICAgICAgIGF1dG8mIHJlYWxUaW1lTWVkaWFTb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGltZU1l
ZGlhU291cmNlT3dyJj4obV92aWRlb1RyYWNrLT5zb3VyY2UoKSk7CisgICAgICAgIHJlYWxUaW1l
TWVkaWFTb3VyY2Uuc2V0V2lkdGgoMCk7CisgICAgICAgIHJlYWxUaW1lTWVkaWFTb3VyY2Uuc2V0
SGVpZ2h0KDApOworICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0
KG1fdmlkZW9UcmFjay0+aWQoKSk7CisgICAgICAgIGlmICh2aWRlb1RyYWNrKQorICAgICAgICAg
ICAgdmlkZW9UcmFjay0+c2V0U2VsZWN0ZWQoZmFsc2UpOworICAgIH0KKworICAgIGJvb2wgYXVk
aW9EaXNhYmxlZDsKKyAgICBib29sIHZpZGVvRGlzYWJsZWQ7CisgICAgZ19vYmplY3RfZ2V0KG1f
YXVkaW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVkIiwgJmF1ZGlvRGlzYWJsZWQsIG51bGxwdHIp
OworICAgIGdfb2JqZWN0X2dldChtX3ZpZGVvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsICZ2
aWRlb0Rpc2FibGVkLCBudWxscHRyKTsKKyAgICBpZiAoYXVkaW9EaXNhYmxlZCAmJiB2aWRlb0Rp
c2FibGVkKSB7CisgICAgICAgIG1fZW5kZWQgPSB0cnVlOworICAgICAgICBtX3BsYXllci0+dGlt
ZUNoYW5nZWQoKTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
T3dyOjp0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCkBA
IC0zNzksNyArNDE3LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0
cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0CiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYgdHJhY2spCiB7CiAgICAgR1NUX0RFQlVHKCIlcyB0cmFjayBub3cgJXMiLCB0
cmFjay50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8gPyAiYXVkaW8iOiJ2aWRl
byIsIHRyYWNrLmVuYWJsZWQoKSA/ICJlbmFibGVkIjoiZGlzYWJsZWQiKTsKLSAgICBtYXliZUhh
bmRsZUNoYW5nZU11dGVkU3RhdGUodHJhY2spOworCisgICAgc3dpdGNoICh0cmFjay50eXBlKCkp
IHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgorICAgICAgICBnX29iamVj
dF9zZXQobV9hdWRpb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCAhdHJhY2suZW5hYmxlZCgp
LCBudWxscHRyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlbzoKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgImRp
c2FibGVkIiwgIXRyYWNrLmVuYWJsZWQoKSwgbnVsbHB0cik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZToKKyAgICAgICAgR1NUX1dBUk5JTkcoIlRy
eWluZyB0byBjaGFuZ2UgZW5hYmxlZCBzdGF0ZSBvZiBhIHRyYWNrIHdpdGggTm9uZSB0eXBlIik7
CisgICAgfQogfQogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6
OmNyZWF0ZVZpZGVvU2luaygpCkBAIC00MjYsNiArNDc0LDIzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyT3dyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShzaXplKTsKICAgICBpZiAobV92
aWRlb1JlbmRlcmVyKQogICAgICAgICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgp
LCAid2lkdGgiLCBzaXplLndpZHRoKCksICJoZWlnaHQiLCBzaXplLmhlaWdodCgpLCBudWxscHRy
KTsKKworICAgIGF1dG8mIHJlYWxUaW1lTWVkaWFTb3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGlt
ZU1lZGlhU291cmNlT3dyJj4obV92aWRlb1RyYWNrLT5zb3VyY2UoKSk7CisgICAgcmVhbFRpbWVN
ZWRpYVNvdXJjZS5zZXRXaWR0aChzaXplLndpZHRoKCkpOworICAgIHJlYWxUaW1lTWVkaWFTb3Vy
Y2Uuc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOworfQorCitGbG9hdFNpemUgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyT3dyOjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7CisgICAgYXV0byBzaXpl
ID0gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUoKTsKKworICAg
IC8vIEluIGNhc2Ugd2UgYXJlIG5vdCBwbGF5aW5nIHRoZSB2aWRlbyB3ZSByZXR1cm4gdGhlIHNp
emUgd2Ugc2V0IHRvIHRoZSBtZWRpYSBzb3VyY2UuCisgICAgaWYgKHNpemUuaXNaZXJvKCkpIHsK
KyAgICAgICAgYXV0byYgcmVhbFRpbWVNZWRpYVNvdXJjZSA9IHN0YXRpY19jYXN0PFJlYWx0aW1l
TWVkaWFTb3VyY2VPd3ImPihtX3ZpZGVvVHJhY2stPnNvdXJjZSgpKTsKKyAgICAgICAgcmV0dXJu
IHJlYWxUaW1lTWVkaWFTb3VyY2Uuc2l6ZSgpOworICAgIH0KKworICAgIHJldHVybiBzaXplOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmgKaW5kZXggZTYyMmQ0MjU5ZjZhOWNhOTIzZjZmMTA0MmI5
YWQ3YWNiYmI4NzNhYi4uMzM0NjMwZTQ1YzM0ODFiYTdkNDJmNTY2MzdlMGRhYTA1MTU0YmQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IuaApA
QCAtMjIsOCArMjIsMTAgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE9QRU5XRUJSVEMpCiAKKyNpbmNsdWRlICJB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgi
CisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgogCiB0eXBlZGVmIHN0
cnVjdCBfT3dyR3N0VmlkZW9SZW5kZXJlciBPd3JHc3RWaWRlb1JlbmRlcmVyOwogdHlwZWRlZiBz
dHJ1Y3QgX093ckdzdEF1ZGlvUmVuZGVyZXIgT3dyR3N0QXVkaW9SZW5kZXJlcjsKQEAgLTQyLDYg
KzQ0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5h
bDsKIAorICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IGZpbmFsOworCiBwcml2YXRl
OgogICAgIEdzdEVsZW1lbnQqIGNyZWF0ZVZpZGVvU2luaygpIGZpbmFsOwogICAgIEdzdEVsZW1l
bnQqIGF1ZGlvU2luaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXVkaW9TaW5rLmdldCgpOyB9
CkBAIC04Nyw2ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhbkxvYWRQb3N0ZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0UG9zdGVyKGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgfQorICAgIGJvb2wgZW5kZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2VuZGVkOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgaW1w
bGVtZW50YXRpb24uCiAgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
JikgZmluYWw7CkBAIC0xMDEsMTQgKzEwNiwxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZGlu
Z0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKTsKICAgICB2b2lkIHN0b3Ao
KTsKICAgICB2b2lkIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZShNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpOworICAgIHZvaWQgZGlzYWJsZU1lZGlhVHJhY2tzKCk7CiAKICAgICBib29sIG1f
cGF1c2VkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07CiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3ZpZGVvVHJhY2s7CiAgICAgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvVHJhY2s7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBtX2F1ZGlvU2luazsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBtX3N0cmVhbVBy
aXZhdGU7CiAgICAgR1JlZlB0cjxPd3JHc3RWaWRlb1JlbmRlcmVyPiBtX3ZpZGVvUmVuZGVyZXI7
CiAgICAgR1JlZlB0cjxPd3JHc3RBdWRpb1JlbmRlcmVyPiBtX2F1ZGlvUmVuZGVyZXI7CisKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBt
X2F1ZGlvVHJhY2tNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5jcHAKaW5kZXggYTdhMjFm
NGFmMTMxOWExY2JjNmFkMDc4ZTY5YWE2OTc2ZDI3ZmJmYy4uNDQ4MzlkMTNhNjUyNDhhNjM2ZTIy
ZDgwMzZhNmY0NGI1YTZmYjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3Iu
Y3BwCkBAIC0zOSw3ICszOSw4IEBACiAjaW5jbHVkZSAiT3BlbldlYlJUQ1V0aWxpdGllcy5oIgog
I2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uU3RhdGVzLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oIgorI2luY2x1
ZGUgIlJlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaCIKKyNpbmNsdWRlICJSZWFsdGltZVZpZGVvU291
cmNlT3dyLmgiCiAjaW5jbHVkZSA8b3dyL293ci5oPgogI2luY2x1ZGUgPG93ci9vd3JfYXVkaW9f
cGF5bG9hZC5oPgogI2luY2x1ZGUgPG93ci9vd3JfY3J5cHRvX3V0aWxzLmg+CkBAIC0zNTAsMTUg
KzM1MSwyMSBAQCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gTWVkaWFFbmRwb2ludE93cjo6Y3Jl
YXRlTXV0ZWRSZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJgogewogICAgIFN0cmluZyBuYW1lOwog
ICAgIFN0cmluZyBpZCgibm90IHVzZWQiKTsKKyAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZU93cj4gc291cmNlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbzogbmFtZSA9ICJyZW1vdGUgYXVkaW8iOyBicmVhazsKLSAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOiBuYW1lID0gInJlbW90ZSB2aWRlbyI7IGJyZWFr
OworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW86CisgICAgICAgIG5hbWUgPSAi
cmVtb3RlIGF1ZGlvIjsKKyAgICAgICAgc291cmNlID0gYWRvcHRSZWYobmV3IFJlYWx0aW1lQXVk
aW9Tb3VyY2VPd3IobnVsbHB0ciwgaWQsIHR5cGUsIG5hbWUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKKyAgICAgICAgbmFtZSA9ICJyZW1v
dGUgdmlkZW8iOworICAgICAgICBzb3VyY2UgPSBhZG9wdFJlZihuZXcgUmVhbHRpbWVWaWRlb1Nv
dXJjZU93cihudWxscHRyLCBpZCwgdHlwZSwgbmFtZSkpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAotICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlT3dyPiBzb3VyY2Ug
PSBhZG9wdFJlZihuZXcgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihudWxscHRyLCBpZCwgdHlwZSwg
bmFtZSkpOwogICAgIG1fbXV0ZWRSZW1vdGVTb3VyY2VzLnNldChtaWQsIHNvdXJjZSk7CiAKICAg
ICByZXR1cm4gKnNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZUF1ZGlvU291cmNl
T3dyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjM0OWYwNTFiMGYzNmMzNDQzOGU0MzJmYTczOGIyMTA3ZTk0OTI5
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsMjAxNiBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgTWV0cm9sb2dpY2FsCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKE9QRU5XRUJSVEMpCisKKyNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlT3dyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUmVhbHRpbWVBdWRpb1NvdXJjZU93ciA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlT3dyIHsKK3B1YmxpYzoKK1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IoT3dyTWVkaWFTb3VyY2Uq
IG1lZGlhU291cmNlLCBjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3Io
bWVkaWFTb3VyY2UsIGlkLCB0eXBlLCBuYW1lKQorICAgIHsKKyAgICB9CisKK1JlYWx0aW1lQXVk
aW9Tb3VyY2VPd3IoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlT3dyKGlk
LCB0eXBlLCBuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWFsdGltZUF1ZGlv
U291cmNlT3dyKCkgeyB9CisKKyAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlhbGl6ZVNl
dHRpbmdzKCkgZmluYWwgeworICAgICAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MuZGV2aWNlSWQo
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRD
b25zdHJhaXRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworCisgICAgICAgIG1fY3VycmVudFNl
dHRpbmdzLnNldERldmljZUlkKGlkKCkpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93
ci5jcHAKaW5kZXggNjdjOTFiOGU0YWFjZDFjMDRjNGMxMGY2MDAxNGU2NzNmNmFmZDU1YS4uZjNl
NmYxZmVkOWQyNGJmODdjYzg3NGYyNjUzMzA0NGZmOTA0ODQ4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyT3dyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCkBAIC00MCw3ICs0
MCw5IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJPcGVuV2ViUlRDVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJSZWFsdGltZVZpZGVvU291cmNlT3dyLmgiCiAjaW5j
bHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPG93ci9vd3IuaD4KICNpbmNsdWRlIDxvd3Ivb3dyX2xv
Y2FsLmg+CkBAIC0xNDksMTYgKzE1MSwyMSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJPd3I6Om1lZGlhU291cmNlc0F2YWlsYWJsZShHTGlzdCogc291cmNlcykKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBtZWRpYVNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihzb3VyY2UsIGlkLCBt
ZWRpYVNvdXJjZVR5cGUsIHNvdXJjZU5hbWUpKTsKKyAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2VPd3I+IG1lZGlhU291cmNlOworICAgICAgICBpZiAobWVkaWFTb3VyY2VUeXBlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQorICAgICAgICAgICAgbWVkaWFTb3VyY2UgPSBh
ZG9wdFJlZihuZXcgUmVhbHRpbWVBdWRpb1NvdXJjZU93cihzb3VyY2UsIGlkLCBtZWRpYVNvdXJj
ZVR5cGUsIHNvdXJjZU5hbWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVkaWFTb3Vy
Y2UgPSBhZG9wdFJlZihuZXcgUmVhbHRpbWVWaWRlb1NvdXJjZU93cihzb3VyY2UsIGlkLCBtZWRp
YVNvdXJjZVR5cGUsIHNvdXJjZU5hbWUpKTsKIAogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNl
T3dyTWFwOjppdGVyYXRvciBzb3VyY2VJdGVyYXRvciA9IG1fc291cmNlTWFwLmZpbmQoaWQpOwog
ICAgICAgICBpZiAoc291cmNlSXRlcmF0b3IgPT0gbV9zb3VyY2VNYXAuZW5kKCkpCiAgICAgICAg
ICAgICBtX3NvdXJjZU1hcC5hZGQoaWQsIG1lZGlhU291cmNlLmNvcHlSZWYoKSk7CiAKICAgICAg
ICAgaWYgKG1lZGlhVHlwZSAmIE9XUl9NRURJQV9UWVBFX0FVRElPKQotICAgICAgICAgICAgYXVk
aW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKG1lZGlhU291cmNlKSk7CisgICAgICAgICAgICBhdWRp
b1NvdXJjZXMuYXBwZW5kKG1lZGlhU291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBl
bHNlIGlmIChtZWRpYVR5cGUgJiBPV1JfTUVESUFfVFlQRV9WSURFTykKLSAgICAgICAgICAgIHZp
ZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZShtZWRpYVNvdXJjZSkpOworICAgICAgICAgICAgdmlk
ZW9Tb3VyY2VzLmFwcGVuZChtZWRpYVNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKwogICAgIH0K
IAogICAgIGlmICh2aWRlb1NvdXJjZXMuaXNFbXB0eSgpICYmIGF1ZGlvU291cmNlcy5pc0VtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZTc0OTlkMzgwMDY2ZjE0YWI2YzljYjAwODdiZTRiNmRkMDg3ODVmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRl
ciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhP
TERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKE9Q
RU5XRUJSVEMpCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRp
bWVNZWRpYVNvdXJjZU93cjo6c2V0dGluZ3MoKSBjb25zdAoreworICAgIGNvbnN0X2Nhc3Q8UmVh
bHRpbWVNZWRpYVNvdXJjZU93ciY+KCp0aGlzKS5pbml0aWFsaXplU2V0dGluZ3MoKTsKKyAgICBy
ZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7Cit9CisKK1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0
ZWRDb25zdHJhaW50cyYgUmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c3VwcG9ydGVkQ29uc3RyYWlu
dHMoKQoreworICAgIGlmIChtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzRGV2aWNlSWQo
KSkKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CisKKyAgICBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7CisgICAgaW5pdGlhbGl6
ZVN1cHBvcnRlZENvbnN0cmFpbnRzKG1fc3VwcG9ydGVkQ29uc3RyYWludHMpOworCisgICAgcmV0
dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9S
ZWFsdGltZU1lZGlhU291cmNlT3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaAppbmRleCAwMWIyYjdlYTNi
MGRiYTY5NWEwMzFjMzQyN2U4ZTAyZDY3MGEzNzY0Li41ODhjYTJiMWIzNjhjN2NmNmY1Y2QxNzZj
ZDlkNTQyMzIxNzBhNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VPd3IuaApAQCAtNzMsMTMgKzczLDIyIEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoY29uc3Qg
U3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTCiAgICAg
fQogCiAgICAgdmlydHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
Y2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KLSAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsgfQorICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0OwogCiAgICAgT3dyTWVkaWFTb3Vy
Y2UqIG1lZGlhU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNvdXJjZTsgfQogCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIHsgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIHsgfTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisKKyAgICBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisKIHByaXZhdGU6CisK
KyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
bV9jYXBhYmlsaXRpZXM7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVu
dFNldHRpbmdzOworCiAgICAgT3dyTWVkaWFTb3VyY2UqIG1fbWVkaWFTb3VyY2U7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRj
NjZhM2UyYjk2MTM2MGU4ODZiM2QwNmNiZWQ5MTMxMzJmYjE0NTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1l
VmlkZW9Tb3VyY2VPd3IuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1LDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1IE1ldHJvbG9naWNhbAor
ICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQorCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZU93ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lVmlk
ZW9Tb3VyY2VPd3IgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZU93ciB7CitwdWJsaWM6CitS
ZWFsdGltZVZpZGVvU291cmNlT3dyKE93ck1lZGlhU291cmNlKiBtZWRpYVNvdXJjZSwgY29uc3Qg
U3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlT3dyKG1lZGlhU291cmNlLCBpZCwgdHlw
ZSwgbmFtZSkKKyAgICB7CisgICAgfQorCitSZWFsdGltZVZpZGVvU291cmNlT3dyKGNvbnN0IFN0
cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZU93cihpZCwgdHlwZSwgbmFtZSkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB+UmVhbHRpbWVWaWRlb1NvdXJjZU93cigpIHsgfQorCisg
ICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
KworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlhbGl6ZVNldHRpbmdzKCkgZmluYWwgeworICAg
ICAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MuZGV2aWNlSWQoKS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaXRzKHN1cHBvcnRlZENv
bnN0cmFpbnRzKCkpOworCisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlk
KCkpOworCisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldEZyYW1lUmF0ZShmcmFtZVJhdGUo
KSk7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFdpZHRoKHNpemUoKS53aWR0aCgpKTsK
KyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0SGVpZ2h0KHNpemUoKS5oZWlnaHQoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykgZmlu
YWwgeworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZhY2luZ01vZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKTsKKyAgICAgICAgc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29u
c3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0
cmFpbnRzLnNldFN1cHBvcnRzQXNwZWN0UmF0aW8odHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShPUEVOV0VCUlRDKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1ODJhNTgyOGRlZDNjZDE0NjgwOTIzODMwOTQ3Mjk5MTgy
NWM2ZTQuLjJlZGI5ODA5ODAzODFlNjIzMTY3YjlkNjJmZjMyMWFiYzEzZmU5ZjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxNi0xMi0wMiAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdh
bGlhLmNvbT4KKworICAgICAgICBbT1dSXSBVbnNraXAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3AuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
czogVW5za2lwcGVkIHRoZSB0ZXN0IGFuZCBtb3ZlZCB0aGUKKyAgICAgICAgc3RvcCBvbmUsIG5v
dyBpdCBkb2VzIG5vdCB0aW1lb3V0IGJlY2F1c2Ugd2UgY29ycmVjdGx5IGhhbmRsZSB0aGUKKyAg
ICAgICAgZW5kZWQgdmFsdWUgYnV0IHN0aWxsIGZhaWxzLCB3ZSBuZWVkIG1vcmUgZmVhdHVyZXMg
aW4gdGhlIG1vY2sKKyAgICAgICAgY2xhc3NlcyBmb3Igb3dyLgorCiAyMDE2LTEyLTEyICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3Jp
ZF0gQWRkIHNvbWUgdGVzdCBjYXNlcyB0aGF0IHdlcmUgcmVtb3ZlZCBpbiByMjA5NTYyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI1MjQ1ZTdjMWQ2MzJl
NGJlNjFlZDQxNzcxZWI3NzhkNDJiNjBmMjYuLmNlMGYzZGNlMDkyN2NhMTA5NTZlZDUzMGZmMTNk
MTliODA2M2NiZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMTEsNyArMzExLDYgQEAgd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvZXZlbnRzL2NvbnN0
cnVjdG9ycy9tZWRpYS1zdHJlYW0tZXZlbnQtY29uc3RydWN0b3IuaHRtbAogd2Via2l0Lm9yZy9i
Lzc5MjAzIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9kZXN0aW5hdGlvbm5vZGUuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vu
b2RlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAz
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTEzNDQgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS1hZGQtZW5kZWQtdHJhY2tzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTEzNDQg
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9tb2NrLW1lZGlhLXNvdXJj
ZS5odG1sIFsgU2tpcCBdCkBAIC0zMjAsNiArMzE5LDcgQEAgd2Via2l0Lm9yZy9iLzE2MDk5NiBm
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRp
c2EKIHdlYmtpdC5vcmcvYi8xNjA5OTYgZmFzdC9tZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50
cy1hZHZhbmNlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYwOTk2IGZhc3QvbWVkaWFz
dHJlYW0vYXBwbHktY29uc3RyYWludHMtYXVkaW8uaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzE2MDk5NiBmYXN0L21lZGlhc3RyZWFtL2FwcGx5LWNvbnN0cmFpbnRzLXZpZGVvLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8xNjE5NTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LWRpc3BsYXlzLWJ1ZmZlci5odG1sIFsgU2tpcCBdCiAKICMgUHJveGltaXR5
IEV2ZW50cyBpcyBub3Qgc3VwcG9ydGVkLgogd2Via2l0Lm9yZy9iLzk5MDYwIHByb3hpbWl0eSBb
IEZhaWx1cmUgXQpAQCAtNzc4LDggKzc3OCw2IEBAIHdlYmtpdC5vcmcvYi8xMTc3NTYgbWVkaWEv
dHJhY2svbWVkaWEtZWxlbWVudC1lbnF1ZXVlLWV2ZW50LWNyYXNoLmh0bWwgWyBUaW1lb3V0CiAK
IHdlYmtpdC5vcmcvYi8xNTM5MzcgaHR0cC90ZXN0cy9taXNjL2RldGFjaC1kdXJpbmctbm90aWZ5
RG9uZS5odG1sIFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8xNjE5NTYgZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWRpc3BsYXlzLWJ1ZmZlci5odG1sIFsg
VGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xMzE1NDYgbWVkaWEvdHJhY2svdHJhY2staW4tYmFu
ZC5odG1sIFsgQ3Jhc2ggVGltZW91dCBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2Mzc4MiBt
ZWRpYS92aWRlby1wbGF5ZWQtcmFuZ2VzLTEuaHRtbCBbIENyYXNoIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297651</attachid>
            <date>2016-12-22 03:53:55 -0800</date>
            <delta_ts>2016-12-23 01:58:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165316-20161222125249.patch</filename>
            <type>text/plain</type>
            <size>31450</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ0NmEzNDZlMWYwYzk0
ZGZlOGZiZjgyOWY0MGI3ZDYxOGU5N2E5Ny4uNjk3NTEzZjAzOTFjZGFlZDhiNmNhMGM1ZGRmM2E0
YzQzMjdiZmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTEyLTIyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtPV1JdIFVuc2tp
cCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC5o
dG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUz
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhl
ZCB0aGUgZW5kZWQgc3VwcG9ydCBvZiB0aGUgdmlkZW8gZWxlbWVudCBpbiB0aGUgT1dSIHBsYXll
ciBhbmQKKyAgICAgICAgZml4ZWQgdGhlIHZpZGVvVHJhY2tzIHN1cHBvcnQuIE5vdyB0aGUgT1cg
cGxheWVyIHByb3Blcmx5IGFkZHMgYW5kCisgICAgICAgIHJlbW92ZXMgdGhlIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MuIEFkZGVkIHRoZSBnZXRTZXR0aW5ncyBzdXBwb3J0CisgICAgICAgIHRvIHRo
ZSBtZWRpYXN0cmVhbSBpbnRlcmZhY2UuIFNvbHZlZCBhbHNvIHRoZSBzaXplIGhhbmRsaW5nIGlu
CisgICAgICAgIHNvbWUgb2YgdGhlIGVuYWJsZS9tdXRlZCBzaXR1YXRpb25zLgorCisgICAgICAg
IFVuc2tpcHBpbmcgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRy
YWNrLXN0b3AuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZTogQWRk
ZWQgdGhlIG5ldworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcCB3aXRoIHRoZSBu
ZXcgY29kZSBoYW5kbGluZyB0aGUKKyAgICAgICAgc2V0dGluZ3MuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IpOgorICAgICAgICBSZWxlYXNlIHRoZSBuZXcgdmlk
ZW8gYW5kIGF1ZGlvIG1hcHMgdGhhdCBjcmVhdGVzIGEgcmVsYXRpb25zaGlwCisgICAgICAgIG9m
IHRoZSBtZWRpYXN0cmVhbSB0cmFja3Mgd2l0aCB0aGUgbWVkaWF0cmFja3Mgb2YgdGhlIHZpZGVv
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnBsYXkpOiBTZXQgZW5kZWQgdG8KKyAgICAgICAgZmFsc2Ugd2hlbiB3ZSBzdGFydCBwbGF5
aW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjps
b2FkKTogQ3JlYXRlIHRoZSBtZWRpYQorICAgICAgICB0cmFja3MgdG8gdGhlIHBsYXllciBzbyB0
aGF0IHRoZSB2aWRlb1RyYWNrcyBBUEkgcmV0dXJucyBpdCwgYW5kCisgICAgICAgIGFkZCBhbiBl
bnRyeSBpbiB0aGUgbWFwIHRvIGJlIGFibGUgdG8gcmVzdG9yZSBpdCB1c2luZyB0aGUKKyAgICAg
ICAgbWVkaWFzdHJlYW0gdHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OmRpc2FibGVNZWRpYVRyYWNrcyk6CisgICAgICAgIE1vdmUgc29tZSBw
YXJ0IG9mIHRoZSBzdG9wIGZ1bmN0aW9uIHRvIHRoaXMgb25lIGluIG9yZGVyIHRvIHVzZSBpdAor
ICAgICAgICBpbiBwYXVzZSBtZXRob2QgYW5kIGF2b2lkIGNoYW5naW5nIHRoZSB2aWRlbyBzZWxl
Y3Rpb24gaW4gdGhhdAorICAgICAgICBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpzdG9wKTogTm93IHdlIGNhbGwgdGhlCisgICAgICAgIGZ1
bmN0aW9uIGRpc2FibGVNZWRpYVRyYWNrcyBhbmQgd2UgYWxzbyBjaGFuZ2UgdGVoIHNlbGVjdGVk
CisgICAgICAgIHZpZGVvVHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQpOiBGb3IKKyAgICAgICAgdmlkZW9UcmFjayByZXNl
dCB0aGUgc2l6ZSBhbmQgdGhlIHNlbGVjdGVkIGVsZW1lbnQuIEluIGNhc2UgdGhlcmUKKyAgICAg
ICAgaXMgbm8gbWVkaWEgcGxheWluZyB3ZSBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBlbmRlZCB2YXJp
YWJsZSB0byB0cnVlCisgICAgICAgIGFuZCBjYWxsIHRoZSB0aW1lQ2hhbmdlIHRvIG1vZGlmeSB0
aGUgc3RhdGUgb2YgdGhlIHBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIEhhbmRsZSBw
cm9wZXJseSB0aGUgc2l0dWF0aW9uIHdoZW4gdGhlIHVzZXIgY2hhbmdlZCB0aGUgZW5hYmxlZAor
ICAgICAgICB2YWx1ZSwgd2UgZGlzYWJsZSB0aGUgbWVkaWEuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnNldFNpemUpOiBNb2RpZnkgdGhlCisgICAg
ICAgIHNpemUgb2YgdGhlIHNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6bmF0dXJhbFNpemUpOiBPdmVycmlkZWQKKyAgICAgICAgdG8gbWFr
ZSBzdXJlIHdlIHJldHVybiBhIHNpemUgZXZlbiB3aGVuIHRoZSBzYW1wbGUgaXMgbm90IHJlYWR5
CisgICAgICAgIGZvciBnc3QuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oOgorICAgICAgICBBZGRlZCB0aGUgZW5k
ZWQgYXR0cmlidXRlIGFuZCB0aGUgbWFwcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmRwb2ludE93cjo6Y3JlYXRlTXV0ZWRSZW1vdGVTb3VyY2UpOiBVc2UgdGhlIG5ldworICAg
ICAgICByZWFsdGltZSB2aWRlbyBhbmQgYXVkaW8gc291cmNlcyBjbGFzc2VzLCB0aGlzIG5ldyBj
bGFzc2VzCisgICAgICAgIGltcGxlbWVudCB0aGUgc2V0dGluZ3Mgb2YgZWFjaCB0eXBlIG9mIG1l
ZGlhIGVsZW1lbnQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6Om1lZGlhU291cmNlc0F2YWlsYWJsZSk6CisgICAgICAg
IFVzZSB0aGUgbmV3IGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2UgY2xhc3NlcyBpbnN0ZWFkIG9mIHRo
ZSBnZW5lcmFsCisgICAgICAgIG9uZSBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHNldHRpbmdzIHBy
b3Blcmx5LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVNZWRpYVNvdXJjZU93ci5jcHA6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlT3dyOjpzZXR0aW5ncyk6IEluaXRpYWxpemUgdXNpbmcgdGhlCisgICAgICAgIHN1
YmNsYXNzIGFuZCByZXR1cm4gdGhlIG5ldyBjdXJyZW50U2V0dGluZ3MgYXR0cmlidXRlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c3VwcG9ydGVkQ29uc3RyYWlu
dHMpOiBDYWxsIHRoZQorICAgICAgICBzdWJjbGFzcyBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3Vw
cG9ydGVkU2V0dGluZ3MuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlT3dyOjppbml0aWFsaXplU2V0dGluZ3MpOiBBZGRlZCB0bworICAgICAgICBpbml0
aWFsaXplIHRoZSBzZXR0aW5ncyBiZWZvcmUgcmV0dXJuaW5nIHRoZSB2YWx1ZS4gSW1wbGVtZW50
ZWQgaW4KKyAgICAgICAgdGhlIHN1YmNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZU93cjo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKToKKyAgICAgICAg
QWRkZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3VwcG9ydGVkIHNldHRpbmdzIG9mIHRoZQorICAgICAg
ICBtZWRpYS4gSW1wbGVtZW50ZWQgaW4gdGhlIHN1YmNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c2V0dGluZ3MpOiBNb3ZlZCB0byB0aGUgY3BwCisgICAg
ICAgIGZpbGUsIGltcGxlbWVudGVkIHVzaW5nIHRoZSBpbml0aWFsaXplIGZ1bmN0aW9ucyBvZiB0
aGUgc3ViY2xhc3MKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lVmlkZW9Tb3VyY2VPd3IuaDogQWRkZWQKKyAgICAgICAgdGhpcyBuZXcgY2xhc3MgdG8g
aGFuZGxlIHRoZSBzZXR0aW5ncyBvZiB0aGUgdmlkZW8gZWxlbWVudHMuIFRoZQorICAgICAgICBj
bGFzcyBpbml0aWFsaXplcyB0aGUgc2V0dGluZ3MgYW5kIHRoZSBzdXBwb3J0ZWRTZXR0aW5ncy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lQXVkaW9T
b3VyY2VPd3IuaDogQWRkZWQKKyAgICAgICAgdGhpcyBuZXcgY2xhc3MgdG8gaGFuZGxlIHRoZSBz
ZXR0aW5ncyBvZiB0aGUgYXVkaW8gZWxlbWVudHMuIFRoZQorICAgICAgICBjbGFzcyBpbml0aWFs
aXplcyB0aGUgc2V0dGluZ3MgYW5kIHRoZSBzdXBwb3J0ZWRTZXR0aW5ncy4KKworCiAyMDE2LTEy
LTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFRp
bGVHcmlkIHJldmFsaWRhdGVzIHRpbGVzIHR3aWNlIGR1cmluZyBmbHVzaCwgZmlyc3Qgd2l0aCB3
cm9uZyB2aXNpYmxlIHJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dT
dHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpp
bmRleCA3NmRlMDg1YTFjN2Q1ZTIwNWE1NTE3Njg0YjBlODFhYzQ0YWNkY2IyLi5iNGNjMDk2ZmJl
ZmY3ODFjNWMyNTQwYTc3NDllYTg2ODNmMGQ0MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R1N0cmVhbWVyLmNtYWtlCkBAIC0xNiw2ICsxNiw3IEBAIGlmIChFTkFCTEVfTUVESUFfU1RSRUFN
KQogCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2lu
dE93ci5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9PcGVuV2Vi
UlRDVXRpbGl0aWVzLmNwcAorICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKICAgICApCiBlbmRp
ZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dy
LmNwcAppbmRleCAzZjAwZThkMWQzMjUzM2U2OGQyNzFkNTVjYmRhN2RjYjA5MTFkYzg0Li5iMzVm
NWQ3MTZjYmMzZWM3MmFmOTMxMjMzYjk3YTVkMWFlNjllMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyT3dyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmNwcApAQCAtNTYsNiArNTYsOSBA
QCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6On5NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJPd3IoKQogICAgIGlmIChoYXNWaWRlbygpKQogICAgICAgICBtX3ZpZGVvVHJhY2stPnJl
bW92ZU9ic2VydmVyKCp0aGlzKTsKIAorICAgIG1fYXVkaW9UcmFja01hcC5jbGVhcigpOworICAg
IG1fdmlkZW9UcmFja01hcC5jbGVhcigpOworCiAgICAgc3RvcCgpOwogfQogCkBAIC02OSw2ICs3
Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpwbGF5KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fZW5kZWQgPSBmYWxzZTsKICAgICBtX3BhdXNlZCA9
IGZhbHNlOwogCiAgICAgR1NUX0RFQlVHKCJDb25uZWN0aW5nIHRvIGxpdmUgc3RyZWFtLCBkZXNj
cmlwdG9yOiAlcCIsIG1fc3RyZWFtUHJpdmF0ZS5nZXQoKSk7CkBAIC04NCw3ICs4OCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpwYXVzZSgpCiB7CiAgICAgR1NUX0RF
QlVHKCJQYXVzZSIpOwogICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAgICBzdG9wKCk7CisgICAgZGlz
YWJsZU1lZGlhVHJhY2tzKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
T3dyOjpoYXNWaWRlbygpIGNvbnN0CkBAIC0yMDEsNiArMjA1LDkgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJPd3I6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW1Qcml2
YXRlKQogICAgICAgICAgICAgICAgIFN0cmluZyBwcmVTZWxlY3RlZERldmljZSA9IGdldGVudigi
V0VCS0lUX0FVRElPX0RFVklDRSIpOwogICAgICAgICAgICAgICAgIGlmICghcHJlU2VsZWN0ZWRE
ZXZpY2UgfHwgKHByZVNlbGVjdGVkRGV2aWNlID09IHRyYWNrLT5sYWJlbCgpKSkgewogICAgICAg
ICAgICAgICAgICAgICBtX2F1ZGlvVHJhY2sgPSB0cmFjazsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlKCpt
X2F1ZGlvVHJhY2suZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVk
aW9UcmFjaygqYXVkaW9UcmFjayk7CisgICAgICAgICAgICAgICAgICAgIG1fYXVkaW9UcmFja01h
cC5hZGQodHJhY2stPmlkKCksIGF1ZGlvVHJhY2spOwogICAgICAgICAgICAgICAgICAgICBvYnNl
cnZlVHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIx
MCw2ICsyMTcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmxvYWQo
TWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW1Qcml2YXRlKQogICAgICAgICAgICAgICAgIFN0cmlu
ZyBwcmVTZWxlY3RlZERldmljZSA9IGdldGVudigiV0VCS0lUX1ZJREVPX0RFVklDRSIpOwogICAg
ICAgICAgICAgICAgIGlmICghcHJlU2VsZWN0ZWREZXZpY2UgfHwgKHByZVNlbGVjdGVkRGV2aWNl
ID09IHRyYWNrLT5sYWJlbCgpKSkgewogICAgICAgICAgICAgICAgICAgICBtX3ZpZGVvVHJhY2sg
PSB0cmFjazsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3ZpZGVvVHJhY2suZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdmlkZW9UcmFjayk7CisgICAg
ICAgICAgICAgICAgICAgIHZpZGVvVHJhY2stPnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICAg
ICAgICAgICAgICBtX3ZpZGVvVHJhY2tNYXAuYWRkKHRyYWNrLT5pZCgpLCB2aWRlb1RyYWNrKTsK
ICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZVRyYWNrID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CkBAIC0yNDUsMjAgKzI1NiwzMSBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck93cjo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnN0b3Ao
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmRpc2FibGVNZWRpYVRyYWNr
cygpCiB7CiAgICAgaWYgKG1fYXVkaW9UcmFjaykgewogICAgICAgICBHU1RfREVCVUcoIlN0b3A6
IGRpc2Nvbm5lY3RpbmcgYXVkaW8iKTsKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fYXVkaW9SZW5k
ZXJlci5nZXQoKSwgImRpc2FibGVkIiwgVFJVRSwgbnVsbHB0cik7CisgICAgICAgIGdfb2JqZWN0
X3NldChtX2F1ZGlvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIHRydWUsIG51bGxwdHIpOwog
ICAgICAgICBvd3JfbWVkaWFfcmVuZGVyZXJfc2V0X3NvdXJjZShPV1JfTUVESUFfUkVOREVSRVIo
bV9hdWRpb1JlbmRlcmVyLmdldCgpKSwgbnVsbHB0cik7CiAgICAgfQorCiAgICAgaWYgKG1fdmlk
ZW9UcmFjaykgewogICAgICAgICBHU1RfREVCVUcoIlN0b3A6IGRpc2Nvbm5lY3RpbmcgdmlkZW8i
KTsKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVk
IiwgVFJVRSwgbnVsbHB0cik7CisgICAgICAgIGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVyZXIu
Z2V0KCksICJkaXNhYmxlZCIsIHRydWUsIG51bGxwdHIpOwogICAgICAgICBvd3JfbWVkaWFfcmVu
ZGVyZXJfc2V0X3NvdXJjZShPV1JfTUVESUFfUkVOREVSRVIobV92aWRlb1JlbmRlcmVyLmdldCgp
KSwgbnVsbHB0cik7CiAgICAgfQogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck93cjo6c3RvcCgpCit7CisgICAgZGlzYWJsZU1lZGlhVHJhY2tzKCk7CisgICAgaWYgKG1fdmlk
ZW9UcmFjaykgeworICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0
KG1fdmlkZW9UcmFjay0+aWQoKSk7CisgICAgICAgIGlmICh2aWRlb1RyYWNrKQorICAgICAgICAg
ICAgdmlkZW9UcmFjay0+c2V0U2VsZWN0ZWQoZmFsc2UpOworICAgIH0KK30KKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpbml0aWFsaXplR1N0cmVhbWVyQW5k
R1N0cmVhbWVyRGVidWdnaW5nKCkpIHsKQEAgLTMyNyw5ICszNDksMjUgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmIHRyYWNrKQogICAgIH0KIAogICAgIGlmICgmdHJhY2sgPT0gbV9hdWRpb1RyYWNrKQotICAg
ICAgICBnX29iamVjdF9zZXQobV9hdWRpb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCBUUlVF
LCBudWxscHRyKTsKLSAgICBlbHNlIGlmICgmdHJhY2sgPT0gbV92aWRlb1RyYWNrKQotICAgICAg
ICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCBUUlVFLCBu
dWxscHRyKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1fYXVkaW9SZW5kZXJlci5nZXQoKSwgImRp
c2FibGVkIiwgdHJ1ZSwgbnVsbHB0cik7CisgICAgZWxzZSBpZiAoJnRyYWNrID09IG1fdmlkZW9U
cmFjaykgeworICAgICAgICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgpLCAiZGlz
YWJsZWQiLCB0cnVlLCBudWxscHRyKTsKKyAgICAgICAgYXV0byYgcmVhbFRpbWVNZWRpYVNvdXJj
ZSA9IHN0YXRpY19jYXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3ImPihtX3ZpZGVvVHJhY2stPnNv
dXJjZSgpKTsKKyAgICAgICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRXaWR0aCgwKTsKKyAgICAg
ICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRIZWlnaHQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9U
cmFjayA9IG1fdmlkZW9UcmFja01hcC5nZXQobV92aWRlb1RyYWNrLT5pZCgpKTsKKyAgICAgICAg
aWYgKHZpZGVvVHJhY2spCisgICAgICAgICAgICB2aWRlb1RyYWNrLT5zZXRTZWxlY3RlZChmYWxz
ZSk7CisgICAgfQorCisgICAgYm9vbCBhdWRpb0Rpc2FibGVkOworICAgIGJvb2wgdmlkZW9EaXNh
YmxlZDsKKyAgICBnX29iamVjdF9nZXQobV9hdWRpb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQi
LCAmYXVkaW9EaXNhYmxlZCwgbnVsbHB0cik7CisgICAgZ19vYmplY3RfZ2V0KG1fdmlkZW9SZW5k
ZXJlci5nZXQoKSwgImRpc2FibGVkIiwgJnZpZGVvRGlzYWJsZWQsIG51bGxwdHIpOworICAgIGlm
IChhdWRpb0Rpc2FibGVkICYmIHZpZGVvRGlzYWJsZWQpIHsKKyAgICAgICAgbV9lbmRlZCA9IHRy
dWU7CisgICAgICAgIG1fcGxheWVyLT50aW1lQ2hhbmdlZCgpOworICAgIH0KIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKQEAgLTM3OSw3ICs0MTcsMTcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXQKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0Vu
YWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKICAgICBHU1Rf
REVCVUcoIiVzIHRyYWNrIG5vdyAlcyIsIHRyYWNrLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbyA/ICJhdWRpbyI6InZpZGVvIiwgdHJhY2suZW5hYmxlZCgpID8gImVuYWJsZWQi
OiJkaXNhYmxlZCIpOwotICAgIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZSh0cmFjayk7CisK
KyAgICBzd2l0Y2ggKHRyYWNrLnR5cGUoKSkgeworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW86CisgICAgICAgIGdfb2JqZWN0X3NldChtX2F1ZGlvUmVuZGVyZXIuZ2V0KCksICJk
aXNhYmxlZCIsICF0cmFjay5lbmFibGVkKCksIG51bGxwdHIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOgorICAgICAgICBnX29iamVjdF9zZXQo
bV92aWRlb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCAhdHJhY2suZW5hYmxlZCgpLCBudWxs
cHRyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpOb25l
OgorICAgICAgICBHU1RfV0FSTklORygiVHJ5aW5nIHRvIGNoYW5nZSBlbmFibGVkIHN0YXRlIG9m
IGEgdHJhY2sgd2l0aCBOb25lIHR5cGUiKTsKKyAgICB9CiB9CiAKIEdzdEVsZW1lbnQqIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6Y3JlYXRlVmlkZW9TaW5rKCkKQEAgLTQyNiw2ICs0
NzQsMjYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnNldFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpz
ZXRTaXplKHNpemUpOwogICAgIGlmIChtX3ZpZGVvUmVuZGVyZXIpCiAgICAgICAgIGdfb2JqZWN0
X3NldChtX3ZpZGVvUmVuZGVyZXIuZ2V0KCksICJ3aWR0aCIsIHNpemUud2lkdGgoKSwgImhlaWdo
dCIsIHNpemUuaGVpZ2h0KCksIG51bGxwdHIpOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2spCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHJlYWxUaW1lTWVkaWFTb3VyY2UgPSBzdGF0aWNf
Y2FzdDxSZWFsdGltZU1lZGlhU291cmNlT3dyJj4obV92aWRlb1RyYWNrLT5zb3VyY2UoKSk7Cisg
ICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRXaWR0aChzaXplLndpZHRoKCkpOworICAgIHJlYWxU
aW1lTWVkaWFTb3VyY2Uuc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOworfQorCitGbG9hdFNpemUg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgYXV0byBzaXplID0gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNp
emUoKTsKKworICAgIC8vIEluIGNhc2Ugd2UgYXJlIG5vdCBwbGF5aW5nIHRoZSB2aWRlbyB3ZSBy
ZXR1cm4gdGhlIHNpemUgd2Ugc2V0IHRvIHRoZSBtZWRpYSBzb3VyY2UuCisgICAgaWYgKHNpemUu
aXNaZXJvKCkpIHsKKyAgICAgICAgYXV0byYgcmVhbFRpbWVNZWRpYVNvdXJjZSA9IHN0YXRpY19j
YXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3ImPihtX3ZpZGVvVHJhY2stPnNvdXJjZSgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlYWxUaW1lTWVkaWFTb3VyY2Uuc2l6ZSgpOworICAgIH0KKworICAgIHJl
dHVybiBzaXplOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyT3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmgKaW5kZXggZTYyMmQ0MjU5ZjZhOWNh
OTIzZjZmMTA0MmI5YWQ3YWNiYmI4NzNhYi4uMzM0NjMwZTQ1YzM0ODFiYTdkNDJmNTY2MzdlMGRh
YTA1MTU0YmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJPd3IuaApAQCAtMjIsOCArMjIsMTAgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE9QRU5XRUJSVEMpCiAK
KyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgog
CiB0eXBlZGVmIHN0cnVjdCBfT3dyR3N0VmlkZW9SZW5kZXJlciBPd3JHc3RWaWRlb1JlbmRlcmVy
OwogdHlwZWRlZiBzdHJ1Y3QgX093ckdzdEF1ZGlvUmVuZGVyZXIgT3dyR3N0QXVkaW9SZW5kZXJl
cjsKQEAgLTQyLDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IElu
dFNpemUmKSBmaW5hbDsKIAorICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IGZpbmFs
OworCiBwcml2YXRlOgogICAgIEdzdEVsZW1lbnQqIGNyZWF0ZVZpZGVvU2luaygpIGZpbmFsOwog
ICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXVkaW9T
aW5rLmdldCgpOyB9CkBAIC04Nyw2ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhbkxv
YWRQb3N0ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0UG9z
dGVyKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQorICAgIGJvb2wgZW5kZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2VuZGVkOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
T2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJikgZmluYWw7CkBAIC0xMDEsMTQgKzEwNiwxOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKTsKICAg
ICB2b2lkIHN0b3AoKTsKICAgICB2b2lkIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZShNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpOworICAgIHZvaWQgZGlzYWJsZU1lZGlhVHJhY2tzKCk7CiAK
ICAgICBib29sIG1fcGF1c2VkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07
CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3ZpZGVvVHJhY2s7CiAgICAg
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvVHJhY2s7CiAgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBtX2F1ZGlvU2luazsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBtX3N0cmVhbVByaXZhdGU7CiAgICAgR1JlZlB0cjxPd3JHc3RWaWRlb1JlbmRlcmVyPiBtX3Zp
ZGVvUmVuZGVyZXI7CiAgICAgR1JlZlB0cjxPd3JHc3RBdWRpb1JlbmRlcmVyPiBtX2F1ZGlvUmVu
ZGVyZXI7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0+PiBtX2F1ZGlvVHJhY2tNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5jcHAK
aW5kZXggYTdhMjFmNGFmMTMxOWExY2JjNmFkMDc4ZTY5YWE2OTc2ZDI3ZmJmYy4uNDQ4MzlkMTNh
NjUyNDhhNjM2ZTIyZDgwMzZhNmY0NGI1YTZmYjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlh
RW5kcG9pbnRPd3IuY3BwCkBAIC0zOSw3ICszOSw4IEBACiAjaW5jbHVkZSAiT3BlbldlYlJUQ1V0
aWxpdGllcy5oIgogI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uU3RhdGVzLmgiCiAjaW5jbHVkZSAi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZU93
ci5oIgorI2luY2x1ZGUgIlJlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaCIKKyNpbmNsdWRlICJSZWFs
dGltZVZpZGVvU291cmNlT3dyLmgiCiAjaW5jbHVkZSA8b3dyL293ci5oPgogI2luY2x1ZGUgPG93
ci9vd3JfYXVkaW9fcGF5bG9hZC5oPgogI2luY2x1ZGUgPG93ci9vd3JfY3J5cHRvX3V0aWxzLmg+
CkBAIC0zNTAsMTUgKzM1MSwyMSBAQCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gTWVkaWFFbmRw
b2ludE93cjo6Y3JlYXRlTXV0ZWRSZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJgogewogICAgIFN0
cmluZyBuYW1lOwogICAgIFN0cmluZyBpZCgibm90IHVzZWQiKTsKKyAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZU93cj4gc291cmNlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbzogbmFtZSA9ICJyZW1vdGUgYXVkaW8iOyBicmVh
azsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOiBuYW1lID0gInJlbW90ZSB2
aWRlbyI7IGJyZWFrOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW86CisgICAg
ICAgIG5hbWUgPSAicmVtb3RlIGF1ZGlvIjsKKyAgICAgICAgc291cmNlID0gYWRvcHRSZWYobmV3
IFJlYWx0aW1lQXVkaW9Tb3VyY2VPd3IobnVsbHB0ciwgaWQsIHR5cGUsIG5hbWUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKKyAgICAgICAg
bmFtZSA9ICJyZW1vdGUgdmlkZW8iOworICAgICAgICBzb3VyY2UgPSBhZG9wdFJlZihuZXcgUmVh
bHRpbWVWaWRlb1NvdXJjZU93cihudWxscHRyLCBpZCwgdHlwZSwgbmFtZSkpOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
T3dyPiBzb3VyY2UgPSBhZG9wdFJlZihuZXcgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihudWxscHRy
LCBpZCwgdHlwZSwgbmFtZSkpOwogICAgIG1fbXV0ZWRSZW1vdGVTb3VyY2VzLnNldChtaWQsIHNv
dXJjZSk7CiAKICAgICByZXR1cm4gKnNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGlt
ZUF1ZGlvU291cmNlT3dyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM0OWYwNTFiMGYzNmMzNDQzOGU0MzJmYTcz
OGIyMTA3ZTk0OTI5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsMjAxNiBJZ2FsaWEgUy5MCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgTWV0cm9sb2dpY2FsCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKE9QRU5X
RUJSVEMpCisKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlT3dyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVBdWRpb1NvdXJjZU93ciA6IHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlT3dyIHsKK3B1YmxpYzoKK1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IoT3dy
TWVkaWFTb3VyY2UqIG1lZGlhU291cmNlLCBjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICA6IFJlYWx0aW1lTWVk
aWFTb3VyY2VPd3IobWVkaWFTb3VyY2UsIGlkLCB0eXBlLCBuYW1lKQorICAgIHsKKyAgICB9CisK
K1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlh
U291cmNlT3dyKGlkLCB0eXBlLCBuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5S
ZWFsdGltZUF1ZGlvU291cmNlT3dyKCkgeyB9CisKKyAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJ
bnRTaXplJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQg
aW5pdGlhbGl6ZVNldHRpbmdzKCkgZmluYWwgeworICAgICAgICBpZiAobV9jdXJyZW50U2V0dGlu
Z3MuZGV2aWNlSWQoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5z
ZXRTdXBwb3J0ZWRDb25zdHJhaXRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworCisgICAgICAg
IG1fY3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShPUEVOV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck93ci5jcHAKaW5kZXggNjdjOTFiOGU0YWFjZDFjMDRjNGMxMGY2MDAxNGU2NzNm
NmFmZDU1YS4uZjNlNmYxZmVkOWQyNGJmODdjYzg3NGYyNjUzMzA0NGZmOTA0ODQ4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3Bw
CkBAIC00MCw3ICs0MCw5IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPcGVuV2ViUlRDVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oIgogI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJSZWFsdGltZVZpZGVvU291cmNl
T3dyLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPG93ci9vd3IuaD4KICNpbmNsdWRl
IDxvd3Ivb3dyX2xvY2FsLmg+CkBAIC0xNDksMTYgKzE1MSwyMSBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJPd3I6Om1lZGlhU291cmNlc0F2YWlsYWJsZShHTGlzdCogc291cmNlcykK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAg
YXV0byBtZWRpYVNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihz
b3VyY2UsIGlkLCBtZWRpYVNvdXJjZVR5cGUsIHNvdXJjZU5hbWUpKTsKKyAgICAgICAgUmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I+IG1lZGlhU291cmNlOworICAgICAgICBpZiAobWVkaWFT
b3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQorICAgICAgICAgICAgbWVk
aWFTb3VyY2UgPSBhZG9wdFJlZihuZXcgUmVhbHRpbWVBdWRpb1NvdXJjZU93cihzb3VyY2UsIGlk
LCBtZWRpYVNvdXJjZVR5cGUsIHNvdXJjZU5hbWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbWVkaWFTb3VyY2UgPSBhZG9wdFJlZihuZXcgUmVhbHRpbWVWaWRlb1NvdXJjZU93cihzb3Vy
Y2UsIGlkLCBtZWRpYVNvdXJjZVR5cGUsIHNvdXJjZU5hbWUpKTsKIAogICAgICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlT3dyTWFwOjppdGVyYXRvciBzb3VyY2VJdGVyYXRvciA9IG1fc291cmNlTWFw
LmZpbmQoaWQpOwogICAgICAgICBpZiAoc291cmNlSXRlcmF0b3IgPT0gbV9zb3VyY2VNYXAuZW5k
KCkpCiAgICAgICAgICAgICBtX3NvdXJjZU1hcC5hZGQoaWQsIG1lZGlhU291cmNlLmNvcHlSZWYo
KSk7CiAKICAgICAgICAgaWYgKG1lZGlhVHlwZSAmIE9XUl9NRURJQV9UWVBFX0FVRElPKQotICAg
ICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKG1lZGlhU291cmNlKSk7CisgICAg
ICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKG1lZGlhU291cmNlLnJlbGVhc2VOb25OdWxsKCkp
OwogICAgICAgICBlbHNlIGlmIChtZWRpYVR5cGUgJiBPV1JfTUVESUFfVFlQRV9WSURFTykKLSAg
ICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZShtZWRpYVNvdXJjZSkpOworICAg
ICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChtZWRpYVNvdXJjZS5yZWxlYXNlTm9uTnVsbCgp
KTsKKwogICAgIH0KIAogICAgIGlmICh2aWRlb1NvdXJjZXMuaXNFbXB0eSgpICYmIGF1ZGlvU291
cmNlcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNl
T3dyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZTc0OTlkMzgwMDY2ZjE0YWI2YzljYjAwODdiZTRiNmRkMDg3
ODVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29w
eXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKE9QRU5XRUJSVEMpCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyYgUmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c2V0dGluZ3MoKSBjb25zdAoreworICAgIGNv
bnN0X2Nhc3Q8UmVhbHRpbWVNZWRpYVNvdXJjZU93ciY+KCp0aGlzKS5pbml0aWFsaXplU2V0dGlu
Z3MoKTsKKyAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7Cit9CisKK1JlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgUmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c3VwcG9y
dGVkQ29uc3RyYWludHMoKQoreworICAgIGlmIChtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBv
cnRzRGV2aWNlSWQoKSkKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CisK
KyAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7Cisg
ICAgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKG1fc3VwcG9ydGVkQ29uc3RyYWludHMp
OworCisgICAgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVO
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaAppbmRl
eCAxYmY1MTI4ZTgxZDk1MGFlNmFlZjQyNTEwZmZhNzViN2VlNDZlNjVmLi4zOTA0YTgwMzgzN2Y2
MjUxNDkyYWQwMzAxNzU1NDg4MDc5OTQzNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0
aW1lTWVkaWFTb3VyY2VPd3IuaApAQCAtNzMsMTMgKzczLDIwIEBAIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VPd3IoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBj
b25zdCBTCiAgICAgfQogCiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IGNhcGFiaWxpdGllcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVz
OyB9Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOyB9CisgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0OwogCiAgICAgT3dyTWVk
aWFTb3VyY2UqIG1lZGlhU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNvdXJjZTsgfQog
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIHsgfTsKKyAgICBSZWFsdGltZU1lZGlh
U291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CisKKyAg
ICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisKIHByaXZh
dGU6CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9y
dGVkQ29uc3RyYWludHM7CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1
cnJlbnRTZXR0aW5nczsKICAgICBPd3JNZWRpYVNvdXJjZSogbV9tZWRpYVNvdXJjZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJy
dGMvUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZpZGVvU291cmNlT3dyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGM2NmEzZTJiOTYxMzYwZTg4NmIzZDA2Y2JlZDkxMzEzMmZiMTQ1NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVWaWRlb1NvdXJjZU93ci5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUsMjAxNiBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWV0cm9sb2dpY2Fs
CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKE9QRU5XRUJSVEMpCisKKyNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlT3dyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVW
aWRlb1NvdXJjZU93ciA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlT3dyIHsKK3B1YmxpYzoK
K1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IoT3dyTWVkaWFTb3VyY2UqIG1lZGlhU291cmNlLCBjb25z
dCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IobWVkaWFTb3VyY2UsIGlkLCB0
eXBlLCBuYW1lKQorICAgIHsKKyAgICB9CisKK1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IoY29uc3Qg
U3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlT3dyKGlkLCB0eXBlLCBuYW1lKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZWFsdGltZVZpZGVvU291cmNlT3dyKCkgeyB9CisK
KyAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKSBmaW5hbCB7Cisg
ICAgICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVk
Q29uc3RyYWludHMoKSk7CisKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0RGV2aWNlSWQo
aWQoKSk7CisKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0RnJhbWVSYXRlKGZyYW1lUmF0
ZSgpKTsKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0V2lkdGgoc2l6ZSgpLndpZHRoKCkp
OworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRIZWlnaHQoc2l6ZSgpLmhlaWdodCgpKTsK
KyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKSBm
aW5hbCB7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd24pOworICAgICAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1dpZHRoKHRydWUpOworICAgICAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29u
c3RyYWludHMuc2V0U3VwcG9ydHNBc3BlY3RSYXRpbyh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVk
Q29uc3RyYWludHMuc2V0U3VwcG9ydHNGcmFtZVJhdGUodHJ1ZSk7CisgICAgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKE9QRU5XRUJSVEMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q0ODY2MzVmN2ZjOTY3NzYyYjU2OWE2NGYzMmE2NjI0
ODYzMmQxMy4uNGUwMmFlNTA5NDcwNDY3OGI1Y2FmMjU3Zjk0MGUxMTY4NTA5MzgxNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTEyLTIyICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtPV1JdIFVuc2tpcCBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC5odG1sCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zOiBVbnNraXBwZWQgdGhlIHRlc3QgYW5kIG1vdmVkIHRoZQorICAgICAgICBzdG9wIG9uZSwg
bm93IGl0IGRvZXMgbm90IHRpbWVvdXQgYmVjYXVzZSB3ZSBjb3JyZWN0bHkgaGFuZGxlIHRoZQor
ICAgICAgICBlbmRlZCB2YWx1ZSBidXQgc3RpbGwgZmFpbHMsIHdlIG5lZWQgbW9yZSBmZWF0dXJl
cyBpbiB0aGUgbW9jaworICAgICAgICBjbGFzc2VzIGZvciBvd3IuCisKIDIwMTYtMTItMjEgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3Ry
ZWFtXSBVcGRhdGUgbWVkaWEtc3RyZWFtLWV2ZW50LWNvbnN0cnVjdG9yIHRlc3QKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOThlMTU2YzRiNGExZjE4OTEw
ZTZjMTI4NWUyMzIzZjFjNzcyNjY1ZC4uOTFkODQ5ZmEwYmIzNDMyNWExZTgxNjdkZTNiYmM5YWRm
YzA5NzQ3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTMxNCw3ICszMTQsNiBAQCB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL21lZGlhLXN0cmVhbS1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCiB3ZWJraXQub3JnL2IvNzky
MDMgd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb2Rlc3RpbmF0aW9ubm9kZS5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvNzkyMDMgd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUu
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tdmlkZW8tZWxlbWVudC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNzkyMDMgZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3AuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzE1MTM0NCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWFkZC1lbmRlZC10cmFja3MuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE1MTM0NCBmYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL21vY2stbWVkaWEtc291cmNlLmh0
bWwgWyBTa2lwIF0KQEAgLTMyMyw2ICszMjIsNyBAQCB3ZWJraXQub3JnL2IvMTYwOTk2IGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC12aWRlby10cmFja3MtZGlzYQog
d2Via2l0Lm9yZy9iLzE2MDk5NiBmYXN0L21lZGlhc3RyZWFtL2FwcGx5LWNvbnN0cmFpbnRzLWFk
dmFuY2VkLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjA5OTYgZmFzdC9tZWRpYXN0cmVh
bS9hcHBseS1jb25zdHJhaW50cy1hdWRpby5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYw
OTk2IGZhc3QvbWVkaWFzdHJlYW0vYXBwbHktY29uc3RyYWludHMtdmlkZW8uaHRtbCBbIFNraXAg
XQord2Via2l0Lm9yZy9iLzE2MTk1NiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVv
LWVsZW1lbnQtZGlzcGxheXMtYnVmZmVyLmh0bWwgWyBTa2lwIF0KIAogIyBQcm94aW1pdHkgRXZl
bnRzIGlzIG5vdCBzdXBwb3J0ZWQuCiB3ZWJraXQub3JnL2IvOTkwNjAgcHJveGltaXR5IFsgRmFp
bHVyZSBdCkBAIC04MjEsOCArODIxLDYgQEAgd2Via2l0Lm9yZy9iLzExNzc1NiBtZWRpYS90cmFj
ay9tZWRpYS1lbGVtZW50LWVucXVldWUtZXZlbnQtY3Jhc2guaHRtbCBbIFRpbWVvdXQKIAogd2Vi
a2l0Lm9yZy9iLzE1MzkzNyBodHRwL3Rlc3RzL21pc2MvZGV0YWNoLWR1cmluZy1ub3RpZnlEb25l
Lmh0bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzE2MTk1NiBmYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtZGlzcGxheXMtYnVmZmVyLmh0bWwgWyBUaW1l
b3V0IF0KLQogd2Via2l0Lm9yZy9iLzEzMTU0NiBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLmh0
bWwgWyBDcmFzaCBUaW1lb3V0IEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTYzNzgyIG1lZGlh
L3ZpZGVvLXBsYXllZC1yYW5nZXMtMS5odG1sIFsgQ3Jhc2ggUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297707</attachid>
            <date>2016-12-23 01:58:45 -0800</date>
            <delta_ts>2017-01-09 03:04:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165316-20161223105738.patch</filename>
            <type>text/plain</type>
            <size>31475</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ0NmEzNDZlMWYwYzk0
ZGZlOGZiZjgyOWY0MGI3ZDYxOGU5N2E5Ny4uNjk3NTEzZjAzOTFjZGFlZDhiNmNhMGM1ZGRmM2E0
YzQzMjdiZmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTEyLTIyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtPV1JdIFVuc2tp
cCBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC5o
dG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUz
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhl
ZCB0aGUgZW5kZWQgc3VwcG9ydCBvZiB0aGUgdmlkZW8gZWxlbWVudCBpbiB0aGUgT1dSIHBsYXll
ciBhbmQKKyAgICAgICAgZml4ZWQgdGhlIHZpZGVvVHJhY2tzIHN1cHBvcnQuIE5vdyB0aGUgT1cg
cGxheWVyIHByb3Blcmx5IGFkZHMgYW5kCisgICAgICAgIHJlbW92ZXMgdGhlIGF1ZGlvIGFuZCB2
aWRlbyB0cmFja3MuIEFkZGVkIHRoZSBnZXRTZXR0aW5ncyBzdXBwb3J0CisgICAgICAgIHRvIHRo
ZSBtZWRpYXN0cmVhbSBpbnRlcmZhY2UuIFNvbHZlZCBhbHNvIHRoZSBzaXplIGhhbmRsaW5nIGlu
CisgICAgICAgIHNvbWUgb2YgdGhlIGVuYWJsZS9tdXRlZCBzaXR1YXRpb25zLgorCisgICAgICAg
IFVuc2tpcHBpbmcgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRy
YWNrLXN0b3AuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZTogQWRk
ZWQgdGhlIG5ldworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlT3dyLmNwcCB3aXRoIHRoZSBu
ZXcgY29kZSBoYW5kbGluZyB0aGUKKyAgICAgICAgc2V0dGluZ3MuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6On5NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3IpOgorICAgICAgICBSZWxlYXNlIHRoZSBuZXcgdmlk
ZW8gYW5kIGF1ZGlvIG1hcHMgdGhhdCBjcmVhdGVzIGEgcmVsYXRpb25zaGlwCisgICAgICAgIG9m
IHRoZSBtZWRpYXN0cmVhbSB0cmFja3Mgd2l0aCB0aGUgbWVkaWF0cmFja3Mgb2YgdGhlIHZpZGVv
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJP
d3I6OnBsYXkpOiBTZXQgZW5kZWQgdG8KKyAgICAgICAgZmFsc2Ugd2hlbiB3ZSBzdGFydCBwbGF5
aW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjps
b2FkKTogQ3JlYXRlIHRoZSBtZWRpYQorICAgICAgICB0cmFja3MgdG8gdGhlIHBsYXllciBzbyB0
aGF0IHRoZSB2aWRlb1RyYWNrcyBBUEkgcmV0dXJucyBpdCwgYW5kCisgICAgICAgIGFkZCBhbiBl
bnRyeSBpbiB0aGUgbWFwIHRvIGJlIGFibGUgdG8gcmVzdG9yZSBpdCB1c2luZyB0aGUKKyAgICAg
ICAgbWVkaWFzdHJlYW0gdHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OmRpc2FibGVNZWRpYVRyYWNrcyk6CisgICAgICAgIE1vdmUgc29tZSBw
YXJ0IG9mIHRoZSBzdG9wIGZ1bmN0aW9uIHRvIHRoaXMgb25lIGluIG9yZGVyIHRvIHVzZSBpdAor
ICAgICAgICBpbiBwYXVzZSBtZXRob2QgYW5kIGF2b2lkIGNoYW5naW5nIHRoZSB2aWRlbyBzZWxl
Y3Rpb24gaW4gdGhhdAorICAgICAgICBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpzdG9wKTogTm93IHdlIGNhbGwgdGhlCisgICAgICAgIGZ1
bmN0aW9uIGRpc2FibGVNZWRpYVRyYWNrcyBhbmQgd2UgYWxzbyBjaGFuZ2UgdGVoIHNlbGVjdGVk
CisgICAgICAgIHZpZGVvVHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQpOiBGb3IKKyAgICAgICAgdmlkZW9UcmFjayByZXNl
dCB0aGUgc2l6ZSBhbmQgdGhlIHNlbGVjdGVkIGVsZW1lbnQuIEluIGNhc2UgdGhlcmUKKyAgICAg
ICAgaXMgbm8gbWVkaWEgcGxheWluZyB3ZSBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBlbmRlZCB2YXJp
YWJsZSB0byB0cnVlCisgICAgICAgIGFuZCBjYWxsIHRoZSB0aW1lQ2hhbmdlIHRvIG1vZGlmeSB0
aGUgc3RhdGUgb2YgdGhlIHBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIEhhbmRsZSBw
cm9wZXJseSB0aGUgc2l0dWF0aW9uIHdoZW4gdGhlIHVzZXIgY2hhbmdlZCB0aGUgZW5hYmxlZAor
ICAgICAgICB2YWx1ZSwgd2UgZGlzYWJsZSB0aGUgbWVkaWEuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnNldFNpemUpOiBNb2RpZnkgdGhlCisgICAg
ICAgIHNpemUgb2YgdGhlIHNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck93cjo6bmF0dXJhbFNpemUpOiBPdmVycmlkZWQKKyAgICAgICAgdG8gbWFr
ZSBzdXJlIHdlIHJldHVybiBhIHNpemUgZXZlbiB3aGVuIHRoZSBzYW1wbGUgaXMgbm90IHJlYWR5
CisgICAgICAgIGZvciBnc3QuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oOgorICAgICAgICBBZGRlZCB0aGUgZW5k
ZWQgYXR0cmlidXRlIGFuZCB0aGUgbWFwcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmRwb2ludE93cjo6Y3JlYXRlTXV0ZWRSZW1vdGVTb3VyY2UpOiBVc2UgdGhlIG5ldworICAg
ICAgICByZWFsdGltZSB2aWRlbyBhbmQgYXVkaW8gc291cmNlcyBjbGFzc2VzLCB0aGlzIG5ldyBj
bGFzc2VzCisgICAgICAgIGltcGxlbWVudCB0aGUgc2V0dGluZ3Mgb2YgZWFjaCB0eXBlIG9mIG1l
ZGlhIGVsZW1lbnQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6Om1lZGlhU291cmNlc0F2YWlsYWJsZSk6CisgICAgICAg
IFVzZSB0aGUgbmV3IGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2UgY2xhc3NlcyBpbnN0ZWFkIG9mIHRo
ZSBnZW5lcmFsCisgICAgICAgIG9uZSBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHNldHRpbmdzIHBy
b3Blcmx5LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVNZWRpYVNvdXJjZU93ci5jcHA6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlT3dyOjpzZXR0aW5ncyk6IEluaXRpYWxpemUgdXNpbmcgdGhlCisgICAgICAgIHN1
YmNsYXNzIGFuZCByZXR1cm4gdGhlIG5ldyBjdXJyZW50U2V0dGluZ3MgYXR0cmlidXRlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c3VwcG9ydGVkQ29uc3RyYWlu
dHMpOiBDYWxsIHRoZQorICAgICAgICBzdWJjbGFzcyBpbml0aWFsaXphdGlvbiBvZiB0aGUgc3Vw
cG9ydGVkU2V0dGluZ3MuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlT3dyOjppbml0aWFsaXplU2V0dGluZ3MpOiBBZGRlZCB0bworICAgICAgICBpbml0
aWFsaXplIHRoZSBzZXR0aW5ncyBiZWZvcmUgcmV0dXJuaW5nIHRoZSB2YWx1ZS4gSW1wbGVtZW50
ZWQgaW4KKyAgICAgICAgdGhlIHN1YmNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZU93cjo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKToKKyAgICAgICAg
QWRkZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3VwcG9ydGVkIHNldHRpbmdzIG9mIHRoZQorICAgICAg
ICBtZWRpYS4gSW1wbGVtZW50ZWQgaW4gdGhlIHN1YmNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZU93cjo6c2V0dGluZ3MpOiBNb3ZlZCB0byB0aGUgY3BwCisgICAg
ICAgIGZpbGUsIGltcGxlbWVudGVkIHVzaW5nIHRoZSBpbml0aWFsaXplIGZ1bmN0aW9ucyBvZiB0
aGUgc3ViY2xhc3MKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lVmlkZW9Tb3VyY2VPd3IuaDogQWRkZWQKKyAgICAgICAgdGhpcyBuZXcgY2xhc3MgdG8g
aGFuZGxlIHRoZSBzZXR0aW5ncyBvZiB0aGUgdmlkZW8gZWxlbWVudHMuIFRoZQorICAgICAgICBj
bGFzcyBpbml0aWFsaXplcyB0aGUgc2V0dGluZ3MgYW5kIHRoZSBzdXBwb3J0ZWRTZXR0aW5ncy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lQXVkaW9T
b3VyY2VPd3IuaDogQWRkZWQKKyAgICAgICAgdGhpcyBuZXcgY2xhc3MgdG8gaGFuZGxlIHRoZSBz
ZXR0aW5ncyBvZiB0aGUgYXVkaW8gZWxlbWVudHMuIFRoZQorICAgICAgICBjbGFzcyBpbml0aWFs
aXplcyB0aGUgc2V0dGluZ3MgYW5kIHRoZSBzdXBwb3J0ZWRTZXR0aW5ncy4KKworCiAyMDE2LTEy
LTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFRp
bGVHcmlkIHJldmFsaWRhdGVzIHRpbGVzIHR3aWNlIGR1cmluZyBmbHVzaCwgZmlyc3Qgd2l0aCB3
cm9uZyB2aXNpYmxlIHJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dT
dHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpp
bmRleCA3NmRlMDg1YTFjN2Q1ZTIwNWE1NTE3Njg0YjBlODFhYzQ0YWNkY2IyLi5iNGNjMDk2ZmJl
ZmY3ODFjNWMyNTQwYTc3NDllYTg2ODNmMGQ0MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R1N0cmVhbWVyLmNtYWtlCkBAIC0xNiw2ICsxNiw3IEBAIGlmIChFTkFCTEVfTUVESUFfU1RSRUFN
KQogCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2lu
dE93ci5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9PcGVuV2Vi
UlRDVXRpbGl0aWVzLmNwcAorICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKICAgICApCiBlbmRp
ZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dy
LmNwcAppbmRleCAzZjAwZThkMWQzMjUzM2U2OGQyNzFkNTVjYmRhN2RjYjA5MTFkYzg0Li5lZTU2
OGNiZjFlOGVlOWM0ODA1OTE0ZjMxYjhlNjMyNmRjMjlmZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyT3dyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmNwcApAQCAtNTYsNiArNTYsOSBA
QCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6On5NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJPd3IoKQogICAgIGlmIChoYXNWaWRlbygpKQogICAgICAgICBtX3ZpZGVvVHJhY2stPnJl
bW92ZU9ic2VydmVyKCp0aGlzKTsKIAorICAgIG1fYXVkaW9UcmFja01hcC5jbGVhcigpOworICAg
IG1fdmlkZW9UcmFja01hcC5jbGVhcigpOworCiAgICAgc3RvcCgpOwogfQogCkBAIC02OSw2ICs3
Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpwbGF5KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fZW5kZWQgPSBmYWxzZTsKICAgICBtX3BhdXNlZCA9
IGZhbHNlOwogCiAgICAgR1NUX0RFQlVHKCJDb25uZWN0aW5nIHRvIGxpdmUgc3RyZWFtLCBkZXNj
cmlwdG9yOiAlcCIsIG1fc3RyZWFtUHJpdmF0ZS5nZXQoKSk7CkBAIC04NCw3ICs4OCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpwYXVzZSgpCiB7CiAgICAgR1NUX0RF
QlVHKCJQYXVzZSIpOwogICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAgICBzdG9wKCk7CisgICAgZGlz
YWJsZU1lZGlhVHJhY2tzKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
T3dyOjpoYXNWaWRlbygpIGNvbnN0CkBAIC0yMDEsNiArMjA1LDkgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJPd3I6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW1Qcml2
YXRlKQogICAgICAgICAgICAgICAgIFN0cmluZyBwcmVTZWxlY3RlZERldmljZSA9IGdldGVudigi
V0VCS0lUX0FVRElPX0RFVklDRSIpOwogICAgICAgICAgICAgICAgIGlmICghcHJlU2VsZWN0ZWRE
ZXZpY2UgfHwgKHByZVNlbGVjdGVkRGV2aWNlID09IHRyYWNrLT5sYWJlbCgpKSkgewogICAgICAg
ICAgICAgICAgICAgICBtX2F1ZGlvVHJhY2sgPSB0cmFjazsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlKCpt
X2F1ZGlvVHJhY2suZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVk
aW9UcmFjaygqYXVkaW9UcmFjayk7CisgICAgICAgICAgICAgICAgICAgIG1fYXVkaW9UcmFja01h
cC5hZGQodHJhY2stPmlkKCksIGF1ZGlvVHJhY2spOwogICAgICAgICAgICAgICAgICAgICBvYnNl
cnZlVHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIx
MCw2ICsyMTcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmxvYWQo
TWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW1Qcml2YXRlKQogICAgICAgICAgICAgICAgIFN0cmlu
ZyBwcmVTZWxlY3RlZERldmljZSA9IGdldGVudigiV0VCS0lUX1ZJREVPX0RFVklDRSIpOwogICAg
ICAgICAgICAgICAgIGlmICghcHJlU2VsZWN0ZWREZXZpY2UgfHwgKHByZVNlbGVjdGVkRGV2aWNl
ID09IHRyYWNrLT5sYWJlbCgpKSkgewogICAgICAgICAgICAgICAgICAgICBtX3ZpZGVvVHJhY2sg
PSB0cmFjazsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3ZpZGVvVHJhY2suZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdmlkZW9UcmFjayk7CisgICAg
ICAgICAgICAgICAgICAgIHZpZGVvVHJhY2stPnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICAg
ICAgICAgICAgICBtX3ZpZGVvVHJhY2tNYXAuYWRkKHRyYWNrLT5pZCgpLCB2aWRlb1RyYWNrKTsK
ICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZVRyYWNrID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CkBAIC0yNDUsMjAgKzI1NiwzMSBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck93cjo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnN0b3Ao
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OmRpc2FibGVNZWRpYVRyYWNr
cygpCiB7CiAgICAgaWYgKG1fYXVkaW9UcmFjaykgewogICAgICAgICBHU1RfREVCVUcoIlN0b3A6
IGRpc2Nvbm5lY3RpbmcgYXVkaW8iKTsKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fYXVkaW9SZW5k
ZXJlci5nZXQoKSwgImRpc2FibGVkIiwgVFJVRSwgbnVsbHB0cik7CisgICAgICAgIGdfb2JqZWN0
X3NldChtX2F1ZGlvUmVuZGVyZXIuZ2V0KCksICJkaXNhYmxlZCIsIHRydWUsIG51bGxwdHIpOwog
ICAgICAgICBvd3JfbWVkaWFfcmVuZGVyZXJfc2V0X3NvdXJjZShPV1JfTUVESUFfUkVOREVSRVIo
bV9hdWRpb1JlbmRlcmVyLmdldCgpKSwgbnVsbHB0cik7CiAgICAgfQorCiAgICAgaWYgKG1fdmlk
ZW9UcmFjaykgewogICAgICAgICBHU1RfREVCVUcoIlN0b3A6IGRpc2Nvbm5lY3RpbmcgdmlkZW8i
KTsKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9SZW5kZXJlci5nZXQoKSwgImRpc2FibGVk
IiwgVFJVRSwgbnVsbHB0cik7CisgICAgICAgIGdfb2JqZWN0X3NldChtX3ZpZGVvUmVuZGVyZXIu
Z2V0KCksICJkaXNhYmxlZCIsIHRydWUsIG51bGxwdHIpOwogICAgICAgICBvd3JfbWVkaWFfcmVu
ZGVyZXJfc2V0X3NvdXJjZShPV1JfTUVESUFfUkVOREVSRVIobV92aWRlb1JlbmRlcmVyLmdldCgp
KSwgbnVsbHB0cik7CiAgICAgfQogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck93cjo6c3RvcCgpCit7CisgICAgZGlzYWJsZU1lZGlhVHJhY2tzKCk7CisgICAgaWYgKG1fdmlk
ZW9UcmFjaykgeworICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0
KG1fdmlkZW9UcmFjay0+aWQoKSk7CisgICAgICAgIGlmICh2aWRlb1RyYWNrKQorICAgICAgICAg
ICAgdmlkZW9UcmFjay0+c2V0U2VsZWN0ZWQoZmFsc2UpOworICAgIH0KK30KKwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpbml0aWFsaXplR1N0cmVhbWVyQW5k
R1N0cmVhbWVyRGVidWdnaW5nKCkpIHsKQEAgLTMyNyw5ICszNDksMjUgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmIHRyYWNrKQogICAgIH0KIAogICAgIGlmICgmdHJhY2sgPT0gbV9hdWRpb1RyYWNrKQotICAg
ICAgICBnX29iamVjdF9zZXQobV9hdWRpb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCBUUlVF
LCBudWxscHRyKTsKLSAgICBlbHNlIGlmICgmdHJhY2sgPT0gbV92aWRlb1RyYWNrKQotICAgICAg
ICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCBUUlVFLCBu
dWxscHRyKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1fYXVkaW9SZW5kZXJlci5nZXQoKSwgImRp
c2FibGVkIiwgdHJ1ZSwgbnVsbHB0cik7CisgICAgZWxzZSBpZiAoJnRyYWNrID09IG1fdmlkZW9U
cmFjaykgeworICAgICAgICBnX29iamVjdF9zZXQobV92aWRlb1JlbmRlcmVyLmdldCgpLCAiZGlz
YWJsZWQiLCB0cnVlLCBudWxscHRyKTsKKyAgICAgICAgYXV0byYgcmVhbFRpbWVNZWRpYVNvdXJj
ZSA9IHN0YXRpY19jYXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3ImPihtX3ZpZGVvVHJhY2stPnNv
dXJjZSgpKTsKKyAgICAgICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRXaWR0aCgwKTsKKyAgICAg
ICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRIZWlnaHQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9U
cmFjayA9IG1fdmlkZW9UcmFja01hcC5nZXQobV92aWRlb1RyYWNrLT5pZCgpKTsKKyAgICAgICAg
aWYgKHZpZGVvVHJhY2spCisgICAgICAgICAgICB2aWRlb1RyYWNrLT5zZXRTZWxlY3RlZChmYWxz
ZSk7CisgICAgfQorCisgICAgYm9vbCBhdWRpb0Rpc2FibGVkOworICAgIGJvb2wgdmlkZW9EaXNh
YmxlZDsKKyAgICBnX29iamVjdF9nZXQobV9hdWRpb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQi
LCAmYXVkaW9EaXNhYmxlZCwgbnVsbHB0cik7CisgICAgZ19vYmplY3RfZ2V0KG1fdmlkZW9SZW5k
ZXJlci5nZXQoKSwgImRpc2FibGVkIiwgJnZpZGVvRGlzYWJsZWQsIG51bGxwdHIpOworICAgIGlm
IChhdWRpb0Rpc2FibGVkICYmIHZpZGVvRGlzYWJsZWQpIHsKKyAgICAgICAgbV9lbmRlZCA9IHRy
dWU7CisgICAgICAgIG1fcGxheWVyLT50aW1lQ2hhbmdlZCgpOworICAgIH0KIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKQEAgLTM3OSw3ICs0MTcsMTcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXQKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjp0cmFja0Vu
YWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKICAgICBHU1Rf
REVCVUcoIiVzIHRyYWNrIG5vdyAlcyIsIHRyYWNrLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpbyA/ICJhdWRpbyI6InZpZGVvIiwgdHJhY2suZW5hYmxlZCgpID8gImVuYWJsZWQi
OiJkaXNhYmxlZCIpOwotICAgIG1heWJlSGFuZGxlQ2hhbmdlTXV0ZWRTdGF0ZSh0cmFjayk7CisK
KyAgICBzd2l0Y2ggKHRyYWNrLnR5cGUoKSkgeworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW86CisgICAgICAgIGdfb2JqZWN0X3NldChtX2F1ZGlvUmVuZGVyZXIuZ2V0KCksICJk
aXNhYmxlZCIsICF0cmFjay5lbmFibGVkKCksIG51bGxwdHIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOgorICAgICAgICBnX29iamVjdF9zZXQo
bV92aWRlb1JlbmRlcmVyLmdldCgpLCAiZGlzYWJsZWQiLCAhdHJhY2suZW5hYmxlZCgpLCBudWxs
cHRyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpOb25l
OgorICAgICAgICBHU1RfV0FSTklORygiVHJ5aW5nIHRvIGNoYW5nZSBlbmFibGVkIHN0YXRlIG9m
IGEgdHJhY2sgd2l0aCBOb25lIHR5cGUiKTsKKyAgICB9CiB9CiAKIEdzdEVsZW1lbnQqIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck93cjo6Y3JlYXRlVmlkZW9TaW5rKCkKQEAgLTQyNiw2ICs0
NzQsMjYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3I6OnNldFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpz
ZXRTaXplKHNpemUpOwogICAgIGlmIChtX3ZpZGVvUmVuZGVyZXIpCiAgICAgICAgIGdfb2JqZWN0
X3NldChtX3ZpZGVvUmVuZGVyZXIuZ2V0KCksICJ3aWR0aCIsIHNpemUud2lkdGgoKSwgImhlaWdo
dCIsIHNpemUuaGVpZ2h0KCksIG51bGxwdHIpOworCisgICAgaWYgKCFtX3ZpZGVvVHJhY2spCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHJlYWxUaW1lTWVkaWFTb3VyY2UgPSBzdGF0aWNf
Y2FzdDxSZWFsdGltZU1lZGlhU291cmNlT3dyJj4obV92aWRlb1RyYWNrLT5zb3VyY2UoKSk7Cisg
ICAgcmVhbFRpbWVNZWRpYVNvdXJjZS5zZXRXaWR0aChzaXplLndpZHRoKCkpOworICAgIHJlYWxU
aW1lTWVkaWFTb3VyY2Uuc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOworfQorCitGbG9hdFNpemUg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyOjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgYXV0byBzaXplID0gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNp
emUoKTsKKworICAgIC8vIEluIGNhc2Ugd2UgYXJlIG5vdCBwbGF5aW5nIHRoZSB2aWRlbyB3ZSBy
ZXR1cm4gdGhlIHNpemUgd2Ugc2V0IHRvIHRoZSBtZWRpYSBzb3VyY2UuCisgICAgaWYgKG1fdmlk
ZW9UcmFjayAmJiBzaXplLmlzWmVybygpKSB7CisgICAgICAgIGF1dG8mIHJlYWxUaW1lTWVkaWFT
b3VyY2UgPSBzdGF0aWNfY2FzdDxSZWFsdGltZU1lZGlhU291cmNlT3dyJj4obV92aWRlb1RyYWNr
LT5zb3VyY2UoKSk7CisgICAgICAgIHJldHVybiByZWFsVGltZU1lZGlhU291cmNlLnNpemUoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gc2l6ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck93ci5oCmluZGV4
IGU2MjJkNDI1OWY2YTljYTkyM2Y2ZjEwNDJiOWFkN2FjYmJiODczYWIuLjMzNDYzMGU0NWMzNDgx
YmE3ZDQyZjU2NjM3ZTBkYWEwNTE1NGJkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJPd3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyT3dyLmgKQEAgLTIyLDggKzIyLDEwIEBACiAKICNpZiBFTkFC
TEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpICYmIFVT
RShPUEVOV0VCUlRDKQogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5o
IgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX093ckdzdFZpZGVvUmVuZGVyZXIgT3dy
R3N0VmlkZW9SZW5kZXJlcjsKIHR5cGVkZWYgc3RydWN0IF9Pd3JHc3RBdWRpb1JlbmRlcmVyIE93
ckdzdEF1ZGlvUmVuZGVyZXI7CkBAIC00Miw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAKKyAgICBGbG9hdFNpemUgbmF0dXJhbFNp
emUoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBHc3RFbGVtZW50KiBjcmVhdGVWaWRl
b1NpbmsoKSBmaW5hbDsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2F1ZGlvU2luay5nZXQoKTsgfQpAQCAtODcsNiArOTEsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKyAgICBib29sIGVu
ZGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lbmRlZDsgfQogCiAgICAgLy8gTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgdHJhY2tF
bmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsOwpAQCAtMTAxLDE0ICsxMDYsMTkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSBlcnJvcik7CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgdm9pZCBtYXliZUhhbmRsZUNoYW5n
ZU11dGVkU3RhdGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKKyAgICB2b2lkIGRpc2FibGVN
ZWRpYVRyYWNrcygpOwogCiAgICAgYm9vbCBtX3BhdXNlZCB7IHRydWUgfTsKKyAgICBib29sIG1f
ZW5kZWQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV92
aWRlb1RyYWNrOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9hdWRpb1Ry
YWNrOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdWRpb1Npbms7CiAgICAgUmVmUHRyPE1l
ZGlhU3RyZWFtUHJpdmF0ZT4gbV9zdHJlYW1Qcml2YXRlOwogICAgIEdSZWZQdHI8T3dyR3N0Vmlk
ZW9SZW5kZXJlcj4gbV92aWRlb1JlbmRlcmVyOwogICAgIEdSZWZQdHI8T3dyR3N0QXVkaW9SZW5k
ZXJlcj4gbV9hdWRpb1JlbmRlcmVyOworCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNrTWFwOworICAgIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFj
a01hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlh
RW5kcG9pbnRPd3IuY3BwCmluZGV4IGE3YTIxZjRhZjEzMTlhMWNiYzZhZDA3OGU2OWFhNjk3NmQy
N2ZiZmMuLjQ0ODM5ZDEzYTY1MjQ4YTYzNmUyMmQ4MDM2YTZmNDRiNWE2ZmI1ODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApAQCAtMzksNyArMzksOCBAQAogI2luY2x1
ZGUgIk9wZW5XZWJSVENVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvblN0YXRl
cy5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgotI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2VPd3IuaCIKKyNpbmNsdWRlICJSZWFsdGltZUF1ZGlvU291cmNlT3dyLmgi
CisjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oIgogI2luY2x1ZGUgPG93ci9vd3Iu
aD4KICNpbmNsdWRlIDxvd3Ivb3dyX2F1ZGlvX3BheWxvYWQuaD4KICNpbmNsdWRlIDxvd3Ivb3dy
X2NyeXB0b191dGlscy5oPgpAQCAtMzUwLDE1ICszNTEsMjEgQEAgUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IE1lZGlhRW5kcG9pbnRPd3I6OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKGNvbnN0IFN0
cmluZyYKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJpbmcgaWQoIm5vdCB1c2VkIik7Cisg
ICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I+IHNvdXJjZTsKIAogICAgIHN3aXRjaCAo
dHlwZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW86IG5hbWUgPSAicmVt
b3RlIGF1ZGlvIjsgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzog
bmFtZSA9ICJyZW1vdGUgdmlkZW8iOyBicmVhazsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvOgorICAgICAgICBuYW1lID0gInJlbW90ZSBhdWRpbyI7CisgICAgICAgIHNvdXJj
ZSA9IGFkb3B0UmVmKG5ldyBSZWFsdGltZUF1ZGlvU291cmNlT3dyKG51bGxwdHIsIGlkLCB0eXBl
LCBuYW1lKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW86CisgICAgICAgIG5hbWUgPSAicmVtb3RlIHZpZGVvIjsKKyAgICAgICAgc291cmNlID0g
YWRvcHRSZWYobmV3IFJlYWx0aW1lVmlkZW9Tb3VyY2VPd3IobnVsbHB0ciwgaWQsIHR5cGUsIG5h
bWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpOb25l
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZU93cj4gc291cmNlID0gYWRvcHRSZWYobmV3IFJlYWx0aW1lTWVkaWFT
b3VyY2VPd3IobnVsbHB0ciwgaWQsIHR5cGUsIG5hbWUpKTsKICAgICBtX211dGVkUmVtb3RlU291
cmNlcy5zZXQobWlkLCBzb3VyY2UpOwogCiAgICAgcmV0dXJuICpzb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1l
QXVkaW9Tb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29w
ZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNDlmMDUxYjBm
MzZjMzQ0MzhlNDMyZmE3MzhiMjEwN2U5NDkyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VPd3IuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LDIwMTYg
SWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1IE1ldHJvbG9naWNhbAorICoKKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pICYmIFVTRShPUEVOV0VCUlRDKQorCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZU93
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lQXVkaW9Tb3VyY2VP
d3IgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZU93ciB7CitwdWJsaWM6CitSZWFsdGltZUF1
ZGlvU291cmNlT3dyKE93ck1lZGlhU291cmNlKiBtZWRpYVNvdXJjZSwgY29uc3QgU3RyaW5nJiBp
ZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisg
ICAgOiBSZWFsdGltZU1lZGlhU291cmNlT3dyKG1lZGlhU291cmNlLCBpZCwgdHlwZSwgbmFtZSkK
KyAgICB7CisgICAgfQorCitSZWFsdGltZUF1ZGlvU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZU93cihpZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+UmVhbHRpbWVBdWRpb1NvdXJjZU93cigpIHsgfQorCisgICAgYm9vbCBh
cHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIGZpbmFsIHsKKyAgICAgICAgaWYg
KG1fY3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9j
dXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJhaW50
cygpKTsKKworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoT1BFTldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCmluZGV4IDY3YzkxYjhlNGFhY2QxYzA0
YzRjMTBmNjAwMTRlNjczZjZhZmQ1NWEuLmYzZTZmMWZlZDlkMjRiZjg3Y2M4NzRmMjY1MzMwNDRm
ZjkwNDg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyT3dyLmNwcApAQCAtNDAsNyArNDAsOSBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3Blbldl
YlJUQ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaCIKICNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiUmVh
bHRpbWVWaWRlb1NvdXJjZU93ci5oIgogI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDxvd3Iv
b3dyLmg+CiAjaW5jbHVkZSA8b3dyL293cl9sb2NhbC5oPgpAQCAtMTQ5LDE2ICsxNTEsMjEgQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjptZWRpYVNvdXJjZXNBdmFpbGFibGUo
R0xpc3QqIHNvdXJjZXMpCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGF1dG8gbWVkaWFTb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlYWx0aW1l
TWVkaWFTb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VUeXBlLCBzb3VyY2VOYW1lKSk7
CisgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlT3dyPiBtZWRpYVNvdXJjZTsKKyAg
ICAgICAgaWYgKG1lZGlhU291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykK
KyAgICAgICAgICAgIG1lZGlhU291cmNlID0gYWRvcHRSZWYobmV3IFJlYWx0aW1lQXVkaW9Tb3Vy
Y2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VUeXBlLCBzb3VyY2VOYW1lKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1lZGlhU291cmNlID0gYWRvcHRSZWYobmV3IFJlYWx0aW1lVmlk
ZW9Tb3VyY2VPd3Ioc291cmNlLCBpZCwgbWVkaWFTb3VyY2VUeXBlLCBzb3VyY2VOYW1lKSk7CiAK
ICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZU93ck1hcDo6aXRlcmF0b3Igc291cmNlSXRlcmF0
b3IgPSBtX3NvdXJjZU1hcC5maW5kKGlkKTsKICAgICAgICAgaWYgKHNvdXJjZUl0ZXJhdG9yID09
IG1fc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgbV9zb3VyY2VNYXAuYWRkKGlkLCBtZWRp
YVNvdXJjZS5jb3B5UmVmKCkpOwogCiAgICAgICAgIGlmIChtZWRpYVR5cGUgJiBPV1JfTUVESUFf
VFlQRV9BVURJTykKLSAgICAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoV1RGTW92ZShtZWRp
YVNvdXJjZSkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChtZWRpYVNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgZWxzZSBpZiAobWVkaWFUeXBlICYgT1dSX01FRElB
X1RZUEVfVklERU8pCi0gICAgICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUobWVk
aWFTb3VyY2UpKTsKKyAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQobWVkaWFTb3VyY2Uu
cmVsZWFzZU5vbk51bGwoKSk7CisKICAgICB9CiAKICAgICBpZiAodmlkZW9Tb3VyY2VzLmlzRW1w
dHkoKSAmJiBhdWRpb1NvdXJjZXMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVh
bHRpbWVNZWRpYVNvdXJjZU93ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU3NDk5ZDM4MDA2NmYxNGFiNmM5
Y2IwMDg3YmU0YjZkZDA4Nzg1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5jcHAK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MCisg
KgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VPd3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3I6OnNldHRpbmdzKCkg
Y29uc3QKK3sKKyAgICBjb25zdF9jYXN0PFJlYWx0aW1lTWVkaWFTb3VyY2VPd3ImPigqdGhpcyku
aW5pdGlhbGl6ZVNldHRpbmdzKCk7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOworfQor
CitSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIFJlYWx0aW1lTWVkaWFT
b3VyY2VPd3I6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKK3sKKyAgICBpZiAobV9zdXBwb3J0ZWRD
b25zdHJhaW50cy5zdXBwb3J0c0RldmljZUlkKCkpCisgICAgICAgIHJldHVybiBtX3N1cHBvcnRl
ZENvbnN0cmFpbnRzOworCisgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0Rl
dmljZUlkKHRydWUpOworICAgIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhtX3N1cHBv
cnRlZENvbnN0cmFpbnRzKTsKKworICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBVU0UoT1BFTldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlh
U291cmNlT3dyLmgKaW5kZXggMWJmNTEyOGU4MWQ5NTBhZTZhZWY0MjUxMGZmYTc1YjdlZTQ2ZTY1
Zi4uYThmNzhlMjIyMzVlMDBjZjQ0MWM5MGRiMzVlY2RkNDdlZmJjOWYwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1l
ZGlhU291cmNlT3dyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKQEAgLTczLDEzICs3MywyMCBAQCBS
ZWFsdGltZU1lZGlhU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgY29uc3QgUwogICAgIH0KIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2NhcGFiaWxpdGllczsgfQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsg
fQorICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIE93ck1lZGlhU291cmNlKiBtZWRpYVNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFTb3VyY2U7IH0KIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplU2V0dGluZ3MoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTdXBw
b3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
KSB7IH07CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBw
b3J0ZWRDb25zdHJhaW50cygpOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1f
Y3VycmVudFNldHRpbmdzOworCiBwcml2YXRlOgorICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgT3dyTWVkaWFTb3Vy
Y2UqIG1fbWVkaWFTb3VyY2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRl
b1NvdXJjZU93ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjNjZhM2UyYjk2MTM2MGU4ODZiM2QwNmNiZWQ5MTMx
MzJmYjE0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IuaApAQCAtMCwwICsxLDgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJp
Z2h0IChDKSAyMDE1IE1ldHJvbG9naWNhbAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVy
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRD
KQorCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFJlYWx0aW1lVmlkZW9Tb3VyY2VPd3IgOiBwdWJsaWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZU93ciB7CitwdWJsaWM6CitSZWFsdGltZVZpZGVvU291cmNlT3dyKE93ck1lZGlh
U291cmNlKiBtZWRpYVNvdXJjZSwgY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBSZWFsdGltZU1lZGlhU291
cmNlT3dyKG1lZGlhU291cmNlLCBpZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQorCitSZWFs
dGltZVZpZGVvU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJj
ZU93cihpZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVhbHRp
bWVWaWRlb1NvdXJjZU93cigpIHsgfQorCisgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6
ZSYpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgaW5pdGlh
bGl6ZVNldHRpbmdzKCkgZmluYWwgeworICAgICAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MuZGV2
aWNlSWQoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBw
b3J0ZWRDb25zdHJhaXRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworCisgICAgICAgIG1fY3Vy
cmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOworCisgICAgICAgIG1fY3VycmVudFNldHRp
bmdzLnNldEZyYW1lUmF0ZShmcmFtZVJhdGUoKSk7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdz
LnNldFdpZHRoKHNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0
SGVpZ2h0KHNpemUoKS5oZWlnaHQoKSk7CisgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplU3Vw
cG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRz
JiBzdXBwb3J0ZWRDb25zdHJhaW50cykgZmluYWwgeworICAgICAgICBzdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0ZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpV
bmtub3duKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0
cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1
ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzQXNwZWN0UmF0aW8o
dHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRl
KHRydWUpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNkNDg2NjM1
ZjdmYzk2Nzc2MmI1NjlhNjRmMzJhNjYyNDg2MzJkMTMuLjRlMDJhZTUwOTQ3MDQ2NzhiNWNhZjI1
N2Y5NDBlMTE2ODUwOTM4MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0xMi0yMiAgQWxl
amFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBbT1dSXSBVbnNr
aXAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3Au
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczogVW5za2lwcGVkIHRoZSB0ZXN0IGFuZCBtb3Zl
ZCB0aGUKKyAgICAgICAgc3RvcCBvbmUsIG5vdyBpdCBkb2VzIG5vdCB0aW1lb3V0IGJlY2F1c2Ug
d2UgY29ycmVjdGx5IGhhbmRsZSB0aGUKKyAgICAgICAgZW5kZWQgdmFsdWUgYnV0IHN0aWxsIGZh
aWxzLCB3ZSBuZWVkIG1vcmUgZmVhdHVyZXMgaW4gdGhlIG1vY2sKKyAgICAgICAgY2xhc3NlcyBm
b3Igb3dyLgorCiAyMDE2LTEyLTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gVXBkYXRlIG1lZGlhLXN0cmVhbS1ldmVudC1j
b25zdHJ1Y3RvciB0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDk4ZTE1NmM0YjRhMWYxODkxMGU2YzEyODVlMjMyM2YxYzc3MjY2NWQuLjkxZDg0OWZh
MGJiMzQzMjVhMWU4MTY3ZGUzYmJjOWFkZmMwOTc0NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTQsNyArMzE0LDYgQEAgd2Via2l0Lm9yZy9iLzc5
MjAzIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZWRpYS1zdHJlYW0tZXZlbnQtY29uc3RydWN0
b3IuaHRtbAogd2Via2l0Lm9yZy9iLzc5MjAzIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9kZXN0
aW5hdGlvbm5vZGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIHdlYmF1ZGlvL21l
ZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi83OTIw
MyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQuaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8t
ZWxlbWVudC10cmFjay1zdG9wLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNTEzNDQgZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtZW5kZWQtdHJhY2tzLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xNTEzNDQgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVt
b3ZlLXRyYWNrcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0
cmVhbS9tb2NrLW1lZGlhLXNvdXJjZS5odG1sIFsgU2tpcCBdCkBAIC0zMjMsNiArMzIyLDcgQEAg
d2Via2l0Lm9yZy9iLzE2MDk5NiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVs
ZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2EKIHdlYmtpdC5vcmcvYi8xNjA5OTYgZmFzdC9tZWRpYXN0
cmVhbS9hcHBseS1jb25zdHJhaW50cy1hZHZhbmNlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTYwOTk2IGZhc3QvbWVkaWFzdHJlYW0vYXBwbHktY29uc3RyYWludHMtYXVkaW8uaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MDk5NiBmYXN0L21lZGlhc3RyZWFtL2FwcGx5LWNvbnN0
cmFpbnRzLXZpZGVvLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNjE5NTYgZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWRpc3BsYXlzLWJ1ZmZlci5odG1sIFsg
U2tpcCBdCiAKICMgUHJveGltaXR5IEV2ZW50cyBpcyBub3Qgc3VwcG9ydGVkLgogd2Via2l0Lm9y
Zy9iLzk5MDYwIHByb3hpbWl0eSBbIEZhaWx1cmUgXQpAQCAtODIxLDggKzgyMSw2IEBAIHdlYmtp
dC5vcmcvYi8xMTc3NTYgbWVkaWEvdHJhY2svbWVkaWEtZWxlbWVudC1lbnF1ZXVlLWV2ZW50LWNy
YXNoLmh0bWwgWyBUaW1lb3V0CiAKIHdlYmtpdC5vcmcvYi8xNTM5MzcgaHR0cC90ZXN0cy9taXNj
L2RldGFjaC1kdXJpbmctbm90aWZ5RG9uZS5odG1sIFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5v
cmcvYi8xNjE5NTYgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWRp
c3BsYXlzLWJ1ZmZlci5odG1sIFsgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8xMzE1NDYgbWVk
aWEvdHJhY2svdHJhY2staW4tYmFuZC5odG1sIFsgQ3Jhc2ggVGltZW91dCBGYWlsdXJlIF0KIAog
d2Via2l0Lm9yZy9iLzE2Mzc4MiBtZWRpYS92aWRlby1wbGF5ZWQtcmFuZ2VzLTEuaHRtbCBbIENy
YXNoIFBhc3MgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>