<?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>229123</bug_id>
          
          <creation_ts>2021-08-15 09:40:44 -0700</creation_ts>
          <short_desc>REGRESSION(r278981): [GStreamer][Debug] Assert crashes when running media/track tests</short_desc>
          <delta_ts>2021-08-17 03:16:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204686</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>229144</dependson>
    
    <dependson>229159</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1784389</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-15 09:40:44 -0700</bug_when>
    <thetext>For instance media/track/track-manual-mode.html:

ASSERTION FAILED: streamId == track-&gt;id()

Thread 1 (Thread 0x7faf5b2bfec0 (LWP 129)):
#0  0x00007faf61eb1a9e in WTFCrash() () at ../../Source/WTF/wtf/Assertions.cpp:321
#1  0x00007faf650f37db in WTFCrashWithInfo(int, char const*, char const*, int) () at WTF/Headers/wtf/Assertions.h:703
#2  0x00007faf6a8c676f in WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack&lt;WebCore::InbandTextTrackPrivateGStreamer&gt;() (this=0x7faeefed8400) at ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1079
#3  0x00007faf6a8abe38 in WebCore::MediaPlayerPrivateGStreamer::textChangedCallback(WebCore::MediaPlayerPrivateGStreamer*)::$_2::operator()() const (this=0x7faeefe16028) at ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1139
#4  0x00007faf6a8ac1de in WTF::Detail::CallableWrapper&lt;WebCore::MediaPlayerPrivateGStreamer::textChangedCallback(WebCore::MediaPlayerPrivateGStreamer*)::$_2, void&gt;::call() (this=0x7faeefe16020) at WTF/Headers/wtf/Function.h:53
#5  0x00007faf65167722 in WTF::Function&lt;void ()&gt;::operator()() const (this=0x7faeefe15070) at WTF/Headers/wtf/Function.h:82
#6  0x00007faf6a8acaae in WebCore::MainThreadNotifier&lt;WebCore::MediaPlayerPrivateGStreamer::MainThreadNotification&gt;::notify&lt;WebCore::MediaPlayerPrivateGStreamer::textChangedCallback(WebCore::MediaPlayerPrivateGStreamer*)::$_2&gt;(WebCore::MediaPlayerPrivateGStreamer::MainThreadNotification, WebCore::MediaPlayerPrivateGStreamer::textChangedCallback(WebCore::MediaPlayerPrivateGStreamer*)::$_2&amp;&amp;)::{lambda()#1}::operator()() const (this=0x7faeefe15058) at ../../Source/WebCore/platform/graphics/gstreamer/MainThreadNotifier.h:64
#7  0x00007faf6a8aca0e in WTF::Detail::CallableWrapper&lt;WebCore::MainThreadNotifier&lt;WebCore::MediaPlayerPrivateGStreamer::MainThreadNotification&gt;::notify&lt;WebCore::MediaPlayerPrivateGStreamer::textChangedCallback(WebCore::MediaPlayerPrivateGStreamer*)::$_2&gt;(WebCore::MediaPlayerPrivateGStreamer::MainThreadNotification, WebCore::MediaPlayerPrivateGStreamer::textChangedCallback(WebCore::MediaPlayerPrivateGStreamer*)::$_2&amp;&amp;)::{lambda()#1}, void&gt;::call() (this=0x7faeefe15050) at WTF/Headers/wtf/Function.h:53
#8  0x00007faf60530d12 in WTF::Function&lt;void ()&gt;::operator()() const (this=0x7ffcf69b1540) at WTF/Headers/wtf/Function.h:82
#9  0x00007faf61f07270 in WTF::RunLoop::performWork() (this=0x7faf5a9f9000) at ../../Source/WTF/wtf/RunLoop.cpp:133
#10 0x00007faf61fbc65c in WTF::RunLoop::RunLoop()::$_1::operator()(void*) const (this=0x7faf5a9f9000, userData=0x7faf5a9f9000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:80
#11 0x00007faf61fbc635 in WTF::RunLoop::RunLoop()::$_1::__invoke(void*) (userData=0x7faf5a9f9000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:79
#12 0x00007faf61fbc5e9 in WTF::RunLoop::$_0::operator()(_GSource*, int (*)(void*), void*) const (this=0x2377af0, source=0x2377af0, callback=0x7faf61fbc620 &lt;WTF::RunLoop::RunLoop()::$_1::__invoke(void*)&gt;, userData=0x7faf5a9f9000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:53
#13 0x00007faf61fbb665 in WTF::RunLoop::$_0::__invoke(_GSource*, int (*)(void*), void*) (source=0x2377af0, callback=0x7faf61fbc620 &lt;WTF::RunLoop::RunLoop()::$_1::__invoke(void*)&gt;, userData=0x7faf5a9f9000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#14 0x00007faf5d9e82bf in g_main_dispatch (context=0x2340950) at ../glib/gmain.c:3344
#15 g_main_context_dispatch (context=0x2340950) at ../glib/gmain.c:4062
#16 0x00007faf5d9e8668 in g_main_context_iterate (context=0x2340950, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at ../glib/gmain.c:4138
#17 0x00007faf5d9e8983 in g_main_loop_run (loop=0x22baa60) at ../glib/gmain.c:4336
#18 0x00007faf61fbbc98 in WTF::RunLoop::run() () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:108
#19 0x00007faf667c8ef4 in WebKit::AuxiliaryProcessMainBase&lt;WebKit::WebProcess, true&gt;::run(int, char**) (this=0x7ffcf69b1820, argc=4, argv=0x7ffcf69b19d8) at ../../Source/WebKit/Shared/AuxiliaryProcessMain.h:70
#20 0x00007faf667b9ab0 in WebKit::AuxiliaryProcessMain&lt;WebKit::WebProcessMainGtk&gt;(int, char**) (argc=4, argv=0x7ffcf69b19d8) at ../../Source/WebKit/Shared/AuxiliaryProcessMain.h:96
#21 0x00007faf667b683a in WebKit::WebProcessMain(int, char**) (argc=4, argv=0x7ffcf69b19d8) at ../../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:78
#22 0x0000000000400852 in main(int, char**) (argc=4, argv=0x7ffcf69b19d8) at ../../Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:31</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784390</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-15 09:45:47 -0700</bug_when>
    <thetext>The id() method is not overridden in InbandTextTrackPrivateGStreamer, so the default impl is used, returning empty string...

Debugging this I ended up cleaning/refactoring some track platform code... I&apos;ll attach a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784391</commentid>
    <comment_count>2</comment_count>
      <attachid>435567</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-15 10:09:15 -0700</bug_when>
    <thetext>Created attachment 435567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784441</commentid>
    <comment_count>3</comment_count>
      <attachid>435567</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-08-16 02:04:42 -0700</bug_when>
    <thetext>Comment on attachment 435567
Patch

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

Nice work!

&gt; Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:71
&gt; +    TrackPrivateBaseGStreamer(TrackType, TrackPrivateBase*, unsigned index, GRefPtr&lt;GstPad&gt;);
&gt; +    TrackPrivateBaseGStreamer(TrackType, TrackPrivateBase*, unsigned index, GRefPtr&lt;GstStream&gt;);

If you&apos;re in the middle of such a re-styling, I would take advantage of this to turn these GRefPtr into GRefPtr&amp;&amp; and corresponding WTFMoves in the calls. I would do the same all the way up to the last upper call as we would be saving some innecessary ref bumps and object creations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784457</commentid>
    <comment_count>4</comment_count>
      <attachid>435585</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-16 04:18:44 -0700</bug_when>
    <thetext>Created attachment 435585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784477</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-16 06:38:01 -0700</bug_when>
    <thetext>Committed r281078 (240538@main): &lt;https://commits.webkit.org/240538@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435585.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784478</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-16 06:39:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/81978494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784525</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-08-16 09:12:16 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 229144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784536</commentid>
    <comment_count>8</comment_count>
      <attachid>435585</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-16 09:21:32 -0700</bug_when>
    <thetext>Comment on attachment 435585
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:50
&gt; +        auto streamFlags = gst_stream_get_stream_flags(stream.get());

use after move, oops.

&gt; Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:51
&gt;          gst_stream_set_stream_flags(stream.get(), static_cast&lt;GstStreamFlags&gt;(streamFlags | GST_STREAM_FLAG_SELECT));

again

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:50
&gt; +        auto streamFlags = gst_stream_get_stream_flags(stream.get());

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:51
&gt;          gst_stream_set_stream_flags(stream.get(), static_cast&lt;GstStreamFlags&gt;(streamFlags | GST_STREAM_FLAG_SELECT));

And here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784541</commentid>
    <comment_count>9</comment_count>
      <attachid>435611</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-16 09:30:22 -0700</bug_when>
    <thetext>Created attachment 435611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784586</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-16 11:14:14 -0700</bug_when>
    <thetext>Committed r281093 (240553@main): &lt;https://commits.webkit.org/240553@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435611.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784636</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-08-16 13:51:06 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 229159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784766</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-17 01:28:16 -0700</bug_when>
    <thetext>The invasive changes will be handled in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784768</commentid>
    <comment_count>13</comment_count>
      <attachid>435672</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-17 01:30:02 -0700</bug_when>
    <thetext>Created attachment 435672
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784777</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-17 03:16:51 -0700</bug_when>
    <thetext>Committed r281133 (240587@main): &lt;https://commits.webkit.org/240587@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435672.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435567</attachid>
            <date>2021-08-15 10:09:15 -0700</date>
            <delta_ts>2021-08-16 04:18:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229123-20210815100913.patch</filename>
            <type>text/plain</type>
            <size>32228</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E4OGIyNzc2YmI1MzE5
N2ZlM2JkZmE5MzFiZjRjMzQyMmVhZjdiZC4uMWY1YWEyNDA2YTQxYjI5YTNkMDZiOTcwNDY0MmYz
MzEzOWNhYTk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA4LTE1ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyNzg5ODEpOiBbR1N0cmVhbWVyXVtEZWJ1Z10gQXNzZXJ0IGNyYXNoZXMgd2hlbiBydW5uaW5n
IG1lZGlhL3RyYWNrIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkxMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciBjbGFzcyBub3cgaW5jbHVk
ZXMgYWxsIHRoZSBjb21tb24gY29kZSB0aGF0IGlzIHVzZWQgYnkgaXRzCisgICAgICAgIHN1YmNs
YXNzZXMuIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgbm93IHJldHVybnMgdmFsaWQg
dHJhY2sgSURzIChmaXhpbmcgdGhlIGlzc3VlIG9mCisgICAgICAgIHRoaXMgcmVncmVzc2lvbjog
QVNTRVJUcykuIFRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGNvZGluZyBzdHlsZSBmaXhlcywgcmVt
b3ZhbCBvZiB1bi1uZWVkZWQKKyAgICAgICAgaW5jbHVkZXMgYW5kIGEgZmV3IG90aGVyIGNsZWFu
LXVwcyByZWxhdGVkIHdpdGggdGhlIFRyYWNrIHN1cHBvcnQgaW4gdGhlIEdTdHJlYW1lciBwbGF0
Zm9ybQorICAgICAgICBsYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlz
Y29ubmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFu
Z2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OnN0cmVhbUlkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVRleHRTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdlbmVyYXRlVW5pcXVlUGxh
eWJpbjJTdHJlYW1JRCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnNldFBhZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6c2V0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6c3Ry
ZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaDoKKwogMjAy
MS0wOC0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDIERpc3BsYXldIEludHJvZHVjZSB0eXBlLXNhZmUgcmVjdCB0eXBlcyBmb3IgdGhlIGRp
c3BsYXkgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggNmQzZjQyODAxZjMyNDJjN2NjYmM1ZTJiNTYwZjAzNGU1ZTQyYzlmNC4uZTI5YWRk
MWJiZGZiM2ZhYjkyMTYyOGRiY2UzMjQwYWMzNjQ0OWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zMCwzMSArMzAsMjYgQEAKICNpbmNs
dWRlICJBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXll
ciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKLSAgICA6IFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIodGhpcywgaW5kZXgsIHBhZCkKK0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcj4gcGxheWVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAg
ICA6IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
VHJhY2tUeXBlOjpBdWRpbywgdGhpcywgaW5kZXgsIHBhZCkKICAgICAsIG1fcGxheWVyKHBsYXll
cikKIHsKLSAgICAvLyBGSVhNRTogR2V0IGEgcmVhbCBJRCBmcm9tIHRoZSB0a2hkIGF0b20uCi0g
ICAgbV9pZCA9ICJBIiArIFN0cmluZzo6bnVtYmVyKGluZGV4KTsKIH0KIAotQXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3Ry
ZWFtPiBzdHJlYW0pCi0gICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKHRoaXMsIGluZGV4
LCBzdHJlYW0pCitBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5z
aWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiBzdHJlYW0pCisgICAgOiBUcmFja1ByaXZh
dGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6QXVk
aW8sIHRoaXMsIGluZGV4LCBzdHJlYW0pCiAgICAgLCBtX3BsYXllcihwbGF5ZXIpCiB7Ci0gICAg
Z2ludCBraW5kOworICAgIGludCBraW5kOwogICAgIGF1dG8gdGFncyA9IGFkb3B0R1JlZihnc3Rf
c3RyZWFtX2dldF90YWdzKG1fc3RyZWFtLmdldCgpKSk7CiAKLSAgICBpZiAodGFncyAmJiBnc3Rf
dGFnX2xpc3RfZ2V0X2ludCh0YWdzLmdldCgpLCAid2Via2l0LW1lZGlhLXN0cmVhbS1raW5kIiwg
JmtpbmQpICYmIGtpbmQgPT0gc3RhdGljX2Nhc3Q8aW50PihWaWRlb1RyYWNrUHJpdmF0ZTo6S2lu
ZDo6TWFpbikpIHsKLSAgICAgICAgR3N0U3RyZWFtRmxhZ3Mgc3RyZWFtRmxhZ3MgPSBnc3Rfc3Ry
ZWFtX2dldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpKTsKKyAgICBpZiAodGFncyAmJiBnc3Rf
dGFnX2xpc3RfZ2V0X2ludCh0YWdzLmdldCgpLCAid2Via2l0LW1lZGlhLXN0cmVhbS1raW5kIiwg
JmtpbmQpICYmIGtpbmQgPT0gc3RhdGljX2Nhc3Q8aW50PihBdWRpb1RyYWNrUHJpdmF0ZTo6S2lu
ZDo6TWFpbikpIHsKKyAgICAgICAgYXV0byBzdHJlYW1GbGFncyA9IGdzdF9zdHJlYW1fZ2V0X3N0
cmVhbV9mbGFncyhzdHJlYW0uZ2V0KCkpOwogICAgICAgICBnc3Rfc3RyZWFtX3NldF9zdHJlYW1f
ZmxhZ3Moc3RyZWFtLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RTdHJlYW1GbGFncz4oc3RyZWFtRmxh
Z3MgfCBHU1RfU1RSRUFNX0ZMQUdfU0VMRUNUKSk7CiAgICAgfQotCi0gICAgbV9pZCA9IGdzdF9z
dHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkpOwogfQogCiBBdWRpb1RyYWNrUHJpdmF0
ZTo6S2luZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6a2luZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGZlOTc5ZjQzODA3ZDk2
ZTUyZDhjZDIzNmEzZTc2MjdjMWU2ZWFjODAuLmJmNzI3MTMxYjBhNGI2NzA3MWZjYzNiZDU2OTY2
M2Q1NTE5MDBjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCkBAIC0zOCwzNCArMzgsMzMgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OwogCiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBBdWRp
b1RyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFr
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVm
UHRyPEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCB1
bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgs
IHBhZCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBn
aW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQorICAgIHN0YXRpYyBSZWY8QXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcj4gcGxheWVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0
cmVhbSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIHN0cmVhbSkpOwogICAgIH0KIAogICAgIEtpbmQg
a2luZCgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaXNjb25uZWN0KCkgZmluYWw7CiAKLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IHNl
dEVuYWJsZWQoZW5hYmxlZCk7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7Cisg
ICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBmaW5hbCB7IHNldEVuYWJsZWQoZW5hYmxl
ZCk7IH0KIAotICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
bmRleDsgfQorICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRl
eDsgfQogCi0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7
IH0KLSAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYWJl
bDsgfQotICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2xhbmd1YWdlOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJl
bDsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xh
bmd1YWdlOyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vh
a1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCBnaW50IGluZGV4LCBHUmVmUHRyPEdz
dFBhZD4pOwotICAgIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+KTsKKyAg
ICBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcj4sIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4pOworICAgIEF1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwg
dW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPik7CiAKLSAgICBBdG9tU3RyaW5nIG1f
aWQ7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1fcGxheWVyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDRjMWNiOGFjOTY2NWFlYmM3MWNkODIwYWJhYzM0ZDg4NzI1NDMxMWIuLmZk
NTM5Zjk5ZTk2ZDVmMGE0YzQ1ODUyNDQ2NTllNTIyOTVmNTM3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI5LDQyICsy
OSwyNiBAQAogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgog
Ci0jaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAKIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX3BsYXll
cl9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbWVkaWFfcGxheWVyX2Rl
YnVnCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihnaW50IGluZGV4LCBHUmVmUHRy
PEdzdFBhZD4gcGFkKQorSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcih1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBh
ZCkKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUoQ3VlRm9ybWF0OjpXZWJWVFQpCi0gICAg
LCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKHRoaXMsIGluZGV4LCBwYWQpCisgICAgLCBUcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlw
ZTo6VGV4dCwgdGhpcywgaW5kZXgsIHBhZCkKICAgICAsIG1fa2luZChLaW5kOjpTdWJ0aXRsZXMp
CiB7Ci0gICAgbV9ldmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9wYWQuZ2V0KCksIEdT
VF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJv
YmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewot
ICAgICAgICBhdXRvKiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIqPih1c2VyRGF0YSk7Ci0gICAgICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZ3N0
X3BhZF9wcm9iZV9pbmZvX2dldF9ldmVudChpbmZvKSkpIHsKLSAgICAgICAgY2FzZSBHU1RfRVZF
TlRfU1RSRUFNX1NUQVJUOgotICAgICAgICAgICAgdHJhY2stPnN0cmVhbUNoYW5nZWQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7Ci0gICAgfSwgdGhpcywg
bnVsbHB0cik7Ci0KLSAgICBub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCgpOwogfQogCi1JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiBzdHJlYW0pCitJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKHVuc2ln
bmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQogICAgIDogSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZShDdWVGb3JtYXQ6OldlYlZUVCkKLSAgICAsIFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIodGhpcywgaW5kZXgsIHN0cmVhbSkKKyAgICAsIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlOjpUZXh0LCB0aGlzLCBpbmRl
eCwgc3RyZWFtKQogewotICAgIG1fc3RyZWFtSWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQo
c3RyZWFtLmdldCgpKTsKLSAgICBHU1RfSU5GTygiVHJhY2sgJWQgZ290IHN0cmVhbSBzdGFydCBm
b3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1fc3RyZWFtSWQudXRmOCgpLmRhdGEoKSk7CisgICAg
bV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkpOworICAgIEdTVF9J
TkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwg
bV9pZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEdTVF9ERUJVRygiU3RyZWFtICUi
IEdTVF9QVFJfRk9STUFULCBzdHJlYW0uZ2V0KCkpOwogICAgIGF1dG8gY2FwcyA9IGFkb3B0R1Jl
Zihnc3Rfc3RyZWFtX2dldF9jYXBzKHN0cmVhbS5nZXQoKSkpOwpAQCAtNzIsMTQgKzU2LDYgQEAg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcihnaW50IGluZGV4LCBHUmUKICAgICBtX2tpbmQgPSBnX3N0cl9oYXNfcHJlZml4KG1l
ZGlhVHlwZSwgImNsb3NlZGNhcHRpb24vIikgPyBLaW5kOjpDYXB0aW9ucyA6IEtpbmQ6OlN1YnRp
dGxlczsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpkaXNjb25u
ZWN0KCkKLXsKLSAgICBpZiAobV9wYWQpCi0gICAgICAgIGdzdF9wYWRfcmVtb3ZlX3Byb2JlKG1f
cGFkLmdldCgpLCBtX2V2ZW50UHJvYmUpOwotCi0gICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cjo6ZGlzY29ubmVjdCgpOwotfQotCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewogICAgIHsKQEAg
LTkzLDE0ICs2OSw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6aGFu
ZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGUpCiAgICAgfSk7CiB9CiAKLXZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCgpCi17Ci0gICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0gICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRpb246OlN0cmVh
bUNoYW5nZWQsIFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPm5vdGlm
eVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7CiAgICAgVmVjdG9y
PEdSZWZQdHI8R3N0U2FtcGxlPiA+IHNhbXBsZXM7CkBAIC0xMjksMTkgKzk3LDYgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKCkKICAg
ICB9CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJh
Y2tPZlN0cmVhbUNoYW5nZWQoKQotewotICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50ID0gYWRv
cHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwKLSAgICAgICAgR1NU
X0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwotICAgIGlmICghZXZlbnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnN0IGdjaGFyKiBzdHJlYW1JZDsKLSAgICBnc3RfZXZlbnRfcGFyc2Vfc3Ry
ZWFtX3N0YXJ0KGV2ZW50LmdldCgpLCAmc3RyZWFtSWQpOwotICAgIEdTVF9JTkZPKCJUcmFjayAl
ZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwgc3RyZWFtSWQpOwot
ICAgIG1fc3RyZWFtSWQgPSBzdHJlYW1JZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjA1MzgwNjNh
MWYwN2QyZDA3OWI2YWNmZmU0YTI3MDgxM2NhNzA2NS4uYTdlZjA5MWNmOTdjMDgzY2Y5ZGM0YWQy
MGMyMmJhMTNkZmJlZGE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVy
Q29tbW9uLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5j
bHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM5LDQ1ICszOCwzNiBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgOiBwdWJs
aWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gY3JlYXRlKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGlj
IFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUodW5zaWduZWQgaW5k
ZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGluZGV4LCBwYWQpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0
ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQ
dHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCB1bnNp
Z25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7CiAgICAgICAgIHJldHVybiBj
cmVhdGUoaW5kZXgsIHBhZCk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+
IHN0cmVhbSkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IGNyZWF0ZSh1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIoaW5kZXgsIHN0cmVhbSkpOwogICAgIH0KIAotICAgIHZvaWQgZGlzY29ubmVjdCgpIG92
ZXJyaWRlOwotCi0gICAgS2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9raW5k
OyB9Ci0KLSAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
YWJlbDsgfQotICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2xhbmd1YWdlOyB9Ci0KLSAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faW5kZXg7IH0KLSAgICBTdHJpbmcgc3RyZWFtSWQoKSBjb25zdCB7IHJldHVybiBt
X3N0cmVhbUlkOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9raW5k
OyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KKyAg
ICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsgfQorICAg
IEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhbmd1YWdlOyB9
CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4OyB9CiAK
ICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4pOwogCiBwcml2YXRlOgot
ICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1JlZlB0cjxH
c3RQYWQ+KTsKLSAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGdpbnQgaW5kZXgs
IEdSZWZQdHI8R3N0U3RyZWFtPik7Ci0KLSAgICB2b2lkIHN0cmVhbUNoYW5nZWQoKTsKKyAgICBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdz
dFBhZD4pOworICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIodW5zaWduZWQgaW5k
ZXgsIEdSZWZQdHI8R3N0U3RyZWFtPik7CiAKICAgICB2b2lkIG5vdGlmeVRyYWNrT2ZTYW1wbGUo
KTsKLSAgICB2b2lkIG5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCk7CiAKLSAgICBndWxvbmcg
bV9ldmVudFByb2JlOwogICAgIFZlY3RvcjxHUmVmUHRyPEdzdFNhbXBsZT4+IG1fcGVuZGluZ1Nh
bXBsZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX3NhbXBsZU11dGV4KTsKLSAgICBTdHJpbmcgbV9z
dHJlYW1JZDsKICAgICBLaW5kIG1fa2luZDsKICAgICBMb2NrIG1fc2FtcGxlTXV0ZXg7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBj
OTk5ZTcxMDBhMjkxMThhOWJmMDQxOTlkNWFjZmJiN2Q3NTZlMmQzLi4xNjQ2NTgyNzE2ZWYyOTZl
NDFmMTUzYmQwMWZkN2JiMzgwZDBjZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTkyLDIzICs5OTIsMjMgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2soKQogCiAgICAgQVNTRVJU
KG1faXNMZWdhY3lQbGF5YmluIHx8IGlzTWVkaWFTb3VyY2UoKSk7CiAKLSAgICBlbnVtIFRyYWNr
VHlwZSB7IEF1ZGlvID0gMCwgVmlkZW8gPSAxLCBUZXh0ID0gMiB9OworICAgIHVzaW5nIFRyYWNr
VHlwZSA9IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTsKICAgICBWYXJpYW50
PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPj4q
LCBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+
KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4+Kj4gdmFyaWFudFRyYWNrcyA9IHN0YXRpY19jYXN0PEhhc2hNYXA8QXRvbVN0cmluZywg
UmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KDApOwogICAgIGF1dG8gdHlwZShzdGF0aWNfY2Fz
dDxUcmFja1R5cGU+KHZhcmlhbnRUcmFja3MuaW5kZXgoKSkpOwogICAgIGNvbnN0IGNoYXIqIHR5
cGVOYW1lOwogICAgIGJvb2wqIGhhc1R5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBBdWRpbzoKKyAgICBjYXNlIFRyYWNrVHlwZTo6QXVkaW86CiAgICAgICAgIHR5cGVOYW1lID0g
ImF1ZGlvIjsKICAgICAgICAgaGFzVHlwZSA9ICZtX2hhc0F1ZGlvOwogICAgICAgICB2YXJpYW50
VHJhY2tzID0gJm1fYXVkaW9UcmFja3M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlkZW86
CisgICAgY2FzZSBUcmFja1R5cGU6OlZpZGVvOgogICAgICAgICB0eXBlTmFtZSA9ICJ2aWRlbyI7
CiAgICAgICAgIGhhc1R5cGUgPSAmbV9oYXNWaWRlbzsKICAgICAgICAgdmFyaWFudFRyYWNrcyA9
ICZtX3ZpZGVvVHJhY2tzOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHQ6CisgICAgY2Fz
ZSBUcmFja1R5cGU6OlRleHQ6CiAgICAgICAgIHR5cGVOYW1lID0gInRleHQiOwogICAgICAgICBo
YXNUeXBlID0gbnVsbHB0cjsKICAgICAgICAgdmFyaWFudFRyYWNrcyA9ICZtX3RleHRUcmFja3M7
CkBAIC0xMDE5LDcgKzEwMTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5UGxheWVyT2ZUcmFjaygpCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VHJh
Y2tQcml2YXRlVHlwZT4+JiB0cmFja3MgPSAqZ2V0PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRy
PFRyYWNrUHJpdmF0ZVR5cGU+Pio+KHZhcmlhbnRUcmFja3MpOwogCiAgICAgLy8gSWdub3JlIG5v
dGlmaWNhdGlvbnMgYWZ0ZXIgYSBFT1MuIFdlIGRvbid0IHdhbnQgdGhlIHRyYWNrcyB0byBkaXNh
cHBlYXIgd2hlbiB0aGUgdmlkZW8gaXMgZmluaXNoZWQuCi0gICAgaWYgKG1faXNFbmRSZWFjaGVk
ICYmICh0eXBlID09IEF1ZGlvIHx8IHR5cGUgPT0gVmlkZW8pKQorICAgIGlmIChtX2lzRW5kUmVh
Y2hlZCAmJiAodHlwZSA9PSBUcmFja1R5cGU6OkF1ZGlvIHx8IHR5cGUgPT0gVHJhY2tUeXBlOjpW
aWRlbykpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIG51bWJlck9mVHJhY2tzID0g
MDsKQEAgLTEwMzksNyArMTAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICAgICAgaWYgKG9sZEhhc1R5cGUgIT0gKmhhc1R5
cGUpCiAgICAgICAgICAgICBtX3BsYXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiAKLSAg
ICAgICAgaWYgKCpoYXNUeXBlICYmIHR5cGUgPT0gVmlkZW8pCisgICAgICAgIGlmICgqaGFzVHlw
ZSAmJiB0eXBlID09IFRyYWNrVHlwZTo6VmlkZW8pCiAgICAgICAgICAgICBtX3BsYXllci0+c2l6
ZUNoYW5nZWQoKTsKICAgICB9CiAKQEAgLTEwNDksNyArMTA0OSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHZhbGlkU3RyZWFtczsKKyAgICBWZWN0b3I8
QXRvbVN0cmluZz4gdmFsaWRTdHJlYW1zOwogICAgIFN0cmluZ1ByaW50U3RyZWFtIGdldFBhZFBy
b3BlcnR5OwogICAgIGdldFBhZFByb3BlcnR5LnByaW50ZigiZ2V0LSVzLXBhZCIsIHR5cGVOYW1l
KTsKIApAQCAtMTA1OCw3ICsxMDU4LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVHJhY2soKQogICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
bV9waXBlbGluZS5nZXQoKSwgZ2V0UGFkUHJvcGVydHkudG9DU3RyaW5nKCkuZGF0YSgpLCBpLCAm
cGFkLm91dFB0cigpLCBudWxscHRyKTsKICAgICAgICAgQVNTRVJUKHBhZCk7CiAKLSAgICAgICAg
U3RyaW5nIHN0cmVhbUlkID0gU3RyaW5nKHR5cGVOYW1lKS5zdWJzdHJpbmcoMCwgMSkuY29udmVy
dFRvQVNDSUlVcHBlcmNhc2UoKSArIFN0cmluZzo6bnVtYmVyKGkpOworICAgICAgICAvLyBUaGUg
cGFkIG1pZ2h0IG5vdCBoYXZlIGEgc3RpY2t5IHN0cmVhbS1zdGFydCBldmVudCBldmVudCB5ZXQs
IHNvIHdlIGNhbid0IHVzZQorICAgICAgICAvLyBnc3RfcGFkX2dldF9zdHJlYW1faWQoKSBoZXJl
LgorICAgICAgICBhdXRvIHN0cmVhbUlkID0gVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2Vu
ZXJhdGVVbmlxdWVQbGF5YmluMlN0cmVhbUlEKHR5cGUsIGkpOwogICAgICAgICB2YWxpZFN0cmVh
bXMuYXBwZW5kKHN0cmVhbUlkKTsKIAogICAgICAgICBpZiAoaSA8IHRyYWNrcy5zaXplKCkpIHsK
QEAgLTEwNzQsMTYgKzEwNzYsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mVHJhY2soKQogICAgICAgICB9CiAKICAgICAgICAgYXV0byB0cmFjayA9
IFRyYWNrUHJpdmF0ZVR5cGU6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7Ci0g
ICAgICAgIGlmICghdHJhY2stPnRyYWNrSW5kZXgoKSAmJiAodHlwZSA9PSBBdWRpbyB8fCB0eXBl
ID09IFZpZGVvKSkKKyAgICAgICAgaWYgKCF0cmFjay0+dHJhY2tJbmRleCgpICYmICh0eXBlID09
IFRyYWNrVHlwZTo6QXVkaW8gfHwgdHlwZSA9PSBUcmFja1R5cGU6OlZpZGVvKSkKICAgICAgICAg
ICAgIHRyYWNrLT5zZXRBY3RpdmUodHJ1ZSk7CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0
cmFjay0+aWQoKSk7CiAgICAgICAgIHRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYo
KSk7CiAKICAgICAgICAgVmFyaWFudDxBdWRpb1RyYWNrUHJpdmF0ZSYsIFZpZGVvVHJhY2tQcml2
YXRlJiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSY+IHZhcmlhbnRUcmFjayh0cmFjay5nZXQoKSk7
CiAgICAgICAgIHN3aXRjaCAodmFyaWFudFRyYWNrLmluZGV4KCkpIHsKLSAgICAgICAgY2FzZSBB
dWRpbzogbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soZ2V0PEF1ZGlvVHJhY2tQcml2YXRlJj4odmFy
aWFudFRyYWNrKSk7IGJyZWFrOwotICAgICAgICBjYXNlIFZpZGVvOiBtX3BsYXllci0+YWRkVmlk
ZW9UcmFjayhnZXQ8VmlkZW9UcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgVGV4dDogbV9wbGF5ZXItPmFkZFRleHRUcmFjayhnZXQ8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOyBicmVhazsKKyAgICAgICAgY2FzZSBUcmFja1R5
cGU6OkF1ZGlvOgorICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soZ2V0PEF1ZGlv
VHJhY2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBUcmFja1R5cGU6OlZpZGVvOgorICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFZpZGVv
VHJhY2soZ2V0PFZpZGVvVHJhY2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFja1R5cGU6OlRleHQ6CisgICAgICAgICAgICBtX3Bs
YXllci0+YWRkVGV4dFRyYWNrKGdldDxJbmJhbmRUZXh0VHJhY2tQcml2YXRlJj4odmFyaWFudFRy
YWNrKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE0Myw3
ICsxMTUxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2Vk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWUKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVUZXh0U2FtcGxlKEdzdFNhbXBsZSogc2FtcGxlLCBjb25zdCBj
aGFyKiBzdHJlYW1JZCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90ZXh0VHJhY2tzLnZh
bHVlcygpKSB7Ci0gICAgICAgIGlmICghc3RyY21wKHRyYWNrLT5zdHJlYW1JZCgpLnV0ZjgoKS5k
YXRhKCksIHN0cmVhbUlkKSkgeworICAgICAgICBpZiAoIXN0cmNtcCh0cmFjay0+aWQoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBzdHJlYW1JZCkpIHsKICAgICAgICAgICAgIHRyYWNrLT5oYW5k
bGVTYW1wbGUoc2FtcGxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IDYwMGE2N2ZkZjc0
ZjY5MWM4NTcxMDgxZGI4MzA4NDNmYzJhNTQyMmUuLjEwNDg4ZTU5NzgwYmU5ZTAyODk2MWY3YWU3
NThjMDBmNmY1ZTBmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHAKQEAgLTMwLDEyICszMCw4IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lci5oIgogCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKLSNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgotI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvdGFnL3RhZy5oPgot
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX3BsYXllcl9k
ZWJ1Zyk7CkBAIC00Myw2ICszOSwyNSBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtp
dF9tZWRpYV9wbGF5ZXJfZGVidWcpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0F0b21TdHJp
bmcgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2VuZXJhdGVVbmlxdWVQbGF5YmluMlN0cmVh
bUlEKFRyYWNrVHlwZSB0cmFja1R5cGUsIHVuc2lnbmVkIGluZGV4KQoreworICAgIGF1dG8gcHJl
Zml4ID0gW3RyYWNrVHlwZV0oKSAtPiBjaGFyIHsKKyAgICAgICAgc3dpdGNoICh0cmFja1R5cGUp
IHsKKyAgICAgICAgY2FzZSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OkF1
ZGlvOgorICAgICAgICAgICAgcmV0dXJuICdBJzsKKyAgICAgICAgY2FzZSBUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlZpZGVvOgorICAgICAgICAgICAgcmV0dXJuICdWJzsK
KyAgICAgICAgY2FzZSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlRleHQ6
CisgICAgICAgICAgICByZXR1cm4gJ1QnOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gJ1UnOworICAgICAgICB9
CisgICAgfSgpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCBpbmRleCk7Cit9CisK
IHN0YXRpYyBHUmVmUHRyPEdzdFBhZD4gZmluZEJlc3RVcHN0cmVhbVBhZChHUmVmUHRyPEdzdFBh
ZD4gcGFkKQogewogICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gcGFkOwpAQCAtNTYsMTAg
KzcxLDEwIEBAIHN0YXRpYyBHUmVmUHRyPEdzdFBhZD4gZmluZEJlc3RVcHN0cmVhbVBhZChHUmVm
UHRyPEdzdFBhZD4gcGFkKQogICAgIHJldHVybiBzaW5rUGFkOwogfQogCi1UcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2Uq
IG93bmVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQorVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1R5cGUgdHlwZSwgVHJh
Y2tQcml2YXRlQmFzZSogb3duZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFk
KQogICAgIDogbV9ub3RpZmllcihNYWluVGhyZWFkTm90aWZpZXI8TWFpblRocmVhZE5vdGlmaWNh
dGlvbj46OmNyZWF0ZSgpKQogICAgICwgbV9pbmRleChpbmRleCkKLSAgICAsIG1fZXZlbnRQcm9i
ZSgwKQorICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX293bmVyKG93bmVyKQogewogICAgIHNl
dFBhZChXVEZNb3ZlKHBhZCkpOwpAQCAtNjksMTQgKzg0LDE1IEBAIFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZSogb3du
ZXIsIGdpCiAgICAgdGFnc0NoYW5nZWQoKTsKIH0KIAotVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cjo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2lu
dCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKK1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tUeXBlIHR5cGUsIFRyYWNrUHJp
dmF0ZUJhc2UqIG93bmVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVh
bSkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVyPE1haW5UaHJlYWROb3RpZmlj
YXRpb24+OjpjcmVhdGUoKSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgLCBtX3N0cmVhbShz
dHJlYW0pCi0gICAgLCBtX2V2ZW50UHJvYmUoMCkKKyAgICAsIG1fdHlwZSh0eXBlKQogICAgICwg
bV9vd25lcihvd25lcikKIHsKICAgICBBU1NFUlQobV9zdHJlYW0pOworICAgIG1faWQgPSBnc3Rf
c3RyZWFtX2dldF9zdHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpOwogCiAgICAgLy8gV2UgY2FuJ3Qg
Y2FsbCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKSBkaXJlY3RseSwgYmVjYXVzZSB3ZSBuZWVk
IHRhZ3NDaGFuZ2VkKCkgdG8gc2V0dXAgbV90YWdzLgogICAgIHRhZ3NDaGFuZ2VkKCk7CkBAIC04
OSwxMiArMTA1LDE3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6c2V0UGFkKEdS
ZWZQdHI8R3N0UGFkPiYmIHBhZCkKIAogICAgIG1fcGFkID0gV1RGTW92ZShwYWQpOwogICAgIG1f
YmVzdFVwc3RyZWFtUGFkID0gZmluZEJlc3RVcHN0cmVhbVBhZChtX3BhZCk7CisgICAgbV9pZCA9
IGdlbmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRChtX3R5cGUsIG1faW5kZXgpOworCiAgICAg
bV9ldmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9iZXN0VXBzdHJlYW1QYWQuZ2V0KCks
IEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLCBbXSAoR3N0UGFkKiwgR3N0UGFk
UHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4g
ewogICAgICAgICBhdXRvKiB0cmFjayA9IHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIqPih1c2VyRGF0YSk7CiAgICAgICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZ3N0X3Bh
ZF9wcm9iZV9pbmZvX2dldF9ldmVudChpbmZvKSkpIHsKICAgICAgICAgY2FzZSBHU1RfRVZFTlRf
VEFHOgogICAgICAgICAgICAgdGFnc0NoYW5nZWRDYWxsYmFjayh0cmFjayk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfRVZFTlRfU1RSRUFNX1NUQVJUOgorICAgICAgICAg
ICAgdHJhY2stPnN0cmVhbUNoYW5nZWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxODQsOSBA
QCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKICAgICAgICAg
bV90YWdzLnN3YXAodGFncyk7CiAgICAgfQogCi0gICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5U
aHJlYWROb3RpZmljYXRpb246OlRhZ3NDaGFuZ2VkLCBbdGhpc10geyBub3RpZnlUcmFja09mVGFn
c0NoYW5nZWQoKTsgfSk7CisgICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmlj
YXRpb246OlRhZ3NDaGFuZ2VkLCBbdGhpc10geworICAgICAgICBub3RpZnlUcmFja09mVGFnc0No
YW5nZWQoKTsKKyAgICB9KTsKIH0KIAogYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpn
ZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC0y
MjAsNiArMjQzLDIzIEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJh
Y2tPZlRhZ3NDaGFuZ2VkKCkKICAgICAgICAgY2xpZW50LT5sYW5ndWFnZUNoYW5nZWQobV9sYW5n
dWFnZSk7CiB9CiAKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tP
ZlN0cmVhbUNoYW5nZWQoKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyZWFtSWQoZ3N0X3Bh
ZF9nZXRfc3RyZWFtX2lkKG1fcGFkLmdldCgpKSk7CisgICAgaWYgKCFzdHJlYW1JZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCBzdHJlYW0gc3RhcnQgZm9y
IHN0cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZC5nZXQoKSk7CisgICAgbV9pZCA9IHN0cmVh
bUlkLmdldCgpOworfQorCit2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnN0cmVhbUNo
YW5nZWQoKQoreworICAgIG1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9u
OjpTdHJlYW1DaGFuZ2VkLCBbdGhpc10geworICAgICAgICBub3RpZnlUcmFja09mU3RyZWFtQ2hh
bmdlZCgpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuaAppbmRleCAwOTU3NWFkOTBmODBhMTBmYmQ4YWYxM2ZiNDQ3MTI4
ZTAyMWQ1NjljLi4xMWNlODczYmNiNGExMzMzODA2MDk2YmZmNmQ4YTFmOTIyZGVhYjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKQEAgLTQ4LDYgKzQ4LDgg
QEAgcHVibGljOgogICAgICAgICBVbmtub3duCiAgICAgfTsKIAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBBdG9tU3RyaW5nIGdlbmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRChUcmFja1R5
cGUsIHVuc2lnbmVkIGluZGV4KTsKKwogICAgIEdzdFBhZCogcGFkKCkgY29uc3QgeyByZXR1cm4g
bV9wYWQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBhZChHUmVmUHRyPEdzdFBhZD4mJik7CiAKQEAg
LTU1LDEyICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9v
bCkgeyB9CiAKLSAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCkgeyBtX2luZGV4ID0gIGluZGV4
OyB9CisgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2luZGV4ID0gIGluZGV4
OyB9CiAKLSAgICBHc3RTdHJlYW0qIHN0cmVhbSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9z
dHJlYW0uZ2V0KCk7Ci0gICAgfQorICAgIEdzdFN0cmVhbSogc3RyZWFtKCkgeyByZXR1cm4gbV9z
dHJlYW0uZ2V0KCk7IH0KIAogICAgIC8vIFVzZWQgZm9yIE1TRSwgd2hlcmUgdGhlIGluaXRpYWwg
Y2FwcyBvZiB0aGUgcGFkIGFyZSByZWxldmFudCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBtYXRjaGlu
ZyBwYWQgaW4gdGhlCiAgICAgLy8gcGxheWJhY2sgcGlwZWxpbmUuCkBAIC02OCwxMCArNjcsMTEg
QEAgcHVibGljOgogICAgIGNvbnN0IEdSZWZQdHI8R3N0Q2Fwcz4mIGluaXRpYWxDYXBzKCkgeyBy
ZXR1cm4gbV9pbml0aWFsQ2FwczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2ludCBpbmRleCwgR1JlZlB0cjxH
c3RQYWQ+KTsKLSAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2Uq
IG93bmVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4pOworICAgIFRyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIoVHJhY2tUeXBlLCBUcmFja1ByaXZhdGVCYXNlKiwgdW5zaWduZWQgaW5k
ZXgsIEdSZWZQdHI8R3N0UGFkPik7CisgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFj
a1R5cGUsIFRyYWNrUHJpdmF0ZUJhc2UqLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJl
YW0+KTsKIAogICAgIHZvaWQgbm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCk7CisgICAgdm9pZCBu
b3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCgpOwogCiAgICAgZW51bSBNYWluVGhyZWFkTm90aWZp
Y2F0aW9uIHsKICAgICAgICAgVGFnc0NoYW5nZWQgPSAxIDw8IDEsCkBAIC04MCwxMyArODAsMTQg
QEAgcHJvdGVjdGVkOgogICAgIH07CiAKICAgICBSZWY8TWFpblRocmVhZE5vdGlmaWVyPE1haW5U
aHJlYWROb3RpZmljYXRpb24+PiBtX25vdGlmaWVyOwotICAgIGdpbnQgbV9pbmRleDsKKyAgICB1
bnNpZ25lZCBtX2luZGV4OwogICAgIEF0b21TdHJpbmcgbV9sYWJlbDsKICAgICBBdG9tU3RyaW5n
IG1fbGFuZ3VhZ2U7CisgICAgQXRvbVN0cmluZyBtX2lkOwogICAgIEdSZWZQdHI8R3N0UGFkPiBt
X3BhZDsKICAgICBHUmVmUHRyPEdzdFBhZD4gbV9iZXN0VXBzdHJlYW1QYWQ7CiAgICAgR1JlZlB0
cjxHc3RTdHJlYW0+IG1fc3RyZWFtOwotICAgIGd1bG9uZyBtX2V2ZW50UHJvYmU7CisgICAgdW5z
aWduZWQgbG9uZyBtX2V2ZW50UHJvYmUgeyAwIH07CiAgICAgR1JlZlB0cjxHc3RDYXBzPiBtX2lu
aXRpYWxDYXBzOwogCiBwcml2YXRlOgpAQCAtOTUsMTEgKzk2LDE0IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgU3RyaW5nVHlwZT4KICAgICBib29sIGdldFRhZyhHc3RUYWdMaXN0KiB0
YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgU3RyaW5nVHlwZSYgdmFsdWUpOwogCisgICAgdm9p
ZCBzdHJlYW1DaGFuZ2VkKCk7CisKICAgICBzdGF0aWMgdm9pZCBhY3RpdmVDaGFuZ2VkQ2FsbGJh
Y2soVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciopOwogICAgIHN0YXRpYyB2b2lkIHRhZ3NDaGFu
Z2VkQ2FsbGJhY2soVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciopOwogCiAgICAgdm9pZCB0YWdz
Q2hhbmdlZCgpOwogCisgICAgVHJhY2tUeXBlIG1fdHlwZTsKICAgICBUcmFja1ByaXZhdGVCYXNl
KiBtX293bmVyOwogICAgIExvY2sgbV90YWdNdXRleDsKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+
IG1fdGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IGU2MWY1NWE1NjBmZjgxZjAzNWI5MjNiMzI0OTEwODQwNmEwNWZhN2EuLmViNjkzYjAx
MTE0NGRjODBhMzgxODA3NGEyZDIyNjMyNjJlZDhjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzAsMzEgKzMwLDI2IEBACiAjaW5jbHVk
ZSAiVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oIgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIs
IGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCi0gICAgOiBUcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyKHRoaXMsIGluZGV4LCBwYWQpCitWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAg
OiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRy
YWNrVHlwZTo6VmlkZW8sIHRoaXMsIGluZGV4LCBwYWQpCiAgICAgLCBtX3BsYXllcihwbGF5ZXIp
CiB7Ci0gICAgLy8gRklYTUU6IEdldCBhIHJlYWwgSUQgZnJvbSB0aGUgdGtoZCBhdG9tLgotICAg
IG1faWQgPSAiViIgKyBTdHJpbmc6Om51bWJlcihpbmRleCk7CiB9CiAKLVZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVh
bT4gc3RyZWFtKQotICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwg
c3RyZWFtKQorVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJhY2tQcml2YXRlR1N0
cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIHVuc2ln
bmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQorICAgIDogVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlZpZGVv
LCB0aGlzLCBpbmRleCwgc3RyZWFtKQogICAgICwgbV9wbGF5ZXIocGxheWVyKQogewotICAgIGdp
bnQga2luZDsKKyAgICBpbnQga2luZDsKICAgICBhdXRvIHRhZ3MgPSBhZG9wdEdSZWYoZ3N0X3N0
cmVhbV9nZXRfdGFncyhtX3N0cmVhbS5nZXQoKSkpOwogCiAgICAgaWYgKHRhZ3MgJiYgZ3N0X3Rh
Z19saXN0X2dldF9pbnQodGFncy5nZXQoKSwgIndlYmtpdC1tZWRpYS1zdHJlYW0ta2luZCIsICZr
aW5kKSAmJiBraW5kID09IHN0YXRpY19jYXN0PGludD4oVmlkZW9UcmFja1ByaXZhdGU6OktpbmQ6
Ok1haW4pKSB7Ci0gICAgICAgIEdzdFN0cmVhbUZsYWdzIHN0cmVhbUZsYWdzID0gZ3N0X3N0cmVh
bV9nZXRfc3RyZWFtX2ZsYWdzKHN0cmVhbS5nZXQoKSk7CisgICAgICAgIGF1dG8gc3RyZWFtRmxh
Z3MgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpKTsKICAgICAgICAg
Z3N0X3N0cmVhbV9zZXRfc3RyZWFtX2ZsYWdzKHN0cmVhbS5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0
U3RyZWFtRmxhZ3M+KHN0cmVhbUZsYWdzIHwgR1NUX1NUUkVBTV9GTEFHX1NFTEVDVCkpOwogICAg
IH0KLQotICAgIG1faWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQoc3RyZWFtLmdldCgpKTsK
IH0KIAogVmlkZW9UcmFja1ByaXZhdGU6OktpbmQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OmtpbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
aAppbmRleCA2MzRjYWEwNGE0ZDRjZWY4ZTQxZjM5N2VhYTkwN2UxNzE2MDQyOTkyLi5lOGI2ZmIy
N2Q2N2ZmMWQxNDhmNzU0ZDlmYWUwOGI5MzhhYjYwNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIlRy
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5o
IgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDM0ICszOCwzMyBAQCBjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI7CiAKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyIGZpbmFs
IDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlLCBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
cj4gY3JlYXRlKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIGdp
bnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyPiBwbGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIo
cGxheWVyLCBpbmRleCwgcGFkKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxWaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyPiBwbGF5ZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiBzdHJlYW0pCisgICAg
c3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKFdlYWtQdHI8TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRy
PEdzdFN0cmVhbT4gc3RyZWFtKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWVyLCBpbmRleCwgc3RyZWFtKSk7CiAgICAg
fQogCiAgICAgS2luZCBraW5kKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3Qo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0
U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVk
KSBvdmVycmlkZSB7IHNldFNlbGVjdGVkKGVuYWJsZWQpOyB9CisgICAgdm9pZCBzZXRTZWxlY3Rl
ZChib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldEFjdGl2ZShib29sIGVuYWJsZWQpIGZpbmFsIHsg
c2V0U2VsZWN0ZWQoZW5hYmxlZCk7IH0KIAotICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pbmRleDsgfQogCi0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCBnaW50
IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwotICAgIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVy
KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0
cjxHc3RTdHJlYW0+KTsKKyAgICBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBh
ZD4pOworICAgIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyPiwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPik7CiAK
LSAgICBBdG9tU3RyaW5nIG1faWQ7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI+IG1fcGxheWVyOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435585</attachid>
            <date>2021-08-16 04:18:44 -0700</date>
            <delta_ts>2021-08-16 09:30:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229123-20210816041843.patch</filename>
            <type>text/plain</type>
            <size>35630</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3YjVkZTA1YmM1YTRk
OTRjYzEyNzhlZTQ1Yjk2OWNmODU4NmViYi4uZTkyNDQ1ZTRlY2I1NmYxNjNkMjMxOWU1MmNiYmU3
YWZmMzUzNTNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA4LTE1ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyNzg5ODEpOiBbR1N0cmVhbWVyXVtEZWJ1Z10gQXNzZXJ0IGNyYXNoZXMgd2hlbiBydW5uaW5n
IG1lZGlhL3RyYWNrIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkxMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciBjbGFzcyBub3cgaW5jbHVk
ZXMgYWxsIHRoZSBjb21tb24gY29kZSB0aGF0IGlzIHVzZWQgYnkgaXRzCisgICAgICAgIHN1YmNs
YXNzZXMuIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgbm93IHJldHVybnMgdmFsaWQg
dHJhY2sgSURzIChmaXhpbmcgdGhlIGlzc3VlIG9mCisgICAgICAgIHRoaXMgcmVncmVzc2lvbjog
QVNTRVJUcykuIFRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGNvZGluZyBzdHlsZSBmaXhlcywgcmVt
b3ZhbCBvZiB1bi1uZWVkZWQKKyAgICAgICAgaW5jbHVkZXMgYW5kIGEgZmV3IG90aGVyIGNsZWFu
LXVwcyByZWxhdGVkIHdpdGggdGhlIFRyYWNrIHN1cHBvcnQgaW4gdGhlIEdTdHJlYW1lciBwbGF0
Zm9ybQorICAgICAgICBsYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6ZGlz
Y29ubmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFu
Z2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OnN0cmVhbUlkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVRleHRTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdlbmVyYXRlVW5pcXVlUGxh
eWJpbjJTdHJlYW1JRCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnNldFBhZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6c2V0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6c3Ry
ZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaDoKKwogMjAy
MS0wOC0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oIGZyb20gSGVhZGVycy5jbWFrZSB0
byBQbGF0Zm9ybU1hYy5jbWFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggNmQzZjQyODAxZjMyNDJjN2NjYmM1ZTJiNTYwZjAzNGU1ZTQyYzlm
NC4uOGI3MjQxNGQwYWY5MTIyZDY3ZTRmODg2MTkxMTZlNzY5ODgyZDRjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zMCwzMSArMzAsMjYg
QEAKICNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSAi
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI+IHBsYXllciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKLSAgICA6IFRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIodGhpcywgaW5kZXgsIHBhZCkKK0F1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
JiYgcGFkKQorICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyOjpUcmFja1R5cGU6OkF1ZGlvLCB0aGlzLCBpbmRleCwgV1RGTW92ZShwYWQpKQog
ICAgICwgbV9wbGF5ZXIocGxheWVyKQogewotICAgIC8vIEZJWE1FOiBHZXQgYSByZWFsIElEIGZy
b20gdGhlIHRraGQgYXRvbS4KLSAgICBtX2lkID0gIkEiICsgU3RyaW5nOjpudW1iZXIoaW5kZXgp
OwogfQogCi1BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgZ2ludCBp
bmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKLSAgICA6IFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIodGhpcywgaW5kZXgsIHN0cmVhbSkKK0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcj4gcGxheWVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYgc3Ry
ZWFtKQorICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpUcmFja1R5cGU6OkF1ZGlvLCB0aGlzLCBpbmRleCwgV1RGTW92ZShzdHJlYW0pKQog
ICAgICwgbV9wbGF5ZXIocGxheWVyKQogewotICAgIGdpbnQga2luZDsKKyAgICBpbnQga2luZDsK
ICAgICBhdXRvIHRhZ3MgPSBhZG9wdEdSZWYoZ3N0X3N0cmVhbV9nZXRfdGFncyhtX3N0cmVhbS5n
ZXQoKSkpOwogCi0gICAgaWYgKHRhZ3MgJiYgZ3N0X3RhZ19saXN0X2dldF9pbnQodGFncy5nZXQo
KSwgIndlYmtpdC1tZWRpYS1zdHJlYW0ta2luZCIsICZraW5kKSAmJiBraW5kID09IHN0YXRpY19j
YXN0PGludD4oVmlkZW9UcmFja1ByaXZhdGU6OktpbmQ6Ok1haW4pKSB7Ci0gICAgICAgIEdzdFN0
cmVhbUZsYWdzIHN0cmVhbUZsYWdzID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2ZsYWdzKHN0cmVh
bS5nZXQoKSk7CisgICAgaWYgKHRhZ3MgJiYgZ3N0X3RhZ19saXN0X2dldF9pbnQodGFncy5nZXQo
KSwgIndlYmtpdC1tZWRpYS1zdHJlYW0ta2luZCIsICZraW5kKSAmJiBraW5kID09IHN0YXRpY19j
YXN0PGludD4oQXVkaW9UcmFja1ByaXZhdGU6OktpbmQ6Ok1haW4pKSB7CisgICAgICAgIGF1dG8g
c3RyZWFtRmxhZ3MgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpKTsK
ICAgICAgICAgZ3N0X3N0cmVhbV9zZXRfc3RyZWFtX2ZsYWdzKHN0cmVhbS5nZXQoKSwgc3RhdGlj
X2Nhc3Q8R3N0U3RyZWFtRmxhZ3M+KHN0cmVhbUZsYWdzIHwgR1NUX1NUUkVBTV9GTEFHX1NFTEVD
VCkpOwogICAgIH0KLQotICAgIG1faWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQoc3RyZWFt
LmdldCgpKTsKIH0KIAogQXVkaW9UcmFja1ByaXZhdGU6OktpbmQgQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI6OmtpbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAppbmRleCBmZTk3OWY0MzgwN2Q5NmU1MmQ4Y2QyMzZhM2U3NjI3YzFlNmVhYzgw
Li42NmEzOTU1YmJkZWZlNjAzZGM5ZTEyNjk2YWI0NTdiMGVkN2YzM2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzgsMzQgKzM4LDMzIEBAIGNs
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsKIAogY2xhc3MgQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHB1YmxpYyBUcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI+IHBsYXllciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICBzdGF0
aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0
UGFkPiYmIHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIHBhZCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5ZXIsIGluZGV4LCBX
VEZNb3ZlKHBhZCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBs
YXllciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKKyAgICBzdGF0aWMg
UmVmPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0U3Ry
ZWFtPiYmIHN0cmVhbSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIHN0cmVhbSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5ZXIsIGlu
ZGV4LCBXVEZNb3ZlKHN0cmVhbSkpKTsKICAgICB9CiAKICAgICBLaW5kIGtpbmQoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzY29u
bmVjdCgpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0QWN0aXZlKGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGUgeyBzZXRFbmFibGVkKGVuYWJs
ZWQpOyB9CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wgZW5hYmxlZCkgZmluYWwgeyBzZXRFbmFibGVkKGVuYWJsZWQpOyB9CiAKLSAgICBp
bnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICBp
bnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIEF0
b21TdHJpbmcgaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgQXRvbVN0
cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICBBdG9t
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQor
ICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CisgICAgQXRv
bVN0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBBdG9t
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCiBw
cml2YXRlOgotICAgIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+KTsKLSAgICBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPik7CisgICAgQXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCB1bnNp
Z25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+JiYpOworICAgIEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgdW5zaWduZWQgaW5k
ZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiYmKTsKIAotICAgIEF0b21TdHJpbmcgbV9pZDsKICAgICBX
ZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gbV9wbGF5ZXI7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggNGMxY2I4YWM5NjY1YWViYzcxY2Q4MjBhYmFjMzRkODg3MjU0MzExYi4uMjg0ZmViNjA2Njhm
YWMwMzI5ZTI2OWQwYzIxYzhlMDNlMmFkYzgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjksNDIgKzI5LDI2IEBACiAK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKLSNpbmNsdWRl
ICJHU3RyZWFtZXJDb21tb24uaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4K
IAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsK
ICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBw
YWQpCitJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiBwYWQpCiAgICAg
OiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKEN1ZUZvcm1hdDo6V2ViVlRUKQotICAgICwgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFkKQorICAgICwgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlRleHQs
IHRoaXMsIGluZGV4LCBXVEZNb3ZlKHBhZCkpCiAgICAgLCBtX2tpbmQoS2luZDo6U3VidGl0bGVz
KQogewotICAgIG1fZXZlbnRQcm9iZSA9IGdzdF9wYWRfYWRkX3Byb2JlKG1fcGFkLmdldCgpLCBH
U1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSwgW10gKEdzdFBhZCosIEdzdFBhZFBy
b2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsK
LSAgICAgICAgYXV0byogdHJhY2sgPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyKj4odXNlckRhdGEpOwotICAgICAgICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFKGdz
dF9wYWRfcHJvYmVfaW5mb19nZXRfZXZlbnQoaW5mbykpKSB7Ci0gICAgICAgIGNhc2UgR1NUX0VW
RU5UX1NUUkVBTV9TVEFSVDoKLSAgICAgICAgICAgIHRyYWNrLT5zdHJlYW1DaGFuZ2VkKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwotICAgIH0sIHRoaXMs
IG51bGxwdHIpOwotCi0gICAgbm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKIH0KIAotSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcihnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQorSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcih1bnNp
Z25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYgc3RyZWFtKQogICAgIDogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZShDdWVGb3JtYXQ6OldlYlZUVCkKLSAgICAsIFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIodGhpcywgaW5kZXgsIHN0cmVhbSkKKyAgICAsIFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlOjpUZXh0LCB0aGlzLCBp
bmRleCwgV1RGTW92ZShzdHJlYW0pKQogewotICAgIG1fc3RyZWFtSWQgPSBnc3Rfc3RyZWFtX2dl
dF9zdHJlYW1faWQoc3RyZWFtLmdldCgpKTsKLSAgICBHU1RfSU5GTygiVHJhY2sgJWQgZ290IHN0
cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1fc3RyZWFtSWQudXRmOCgpLmRh
dGEoKSk7CisgICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkp
OworICAgIEdTVF9JTkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMu
IiwgbV9pbmRleCwgbV9pZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEdTVF9ERUJV
RygiU3RyZWFtICUiIEdTVF9QVFJfRk9STUFULCBzdHJlYW0uZ2V0KCkpOwogICAgIGF1dG8gY2Fw
cyA9IGFkb3B0R1JlZihnc3Rfc3RyZWFtX2dldF9jYXBzKHN0cmVhbS5nZXQoKSkpOwpAQCAtNzIs
MTQgKzU2LDYgQEAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcihnaW50IGluZGV4LCBHUmUKICAgICBtX2tpbmQgPSBnX3N0cl9o
YXNfcHJlZml4KG1lZGlhVHlwZSwgImNsb3NlZGNhcHRpb24vIikgPyBLaW5kOjpDYXB0aW9ucyA6
IEtpbmQ6OlN1YnRpdGxlczsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpkaXNjb25uZWN0KCkKLXsKLSAgICBpZiAobV9wYWQpCi0gICAgICAgIGdzdF9wYWRfcmVt
b3ZlX3Byb2JlKG1fcGFkLmdldCgpLCBtX2V2ZW50UHJvYmUpOwotCi0gICAgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCgpOwotfQotCiB2b2lkIEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQog
ewogICAgIHsKQEAgLTkzLDE0ICs2OSw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGUpCiAgICAgfSk7
CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdl
ZCgpCi17Ci0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0gICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmlj
YXRpb246OlN0cmVhbUNoYW5nZWQsIFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7
CiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+IHNhbXBsZXM7CkBAIC0xMjksMTkgKzk3
LDYgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09m
U2FtcGxlKCkKICAgICB9CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQotewotICAgIEdSZWZQdHI8R3N0RXZlbnQ+
IGV2ZW50ID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwK
LSAgICAgICAgR1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwotICAgIGlmICghZXZlbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IGdjaGFyKiBzdHJlYW1JZDsKLSAgICBnc3RfZXZl
bnRfcGFyc2Vfc3RyZWFtX3N0YXJ0KGV2ZW50LmdldCgpLCAmc3RyZWFtSWQpOwotICAgIEdTVF9J
TkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwg
c3RyZWFtSWQpOwotICAgIG1fc3RyZWFtSWQgPSBzdHJlYW1JZDsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5k
ZXggZjA1MzgwNjNhMWYwN2QyZDA3OWI2YWNmZmU0YTI3MDgxM2NhNzA2NS4uMmIwMmE1OTBmMGRk
ZTFjZTdhNzU1NGE5N2JiOWE5YjQ3NmMwYmYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVk
ZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDxnc3Qv
Z3N0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDQ1ICszOCwzNiBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQp
CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
dW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiYmIHBhZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgs
IHBhZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKGluZGV4LCBXVEZNb3ZlKHBhZCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQp
CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
V2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCB1bnNpZ25lZCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIHBh
ZCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIFdURk1vdmUocGFkKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
Z2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKKyAgICBzdGF0aWMgUmVmPElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZSh1bnNpZ25lZCBpbmRleCwgR1Jl
ZlB0cjxHc3RTdHJlYW0+JiYgc3RyZWFtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRleCwgc3RyZWFtKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoaW5kZXgsIFdURk1vdmUoc3RyZWFtKSkpOwogICAgIH0KIAotICAgIHZvaWQgZGlzY29ubmVj
dCgpIG92ZXJyaWRlOwotCi0gICAgS2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9raW5kOyB9Ci0KLSAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9sYWJlbDsgfQotICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xhbmd1YWdlOyB9Ci0KLSAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBTdHJpbmcgc3RyZWFtSWQoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmVhbUlkOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9raW5kOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7
IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsg
fQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhbmd1
YWdlOyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4
OyB9CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4pOwogCiBwcml2
YXRlOgotICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+KTsKLSAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPik7Ci0KLSAgICB2b2lkIHN0cmVhbUNoYW5nZWQoKTsK
KyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LCBHUmVm
UHRyPEdzdFBhZD4mJik7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcih1bnNp
Z25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYpOwogCiAgICAgdm9pZCBub3RpZnlUcmFj
a09mU2FtcGxlKCk7Ci0gICAgdm9pZCBub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCgpOwogCi0g
ICAgZ3Vsb25nIG1fZXZlbnRQcm9iZTsKICAgICBWZWN0b3I8R1JlZlB0cjxHc3RTYW1wbGU+PiBt
X3BlbmRpbmdTYW1wbGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zYW1wbGVNdXRleCk7Ci0gICAg
U3RyaW5nIG1fc3RyZWFtSWQ7CiAgICAgS2luZCBtX2tpbmQ7CiAgICAgTG9jayBtX3NhbXBsZU11
dGV4OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggYzk5OWU3MTAwYTI5MTE4YTliZjA0MTk5ZDVhY2ZiYjdkNzU2ZTJkMy4uOGUzNzQ4
ZWUwYzcwMjdiYzg1NTQ4ODJhOGU1OTFkNmY3YzU0MzY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTk5MiwyMyArOTkyLDIzIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKIAog
ICAgIEFTU0VSVChtX2lzTGVnYWN5UGxheWJpbiB8fCBpc01lZGlhU291cmNlKCkpOwogCi0gICAg
ZW51bSBUcmFja1R5cGUgeyBBdWRpbyA9IDAsIFZpZGVvID0gMSwgVGV4dCA9IDIgfTsKKyAgICB1
c2luZyBUcmFja1R5cGUgPSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU7CiAg
ICAgVmFyaWFudDxIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI+PiosIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI+Pio+IHZhcmlhbnRUcmFja3MgPSBzdGF0aWNfY2FzdDxIYXNoTWFwPEF0
b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4qPigwKTsKICAgICBhdXRvIHR5cGUo
c3RhdGljX2Nhc3Q8VHJhY2tUeXBlPih2YXJpYW50VHJhY2tzLmluZGV4KCkpKTsKICAgICBjb25z
dCBjaGFyKiB0eXBlTmFtZTsKICAgICBib29sKiBoYXNUeXBlOwogICAgIHN3aXRjaCAodHlwZSkg
ewotICAgIGNhc2UgQXVkaW86CisgICAgY2FzZSBUcmFja1R5cGU6OkF1ZGlvOgogICAgICAgICB0
eXBlTmFtZSA9ICJhdWRpbyI7CiAgICAgICAgIGhhc1R5cGUgPSAmbV9oYXNBdWRpbzsKICAgICAg
ICAgdmFyaWFudFRyYWNrcyA9ICZtX2F1ZGlvVHJhY2tzOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFZpZGVvOgorICAgIGNhc2UgVHJhY2tUeXBlOjpWaWRlbzoKICAgICAgICAgdHlwZU5hbWUg
PSAidmlkZW8iOwogICAgICAgICBoYXNUeXBlID0gJm1faGFzVmlkZW87CiAgICAgICAgIHZhcmlh
bnRUcmFja3MgPSAmbV92aWRlb1RyYWNrczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0
OgorICAgIGNhc2UgVHJhY2tUeXBlOjpUZXh0OgogICAgICAgICB0eXBlTmFtZSA9ICJ0ZXh0IjsK
ICAgICAgICAgaGFzVHlwZSA9IG51bGxwdHI7CiAgICAgICAgIHZhcmlhbnRUcmFja3MgPSAmbV90
ZXh0VHJhY2tzOwpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2soKQogICAgIEhhc2hNYXA8QXRvbVN0cmluZywg
UmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+PiYgdHJhY2tzID0gKmdldDxIYXNoTWFwPEF0b21TdHJp
bmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4qPih2YXJpYW50VHJhY2tzKTsKIAogICAgIC8v
IElnbm9yZSBub3RpZmljYXRpb25zIGFmdGVyIGEgRU9TLiBXZSBkb24ndCB3YW50IHRoZSB0cmFj
a3MgdG8gZGlzYXBwZWFyIHdoZW4gdGhlIHZpZGVvIGlzIGZpbmlzaGVkLgotICAgIGlmIChtX2lz
RW5kUmVhY2hlZCAmJiAodHlwZSA9PSBBdWRpbyB8fCB0eXBlID09IFZpZGVvKSkKKyAgICBpZiAo
bV9pc0VuZFJlYWNoZWQgJiYgKHR5cGUgPT0gVHJhY2tUeXBlOjpBdWRpbyB8fCB0eXBlID09IFRy
YWNrVHlwZTo6VmlkZW8pKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBudW1iZXJP
ZlRyYWNrcyA9IDA7CkBAIC0xMDM5LDcgKzEwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjaygpCiAgICAgICAgIGlmIChvbGRIYXNUeXBl
ICE9ICpoYXNUeXBlKQogICAgICAgICAgICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdl
ZCgpOwogCi0gICAgICAgIGlmICgqaGFzVHlwZSAmJiB0eXBlID09IFZpZGVvKQorICAgICAgICBp
ZiAoKmhhc1R5cGUgJiYgdHlwZSA9PSBUcmFja1R5cGU6OlZpZGVvKQogICAgICAgICAgICAgbV9w
bGF5ZXItPnNpemVDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjaygpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiB2YWxpZFN0cmVhbXM7Cisg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IHZhbGlkU3RyZWFtczsKICAgICBTdHJpbmdQcmludFN0cmVh
bSBnZXRQYWRQcm9wZXJ0eTsKICAgICBnZXRQYWRQcm9wZXJ0eS5wcmludGYoImdldC0lcy1wYWQi
LCB0eXBlTmFtZSk7CiAKQEAgLTEwNTgsNyArMTA1OCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksIGdldFBhZFByb3BlcnR5LnRvQ1N0cmluZygpLmRh
dGEoKSwgaSwgJnBhZC5vdXRQdHIoKSwgbnVsbHB0cik7CiAgICAgICAgIEFTU0VSVChwYWQpOwog
Ci0gICAgICAgIFN0cmluZyBzdHJlYW1JZCA9IFN0cmluZyh0eXBlTmFtZSkuc3Vic3RyaW5nKDAs
IDEpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgKyBTdHJpbmc6Om51bWJlcihpKTsKKyAgICAg
ICAgLy8gVGhlIHBhZCBtaWdodCBub3QgaGF2ZSBhIHN0aWNreSBzdHJlYW0tc3RhcnQgZXZlbnQg
eWV0LCBzbyB3ZSBjYW4ndCB1c2UKKyAgICAgICAgLy8gZ3N0X3BhZF9nZXRfc3RyZWFtX2lkKCkg
aGVyZS4KKyAgICAgICAgYXV0byBzdHJlYW1JZCA9IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OmdlbmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRCh0eXBlLCBpKTsKICAgICAgICAgdmFsaWRT
dHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7CiAKICAgICAgICAgaWYgKGkgPCB0cmFja3Muc2l6ZSgp
KSB7CkBAIC0xMDczLDE3ICsxMDc1LDIzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8gdHJhY2sgPSBUcmFja1ByaXZhdGVUeXBlOjpjcmVhdGUobWFrZVdlYWtQdHIo
KnRoaXMpLCBpLCBwYWQpOwotICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkgJiYgKHR5
cGUgPT0gQXVkaW8gfHwgdHlwZSA9PSBWaWRlbykpCisgICAgICAgIGF1dG8gdHJhY2sgPSBUcmFj
a1ByaXZhdGVUeXBlOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBXVEZNb3ZlKHBhZCkp
OworICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkgJiYgKHR5cGUgPT0gVHJhY2tUeXBl
OjpBdWRpbyB8fCB0eXBlID09IFRyYWNrVHlwZTo6VmlkZW8pKQogICAgICAgICAgICAgdHJhY2st
PnNldEFjdGl2ZSh0cnVlKTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgp
KTsKICAgICAgICAgdHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKIAogICAg
ICAgICBWYXJpYW50PEF1ZGlvVHJhY2tQcml2YXRlJiwgVmlkZW9UcmFja1ByaXZhdGUmLCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJj4gdmFyaWFudFRyYWNrKHRyYWNrLmdldCgpKTsKICAgICAgICAg
c3dpdGNoICh2YXJpYW50VHJhY2suaW5kZXgoKSkgewotICAgICAgICBjYXNlIEF1ZGlvOiBtX3Bs
YXllci0+YWRkQXVkaW9UcmFjayhnZXQ8QXVkaW9UcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2sp
KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlkZW86IG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKGdl
dDxWaWRlb1RyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOyBicmVhazsKLSAgICAgICAgY2Fz
ZSBUZXh0OiBtX3BsYXllci0+YWRkVGV4dFRyYWNrKGdldDxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Jj4odmFyaWFudFRyYWNrKSk7IGJyZWFrOworICAgICAgICBjYXNlIFRyYWNrVHlwZTo6QXVkaW86
CisgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjayhnZXQ8QXVkaW9UcmFja1ByaXZh
dGUmPih2YXJpYW50VHJhY2spKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRy
YWNrVHlwZTo6VmlkZW86CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayhnZXQ8
VmlkZW9UcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFRyYWNrVHlwZTo6VGV4dDoKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRU
ZXh0VHJhY2soZ2V0PEluYmFuZFRleHRUcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTQzLDcgKzExNTEsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWRDYWxsYmFjayhN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZVRleHRTYW1wbGUoR3N0U2FtcGxlKiBzYW1wbGUsIGNvbnN0IGNoYXIqIHN0cmVh
bUlkKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RleHRUcmFja3MudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKCFzdHJjbXAodHJhY2stPnN0cmVhbUlkKCkudXRmOCgpLmRhdGEoKSwgc3Ry
ZWFtSWQpKSB7CisgICAgICAgIGlmICghc3RyY21wKHRyYWNrLT5pZCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHN0cmVhbUlkKSkgewogICAgICAgICAgICAgdHJhY2stPmhhbmRsZVNhbXBsZShz
YW1wbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDQ5LDggKzE0NTcs
OCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tzKGNvbnN0
IEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlvbgogICAgIHVuc2lnbmVkIHZpZGVvVHJhY2tJbmRl
eCA9IDA7CiAgICAgdW5zaWduZWQgdGV4dFRyYWNrSW5kZXggPSAwOwogCi0jZGVmaW5lIENSRUFU
RV9UUkFDSyh0eXBlLCBUeXBlKSBHX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIFJlZlB0cjxUeXBlIyNUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0g
VHlwZSMjVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCB0
eXBlIyNUcmFja0luZGV4LCBzdHJlYW0pOyBcCisjZGVmaW5lIENSRUFURV9UUkFDSyh0eXBlLCBU
eXBlKSBHX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUmVmUHRy
PFR5cGUjI1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBUeXBlIyNUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIHR5cGUjI1RyYWNrSW5kZXgsIFdU
Rk1vdmUoc3RyZWFtKSk7IFwKICAgICAgICAgYXV0byB0cmFja0lkID0gdHJhY2stPmlkKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIXR5cGUjI1RyYWNr
SW5kZXgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg
ICBtX3dhbnRlZCMjVHlwZSMjU3RyZWFtSWQgPSB0cmFja0lkOyAgICAgICAgICAgICAgICAgICAg
IFwKQEAgLTE0NjMsMTEgKzE0NzEsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICB9
IEdfU1RNVF9FTkQKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewotICAgICAgICBhdXRvKiBzdHJlYW0gPSBnc3Rfc3RyZWFtX2NvbGxlY3Rpb25fZ2V0X3N0cmVh
bShzdHJlYW1Db2xsZWN0aW9uLmdldCgpLCBpKTsKLSAgICAgICAgU3RyaW5nIHN0cmVhbUlkKGdz
dF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0pKTsKLSAgICAgICAgYXV0byB0eXBlID0gZ3N0
X3N0cmVhbV9nZXRfc3RyZWFtX3R5cGUoc3RyZWFtKTsKKyAgICAgICAgR1JlZlB0cjxHc3RTdHJl
YW0+IHN0cmVhbSA9IGdzdF9zdHJlYW1fY29sbGVjdGlvbl9nZXRfc3RyZWFtKHN0cmVhbUNvbGxl
Y3Rpb24uZ2V0KCksIGkpOworICAgICAgICBjb25zdCBjaGFyKiBzdHJlYW1JZCA9IGdzdF9zdHJl
YW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkpOworICAgICAgICBhdXRvIHR5cGUgPSBnc3Rf
c3RyZWFtX2dldF9zdHJlYW1fdHlwZShzdHJlYW0uZ2V0KCkpOwogCi0gICAgICAgIEdTVF9ERUJV
R19PQkpFQ1QocGlwZWxpbmUoKSwgIkluc3BlY3RpbmcgJXMgdHJhY2sgd2l0aCBJRCAlcyIsIGdz
dF9zdHJlYW1fdHlwZV9nZXRfbmFtZSh0eXBlKSwgc3RyZWFtSWQudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkluc3BlY3RpbmcgJXMgdHJhY2sg
d2l0aCBJRCAlcyIsIGdzdF9zdHJlYW1fdHlwZV9nZXRfbmFtZSh0eXBlKSwgc3RyZWFtSWQpOwog
CiAgICAgICAgIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX0FVRElPKSB7CiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0soYXVkaW8sIEF1ZGlvKTsKQEAgLTE0NzUsMTEgKzE0ODMsMTEgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRy
PEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVB
TV9UWVBFX1ZJREVPICYmIG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkpCiAgICAgICAgICAgICBD
UkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKTsKICAgICAgICAgZWxzZSBpZiAodHlwZSAmIEdTVF9T
VFJFQU1fVFlQRV9URVhUICYmICF1c2VNZWRpYVNvdXJjZSkgewotICAgICAgICAgICAgYXV0byB0
cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJ
bmRleCsrLCBzdHJlYW0pOworICAgICAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsrLCBXVEZNb3ZlKHN0cmVh
bSkpOwogICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKICAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5
cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgR1NUX1dBUk5JTkcoIlVua25vd24gdHJhY2sgdHlwZSBmb3VuZCBmb3Igc3RyZWFtICVz
Iiwgc3RyZWFtSWQpOwogICAgIH0KIAogICAgIG1faGFzQXVkaW8gPSAhbV9hdWRpb1RyYWNrcy5p
c0VtcHR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAK
aW5kZXggNjAwYTY3ZmRmNzRmNjkxYzg1NzEwODFkYjgzMDg0M2ZjMmE1NDIyZS4uYjg1NWJkYjhj
ZGY3ZWU0NWEzYTI5NmEzM2YxOWYwN2FiY2MzZGNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMzAsMTIgKzMwLDggQEAKICNpbmNsdWRlICJU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24u
aCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgot
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUg
PGdzdC90YWcvdGFnLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJr
aXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKQEAgLTQzLDYgKzM5LDI1IEBAIEdTVF9ERUJVR19DQVRF
R09SWV9FWFRFUk4od2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorQXRvbVN0cmluZyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZW5lcmF0ZVVu
aXF1ZVBsYXliaW4yU3RyZWFtSUQoVHJhY2tUeXBlIHRyYWNrVHlwZSwgdW5zaWduZWQgaW5kZXgp
Cit7CisgICAgYXV0byBwcmVmaXggPSBbdHJhY2tUeXBlXSgpIC0+IGNoYXIgeworICAgICAgICBz
d2l0Y2ggKHRyYWNrVHlwZSkgeworICAgICAgICBjYXNlIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXI6OlRyYWNrVHlwZTo6QXVkaW86CisgICAgICAgICAgICByZXR1cm4gJ0EnOworICAgICAgICBj
YXNlIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6VmlkZW86CisgICAgICAg
ICAgICByZXR1cm4gJ1YnOworICAgICAgICBjYXNlIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OlRyYWNrVHlwZTo6VGV4dDoKKyAgICAgICAgICAgIHJldHVybiAnVCc7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biAnVSc7CisgICAgICAgIH0KKyAgICB9KCk7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcmVm
aXgsIGluZGV4KTsKK30KKwogc3RhdGljIEdSZWZQdHI8R3N0UGFkPiBmaW5kQmVzdFVwc3RyZWFt
UGFkKEdSZWZQdHI8R3N0UGFkPiBwYWQpCiB7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQg
PSBwYWQ7CkBAIC01NiwxMCArNzEsMTAgQEAgc3RhdGljIEdSZWZQdHI8R3N0UGFkPiBmaW5kQmVz
dFVwc3RyZWFtUGFkKEdSZWZQdHI8R3N0UGFkPiBwYWQpCiAgICAgcmV0dXJuIHNpbmtQYWQ7CiB9
CiAKLVRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIo
VHJhY2tQcml2YXRlQmFzZSogb3duZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQp
CitUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRy
YWNrVHlwZSB0eXBlLCBUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgdW5zaWduZWQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiYmIHBhZCkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVy
PE1haW5UaHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKICAgICAsIG1faW5kZXgoaW5kZXgp
Ci0gICAgLCBtX2V2ZW50UHJvYmUoMCkKKyAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9vd25l
cihvd25lcikKIHsKICAgICBzZXRQYWQoV1RGTW92ZShwYWQpKTsKQEAgLTY5LDE0ICs4NCwxNSBA
QCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRy
YWNrUHJpdmF0ZUJhc2UqIG93bmVyLCBnaQogICAgIHRhZ3NDaGFuZ2VkKCk7CiB9CiAKLVRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tQcml2
YXRlQmFzZSogb3duZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiBzdHJlYW0pCitU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNr
VHlwZSB0eXBlLCBUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQ
dHI8R3N0U3RyZWFtPiYmIHN0cmVhbSkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlm
aWVyPE1haW5UaHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKICAgICAsIG1faW5kZXgoaW5k
ZXgpCi0gICAgLCBtX3N0cmVhbShzdHJlYW0pCi0gICAgLCBtX2V2ZW50UHJvYmUoMCkKKyAgICAs
IG1fc3RyZWFtKFdURk1vdmUoc3RyZWFtKSkKKyAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9v
d25lcihvd25lcikKIHsKICAgICBBU1NFUlQobV9zdHJlYW0pOworICAgIG1faWQgPSBnc3Rfc3Ry
ZWFtX2dldF9zdHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpOwogCiAgICAgLy8gV2UgY2FuJ3QgY2Fs
bCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKSBkaXJlY3RseSwgYmVjYXVzZSB3ZSBuZWVkIHRh
Z3NDaGFuZ2VkKCkgdG8gc2V0dXAgbV90YWdzLgogICAgIHRhZ3NDaGFuZ2VkKCk7CkBAIC04OSwx
MiArMTA1LDE3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6c2V0UGFkKEdSZWZQ
dHI8R3N0UGFkPiYmIHBhZCkKIAogICAgIG1fcGFkID0gV1RGTW92ZShwYWQpOwogICAgIG1fYmVz
dFVwc3RyZWFtUGFkID0gZmluZEJlc3RVcHN0cmVhbVBhZChtX3BhZCk7CisgICAgbV9pZCA9IGdl
bmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRChtX3R5cGUsIG1faW5kZXgpOworCiAgICAgbV9l
dmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9iZXN0VXBzdHJlYW1QYWQuZ2V0KCksIEdT
VF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJv
YmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewog
ICAgICAgICBhdXRvKiB0cmFjayA9IHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIqPih1c2VyRGF0YSk7CiAgICAgICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZ3N0X3BhZF9w
cm9iZV9pbmZvX2dldF9ldmVudChpbmZvKSkpIHsKICAgICAgICAgY2FzZSBHU1RfRVZFTlRfVEFH
OgogICAgICAgICAgICAgdGFnc0NoYW5nZWRDYWxsYmFjayh0cmFjayk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHU1RfRVZFTlRfU1RSRUFNX1NUQVJUOgorICAgICAgICAgICAg
dHJhY2stPnN0cmVhbUNoYW5nZWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxODQsOSBAQCB2
b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKICAgICAgICAgbV90
YWdzLnN3YXAodGFncyk7CiAgICAgfQogCi0gICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJl
YWROb3RpZmljYXRpb246OlRhZ3NDaGFuZ2VkLCBbdGhpc10geyBub3RpZnlUcmFja09mVGFnc0No
YW5nZWQoKTsgfSk7CisgICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRp
b246OlRhZ3NDaGFuZ2VkLCBbdGhpc10geworICAgICAgICBub3RpZnlUcmFja09mVGFnc0NoYW5n
ZWQoKTsKKyAgICB9KTsKIH0KIAogYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRM
YW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC0yMjAs
NiArMjQzLDIzIEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tP
ZlRhZ3NDaGFuZ2VkKCkKICAgICAgICAgY2xpZW50LT5sYW5ndWFnZUNoYW5nZWQobV9sYW5ndWFn
ZSk7CiB9CiAKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0
cmVhbUNoYW5nZWQoKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyZWFtSWQoZ3N0X3BhZF9n
ZXRfc3RyZWFtX2lkKG1fcGFkLmdldCgpKSk7CisgICAgaWYgKCFzdHJlYW1JZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCBzdHJlYW0gc3RhcnQgZm9yIHN0
cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZC5nZXQoKSk7CisgICAgbV9pZCA9IHN0cmVhbUlk
LmdldCgpOworfQorCit2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnN0cmVhbUNoYW5n
ZWQoKQoreworICAgIG1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpT
dHJlYW1DaGFuZ2VkLCBbdGhpc10geworICAgICAgICBub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdl
ZCgpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuaAppbmRleCAwOTU3NWFkOTBmODBhMTBmYmQ4YWYxM2ZiNDQ3MTI4ZTAy
MWQ1NjljLi5mZjk0YjBlYWFjMDJhNjI5ZTVlYmVjYzMzMTdkZDIzYWY4Y2M5Yzg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKQEAgLTQ4LDYgKzQ4LDggQEAg
cHVibGljOgogICAgICAgICBVbmtub3duCiAgICAgfTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBBdG9tU3RyaW5nIGdlbmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRChUcmFja1R5cGUs
IHVuc2lnbmVkIGluZGV4KTsKKwogICAgIEdzdFBhZCogcGFkKCkgY29uc3QgeyByZXR1cm4gbV9w
YWQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBhZChHUmVmUHRyPEdzdFBhZD4mJik7CiAKQEAgLTU1
LDEyICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkg
eyB9CiAKLSAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCkgeyBtX2luZGV4ID0gIGluZGV4OyB9
CisgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2luZGV4ID0gIGluZGV4OyB9
CiAKLSAgICBHc3RTdHJlYW0qIHN0cmVhbSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zdHJl
YW0uZ2V0KCk7Ci0gICAgfQorICAgIEdzdFN0cmVhbSogc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJl
YW0uZ2V0KCk7IH0KIAogICAgIC8vIFVzZWQgZm9yIE1TRSwgd2hlcmUgdGhlIGluaXRpYWwgY2Fw
cyBvZiB0aGUgcGFkIGFyZSByZWxldmFudCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBtYXRjaGluZyBw
YWQgaW4gdGhlCiAgICAgLy8gcGxheWJhY2sgcGlwZWxpbmUuCkBAIC02OCwxMCArNjcsMTEgQEAg
cHVibGljOgogICAgIGNvbnN0IEdSZWZQdHI8R3N0Q2Fwcz4mIGluaXRpYWxDYXBzKCkgeyByZXR1
cm4gbV9pbml0aWFsQ2FwczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQ
YWQ+KTsKLSAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2UqIG93
bmVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4pOworICAgIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIoVHJhY2tUeXBlLCBUcmFja1ByaXZhdGVCYXNlKiwgdW5zaWduZWQgaW5kZXgs
IEdSZWZQdHI8R3N0UGFkPiYmKTsKKyAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNr
VHlwZSwgVHJhY2tQcml2YXRlQmFzZSosIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVh
bT4mJik7CiAKICAgICB2b2lkIG5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpOworICAgIHZvaWQg
bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKIAogICAgIGVudW0gTWFpblRocmVhZE5vdGlm
aWNhdGlvbiB7CiAgICAgICAgIFRhZ3NDaGFuZ2VkID0gMSA8PCAxLApAQCAtODAsMTMgKzgwLDE0
IEBAIHByb3RlY3RlZDoKICAgICB9OwogCiAgICAgUmVmPE1haW5UaHJlYWROb3RpZmllcjxNYWlu
VGhyZWFkTm90aWZpY2F0aW9uPj4gbV9ub3RpZmllcjsKLSAgICBnaW50IG1faW5kZXg7CisgICAg
dW5zaWduZWQgbV9pbmRleDsKICAgICBBdG9tU3RyaW5nIG1fbGFiZWw7CiAgICAgQXRvbVN0cmlu
ZyBtX2xhbmd1YWdlOworICAgIEF0b21TdHJpbmcgbV9pZDsKICAgICBHUmVmUHRyPEdzdFBhZD4g
bV9wYWQ7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IG1fYmVzdFVwc3RyZWFtUGFkOwogICAgIEdSZWZQ
dHI8R3N0U3RyZWFtPiBtX3N0cmVhbTsKLSAgICBndWxvbmcgbV9ldmVudFByb2JlOworICAgIHVu
c2lnbmVkIGxvbmcgbV9ldmVudFByb2JlIHsgMCB9OwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9p
bml0aWFsQ2FwczsKIAogcHJpdmF0ZToKQEAgLTk1LDExICs5NiwxNCBAQCBwcml2YXRlOgogICAg
IHRlbXBsYXRlPGNsYXNzIFN0cmluZ1R5cGU+CiAgICAgYm9vbCBnZXRUYWcoR3N0VGFnTGlzdCog
dGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFN0cmluZ1R5cGUmIHZhbHVlKTsKIAorICAgIHZv
aWQgc3RyZWFtQ2hhbmdlZCgpOworCiAgICAgc3RhdGljIHZvaWQgYWN0aXZlQ2hhbmdlZENhbGxi
YWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIqKTsKICAgICBzdGF0aWMgdm9pZCB0YWdzQ2hh
bmdlZENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIqKTsKIAogICAgIHZvaWQgdGFn
c0NoYW5nZWQoKTsKIAorICAgIFRyYWNrVHlwZSBtX3R5cGU7CiAgICAgVHJhY2tQcml2YXRlQmFz
ZSogbV9vd25lcjsKICAgICBMb2NrIG1fdGFnTXV0ZXg7CiAgICAgR1JlZlB0cjxHc3RUYWdMaXN0
PiBtX3RhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cAppbmRleCBlNjFmNTVhNTYwZmY4MWYwMzViOTIzYjMyNDkxMDg0MDZhMDVmYTdhLi5hOTAyNjc3
M2U3M2FjODA5MmU4ZjJmMGFjYjMwNzI3ZTg3YTJmMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMwLDMxICszMCwyNiBAQAogI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpWaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVy
LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQotICAgIDogVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFkKQorVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyPiBwbGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiBwYWQpCisg
ICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OlRyYWNrVHlwZTo6VmlkZW8sIHRoaXMsIGluZGV4LCBXVEZNb3ZlKHBhZCkpCiAgICAgLCBtX3Bs
YXllcihwbGF5ZXIpCiB7Ci0gICAgLy8gRklYTUU6IEdldCBhIHJlYWwgSUQgZnJvbSB0aGUgdGto
ZCBhdG9tLgotICAgIG1faWQgPSAiViIgKyBTdHJpbmc6Om51bWJlcihpbmRleCk7CiB9CiAKLVZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFr
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVm
UHRyPEdzdFN0cmVhbT4gc3RyZWFtKQotICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0
aGlzLCBpbmRleCwgc3RyZWFtKQorVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBw
bGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4mJiBzdHJlYW0pCisgICAg
OiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRy
YWNrVHlwZTo6VmlkZW8sIHRoaXMsIGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiAgICAgLCBtX3Bs
YXllcihwbGF5ZXIpCiB7Ci0gICAgZ2ludCBraW5kOworICAgIGludCBraW5kOwogICAgIGF1dG8g
dGFncyA9IGFkb3B0R1JlZihnc3Rfc3RyZWFtX2dldF90YWdzKG1fc3RyZWFtLmdldCgpKSk7CiAK
ICAgICBpZiAodGFncyAmJiBnc3RfdGFnX2xpc3RfZ2V0X2ludCh0YWdzLmdldCgpLCAid2Via2l0
LW1lZGlhLXN0cmVhbS1raW5kIiwgJmtpbmQpICYmIGtpbmQgPT0gc3RhdGljX2Nhc3Q8aW50PihW
aWRlb1RyYWNrUHJpdmF0ZTo6S2luZDo6TWFpbikpIHsKLSAgICAgICAgR3N0U3RyZWFtRmxhZ3Mg
c3RyZWFtRmxhZ3MgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpKTsK
KyAgICAgICAgYXV0byBzdHJlYW1GbGFncyA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9mbGFncyhz
dHJlYW0uZ2V0KCkpOwogICAgICAgICBnc3Rfc3RyZWFtX3NldF9zdHJlYW1fZmxhZ3Moc3RyZWFt
LmdldCgpLCBzdGF0aWNfY2FzdDxHc3RTdHJlYW1GbGFncz4oc3RyZWFtRmxhZ3MgfCBHU1RfU1RS
RUFNX0ZMQUdfU0VMRUNUKSk7CiAgICAgfQotCi0gICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0
cmVhbV9pZChzdHJlYW0uZ2V0KCkpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZTo6S2luZCBWaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6a2luZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDYzNGNhYTA0YTRkNGNlZjhlNDFmMzk3ZWFh
OTA3ZTE3MTYwNDI5OTIuLmU1MmE1MDdjNjdjMTA0MzIwNjI1NjhjNjNjNGZhNjFhMDY0OTI4M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zMSw3
ICszMSw2IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oIgogI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMzQgKzM4LDMz
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsKIAogY2xhc3MgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGUsIHB1Ymxp
YyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI+IHBsYXllciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAg
ICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQ
dHI8R3N0UGFkPiYmIHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIHBhZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5ZXIsIGlu
ZGV4LCBXVEZNb3ZlKHBhZCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI+IHBsYXllciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKKyAgICBz
dGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8
R3N0U3RyZWFtPiYmIHN0cmVhbSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIHN0cmVhbSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5
ZXIsIGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpKTsKICAgICB9CiAKICAgICBLaW5kIGtpbmQoKSBj
b25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlzY29ubmVjdCgpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldEFjdGl2ZShib29sIGVuYWJsZWQpIG92ZXJyaWRlIHsgc2V0U2VsZWN0
ZWQoZW5hYmxlZCk7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIGZpbmFsOworICAgIHZv
aWQgc2V0QWN0aXZlKGJvb2wgZW5hYmxlZCkgZmluYWwgeyBzZXRTZWxlY3RlZChlbmFibGVkKTsg
fQogCi0gICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4
OyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4OyB9
CiAKLSAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQot
ICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9
Ci0gICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFu
Z3VhZ2U7IH0KKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZDsg
fQorICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhYmVsOyB9
CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFuZ3Vh
Z2U7IH0KIAogcHJpdmF0ZToKLSAgICBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFk
Pik7Ci0gICAgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI+LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4pOworICAgIFZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyPiwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiYmKTsKKyAgICBWaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIHVu
c2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4mJik7CiAKLSAgICBBdG9tU3RyaW5nIG1f
aWQ7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1fcGxheWVyOwog
fTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435611</attachid>
            <date>2021-08-16 09:30:22 -0700</date>
            <delta_ts>2021-08-17 01:29:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229123-20210816093021.patch</filename>
            <type>text/plain</type>
            <size>35924</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhlM2U1MjY1YzZlNDcy
MjBhMjAxMDA0ZWZmNjM0NzNjYjFjOWRkZi4uY2E1YmUyMzIxNjNiMTcxOTFmYzEzNjZkMzFlOWYz
NmRmZmM1NTM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA4LTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyNzg5ODEpOiBbR1N0cmVhbWVyXVtEZWJ1Z10gQXNzZXJ0IGNyYXNoZXMgd2hlbiBydW5uaW5n
IG1lZGlhL3RyYWNrIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkxMjMKKworICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmlndWV6
LUNhbHZhci4KKworICAgICAgICBUaGUgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lciBjbGFzcyBu
b3cgaW5jbHVkZXMgYWxsIHRoZSBjb21tb24gY29kZSB0aGF0IGlzIHVzZWQgYnkgaXRzCisgICAg
ICAgIHN1YmNsYXNzZXMuIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgbm93IHJldHVy
bnMgdmFsaWQgdHJhY2sgSURzIChmaXhpbmcgdGhlIGlzc3VlIG9mCisgICAgICAgIHRoaXMgcmVn
cmVzc2lvbjogQVNTRVJUcykuIFRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGNvZGluZyBzdHlsZSBm
aXhlcywgcmVtb3ZhbCBvZiB1bi1uZWVkZWQKKyAgICAgICAgaW5jbHVkZXMgYW5kIGEgZmV3IG90
aGVyIGNsZWFuLXVwcyByZWxhdGVkIHdpdGggdGhlIFRyYWNrIHN1cHBvcnQgaW4gdGhlIEdTdHJl
YW1lciBwbGF0Zm9ybQorICAgICAgICBsYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6ZGlzY29ubmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZT
dHJlYW1DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OnN0cmVhbUlkIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVRleHRTYW1wbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdlbmVyYXRl
VW5pcXVlUGxheWJpbjJTdHJlYW1JRCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnNldFBhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpzdHJlYW1DaGFu
Z2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6c2V0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6c3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
aDoKKwogMjAyMS0wOC0xNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODEwNzguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2ZDNmNDI4MDFmMzI0MmM3
Y2NiYzVlMmI1NjBmMDM0ZTVlNDJjOWY0Li43MjQyOTg4MmEyNDJjYWM3MDE5ZmIyMjY5ZmE1ODEy
OWNhMzI2MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTMwLDMxICszMCwyNiBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyLmgiCiAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCIKLSNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdz
dFBhZD4gcGFkKQotICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwg
cGFkKQorQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIHVuc2lnbmVk
IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiBwYWQpCisgICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6QXVkaW8sIHRoaXMs
IGluZGV4LCBXVEZNb3ZlKHBhZCkpCiAgICAgLCBtX3BsYXllcihwbGF5ZXIpCiB7Ci0gICAgLy8g
RklYTUU6IEdldCBhIHJlYWwgSUQgZnJvbSB0aGUgdGtoZCBhdG9tLgotICAgIG1faWQgPSAiQSIg
KyBTdHJpbmc6Om51bWJlcihpbmRleCk7CiB9CiAKLUF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQot
ICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgc3RyZWFtKQorQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQ
dHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBH
UmVmUHRyPEdzdFN0cmVhbT4mJiBzdHJlYW0pCisgICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6QXVkaW8sIHRoaXMsIGlu
ZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiAgICAgLCBtX3BsYXllcihwbGF5ZXIpCiB7Ci0gICAgZ2lu
dCBraW5kOworICAgIGludCBraW5kOwogICAgIGF1dG8gdGFncyA9IGFkb3B0R1JlZihnc3Rfc3Ry
ZWFtX2dldF90YWdzKG1fc3RyZWFtLmdldCgpKSk7CiAKLSAgICBpZiAodGFncyAmJiBnc3RfdGFn
X2xpc3RfZ2V0X2ludCh0YWdzLmdldCgpLCAid2Via2l0LW1lZGlhLXN0cmVhbS1raW5kIiwgJmtp
bmQpICYmIGtpbmQgPT0gc3RhdGljX2Nhc3Q8aW50PihWaWRlb1RyYWNrUHJpdmF0ZTo6S2luZDo6
TWFpbikpIHsKLSAgICAgICAgR3N0U3RyZWFtRmxhZ3Mgc3RyZWFtRmxhZ3MgPSBnc3Rfc3RyZWFt
X2dldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpKTsKLSAgICAgICAgZ3N0X3N0cmVhbV9zZXRf
c3RyZWFtX2ZsYWdzKHN0cmVhbS5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0U3RyZWFtRmxhZ3M+KHN0
cmVhbUZsYWdzIHwgR1NUX1NUUkVBTV9GTEFHX1NFTEVDVCkpOworICAgIGlmICh0YWdzICYmIGdz
dF90YWdfbGlzdF9nZXRfaW50KHRhZ3MuZ2V0KCksICJ3ZWJraXQtbWVkaWEtc3RyZWFtLWtpbmQi
LCAma2luZCkgJiYga2luZCA9PSBzdGF0aWNfY2FzdDxpbnQ+KEF1ZGlvVHJhY2tQcml2YXRlOjpL
aW5kOjpNYWluKSkgeworICAgICAgICBhdXRvIHN0cmVhbUZsYWdzID0gZ3N0X3N0cmVhbV9nZXRf
c3RyZWFtX2ZsYWdzKG1fc3RyZWFtLmdldCgpKTsKKyAgICAgICAgZ3N0X3N0cmVhbV9zZXRfc3Ry
ZWFtX2ZsYWdzKG1fc3RyZWFtLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RTdHJlYW1GbGFncz4oc3Ry
ZWFtRmxhZ3MgfCBHU1RfU1RSRUFNX0ZMQUdfU0VMRUNUKSk7CiAgICAgfQotCi0gICAgbV9pZCA9
IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkpOwogfQogCiBBdWRpb1RyYWNr
UHJpdmF0ZTo6S2luZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6a2luZCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGZlOTc5ZjQz
ODA3ZDk2ZTUyZDhjZDIzNmEzZTc2MjdjMWU2ZWFjODAuLjY2YTM5NTViYmRlZmU2MDNkYzllMTI2
OTZhYjQ1N2IwZWQ3ZjMzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC0zOCwzNCArMzgsMzMgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOwogCiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1Ymxp
YyBBdWRpb1RyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0
ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4
LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxh
eWVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+JiYgcGFkKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWVy
LCBpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIFdURk1vdmUocGFkKSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVmUHRy
PEdzdFN0cmVhbT4gc3RyZWFtKQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVy
LCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYgc3RyZWFtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxh
eWVyLCBpbmRleCwgc3RyZWFtKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIFdURk1vdmUoc3RyZWFtKSkpOwog
ICAgIH0KIAogICAgIEtpbmQga2luZCgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaXNjb25u
ZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0KCkgZmluYWw7CiAKLSAgICB2b2lk
IHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFi
bGVkKSBvdmVycmlkZSB7IHNldEVuYWJsZWQoZW5hYmxlZCk7IH0KKyAgICB2b2lkIHNldEVuYWJs
ZWQoYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBmaW5hbCB7
IHNldEVuYWJsZWQoZW5hYmxlZCk7IH0KIAotICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pbmRleDsgfQogCi0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCBnaW50
IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwotICAgIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0
cjxHc3RTdHJlYW0+KTsKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBh
ZD4mJik7CisgICAgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI+LCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYp
OwogCi0gICAgQXRvbVN0cmluZyBtX2lkOwogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyPiBtX3BsYXllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YzFjYjhhYzk2NjVhZWJjNzFjZDgy
MGFiYWMzNGQ4ODcyNTQzMTFiLi5hZDgyMzM3YzE0NGNlOWMyZGVhOGUzM2I1YTEyNjNlM2MxNzQx
MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0yOSw1NyArMjksMzMgQEAKIAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaCIKIAotI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgotI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPGdz
dC9nc3QuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBHU1RfREVCVUdfQ0FURUdPUllfRVhU
RVJOKHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQg
d2Via2l0X21lZGlhX3BsYXllcl9kZWJ1ZwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+IHBhZCkKK0luYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIodW5zaWduZWQgaW5k
ZXgsIEdSZWZQdHI8R3N0UGFkPiYmIHBhZCkKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUo
Q3VlRm9ybWF0OjpXZWJWVFQpCi0gICAgLCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKHRoaXMs
IGluZGV4LCBwYWQpCisgICAgLCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6VGV4dCwgdGhpcywgaW5kZXgsIFdURk1vdmUocGFk
KSkKICAgICAsIG1fa2luZChLaW5kOjpTdWJ0aXRsZXMpCiB7Ci0gICAgbV9ldmVudFByb2JlID0g
Z3N0X3BhZF9hZGRfcHJvYmUobV9wYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9E
T1dOU1RSRUFNLCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlciB1
c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewotICAgICAgICBhdXRvKiB0cmFjayA9IHN0
YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7Ci0g
ICAgICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZ3N0X3BhZF9wcm9iZV9pbmZvX2dldF9ldmVu
dChpbmZvKSkpIHsKLSAgICAgICAgY2FzZSBHU1RfRVZFTlRfU1RSRUFNX1NUQVJUOgotICAgICAg
ICAgICAgdHJhY2stPnN0cmVhbUNoYW5nZWQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IEdTVF9QQURfUFJPQkVfT0s7Ci0gICAgfSwgdGhpcywgbnVsbHB0cik7Ci0KLSAgICBub3RpZnlU
cmFja09mU3RyZWFtQ2hhbmdlZCgpOwogfQogCi1JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGdpbnQgaW5kZXgsIEdSZWZQdHI8
R3N0U3RyZWFtPiBzdHJlYW0pCitJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0
cmVhbT4mJiBzdHJlYW0pCiAgICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKEN1ZUZvcm1hdDo6
V2ViVlRUKQotICAgICwgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgc3Ry
ZWFtKQorICAgICwgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpUcmFja1R5cGU6OlRleHQsIHRoaXMsIGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiB7
Ci0gICAgbV9zdHJlYW1JZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkp
OwotICAgIEdTVF9JTkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMu
IiwgbV9pbmRleCwgbV9zdHJlYW1JZC51dGY4KCkuZGF0YSgpKTsKKyAgICBtX2lkID0gZ3N0X3N0
cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3RyZWFtLmdldCgpKTsKKyAgICBHU1RfSU5GTygiVHJhY2sg
JWQgZ290IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1faWQuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RyZWFtLmdldCgpKTsKLSAgICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X3N0cmVh
bV9nZXRfY2FwcyhzdHJlYW0uZ2V0KCkpKTsKKyAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1Rf
UFRSX0ZPUk1BVCwgbV9zdHJlYW0uZ2V0KCkpOworICAgIGF1dG8gY2FwcyA9IGFkb3B0R1JlZihn
c3Rfc3RyZWFtX2dldF9jYXBzKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgY29uc3QgY2hhciogbWVk
aWFUeXBlID0gY2Fwc01lZGlhVHlwZShjYXBzLmdldCgpKTsKICAgICBtX2tpbmQgPSBnX3N0cl9o
YXNfcHJlZml4KG1lZGlhVHlwZSwgImNsb3NlZGNhcHRpb24vIikgPyBLaW5kOjpDYXB0aW9ucyA6
IEtpbmQ6OlN1YnRpdGxlczsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpkaXNjb25uZWN0KCkKLXsKLSAgICBpZiAobV9wYWQpCi0gICAgICAgIGdzdF9wYWRfcmVt
b3ZlX3Byb2JlKG1fcGFkLmdldCgpLCBtX2V2ZW50UHJvYmUpOwotCi0gICAgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6ZGlzY29ubmVjdCgpOwotfQotCiB2b2lkIEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQog
ewogICAgIHsKQEAgLTkzLDE0ICs2OSw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGUpCiAgICAgfSk7
CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdl
ZCgpCi17Ci0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0gICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmlj
YXRpb246OlN0cmVhbUNoYW5nZWQsIFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7
CiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+IHNhbXBsZXM7CkBAIC0xMjksMTkgKzk3
LDYgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09m
U2FtcGxlKCkKICAgICB9CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQotewotICAgIEdSZWZQdHI8R3N0RXZlbnQ+
IGV2ZW50ID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwK
LSAgICAgICAgR1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwotICAgIGlmICghZXZlbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IGdjaGFyKiBzdHJlYW1JZDsKLSAgICBnc3RfZXZl
bnRfcGFyc2Vfc3RyZWFtX3N0YXJ0KGV2ZW50LmdldCgpLCAmc3RyZWFtSWQpOwotICAgIEdTVF9J
TkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwg
c3RyZWFtSWQpOwotICAgIG1fc3RyZWFtSWQgPSBzdHJlYW1JZDsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5k
ZXggZjA1MzgwNjNhMWYwN2QyZDA3OWI2YWNmZmU0YTI3MDgxM2NhNzA2NS4uMmIwMmE1OTBmMGRk
ZTFjZTdhNzU1NGE5N2JiOWE5YjQ3NmMwYmYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVk
ZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDxnc3Qv
Z3N0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDQ1ICszOCwzNiBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI7CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQp
CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
dW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiYmIHBhZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgs
IHBhZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKGluZGV4LCBXVEZNb3ZlKHBhZCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQp
CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
V2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCB1bnNpZ25lZCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIHBh
ZCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIFdURk1vdmUocGFkKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
Z2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKKyAgICBzdGF0aWMgUmVmPElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZSh1bnNpZ25lZCBpbmRleCwgR1Jl
ZlB0cjxHc3RTdHJlYW0+JiYgc3RyZWFtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRleCwgc3RyZWFtKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIoaW5kZXgsIFdURk1vdmUoc3RyZWFtKSkpOwogICAgIH0KIAotICAgIHZvaWQgZGlzY29ubmVj
dCgpIG92ZXJyaWRlOwotCi0gICAgS2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9raW5kOyB9Ci0KLSAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9sYWJlbDsgfQotICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xhbmd1YWdlOyB9Ci0KLSAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICBTdHJpbmcgc3RyZWFtSWQoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmVhbUlkOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9raW5kOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7
IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsg
fQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhbmd1
YWdlOyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4
OyB9CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4pOwogCiBwcml2
YXRlOgotICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+KTsKLSAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGdpbnQg
aW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPik7Ci0KLSAgICB2b2lkIHN0cmVhbUNoYW5nZWQoKTsK
KyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LCBHUmVm
UHRyPEdzdFBhZD4mJik7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcih1bnNp
Z25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYpOwogCiAgICAgdm9pZCBub3RpZnlUcmFj
a09mU2FtcGxlKCk7Ci0gICAgdm9pZCBub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCgpOwogCi0g
ICAgZ3Vsb25nIG1fZXZlbnRQcm9iZTsKICAgICBWZWN0b3I8R1JlZlB0cjxHc3RTYW1wbGU+PiBt
X3BlbmRpbmdTYW1wbGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zYW1wbGVNdXRleCk7Ci0gICAg
U3RyaW5nIG1fc3RyZWFtSWQ7CiAgICAgS2luZCBtX2tpbmQ7CiAgICAgTG9jayBtX3NhbXBsZU11
dGV4OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggMDk0MWQ0NDk1NDk1NGE4NmJhNjE1YmMwNDQzMzNjZjFmMjdhMmVlYy4uNjQwYTU0
OTdjNzJiN2Q4Mjk1ZjBhODNkY2EzNDNhZGUwNjY2ZmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTk5MiwyMyArOTkyLDIzIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKIAog
ICAgIEFTU0VSVChtX2lzTGVnYWN5UGxheWJpbiB8fCBpc01lZGlhU291cmNlKCkpOwogCi0gICAg
ZW51bSBUcmFja1R5cGUgeyBBdWRpbyA9IDAsIFZpZGVvID0gMSwgVGV4dCA9IDIgfTsKKyAgICB1
c2luZyBUcmFja1R5cGUgPSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU7CiAg
ICAgVmFyaWFudDxIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI+PiosIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI+Pio+IHZhcmlhbnRUcmFja3MgPSBzdGF0aWNfY2FzdDxIYXNoTWFwPEF0
b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4qPigwKTsKICAgICBhdXRvIHR5cGUo
c3RhdGljX2Nhc3Q8VHJhY2tUeXBlPih2YXJpYW50VHJhY2tzLmluZGV4KCkpKTsKICAgICBjb25z
dCBjaGFyKiB0eXBlTmFtZTsKICAgICBib29sKiBoYXNUeXBlOwogICAgIHN3aXRjaCAodHlwZSkg
ewotICAgIGNhc2UgQXVkaW86CisgICAgY2FzZSBUcmFja1R5cGU6OkF1ZGlvOgogICAgICAgICB0
eXBlTmFtZSA9ICJhdWRpbyI7CiAgICAgICAgIGhhc1R5cGUgPSAmbV9oYXNBdWRpbzsKICAgICAg
ICAgdmFyaWFudFRyYWNrcyA9ICZtX2F1ZGlvVHJhY2tzOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFZpZGVvOgorICAgIGNhc2UgVHJhY2tUeXBlOjpWaWRlbzoKICAgICAgICAgdHlwZU5hbWUg
PSAidmlkZW8iOwogICAgICAgICBoYXNUeXBlID0gJm1faGFzVmlkZW87CiAgICAgICAgIHZhcmlh
bnRUcmFja3MgPSAmbV92aWRlb1RyYWNrczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0
OgorICAgIGNhc2UgVHJhY2tUeXBlOjpUZXh0OgogICAgICAgICB0eXBlTmFtZSA9ICJ0ZXh0IjsK
ICAgICAgICAgaGFzVHlwZSA9IG51bGxwdHI7CiAgICAgICAgIHZhcmlhbnRUcmFja3MgPSAmbV90
ZXh0VHJhY2tzOwpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2soKQogICAgIEhhc2hNYXA8QXRvbVN0cmluZywg
UmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+PiYgdHJhY2tzID0gKmdldDxIYXNoTWFwPEF0b21TdHJp
bmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4qPih2YXJpYW50VHJhY2tzKTsKIAogICAgIC8v
IElnbm9yZSBub3RpZmljYXRpb25zIGFmdGVyIGEgRU9TLiBXZSBkb24ndCB3YW50IHRoZSB0cmFj
a3MgdG8gZGlzYXBwZWFyIHdoZW4gdGhlIHZpZGVvIGlzIGZpbmlzaGVkLgotICAgIGlmIChtX2lz
RW5kUmVhY2hlZCAmJiAodHlwZSA9PSBBdWRpbyB8fCB0eXBlID09IFZpZGVvKSkKKyAgICBpZiAo
bV9pc0VuZFJlYWNoZWQgJiYgKHR5cGUgPT0gVHJhY2tUeXBlOjpBdWRpbyB8fCB0eXBlID09IFRy
YWNrVHlwZTo6VmlkZW8pKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBudW1iZXJP
ZlRyYWNrcyA9IDA7CkBAIC0xMDM5LDcgKzEwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjaygpCiAgICAgICAgIGlmIChvbGRIYXNUeXBl
ICE9ICpoYXNUeXBlKQogICAgICAgICAgICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdl
ZCgpOwogCi0gICAgICAgIGlmICgqaGFzVHlwZSAmJiB0eXBlID09IFZpZGVvKQorICAgICAgICBp
ZiAoKmhhc1R5cGUgJiYgdHlwZSA9PSBUcmFja1R5cGU6OlZpZGVvKQogICAgICAgICAgICAgbV9w
bGF5ZXItPnNpemVDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjaygpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiB2YWxpZFN0cmVhbXM7Cisg
ICAgVmVjdG9yPEF0b21TdHJpbmc+IHZhbGlkU3RyZWFtczsKICAgICBTdHJpbmdQcmludFN0cmVh
bSBnZXRQYWRQcm9wZXJ0eTsKICAgICBnZXRQYWRQcm9wZXJ0eS5wcmludGYoImdldC0lcy1wYWQi
LCB0eXBlTmFtZSk7CiAKQEAgLTEwNTgsNyArMTA1OCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksIGdldFBhZFByb3BlcnR5LnRvQ1N0cmluZygpLmRh
dGEoKSwgaSwgJnBhZC5vdXRQdHIoKSwgbnVsbHB0cik7CiAgICAgICAgIEFTU0VSVChwYWQpOwog
Ci0gICAgICAgIFN0cmluZyBzdHJlYW1JZCA9IFN0cmluZyh0eXBlTmFtZSkuc3Vic3RyaW5nKDAs
IDEpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgKyBTdHJpbmc6Om51bWJlcihpKTsKKyAgICAg
ICAgLy8gVGhlIHBhZCBtaWdodCBub3QgaGF2ZSBhIHN0aWNreSBzdHJlYW0tc3RhcnQgZXZlbnQg
eWV0LCBzbyB3ZSBjYW4ndCB1c2UKKyAgICAgICAgLy8gZ3N0X3BhZF9nZXRfc3RyZWFtX2lkKCkg
aGVyZS4KKyAgICAgICAgYXV0byBzdHJlYW1JZCA9IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OmdlbmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRCh0eXBlLCBpKTsKICAgICAgICAgdmFsaWRT
dHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7CiAKICAgICAgICAgaWYgKGkgPCB0cmFja3Muc2l6ZSgp
KSB7CkBAIC0xMDczLDE3ICsxMDc1LDIzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8gdHJhY2sgPSBUcmFja1ByaXZhdGVUeXBlOjpjcmVhdGUobWFrZVdlYWtQdHIo
KnRoaXMpLCBpLCBwYWQpOwotICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkgJiYgKHR5
cGUgPT0gQXVkaW8gfHwgdHlwZSA9PSBWaWRlbykpCisgICAgICAgIGF1dG8gdHJhY2sgPSBUcmFj
a1ByaXZhdGVUeXBlOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBXVEZNb3ZlKHBhZCkp
OworICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkgJiYgKHR5cGUgPT0gVHJhY2tUeXBl
OjpBdWRpbyB8fCB0eXBlID09IFRyYWNrVHlwZTo6VmlkZW8pKQogICAgICAgICAgICAgdHJhY2st
PnNldEFjdGl2ZSh0cnVlKTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgp
KTsKICAgICAgICAgdHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKIAogICAg
ICAgICBWYXJpYW50PEF1ZGlvVHJhY2tQcml2YXRlJiwgVmlkZW9UcmFja1ByaXZhdGUmLCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJj4gdmFyaWFudFRyYWNrKHRyYWNrLmdldCgpKTsKICAgICAgICAg
c3dpdGNoICh2YXJpYW50VHJhY2suaW5kZXgoKSkgewotICAgICAgICBjYXNlIEF1ZGlvOiBtX3Bs
YXllci0+YWRkQXVkaW9UcmFjayhnZXQ8QXVkaW9UcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2sp
KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlkZW86IG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKGdl
dDxWaWRlb1RyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOyBicmVhazsKLSAgICAgICAgY2Fz
ZSBUZXh0OiBtX3BsYXllci0+YWRkVGV4dFRyYWNrKGdldDxJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Jj4odmFyaWFudFRyYWNrKSk7IGJyZWFrOworICAgICAgICBjYXNlIFRyYWNrVHlwZTo6QXVkaW86
CisgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjayhnZXQ8QXVkaW9UcmFja1ByaXZh
dGUmPih2YXJpYW50VHJhY2spKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRy
YWNrVHlwZTo6VmlkZW86CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayhnZXQ8
VmlkZW9UcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFRyYWNrVHlwZTo6VGV4dDoKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRU
ZXh0VHJhY2soZ2V0PEluYmFuZFRleHRUcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTQzLDcgKzExNTEsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWRDYWxsYmFjayhN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZVRleHRTYW1wbGUoR3N0U2FtcGxlKiBzYW1wbGUsIGNvbnN0IGNoYXIqIHN0cmVh
bUlkKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RleHRUcmFja3MudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKCFzdHJjbXAodHJhY2stPnN0cmVhbUlkKCkudXRmOCgpLmRhdGEoKSwgc3Ry
ZWFtSWQpKSB7CisgICAgICAgIGlmICghc3RyY21wKHRyYWNrLT5pZCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHN0cmVhbUlkKSkgewogICAgICAgICAgICAgdHJhY2stPmhhbmRsZVNhbXBsZShz
YW1wbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDQ5LDggKzE0NTcs
OCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tzKGNvbnN0
IEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlvbgogICAgIHVuc2lnbmVkIHZpZGVvVHJhY2tJbmRl
eCA9IDA7CiAgICAgdW5zaWduZWQgdGV4dFRyYWNrSW5kZXggPSAwOwogCi0jZGVmaW5lIENSRUFU
RV9UUkFDSyh0eXBlLCBUeXBlKSBHX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIFJlZlB0cjxUeXBlIyNUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0g
VHlwZSMjVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCB0
eXBlIyNUcmFja0luZGV4LCBzdHJlYW0pOyBcCisjZGVmaW5lIENSRUFURV9UUkFDSyh0eXBlLCBU
eXBlKSBHX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUmVmUHRy
PFR5cGUjI1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBUeXBlIyNUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIHR5cGUjI1RyYWNrSW5kZXgsIFdU
Rk1vdmUoc3RyZWFtKSk7IFwKICAgICAgICAgYXV0byB0cmFja0lkID0gdHJhY2stPmlkKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIXR5cGUjI1RyYWNr
SW5kZXgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg
ICBtX3dhbnRlZCMjVHlwZSMjU3RyZWFtSWQgPSB0cmFja0lkOyAgICAgICAgICAgICAgICAgICAg
IFwKQEAgLTE0NjMsMTEgKzE0NzEsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICB9
IEdfU1RNVF9FTkQKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewotICAgICAgICBhdXRvKiBzdHJlYW0gPSBnc3Rfc3RyZWFtX2NvbGxlY3Rpb25fZ2V0X3N0cmVh
bShzdHJlYW1Db2xsZWN0aW9uLmdldCgpLCBpKTsKLSAgICAgICAgU3RyaW5nIHN0cmVhbUlkKGdz
dF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0pKTsKLSAgICAgICAgYXV0byB0eXBlID0gZ3N0
X3N0cmVhbV9nZXRfc3RyZWFtX3R5cGUoc3RyZWFtKTsKKyAgICAgICAgR1JlZlB0cjxHc3RTdHJl
YW0+IHN0cmVhbSA9IGdzdF9zdHJlYW1fY29sbGVjdGlvbl9nZXRfc3RyZWFtKHN0cmVhbUNvbGxl
Y3Rpb24uZ2V0KCksIGkpOworICAgICAgICBjb25zdCBjaGFyKiBzdHJlYW1JZCA9IGdzdF9zdHJl
YW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkpOworICAgICAgICBhdXRvIHR5cGUgPSBnc3Rf
c3RyZWFtX2dldF9zdHJlYW1fdHlwZShzdHJlYW0uZ2V0KCkpOwogCi0gICAgICAgIEdTVF9ERUJV
R19PQkpFQ1QocGlwZWxpbmUoKSwgIkluc3BlY3RpbmcgJXMgdHJhY2sgd2l0aCBJRCAlcyIsIGdz
dF9zdHJlYW1fdHlwZV9nZXRfbmFtZSh0eXBlKSwgc3RyZWFtSWQudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkluc3BlY3RpbmcgJXMgdHJhY2sg
d2l0aCBJRCAlcyIsIGdzdF9zdHJlYW1fdHlwZV9nZXRfbmFtZSh0eXBlKSwgc3RyZWFtSWQpOwog
CiAgICAgICAgIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX0FVRElPKSB7CiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0soYXVkaW8sIEF1ZGlvKTsKQEAgLTE0NzUsMTEgKzE0ODMsMTEgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRy
PEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVB
TV9UWVBFX1ZJREVPICYmIG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkpCiAgICAgICAgICAgICBD
UkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKTsKICAgICAgICAgZWxzZSBpZiAodHlwZSAmIEdTVF9T
VFJFQU1fVFlQRV9URVhUICYmICF1c2VNZWRpYVNvdXJjZSkgewotICAgICAgICAgICAgYXV0byB0
cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJ
bmRleCsrLCBzdHJlYW0pOworICAgICAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsrLCBXVEZNb3ZlKHN0cmVh
bSkpOwogICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKICAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5
cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgR1NUX1dBUk5JTkcoIlVua25vd24gdHJhY2sgdHlwZSBmb3VuZCBmb3Igc3RyZWFtICVz
Iiwgc3RyZWFtSWQpOwogICAgIH0KIAogICAgIG1faGFzQXVkaW8gPSAhbV9hdWRpb1RyYWNrcy5p
c0VtcHR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAK
aW5kZXggNjAwYTY3ZmRmNzRmNjkxYzg1NzEwODFkYjgzMDg0M2ZjMmE1NDIyZS4uYjg1NWJkYjhj
ZGY3ZWU0NWEzYTI5NmEzM2YxOWYwN2FiY2MzZGNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMzAsMTIgKzMwLDggQEAKICNpbmNsdWRlICJU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24u
aCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgot
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUg
PGdzdC90YWcvdGFnLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJr
aXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKQEAgLTQzLDYgKzM5LDI1IEBAIEdTVF9ERUJVR19DQVRF
R09SWV9FWFRFUk4od2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorQXRvbVN0cmluZyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZW5lcmF0ZVVu
aXF1ZVBsYXliaW4yU3RyZWFtSUQoVHJhY2tUeXBlIHRyYWNrVHlwZSwgdW5zaWduZWQgaW5kZXgp
Cit7CisgICAgYXV0byBwcmVmaXggPSBbdHJhY2tUeXBlXSgpIC0+IGNoYXIgeworICAgICAgICBz
d2l0Y2ggKHRyYWNrVHlwZSkgeworICAgICAgICBjYXNlIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXI6OlRyYWNrVHlwZTo6QXVkaW86CisgICAgICAgICAgICByZXR1cm4gJ0EnOworICAgICAgICBj
YXNlIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6VmlkZW86CisgICAgICAg
ICAgICByZXR1cm4gJ1YnOworICAgICAgICBjYXNlIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OlRyYWNrVHlwZTo6VGV4dDoKKyAgICAgICAgICAgIHJldHVybiAnVCc7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biAnVSc7CisgICAgICAgIH0KKyAgICB9KCk7CisKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcmVm
aXgsIGluZGV4KTsKK30KKwogc3RhdGljIEdSZWZQdHI8R3N0UGFkPiBmaW5kQmVzdFVwc3RyZWFt
UGFkKEdSZWZQdHI8R3N0UGFkPiBwYWQpCiB7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQg
PSBwYWQ7CkBAIC01NiwxMCArNzEsMTAgQEAgc3RhdGljIEdSZWZQdHI8R3N0UGFkPiBmaW5kQmVz
dFVwc3RyZWFtUGFkKEdSZWZQdHI8R3N0UGFkPiBwYWQpCiAgICAgcmV0dXJuIHNpbmtQYWQ7CiB9
CiAKLVRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIo
VHJhY2tQcml2YXRlQmFzZSogb3duZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQp
CitUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRy
YWNrVHlwZSB0eXBlLCBUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgdW5zaWduZWQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPiYmIHBhZCkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVy
PE1haW5UaHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKICAgICAsIG1faW5kZXgoaW5kZXgp
Ci0gICAgLCBtX2V2ZW50UHJvYmUoMCkKKyAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9vd25l
cihvd25lcikKIHsKICAgICBzZXRQYWQoV1RGTW92ZShwYWQpKTsKQEAgLTY5LDE0ICs4NCwxNSBA
QCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRy
YWNrUHJpdmF0ZUJhc2UqIG93bmVyLCBnaQogICAgIHRhZ3NDaGFuZ2VkKCk7CiB9CiAKLVRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tQcml2
YXRlQmFzZSogb3duZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiBzdHJlYW0pCitU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNr
VHlwZSB0eXBlLCBUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQ
dHI8R3N0U3RyZWFtPiYmIHN0cmVhbSkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlm
aWVyPE1haW5UaHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKICAgICAsIG1faW5kZXgoaW5k
ZXgpCi0gICAgLCBtX3N0cmVhbShzdHJlYW0pCi0gICAgLCBtX2V2ZW50UHJvYmUoMCkKKyAgICAs
IG1fc3RyZWFtKFdURk1vdmUoc3RyZWFtKSkKKyAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9v
d25lcihvd25lcikKIHsKICAgICBBU1NFUlQobV9zdHJlYW0pOworICAgIG1faWQgPSBnc3Rfc3Ry
ZWFtX2dldF9zdHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpOwogCiAgICAgLy8gV2UgY2FuJ3QgY2Fs
bCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKSBkaXJlY3RseSwgYmVjYXVzZSB3ZSBuZWVkIHRh
Z3NDaGFuZ2VkKCkgdG8gc2V0dXAgbV90YWdzLgogICAgIHRhZ3NDaGFuZ2VkKCk7CkBAIC04OSwx
MiArMTA1LDE3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6c2V0UGFkKEdSZWZQ
dHI8R3N0UGFkPiYmIHBhZCkKIAogICAgIG1fcGFkID0gV1RGTW92ZShwYWQpOwogICAgIG1fYmVz
dFVwc3RyZWFtUGFkID0gZmluZEJlc3RVcHN0cmVhbVBhZChtX3BhZCk7CisgICAgbV9pZCA9IGdl
bmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRChtX3R5cGUsIG1faW5kZXgpOworCiAgICAgbV9l
dmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9iZXN0VXBzdHJlYW1QYWQuZ2V0KCksIEdT
VF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJv
YmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewog
ICAgICAgICBhdXRvKiB0cmFjayA9IHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIqPih1c2VyRGF0YSk7CiAgICAgICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZ3N0X3BhZF9w
cm9iZV9pbmZvX2dldF9ldmVudChpbmZvKSkpIHsKICAgICAgICAgY2FzZSBHU1RfRVZFTlRfVEFH
OgogICAgICAgICAgICAgdGFnc0NoYW5nZWRDYWxsYmFjayh0cmFjayk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHU1RfRVZFTlRfU1RSRUFNX1NUQVJUOgorICAgICAgICAgICAg
dHJhY2stPnN0cmVhbUNoYW5nZWQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxODQsOSBAQCB2
b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnRhZ3NDaGFuZ2VkKCkKICAgICAgICAgbV90
YWdzLnN3YXAodGFncyk7CiAgICAgfQogCi0gICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJl
YWROb3RpZmljYXRpb246OlRhZ3NDaGFuZ2VkLCBbdGhpc10geyBub3RpZnlUcmFja09mVGFnc0No
YW5nZWQoKTsgfSk7CisgICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRp
b246OlRhZ3NDaGFuZ2VkLCBbdGhpc10geworICAgICAgICBub3RpZnlUcmFja09mVGFnc0NoYW5n
ZWQoKTsKKyAgICB9KTsKIH0KIAogYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRM
YW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC0yMjAs
NiArMjQzLDIzIEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tP
ZlRhZ3NDaGFuZ2VkKCkKICAgICAgICAgY2xpZW50LT5sYW5ndWFnZUNoYW5nZWQobV9sYW5ndWFn
ZSk7CiB9CiAKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0
cmVhbUNoYW5nZWQoKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyZWFtSWQoZ3N0X3BhZF9n
ZXRfc3RyZWFtX2lkKG1fcGFkLmdldCgpKSk7CisgICAgaWYgKCFzdHJlYW1JZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCBzdHJlYW0gc3RhcnQgZm9yIHN0
cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZC5nZXQoKSk7CisgICAgbV9pZCA9IHN0cmVhbUlk
LmdldCgpOworfQorCit2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnN0cmVhbUNoYW5n
ZWQoKQoreworICAgIG1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpT
dHJlYW1DaGFuZ2VkLCBbdGhpc10geworICAgICAgICBub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdl
ZCgpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuaAppbmRleCAwOTU3NWFkOTBmODBhMTBmYmQ4YWYxM2ZiNDQ3MTI4ZTAy
MWQ1NjljLi5mZjk0YjBlYWFjMDJhNjI5ZTVlYmVjYzMzMTdkZDIzYWY4Y2M5Yzg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKQEAgLTQ4LDYgKzQ4LDggQEAg
cHVibGljOgogICAgICAgICBVbmtub3duCiAgICAgfTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBBdG9tU3RyaW5nIGdlbmVyYXRlVW5pcXVlUGxheWJpbjJTdHJlYW1JRChUcmFja1R5cGUs
IHVuc2lnbmVkIGluZGV4KTsKKwogICAgIEdzdFBhZCogcGFkKCkgY29uc3QgeyByZXR1cm4gbV9w
YWQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBhZChHUmVmUHRyPEdzdFBhZD4mJik7CiAKQEAgLTU1
LDEyICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkg
eyB9CiAKLSAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCkgeyBtX2luZGV4ID0gIGluZGV4OyB9
CisgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2luZGV4ID0gIGluZGV4OyB9
CiAKLSAgICBHc3RTdHJlYW0qIHN0cmVhbSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zdHJl
YW0uZ2V0KCk7Ci0gICAgfQorICAgIEdzdFN0cmVhbSogc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJl
YW0uZ2V0KCk7IH0KIAogICAgIC8vIFVzZWQgZm9yIE1TRSwgd2hlcmUgdGhlIGluaXRpYWwgY2Fw
cyBvZiB0aGUgcGFkIGFyZSByZWxldmFudCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBtYXRjaGluZyBw
YWQgaW4gdGhlCiAgICAgLy8gcGxheWJhY2sgcGlwZWxpbmUuCkBAIC02OCwxMCArNjcsMTEgQEAg
cHVibGljOgogICAgIGNvbnN0IEdSZWZQdHI8R3N0Q2Fwcz4mIGluaXRpYWxDYXBzKCkgeyByZXR1
cm4gbV9pbml0aWFsQ2FwczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQ
YWQ+KTsKLSAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2UqIG93
bmVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4pOworICAgIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIoVHJhY2tUeXBlLCBUcmFja1ByaXZhdGVCYXNlKiwgdW5zaWduZWQgaW5kZXgs
IEdSZWZQdHI8R3N0UGFkPiYmKTsKKyAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNr
VHlwZSwgVHJhY2tQcml2YXRlQmFzZSosIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVh
bT4mJik7CiAKICAgICB2b2lkIG5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpOworICAgIHZvaWQg
bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKIAogICAgIGVudW0gTWFpblRocmVhZE5vdGlm
aWNhdGlvbiB7CiAgICAgICAgIFRhZ3NDaGFuZ2VkID0gMSA8PCAxLApAQCAtODAsMTMgKzgwLDE0
IEBAIHByb3RlY3RlZDoKICAgICB9OwogCiAgICAgUmVmPE1haW5UaHJlYWROb3RpZmllcjxNYWlu
VGhyZWFkTm90aWZpY2F0aW9uPj4gbV9ub3RpZmllcjsKLSAgICBnaW50IG1faW5kZXg7CisgICAg
dW5zaWduZWQgbV9pbmRleDsKICAgICBBdG9tU3RyaW5nIG1fbGFiZWw7CiAgICAgQXRvbVN0cmlu
ZyBtX2xhbmd1YWdlOworICAgIEF0b21TdHJpbmcgbV9pZDsKICAgICBHUmVmUHRyPEdzdFBhZD4g
bV9wYWQ7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IG1fYmVzdFVwc3RyZWFtUGFkOwogICAgIEdSZWZQ
dHI8R3N0U3RyZWFtPiBtX3N0cmVhbTsKLSAgICBndWxvbmcgbV9ldmVudFByb2JlOworICAgIHVu
c2lnbmVkIGxvbmcgbV9ldmVudFByb2JlIHsgMCB9OwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9p
bml0aWFsQ2FwczsKIAogcHJpdmF0ZToKQEAgLTk1LDExICs5NiwxNCBAQCBwcml2YXRlOgogICAg
IHRlbXBsYXRlPGNsYXNzIFN0cmluZ1R5cGU+CiAgICAgYm9vbCBnZXRUYWcoR3N0VGFnTGlzdCog
dGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFN0cmluZ1R5cGUmIHZhbHVlKTsKIAorICAgIHZv
aWQgc3RyZWFtQ2hhbmdlZCgpOworCiAgICAgc3RhdGljIHZvaWQgYWN0aXZlQ2hhbmdlZENhbGxi
YWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIqKTsKICAgICBzdGF0aWMgdm9pZCB0YWdzQ2hh
bmdlZENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIqKTsKIAogICAgIHZvaWQgdGFn
c0NoYW5nZWQoKTsKIAorICAgIFRyYWNrVHlwZSBtX3R5cGU7CiAgICAgVHJhY2tQcml2YXRlQmFz
ZSogbV9vd25lcjsKICAgICBMb2NrIG1fdGFnTXV0ZXg7CiAgICAgR1JlZlB0cjxHc3RUYWdMaXN0
PiBtX3RhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cAppbmRleCBlNjFmNTVhNTYwZmY4MWYwMzViOTIzYjMyNDkxMDg0MDZhMDVmYTdhLi41YzBlYTlk
ZmM5YjE1M2YyYzdkYzZiZTkxOTQyOGZjMTVkMThmNjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMwLDMxICszMCwyNiBAQAogI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpWaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVy
LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQotICAgIDogVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFkKQorVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyPiBwbGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiBwYWQpCisg
ICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OlRyYWNrVHlwZTo6VmlkZW8sIHRoaXMsIGluZGV4LCBXVEZNb3ZlKHBhZCkpCiAgICAgLCBtX3Bs
YXllcihwbGF5ZXIpCiB7Ci0gICAgLy8gRklYTUU6IEdldCBhIHJlYWwgSUQgZnJvbSB0aGUgdGto
ZCBhdG9tLgotICAgIG1faWQgPSAiViIgKyBTdHJpbmc6Om51bWJlcihpbmRleCk7CiB9CiAKLVZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFr
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVm
UHRyPEdzdFN0cmVhbT4gc3RyZWFtKQotICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0
aGlzLCBpbmRleCwgc3RyZWFtKQorVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBw
bGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4mJiBzdHJlYW0pCisgICAg
OiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRy
YWNrVHlwZTo6VmlkZW8sIHRoaXMsIGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiAgICAgLCBtX3Bs
YXllcihwbGF5ZXIpCiB7Ci0gICAgZ2ludCBraW5kOworICAgIGludCBraW5kOwogICAgIGF1dG8g
dGFncyA9IGFkb3B0R1JlZihnc3Rfc3RyZWFtX2dldF90YWdzKG1fc3RyZWFtLmdldCgpKSk7CiAK
ICAgICBpZiAodGFncyAmJiBnc3RfdGFnX2xpc3RfZ2V0X2ludCh0YWdzLmdldCgpLCAid2Via2l0
LW1lZGlhLXN0cmVhbS1raW5kIiwgJmtpbmQpICYmIGtpbmQgPT0gc3RhdGljX2Nhc3Q8aW50PihW
aWRlb1RyYWNrUHJpdmF0ZTo6S2luZDo6TWFpbikpIHsKLSAgICAgICAgR3N0U3RyZWFtRmxhZ3Mg
c3RyZWFtRmxhZ3MgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpKTsK
LSAgICAgICAgZ3N0X3N0cmVhbV9zZXRfc3RyZWFtX2ZsYWdzKHN0cmVhbS5nZXQoKSwgc3RhdGlj
X2Nhc3Q8R3N0U3RyZWFtRmxhZ3M+KHN0cmVhbUZsYWdzIHwgR1NUX1NUUkVBTV9GTEFHX1NFTEVD
VCkpOworICAgICAgICBhdXRvIHN0cmVhbUZsYWdzID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2Zs
YWdzKG1fc3RyZWFtLmdldCgpKTsKKyAgICAgICAgZ3N0X3N0cmVhbV9zZXRfc3RyZWFtX2ZsYWdz
KG1fc3RyZWFtLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RTdHJlYW1GbGFncz4oc3RyZWFtRmxhZ3Mg
fCBHU1RfU1RSRUFNX0ZMQUdfU0VMRUNUKSk7CiAgICAgfQotCi0gICAgbV9pZCA9IGdzdF9zdHJl
YW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZTo6
S2luZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6a2luZCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDYzNGNhYTA0YTRkNGNlZjhl
NDFmMzk3ZWFhOTA3ZTE3MTYwNDI5OTIuLmU1MmE1MDdjNjdjMTA0MzIwNjI1NjhjNjNjNGZhNjFh
MDY0OTI4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5o
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5o
IgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzks
MzQgKzM4LDMzIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsKIAogY2xhc3Mg
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZh
dGUsIHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
IHBhZCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
V2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5k
ZXgsIEdSZWZQdHI8R3N0UGFkPiYmIHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIHBhZCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihw
bGF5ZXIsIGluZGV4LCBXVEZNb3ZlKHBhZCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0cjxNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI+IHBsYXllciwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVh
bSkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vh
a1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5kZXgs
IEdSZWZQdHI8R3N0U3RyZWFtPiYmIHN0cmVhbSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIHN0cmVh
bSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcihwbGF5ZXIsIGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpKTsKICAgICB9CiAKICAgICBLaW5k
IGtpbmQoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzY29ubmVjdCgpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEFjdGl2ZShib29sIGVuYWJsZWQpIG92ZXJyaWRlIHsg
c2V0U2VsZWN0ZWQoZW5hYmxlZCk7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIGZpbmFs
OworICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgZW5hYmxlZCkgZmluYWwgeyBzZXRTZWxlY3RlZChl
bmFibGVkKTsgfQogCi0gICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2luZGV4OyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2luZGV4OyB9CiAKLSAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pZDsgfQotICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2xhYmVsOyB9Ci0gICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbGFuZ3VhZ2U7IH0KKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xhYmVsOyB9CisgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbGFuZ3VhZ2U7IH0KIAogcHJpdmF0ZToKLSAgICBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
cihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQ
dHI8R3N0UGFkPik7Ci0gICAgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4p
OworICAgIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyPiwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiYmKTsKKyAgICBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcj4sIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4mJik7CiAKLSAgICBBdG9t
U3RyaW5nIG1faWQ7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IG1f
cGxheWVyOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435672</attachid>
            <date>2021-08-17 01:30:02 -0700</date>
            <delta_ts>2021-08-17 03:16:52 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-229123-20210817013001.patch</filename>
            <type>text/plain</type>
            <size>2856</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdlNjg2ZmE3NjIzMzIw
MzAzMTkwMjJiMDJlMWYwY2Q1OGE1OTRjMC4uMjY4YjQ2NThhMjM2OGU4NjA0ZGM2OWEzOGMxOTcw
MjkyYjE1YTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTE3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyNzg5ODEpOiBbR1N0cmVhbWVyXVtEZWJ1Z10gQXNzZXJ0IGNyYXNoZXMgd2hlbiBydW5uaW5n
IG1lZGlhL3RyYWNrIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkxMjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxOTc4NDk0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBh
IGR1bW15IGlkKCkgbWV0aG9kIGZvciBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLgor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oOgorCiAyMDIxLTA4LTE3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIExheW91dFRlc3RzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC0q
IGFyZSBmbGFrZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCA0YzFjYjhhYzk2NjVhZWJjNzFjZDgyMGFiYWMzNGQ4ODcyNTQz
MTFiLi5kZmZlZmEyNzQ4NzYxYjViNjY3NTdkZjQyYmExYTY1MTA3Y2UwZmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC00
NCw2ICs0NCw3IEBAIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1JlCiAgICAgLCBUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyKHRoaXMsIGluZGV4LCBwYWQpCiAgICAgLCBtX2tpbmQoS2luZDo6U3VidGl0
bGVzKQogeworICAgIG1faWQgPSAiVCIgKyBTdHJpbmc6Om51bWJlcihpbmRleCk7CiAgICAgbV9l
dmVudFByb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUobV9wYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVf
VFlQRV9FVkVOVF9ET1dOU1RSRUFNLCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZv
LCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRv
KiB0cmFjayA9IHN0YXRpY19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIqPih1
c2VyRGF0YSk7CiAgICAgICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZ3N0X3BhZF9wcm9iZV9p
bmZvX2dldF9ldmVudChpbmZvKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYwNTM4MDYzYTFmMDdkMmQwNzliNmFjZmZlNGEy
NzA4MTNjYTcwNjUuLjIyZWRjOWIxOWZlYWIwYTc3YmU1ODRmMTQ5NzkyZDAwOTZmM2Y1ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApA
QCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBLaW5kIGtpbmQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2tpbmQ7IH0KIAorICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lkOyB9CiAgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCkBAIC04MCw2ICs4MSw3IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fc3RyZWFtSWQ7CiAgICAgS2luZCBtX2tpbmQ7CiAgICAgTG9jayBtX3Nh
bXBsZU11dGV4OworICAgIEF0b21TdHJpbmcgbV9pZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>