<?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>236558</bug_id>
          
          <creation_ts>2022-02-13 04:23:19 -0800</creation_ts>
          <short_desc>[GStreamer] Initial MediaRecorder implementation</short_desc>
          <delta_ts>2022-02-22 11:33:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=236652</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>
          
          <blocked>213699</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840971</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-13 04:23:19 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840982</commentid>
    <comment_count>1</comment_count>
      <attachid>451815</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-13 06:31:40 -0800</bug_when>
    <thetext>Created attachment 451815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841007</commentid>
    <comment_count>2</comment_count>
      <attachid>451815</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-13 09:10:38 -0800</bug_when>
    <thetext>Comment on attachment 451815
Patch

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

&gt; Source/WebCore/Modules/mediarecorder/MediaRecorderProvider.cpp:59
&gt; +#if HAVE(AVASSETWRITERDELEGATE)

Looks like this introduces test failures on the mac-wk2 EWS. Maybe this should be PLATFORM(COCOA)... or !USE(GSTREAMER_TRANSCODER)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841179</commentid>
    <comment_count>3</comment_count>
      <attachid>451815</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-14 03:12:59 -0800</bug_when>
    <thetext>Comment on attachment 451815
Patch

There&apos;s a deadlock during the transcoder shutdown, need to debug this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841221</commentid>
    <comment_count>4</comment_count>
      <attachid>451896</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-14 06:03:28 -0800</bug_when>
    <thetext>Created attachment 451896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841257</commentid>
    <comment_count>5</comment_count>
      <attachid>451896</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-14 08:25:43 -0800</bug_when>
    <thetext>Comment on attachment 451896
Patch

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

&gt; Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp:51
&gt; +#if PLATFORM(COCOA) || USE(GSTREAMER_TRANSCODER)

Maybe it is time to define an ENABLE flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841650</commentid>
    <comment_count>6</comment_count>
      <attachid>451896</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-15 04:06:32 -0800</bug_when>
    <thetext>Comment on attachment 451896
Patch

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

&gt;&gt; Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp:51
&gt;&gt; +#if PLATFORM(COCOA) || USE(GSTREAMER_TRANSCODER)
&gt; 
&gt; Maybe it is time to define an ENABLE flag?

Maybe so! Is ENABLE(MEDIA_RECORDER) a good name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842248</commentid>
    <comment_count>7</comment_count>
      <attachid>451896</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2022-02-16 05:13:54 -0800</bug_when>
    <thetext>Comment on attachment 451896
Patch

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

Would be interesting to honor what Eric is saying.

&gt; Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:85
&gt; +    auto scopeExit = makeScopeExit([this, weakThis = WeakPtr { this }, completionHandler = WTFMove(completionHandler)]() mutable {

Interesting to see creating a WeakPtr for a scope exit. Can this really happen? Can this object be destroyed while executing this method? If this can happen I would be even more worried about accessing the other attributes, like m_eos, m_eosLock, etc. If this is so, then I guess what we should do is doing a hard ref and making up some invalidation system or at least locking in the destructor. Calling this method on a dead object would be the worst scenario, obviously.

&gt; Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:110
&gt; +    bool isEOS = false;
&gt; +    {
&gt; +        LockHolder lock(m_eosLock);
&gt; +        isEOS = m_eos;
&gt; +    }
&gt; +    while (!isEOS) {
&gt; +        LockHolder lock(m_eosLock);
&gt; +        m_eosCondition.waitFor(m_eosLock, 200_ms, [weakThis = WeakPtr { this }]() -&gt; bool {

I don&apos;t think you need to do this because the waitFor checks the predicate before waiting.

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:198
&gt; +        callOnMainThread([&amp;] {
&gt; +            if (m_track.hasAudio())
&gt; +                m_track.source().removeAudioSampleObserver(*this);
&gt; +            else if (m_track.hasVideo())
&gt; +                m_track.source().removeVideoSampleObserver(*this);
&gt; +            m_track.removeObserver(*this);
&gt; +        });

Nope! You call this from the destructor, deferring this to the main thread would mean you&apos;re accessing stuff after the object is destroyed. Maybe AndWait can help, but this means r- .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842261</commentid>
    <comment_count>8</comment_count>
      <attachid>451896</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-16 06:15:38 -0800</bug_when>
    <thetext>Comment on attachment 451896
Patch

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

&gt;&gt; Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:110
&gt;&gt; +        m_eosCondition.waitFor(m_eosLock, 200_ms, [weakThis = WeakPtr { this }]() -&gt; bool {
&gt; 
&gt; I don&apos;t think you need to do this because the waitFor checks the predicate before waiting.

&quot;this&quot;?

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:198
&gt;&gt; +        });
&gt; 
&gt; Nope! You call this from the destructor, deferring this to the main thread would mean you&apos;re accessing stuff after the object is destroyed. Maybe AndWait can help, but this means r- .

Not only from the destructor. As mentioned in the comment a few lines above, the transcoder uses a dedicated thread :) The pipeline state is changed from that thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842262</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-16 06:16:51 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #7)
&gt; Comment on attachment 451896 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451896&amp;action=review
&gt; 
&gt; Would be interesting to honor what Eric is saying.

https://bugs.webkit.org/show_bug.cgi?id=236652 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842273</commentid>
    <comment_count>10</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2022-02-16 07:12:20 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #8)
&gt; Comment on attachment 451896 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451896&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:110
&gt; &gt;&gt; +        m_eosCondition.waitFor(m_eosLock, 200_ms, [weakThis = WeakPtr { this }]() -&gt; bool {
&gt; &gt; 
&gt; &gt; I don&apos;t think you need to do this because the waitFor checks the predicate before waiting.
&gt; 
&gt; &quot;this&quot;?

You don&apos;t need the first part, you can initialize as false, let the loop begin, then do the waitFor because it will check the predicate before blocking.

&gt; &gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:198
&gt; &gt;&gt; +        });
&gt; &gt; 
&gt; &gt; Nope! You call this from the destructor, deferring this to the main thread would mean you&apos;re accessing stuff after the object is destroyed. Maybe AndWait can help, but this means r- .
&gt; 
&gt; Not only from the destructor. As mentioned in the comment a few lines above,
&gt; the transcoder uses a dedicated thread :) The pipeline state is changed from
&gt; that thread.

Well, the problem here is just the destructor, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842287</commentid>
    <comment_count>11</comment_count>
      <attachid>451896</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-16 07:57:14 -0800</bug_when>
    <thetext>Comment on attachment 451896
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:198
&gt;&gt;&gt;&gt; +        });
&gt;&gt;&gt; 
&gt;&gt;&gt; Nope! You call this from the destructor, deferring this to the main thread would mean you&apos;re accessing stuff after the object is destroyed. Maybe AndWait can help, but this means r- .
&gt;&gt; 
&gt;&gt; Not only from the destructor. As mentioned in the comment a few lines above, the transcoder uses a dedicated thread :) The pipeline state is changed from that thread.
&gt; 
&gt; Well, the problem here is just the destructor, right?

There is no issue with the destructor. The issue is that webkitMediaStreamSrcChangeState() is not always called from the main thread, and it has this:

    if (transition == GST_STATE_CHANGE_PAUSED_TO_READY) {
        GST_OBJECT_LOCK(self);
        for (auto&amp; item : self-&gt;priv-&gt;sources)
            item-&gt;stopObserving();
        GST_OBJECT_UNLOCK(self);
    }

We could do the main thread dispatch there, but I thought it was nicer to do it in stopObserving() because that&apos;s the method that directly calls to RealtimeMediaSource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843463</commentid>
    <comment_count>12</comment_count>
      <attachid>452529</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-18 09:35:57 -0800</bug_when>
    <thetext>Created attachment 452529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843821</commentid>
    <comment_count>13</comment_count>
      <attachid>452633</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-19 02:47:34 -0800</bug_when>
    <thetext>Created attachment 452633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844805</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-22 11:32:42 -0800</bug_when>
    <thetext>Committed r290323 (247645@main): &lt;https://commits.webkit.org/247645@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452633.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844806</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-22 11:33:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89307131&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451815</attachid>
            <date>2022-02-13 06:31:40 -0800</date>
            <delta_ts>2022-02-14 06:03:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236558-20220213063138.patch</filename>
            <type>text/plain</type>
            <size>50475</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjOGFhZWYzNzk5ZjJmYTJmNjY5YzFm
YWZmNTU3YTc4ZmI1YzYyMDEuLjIyY2MyYmMwMGI3NTdkZTUyMTE4N2ZmNGM5Mzg1YTZjZjRmZDdk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEluaXRpYWwgTWVkaWFS
ZWNvcmRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWw6IEVuYWJsZSBNZWRpYVJlY29yZGVyIGlmIGl0IHdhcworICAgICAgICBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUgaW4gR1N0cmVhbWVyIHBvcnRzLgorCiAyMDIyLTAyLTEyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzZXR0aW5ncyB0byBy
ZXN0cmljdCBtZWRpYSBjb250YWluZXJzIGFuZCBjb2RlY3Mgd2hlbiBpbiBDYXB0aXZlIFBvcnRh
bCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTUwOGRlMWU3NGI1NzBiOGI0NWViMWNmNDU4N2JhNzcyNGEw
YmFjMy4uZGY2ZWY0NmZlY2FiYTc5YmE4ZWFhOWVmOTZlZmUzYzc4NDg2YjgzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU2IEBACisyMDIyLTAyLTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBJbml0aWFsIE1lZGlhUmVjb3Jk
ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIE1lZGlhUmVjb3JkZXIgYmFja2VuZCBiYXNlZCBvbiB0aGUgR1N0cmVh
bWVyIFRyYW5zY29kZXIgbGlicmFyeS4gV2UgYW50aWNpcGF0ZSB0aGUKKyAgICAgICAgc2NlbmFy
aW8gd2hlcmUgdGhlIEdzdFdlYlJUQyBiYWNrZW5kIG1pZ2h0IHByb3ZpZGUgZW5jb2RlZCBzdHJl
YW1zIHRvIHRoZSByZWNvcmRlciwgaW4gd2hpY2gKKyAgICAgICAgY2FzZSB0cmFuc2NvZGluZyBp
cyByZXF1aXJlZC4gVGhlIHRyYW5zY29kZXIgbGlicmFyeSBjYW4gb3BlcmF0ZSBpbiBwYXNzLXRo
cm91Z2ggYXMgd2VsbC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXI6OmlzVHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlY29yZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6aXNTdXBwb3J0ZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9H
U3RyZWFtZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dS
ZWZQdHJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV1RGOjphZG9wdEdSZWYpOgorICAgICAgICAo
V1RGOjpyZWZHUHRyPEdzdEVuY29kaW5nUHJvZmlsZT4pOgorICAgICAgICAoV1RGOjpkZXJlZkdQ
dHI8R3N0RW5jb2RpbmdQcm9maWxlPik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZUVuY29kZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1l
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpz
dGFydFJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdT
dHJlYW1lcjo6c3RvcFJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZVJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVzdW1lUmVjb3JkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjptaW1lVHlwZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNU
eXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyOjpjb250YWluZXJQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnNldFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbmZpZ3VyZVZpZGVvRW5jb2Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJlcGFyZVBpcGVs
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpw
cm9jZXNzU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlFT1MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAg
ICAgICAgKHdlYmtpdE1lZGlhU3RyZWFtU3JjRW5zdXJlU3RyZWFtQ29sbGVjdGlvblBvc3RlZCk6
CisgICAgICAgICh3ZWJraXRNZWRpYVN0cmVhbVNyY1BhZFByb2JlQ2IpOgorICAgICAgICAod2Vi
a2l0TWVkaWFTdHJlYW1TcmNTaWduYWxFbmRPZlN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmg6CisKIDIw
MjItMDItMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBVc2Ugc3lzdGVtIHdpbmRvdyBhbmQgc2NyZWVuIHBpY2tlciB3aGVuIGF2YWls
YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCA0Nzc1MGVjZjkwZTg3OTU2MjM4
YWEwZGI3NmJjMDA0NGUzZDM2NzQwLi43NmU1Y2JmYTUyYzg3OThiN2Y0ODZkODk5ODY5ZTkzNGM5
YWM2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtODYyLDYgKzg2Miw3IEBA
IE1lZGlhUmVjb3JkZXJFbmFibGVkOgogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6
CiAgICAgICAiUExBVEZPUk0oQ09DT0EpIjogdHJ1ZQorICAgICAgIlVTRShHU1RSRUFNRVJfVFJB
TlNDT0RFUikiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYkNvcmU6CiAgICAg
ICBkZWZhdWx0OiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0NTdjNGFhOWIxYTE4Y2Nm
YTlhYjI4N2U0ZTBiMzcwZWUzYWQ1MDljLi4xMzU0NGVhNmVjNzg0ZWFjOThkMDgzZDI4YzA5NjEx
N2NhYzVkMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUxLDYgKzE1MSw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2NrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3Jr
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IDQwNmVjOTdmOTFmMDlkZDgzN2UyYWYzNDAzNDk5MTY0ZGJmNTY4
NTAuLjZmOTVmNDUxZjhmYmE0MDRhOTE4NWY3OTMwMWYxYTIyYTc0ZmUwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgTWVkaWFSZWNvcmRlcjo6Q3JlYXRvckZ1bmN0aW9uIE1lZGlh
UmVjb3JkZXI6Om1fY3VzdG9tQ3JlYXRvciA9IG51bGxwdHI7CiAKIGJvb2wgTWVkaWFSZWNvcmRl
cjo6aXNUeXBlU3VwcG9ydGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKEdT
VFJFQU1FUl9UUkFOU0NPREVSKQogICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7CiAg
ICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuaXNTdXBwb3J0
ZWQodmFsdWUpOwogI2Vsc2UKQEAgLTg3LDcgKzg3LDcgQEAgRXhjZXB0aW9uT3I8c3RkOjp1bmlx
dWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4gTWVkaWFSZWNvcmRlcjo6Y3JlYXRlTWVkaWFS
ZWMKICAgICBpZiAobV9jdXN0b21DcmVhdG9yKQogICAgICAgICByZXR1cm4gbV9jdXN0b21DcmVh
dG9yKHN0cmVhbSwgb3B0aW9ucyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQogICAgIGF1dG8gcmVzdWx0ID0g
cGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUo
c3RyZWFtLCBvcHRpb25zKTsKICNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlPiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmluZGV4IDc3NzZh
ZmVjNzY0ZDI1ODYwMjc4NGY4MDYzYjFlY2M4NTQzODE3MTEuLmMzYzBiOTNmNzI4N2ZhOTY3Yzg0
NzdhZjkxMDJkMWIwMTQ0ZTg2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCkBAIC0y
NiwxNyArMjYsMjggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZWRpYVJlY29y
ZGVyUHJvdmlkZXIuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENP
Q09BKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIChQTEFURk9STShDT0NPQSkgfHwgVVNF
KEdTVFJFQU1FUl9UUkFOU0NPREVSKSkKIAogI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVk
ZSAiTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgiCisjZW5kaWYKKworI2lmIFVTRShHU1RS
RUFNRVJfVFJBTlNDT0RFUikKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1l
ci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmNyZWF0ZU1lZGlhUmVj
b3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CisjaWYgVVNFKEdTVFJFQU1FUl9UUkFOU0NP
REVSKQorICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHN0
cmVhbSwgb3B0aW9ucyk7CisjZWxzZQogICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw6OmNyZWF0ZShzdHJlYW0sIG9wdGlvbnMpOworI2VuZGlmCiB9CiAKIGJvb2wgTWVkaWFS
ZWNvcmRlclByb3ZpZGVyOjppc1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNDUs
NyArNTYsNyBAQCBib29sIE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6aXNTdXBwb3J0ZWQoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBDb250ZW50VHlwZSBt
aW1lVHlwZSh2YWx1ZSk7Ci0KKyNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKICAgICBh
dXRvIGNvbnRhaW5lclR5cGUgPSBtaW1lVHlwZS5jb250YWluZXJUeXBlKCk7CiAgICAgaWYgKCFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAiYXVkaW8vbXA0Iikg
JiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUsICJ2aWRlby9t
cDQiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTcsOCArNjgsMTMgQEAgYm9vbCBNZWRp
YVJlY29yZGVyUHJvdmlkZXI6OmlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOworI2VsaWYgVVNF
KEdTVFJFQU1FUl9UUkFOU0NPREVSKQorICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdT
dHJlYW1lcjo6aXNUeXBlU3VwcG9ydGVkKG1pbWVUeXBlKTsKKyNlbHNlCisgICAgVU5VU0VEX1ZB
UklBQkxFKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KLQogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAppbmRleCAwOTI1ZWM5ZjI5MmMxODFmNmZhMzgw
MTZlYzZjNGYyNzljOWM0OWE1Li41ZGFiODVmYjUwNDdjZGU5YmM3NTU4MGNjM2M3YzdhNTlkOGRh
MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgTWVkaWFSZWNvcmRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwg
fk1lZGlhUmVjb3JkZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIChQ
TEFURk9STShDT0NPQSkgfHwgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKSkKICAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gY3JlYXRlTWVkaWFSZWNvcmRl
clByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVP
cHRpb25zJik7CiAgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDM0NTNmZDVh
NjhhYWJiZjYzMWMwZmJhYmViYjlkY2Y0MDdkMTlmYzUuLmY0MjIzYTJmMmE3ZDI3YTExNzNmMDhl
MzMwMTg2YTMyNDNmYTZiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CkBAIC0xMTY4LDcgKzExNjgsNyBAQCBjbGFzcyBFbXB0eU1lZGlhUmVjb3JkZXJQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJvdmlkZXIgewogcHVibGljOgogICAgIEVtcHR5
TWVkaWFSZWNvcmRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogcHJpdmF0ZToKLSNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiAoUExBVEZPUk0oQ09DT0EpIHx8IFVTRShHU1RSRUFNRVJfVFJBTlNDT0RFUikpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnMmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggYWI5YzcwOTJlNjVmNTExNTIwMTNjMTJi
YTQ4MDI3ZmQ3MGI4MjRiNC4uMWVkN2NkMjZjMzU3YjZkMTBiYjRlNWVmY2RhZDgxOTk3MmY0YzE2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtMyw2ICszLDcg
QEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIgogICAgICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZSIKICAgICAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUiCisgICAgICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2dzdHJlYW1lciIKICAgICApCiAKICAgICBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKQEAgLTQ0LDYgKzQ1LDggQEAgaWYgKEVOQUJMRV9W
SURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL1RyYWNrUXVldWUuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCiAKKyAgICAgICAgcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKwogICAg
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUu
Y3BwCiAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9H
U3RyZWFtZXJWaWRlb0NvbW1vbi5jcHAKQEAgLTEwOSw2ICsxMTIsMTUgQEAgaWYgKEVOQUJMRV9W
SURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGll
cyhwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwIFBST1BFUlRJRVMgQ09NUElMRV9ERUZJTklUSU9OUyAiR0xJQl9ESVNBQkxFX0RFUFJFQ0FU
SU9OX1dBUk5JTkdTPTEiKQogZW5kaWYgKCkKIAoraWYgKFVTRV9HU1RSRUFNRVJfVFJBTlNDT0RF
UikKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAgICAke0dTVFJFQU1F
Ul9UUkFOU0NPREVSX0xJQlJBUklFU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
WVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAke0dTVFJFQU1FUl9UUkFOU0NPREVS
X0lOQ0xVREVfRElSU30KKyAgICApCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1ZJREVPKQogICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAgICAg
JHtHU1RSRUFNRVJfVEFHX0lOQ0xVREVfRElSU30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNw
cAppbmRleCAyM2FjMTI1NzY2MjE5N2ZhNGVhYzk3YTk5N2NiNWQwZmVlZTc0MzkwLi4zMTBiZWFk
NzJhNDhjYmRiMzMwYjQ1MzdlZTAxMDYyYWE3YjJkMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3Ry
ZWFtZXIuY3BwCkBAIC01NjksNiArNTY5LDI4IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRy
PEdzdEVHTEltYWdlPihHc3RFR0xJbWFnZSogcHRyKQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1F
Ul9HTCkKIAordGVtcGxhdGUgPD4KK0dSZWZQdHI8R3N0RW5jb2RpbmdQcm9maWxlPiBhZG9wdEdS
ZWYoR3N0RW5jb2RpbmdQcm9maWxlKiBwdHIpCit7CisgICAgcmV0dXJuIEdSZWZQdHI8R3N0RW5j
b2RpbmdQcm9maWxlPihwdHIsIEdSZWZQdHJBZG9wdCk7Cit9CisKK3RlbXBsYXRlIDw+CitHc3RF
bmNvZGluZ1Byb2ZpbGUqIHJlZkdQdHI8R3N0RW5jb2RpbmdQcm9maWxlPihHc3RFbmNvZGluZ1By
b2ZpbGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc3RfZW5jb2RpbmdfcHJvZmls
ZV9yZWYocHRyKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+Cit2b2lkIGRl
cmVmR1B0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+KEdzdEVuY29kaW5nUHJvZmlsZSogcHRyKQorewor
ICAgIGlmIChwdHIpCisgICAgICAgIGdzdF9lbmNvZGluZ19wcm9maWxlX3VucmVmKHB0cik7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRy
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1JlZlB0ckdTdHJlYW1lci5oCmluZGV4IDA3OGQzYzU2Mzk3NGY2YTJiM2FmMWViODM5ODY0OTg3
OTQ1ZmE3ZDguLjdhMGI1YTExZGRmYTgxNjcwOTY4OGU4MTM2NmRiN2I1YjM1ZDNhNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRy
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dSZWZQdHJHU3RyZWFtZXIuaApAQCAtMjIsNiArMjIsNyBAQAogI2lmIFVTRShHU1RSRUFN
RVIpCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvZW5jb2Rp
bmctcHJvZmlsZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFZpZGVvU2luayBXZWJLaXRWaWRlb1Npbms7CkBAIC0xNDYsNiArMTQ3LDEw
IEBAIHRlbXBsYXRlPD4gR3N0RUdMSW1hZ2UqIHJlZkdQdHI8R3N0RUdMSW1hZ2U+KEdzdEVHTElt
YWdlKiBwdHIpOwogdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RFR0xJbWFnZT4oR3N0RUdM
SW1hZ2UqIHB0cik7CiAjZW5kaWYKIAordGVtcGxhdGU8PiBHUmVmUHRyPEdzdEVuY29kaW5nUHJv
ZmlsZT4gYWRvcHRHUmVmKEdzdEVuY29kaW5nUHJvZmlsZSopOwordGVtcGxhdGU8PiBHc3RFbmNv
ZGluZ1Byb2ZpbGUqIHJlZkdQdHI8R3N0RW5jb2RpbmdQcm9maWxlPihHc3RFbmNvZGluZ1Byb2Zp
bGUqKTsKK3RlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0RW5jb2RpbmdQcm9maWxlPihHc3RF
bmNvZGluZ1Byb2ZpbGUqKTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBVU0Uo
R1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCA4MzE3Y2NkMzAxZmM0ODIzNTE2Y2FjNDMyNGE3NmU1YzAyODBjNjljLi42N2Q3YTMwNTY5
MjQyYWI0NmViNDEzNDZjNzlmNWMwYWU5OGVhZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtNDgwLDYgKzQ4MCw3IEBAIHZvaWQgR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRW5jb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyCiAKICAgICBhdXRvIGgyNjRFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVy
LCAidmlkZW8veC1oMjY0LCBwcm9maWxlPShzdHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGluZSwg
YmFzZWxpbmUsIGhpZ2ggfSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyOjpZZXMpOwogICAgIGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkgeworICAgICAgICBtX2Vu
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiaDI2NCIpLCBoMjY0RW5jb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygieC1oMjY0IiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAg
ICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIiksIGgyNjRFbmNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZW5jb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJtcDR2KiIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YjhlNWI5MDdkMzFhMGVkYjQ4ZjhlYTA5YWZkNGRkN2U5NTk4NmM4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEsIDIwMjIgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5oIgorCisjaWYgVVNFKEdTVFJFQU1F
Ul9UUkFOU0NPREVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJHU3Ry
ZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5oIgor
I2luY2x1ZGUgIkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1l
clZpZGVvRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdzdC9hcHAvZ3N0
YXBwc2luay5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfbWVkaWFfcmVjb3JkZXJfZGVidWcpOworI2Rl
ZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3JlY29yZGVyX2RlYnVnCisKK3N0ZDo6
dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcj4gTWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3Qg
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQoreworICAgIGVuc3VyZUdTdHJl
YW1lckluaXRpYWxpemVkKCk7CisgICAgcmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50cygp
OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10geworICAgICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRf
bWVkaWFfcmVjb3JkZXJfZGVidWcsICJ3ZWJraXRtZWRpYXJlY29yZGVyIiwgMCwgIldlYktpdCBN
ZWRpYVN0cmVhbSByZWNvcmRlciIpOworICAgIH0pOworCisgICAgYXV0byByZWNvcmRlciA9IG1h
a2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI+KHN0cmVhbSwgb3B0aW9ucyk7
CisgICAgaWYgKCFyZWNvcmRlci0+cHJlcGFyZVBpcGVsaW5lKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIHJlY29yZGVyOworfQorCitNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcjo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIoTWVkaWFTdHJlYW1Qcml2
YXRlJiBzdHJlYW0sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykK
KyAgICA6IG1fc3RyZWFtKHN0cmVhbSkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQoreworfQor
CitNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyKCkKK3sKKyAgICBpZiAobV9zcmMpCisgICAgICAgIHdlYmtpdE1lZGlhU3RyZWFtU3Jj
U2lnbmFsRW5kT2ZTdHJlYW0oV0VCS0lUX01FRElBX1NUUkVBTV9TUkMobV9zcmMuZ2V0KCkpKTsK
KyAgICBpZiAobV90cmFuc2NvZGVyKSB7CisgICAgICAgIG1fcGlwZWxpbmUuY2xlYXIoKTsKKyAg
ICAgICAgbV90cmFuc2NvZGVyLmNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlR1N0cmVhbWVyOjpzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX3BpcGVsaW5lKQorICAgICAgICBwcmVwYXJlUGlw
ZWxpbmUoKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwgIlN0YXJ0
aW5nIik7CisgICAgY2FsbGJhY2soU3RyaW5nKG1pbWVUeXBlKCkpLCAwLCAwKTsKKyAgICBnc3Rf
dHJhbnNjb2Rlcl9ydW5fYXN5bmMobV90cmFuc2NvZGVyLmdldCgpKTsKK30KKwordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgR1NUX0RFQlVHX09CSkVDVCht
X3RyYW5zY29kZXIuZ2V0KCksICJTdG9wIHJlcXVlc3RlZCwgcHVzaGluZyBFT1MgZXZlbnQiKTsK
KworICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIG1fcGlwZWxpbmUuY2xlYXIoKTsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChtX3Ry
YW5zY29kZXIuZ2V0KCksICJTdG9wcGluZyIpOworICAgICAgICBtX3RyYW5zY29kZXIuY2xlYXIo
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKworICAgIGlmICghbV9w
b3NpdGlvbikgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwg
IlRyYW5zY29kZXIgaGFzIG5vdCBzdGFydGVkIHlldCwgbm8gbmVlZCBmb3IgRU9TIGV2ZW50Iik7
CisgICAgICAgIG1fZW9zID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3ZWJr
aXRNZWRpYVN0cmVhbVNyY1NpZ25hbEVuZE9mU3RyZWFtKFdFQktJVF9NRURJQV9TVFJFQU1fU1JD
KG1fc3JjLmdldCgpKSk7CisKKyAgICBib29sIGlzRU9TID0gZmFsc2U7CisgICAgeworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2sobV9lb3NMb2NrKTsKKyAgICAgICAgaXNFT1MgPSBtX2VvczsKKyAg
ICB9CisgICAgd2hpbGUgKCFpc0VPUykgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9lb3NM
b2NrKTsKKyAgICAgICAgbV9lb3NDb25kaXRpb24ud2FpdEZvcihtX2Vvc0xvY2ssIDIwMF9tcywg
W3dlYWtUaGlzID0gV2Vha1B0ciB7IHRoaXMgfV0oKSAtPiBib29sIHsKKyAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBy
ZXR1cm4gd2Vha1RoaXMtPm1fZW9zOworICAgICAgICB9KTsKKyAgICAgICAgaXNFT1MgPSBtX2Vv
czsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmZldGNo
RGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CisgICAgR1NUX0RFQlVHX09CSkVDVChtX3RyYW5zY29k
ZXIuZ2V0KCksICJUcmFuc2ZlcmluZyAlenUgZW5jb2RlZCBieXRlcyIsIG1fZGF0YS5zaXplKCkp
OworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhLnRha2UoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlKCksIG1fcG9zaXRpb24pOworfQorCit2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZVJlY29yZGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgR1NUX0lORk9fT0JKRUNU
KG1fdHJhbnNjb2Rlci5nZXQoKSwgIlBhdXNpbmciKTsKKyAgICBpZiAobV9waXBlbGluZSkKKyAg
ICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9Q
QVVTRUQpOworCisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRl
OjpzZWxlY3RUcmFja3Moc3RyZWFtKCkpOworICAgIGlmIChzZWxlY3RlZFRyYWNrcy5hdWRpb1Ry
YWNrKQorICAgICAgICBzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zZXRNdXRlZCh0cnVlKTsK
KyAgICBpZiAoc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjaykKKyAgICAgICAgc2VsZWN0ZWRUcmFj
a3MudmlkZW9UcmFjay0+c2V0TXV0ZWQodHJ1ZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
K30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVzdW1lUmVjb3JkaW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBH
U1RfSU5GT19PQkpFQ1QobV90cmFuc2NvZGVyLmdldCgpLCAiUmVzdW1pbmciKTsKKyAgICBhdXRv
IHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyhzdHJl
YW0oKSk7CisgICAgaWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2spCisgICAgICAgIHNlbGVj
dGVkVHJhY2tzLmF1ZGlvVHJhY2stPnNldE11dGVkKGZhbHNlKTsKKyAgICBpZiAoc2VsZWN0ZWRU
cmFja3MudmlkZW9UcmFjaykKKyAgICAgICAgc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjay0+c2V0
TXV0ZWQoZmFsc2UpOworICAgIGlmIChtX3BpcGVsaW5lKQorICAgICAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVH
U3RyZWFtZXI6Om1pbWVUeXBlKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiBNUDRBVURJT01JTUVUWVBFKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJh
dWRpby9tcDQiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gTVA0
VklERU9NSU1FVFlQRShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgidmlkZW8vbXA0IikpOworCisg
ICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFj
a3MobV9zdHJlYW0pOworICAgIHJldHVybiBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gTVA0
VklERU9NSU1FVFlQRSA6IE1QNEFVRElPTUlNRVRZUEU7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXI6OmlzVHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgY29u
dGVudFR5cGUpCit7CisgICAgYXV0byYgc2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6c2luZ2xldG9uKCk7CisgICAgcmV0dXJuIHNjYW5uZXIuaXNDb250ZW50VHlwZVN1cHBvcnRl
ZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkVuY29kaW5nLCBjb250
ZW50VHlwZSwgeyB9KSA+IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBw
b3J0ZWQ7Cit9CisKK0dSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvZmlsZSgpCit7CisgICAgYXV0byBz
ZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3MobV9zdHJl
YW0pOworICAgIGF1dG8gbWltZVR5cGUgPSB0aGlzLT5taW1lVHlwZSgpOworICAgIGlmICghbWlt
ZVR5cGUpCisgICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/ICJ2
aWRlby9tcDQiIDogImF1ZGlvL21wNCI7CisKKyAgICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVv
IHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1pbWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOworICAgIGF1dG8mIHNj
YW5uZXIgPSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpOworICAgIGlmIChz
Y2FubmVyLmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpD
b25maWd1cmF0aW9uOjpFbmNvZGluZywgY29udGVudFR5cGUsIHsgfSkgPT0gTWVkaWFQbGF5ZXJF
bnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBjb25zdCBjaGFyKiBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSAiIjsKKyAg
ICBhdXRvIGNvbnRhaW5lclR5cGUgPSBjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCk7CisgICAg
aWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCJfcykpCisgICAgICAgIGNvbnRhaW5lckNh
cHNEZXNjcmlwdGlvbiA9ICJ2aWRlby9xdWlja3RpbWUsIHZhcmlhbnQ9aXNvIjsKKyAgICBlbHNl
CisgICAgICAgIGNvbnRhaW5lckNhcHNEZXNjcmlwdGlvbiA9IGNvbnRhaW5lclR5cGUudXRmOCgp
LmRhdGEoKTsKKworICAgIGF1dG8gY29udGFpbmVyQ2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19m
cm9tX3N0cmluZyhjb250YWluZXJDYXBzRGVzY3JpcHRpb24pKTsKKyAgICBhdXRvIHByb2ZpbGUg
PSBhZG9wdEdSZWYoZ3N0X2VuY29kaW5nX2NvbnRhaW5lcl9wcm9maWxlX25ldyhudWxscHRyLCBu
dWxscHRyLCBjb250YWluZXJDYXBzLmdldCgpLCBudWxscHRyKSk7CisKKyAgICBpZiAoY29udGFp
bmVyVHlwZS5lbmRzV2l0aCgibXA0Il9zKSkKKyAgICAgICAgZ3N0X2VuY29kaW5nX3Byb2ZpbGVf
c2V0X2VsZW1lbnRfcHJvcGVydGllcyhHU1RfRU5DT0RJTkdfUFJPRklMRShwcm9maWxlLmdldCgp
KSwgZ3N0X3N0cnVjdHVyZV9mcm9tX3N0cmluZygiZWxlbWVudC1wcm9wZXJ0aWVzLW1hcCwgbWFw
PXtbbXA0bXV4LGZyYWdtZW50LWR1cmF0aW9uPTEwMDAsZnJhZ21lbnQtbW9kZT0wLHN0cmVhbWFi
bGU9MCxmb3JjZS1jcmVhdGUtdGltZWNvZGUtdHJhaz0xXX0iLCBudWxscHRyKSk7CisKKyAgICBh
dXRvIGNvZGVjcyA9IGNvbnRlbnRUeXBlLmNvZGVjcygpOworICAgIC8vIFRPRE86IEhhbmRsZSBw
cm9maWxlcy4KKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjaykgeworICAgICAgICBT
dHJpbmcgdmlkZW9DYXBzTmFtZTsKKyAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidnA4Il9z
KSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC12cDgiX3M7CisgICAgICAg
IGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygidnA5Il9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fw
c05hbWUgPSAidmlkZW8veC12cDkiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlu
cygiYXYxIl9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1hdjEiX3M7
CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoImF2YzEiX3MpOyB9KSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAg
IHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1oMjY0Il9zOworICAgICAgICBlbHNlIGlmIChjb250
YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIl9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUg
PSAidmlkZW8veC12cDgiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dp
dGgoIm1wNCJfcykpCisgICAgICAgICAgICB2aWRlb0NhcHNOYW1lID0gInZpZGVvL3gtaDI2NCJf
czsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBHU1RfV0FSTklORygiVmlkZW8gY29kZWMg
Zm9yICVzIG5vdCBzdXBwb3J0ZWQiLCBjb250ZW50VHlwZS5yYXcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXZpZGVvQ2Fwc05hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgYXV0byB2aWRlb0Nh
cHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSh2aWRlb0NhcHNOYW1lLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJDcmVhdGluZyB2aWRlbyBlbmNvZGlu
ZyBwcm9maWxlIGZvciBjYXBzICUiIEdTVF9QVFJfRk9STUFULCB2aWRlb0NhcHMuZ2V0KCkpOwor
ICAgICAgICBtX3ZpZGVvRW5jb2RpbmdQcm9maWxlID0gYWRvcHRHUmVmKEdTVF9FTkNPRElOR19Q
Uk9GSUxFKGdzdF9lbmNvZGluZ192aWRlb19wcm9maWxlX25ldyh2aWRlb0NhcHMuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIsIDEpKSk7CisgICAgICAgIGdzdF9lbmNvZGluZ19jb250YWluZXJfcHJv
ZmlsZV9hZGRfcHJvZmlsZShwcm9maWxlLmdldCgpLCBtX3ZpZGVvRW5jb2RpbmdQcm9maWxlLmdl
dCgpKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaykgeworICAg
ICAgICBTdHJpbmcgYXVkaW9DYXBzTmFtZTsKKyAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygi
dm9yYmlzIl9zKSkKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMi
X3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCisgICAgICAg
ICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgIGVsc2UgaWYgKGNv
ZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoIm1w
NGEiX3MpOyB9KSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVk
aW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKKyAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlw
ZS5lbmRzV2l0aCgid2VibSJfcykpCisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlv
L3gtdm9yYmlzIl9zOworICAgICAgICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJt
cDQiX3MpKQorICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby9tcGVnLCBtcGVndmVy
c2lvbj00Il9zOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJBdWRp
byBjb2RlYyBmb3IgJXMgbm90IHN1cHBvcnRlZCIsIGNvbnRlbnRUeXBlLnJhdygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghYXVkaW9DYXBzTmFtZS5pc0VtcHR5KCkpOworICAgICAgICBhdXRv
IGF1ZGlvQ2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19mcm9tX3N0cmluZyhhdWRpb0NhcHNOYW1l
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJDcmVhdGluZyBhdWRpbyBlbmNv
ZGluZyBwcm9maWxlIGZvciBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBhdWRpb0NhcHMuZ2V0KCkp
OworICAgICAgICBtX2F1ZGlvRW5jb2RpbmdQcm9maWxlID0gYWRvcHRHUmVmKEdTVF9FTkNPRElO
R19QUk9GSUxFKGdzdF9lbmNvZGluZ19hdWRpb19wcm9maWxlX25ldyhhdWRpb0NhcHMuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsIDEpKSk7CisgICAgICAgIGdzdF9lbmNvZGluZ19jb250YWluZXJf
cHJvZmlsZV9hZGRfcHJvZmlsZShwcm9maWxlLmdldCgpLCBtX2F1ZGlvRW5jb2RpbmdQcm9maWxl
LmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvZmlsZTsKK30KKwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U291cmNlKEdzdEVsZW1lbnQqIGVsZW1lbnQpCit7
CisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RU
cmFja3Moc3RyZWFtKCkpOworICAgIGJvb2wgb25seVRyYWNrID0gKHNlbGVjdGVkVHJhY2tzLmF1
ZGlvVHJhY2sgJiYgIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spIHx8IChzZWxlY3RlZFRyYWNr
cy52aWRlb1RyYWNrICYmICFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrKTsKKyAgICBhdXRvKiBz
cmMgPSBXRUJLSVRfTUVESUFfU1RSRUFNX1NSQyhlbGVtZW50KTsKKyAgICBpZiAoc2VsZWN0ZWRU
cmFja3MuYXVkaW9UcmFjaykgeworICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNr
KHNyYywgc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaywgb25seVRyYWNrKTsKKyAgICAgICAgc2V0
QXVkaW9Tb3VyY2UoJnNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2stPnNvdXJjZSgpKTsKKyAgICAg
ICAgY2hlY2tUcmFja1N0YXRlKCpzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrKTsKKyAgICB9Cisg
ICAgaWYgKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spIHsKKyAgICAgICAgd2Via2l0TWVkaWFT
dHJlYW1TcmNBZGRUcmFjayhzcmMsIHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2ssIG9ubHlUcmFj
ayk7CisgICAgICAgIHNldFZpZGVvU291cmNlKCZzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrLT5z
b3VyY2UoKSk7CisgICAgICAgIGNoZWNrVHJhY2tTdGF0ZSgqc2VsZWN0ZWRUcmFja3MudmlkZW9U
cmFjayk7CisgICAgfQorICAgIG1fc3JjID0gZWxlbWVudDsKK30KKwordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U2luayhHc3RFbGVtZW50KiBlbGVtZW50KQoreworICAg
IHN0YXRpYyBHc3RBcHBTaW5rQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKKyAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgW10oR3N0QXBwU2luayogc2luaywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdz
dEZsb3dSZXR1cm4geworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2Fw
cF9zaW5rX3B1bGxfcHJlcm9sbChzaW5rKSk7CisgICAgICAgICAgICBpZiAoc2FtcGxlKQorICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyKj4o
dXNlckRhdGEpLT5wcm9jZXNzU2FtcGxlKFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZ3N0X2FwcF9zaW5rX2lzX2VvcyhzaW5rKSA/IEdTVF9GTE9XX0VPUyA6IEdTVF9GTE9X
X09LOworICAgICAgICB9LAorICAgICAgICBbXShHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1
c2VyRGF0YSkgLT4gR3N0Rmxvd1JldHVybiB7CisgICAgICAgICAgICBhdXRvIHNhbXBsZSA9IGFk
b3B0R1JlZihnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUoc2luaykpOworICAgICAgICAgICAgaWYg
KHNhbXBsZSkKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcio+KHVzZXJEYXRhKS0+cHJvY2Vzc1NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIGdzdF9hcHBfc2lua19pc19lb3Moc2luaykgPyBHU1RfRkxPV19F
T1MgOiBHU1RfRkxPV19PSzsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gbmV3X2V2ZW50CisgICAg
ICAgIG51bGxwdHIsCisgICAgICAgIHsgbnVsbHB0ciB9CisgICAgfTsKKyAgICBnc3RfYXBwX3Np
bmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJTksoZWxlbWVudCksICZjYWxsYmFja3MsIHRoaXMs
IG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAiZW5hYmxlLWxhc3Qtc2FtcGxl
IiwgRkFMU0UsICJtYXgtYnVmZmVycyIsIDEsICJhc3luYyIsIEZBTFNFLCBudWxscHRyKTsKKyAg
ICBtX3NpbmsgPSBlbGVtZW50OworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpjb25maWd1cmVWaWRlb0VuY29kZXIoR3N0RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBh
dXRvIGZvcm1hdCA9IGFkb3B0R1JlZihnc3RfZW5jb2RpbmdfcHJvZmlsZV9nZXRfZm9ybWF0KEdT
VF9FTkNPRElOR19QUk9GSUxFKG1fdmlkZW9FbmNvZGluZ1Byb2ZpbGUuZ2V0KCkpKSk7CisgICAg
Z19vYmplY3Rfc2V0KGVsZW1lbnQsICJmb3JtYXQiLCBmb3JtYXQuZ2V0KCksIG51bGxwdHIpOwor
CisgICAgYXV0byBiaXRyYXRlID0gW29wdGlvbnMgPSBtX29wdGlvbnNdKCkgLT4gdW5zaWduZWQg
eworICAgICAgICBpZiAob3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQpCisgICAgICAgICAgICBy
ZXR1cm4gKm9wdGlvbnMudmlkZW9CaXRzUGVyU2Vjb25kOworICAgICAgICBpZiAob3B0aW9ucy5i
aXRzUGVyU2Vjb25kKQorICAgICAgICAgICAgcmV0dXJuICpvcHRpb25zLmJpdHNQZXJTZWNvbmQ7
CisgICAgICAgIHJldHVybiAwOworICAgIH0oKTsKKworICAgIGlmIChiaXRyYXRlKQorICAgICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgImJpdHJhdGUiLCBiaXRyYXRlIC8gMTAyNCwgbnVsbHB0
cik7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVQaXBl
bGluZSgpCit7CisgICAgYXV0byBwcm9maWxlID0gY29udGFpbmVyUHJvZmlsZSgpOworICAgIGlm
ICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV90cmFuc2NvZGVyID0g
YWRvcHRHUmVmKGdzdF90cmFuc2NvZGVyX25ld19mdWxsKCJtZWRpYXN0cmVhbTovLyIsICJhcHBz
aW5rOi8vIiwgR1NUX0VOQ09ESU5HX1BST0ZJTEUocHJvZmlsZS5nZXQoKSkpKTsKKyAgICBnc3Rf
dHJhbnNjb2Rlcl9zZXRfYXZvaWRfcmVlbmNvZGluZyhtX3RyYW5zY29kZXIuZ2V0KCksIHRydWUp
OworICAgIG1fcGlwZWxpbmUgPSBnc3RfdHJhbnNjb2Rlcl9nZXRfcGlwZWxpbmUobV90cmFuc2Nv
ZGVyLmdldCgpKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3BpcGVsaW5lLmdl
dCgpLCAic291cmNlLXNldHVwIiwgR19DQUxMQkFDSygrW10oTWVkaWFSZWNvcmRlclByaXZhdGVH
U3RyZWFtZXIqIHdyaXRlciwgR3N0RWxlbWVudCogc291cmNlRWxlbWVudCkgeworICAgICAgICB3
cml0ZXItPnNldFNvdXJjZShzb3VyY2VFbGVtZW50KTsKKyAgICB9KSwgdGhpcyk7CisKKyAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9waXBlbGluZS5nZXQoKSwgImVsZW1lbnQtc2V0dXAi
LCBHX0NBTExCQUNLKCtbXShNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lciogd3JpdGVyLCBH
c3RFbGVtZW50KiBlbGVtZW50KSB7CisgICAgICAgIGlmIChXRUJLSVRfSVNfV0VCUlRDX1ZJREVP
X0VOQ09ERVIoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIHdyaXRlci0+Y29uZmlndXJlVmlkZW9F
bmNvZGVyKGVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFHU1RfSVNfQVBQX1NJTksoZWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgd3JpdGVyLT5zZXRTaW5rKGVsZW1lbnQpOworICAgIH0pLCB0aGlzKTsKKworICAg
IG1fc2lnbmFsQWRhcHRlciA9IGFkb3B0R1JlZihnc3RfdHJhbnNjb2Rlcl9nZXRfc3luY19zaWdu
YWxfYWRhcHRlcihtX3RyYW5zY29kZXIuZ2V0KCkpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
c2lnbmFsQWRhcHRlci5nZXQoKSwgIndhcm5pbmciLCBHX0NBTExCQUNLKCtbXShHc3RUcmFuc2Nv
ZGVyKiwgR0Vycm9yKiBlcnJvciwgR3N0U3RydWN0dXJlKiBkZXRhaWxzKSB7CisgICAgICAgIEdT
VF9XQVJOSU5HKCIlcyBkZXRhaWxzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgZXJyb3ItPm1lc3NhZ2Us
IGRldGFpbHMpOworICAgIH0pLCBudWxscHRyKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChtX3NpZ25hbEFkYXB0ZXIuZ2V0KCksICJkb25lIiwgR19DQUxMQkFDSygrW10oTWVkaWFS
ZWNvcmRlclByaXZhdGVHU3RyZWFtZXIqIHdyaXRlcikgeworICAgICAgICB3cml0ZXItPm5vdGlm
eUVPUygpOworICAgIH0pLCB0aGlzKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCht
X3NpZ25hbEFkYXB0ZXIuZ2V0KCksICJwb3NpdGlvbi11cGRhdGVkIiwgR19DQUxMQkFDSygrW10o
TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIqIHdyaXRlciwgR3N0Q2xvY2tUaW1lIHBvc2l0
aW9uKSB7CisgICAgICAgIHdyaXRlci0+bm90aWZ5UG9zaXRpb24ocG9zaXRpb24pOworICAgIH0p
LCB0aGlzKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyOjpwcm9jZXNzU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkK
K3sKKyAgICBhdXRvKiBzYW1wbGVCdWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxl
LmdldCgpKTsKKyAgICBHc3RNYXBwZWRCdWZmZXIgYnVmZmVyKHNhbXBsZUJ1ZmZlciwgR1NUX01B
UF9SRUFEKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OworCisgICAgR1NUX0xP
R19PQkpFQ1QobV90cmFuc2NvZGVyLmdldCgpLCAiUXVldWVpbmcgJXp1IGJ5dGVzIG9mIGVuY29k
ZWQgZGF0YSwgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIGJ1ZmZlci5zaXplKCksIGdzdF9zYW1w
bGVfZ2V0X2NhcHMoc2FtcGxlLmdldCgpKSk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5RU9TKCkKK3sKKyAgICBHU1RfREVCVUcoIkVPUyByZWNlaXZlZCIpOworICAg
IExvY2tIb2xkZXIgbG9jayhtX2Vvc0xvY2spOworICAgIG1fZW9zID0gdHJ1ZTsKKyAgICBtX2Vv
c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljOTUzNjc3NmI0MzEzY2QxOGE1MjgxMGNl
MWYzNTUzNDdjOTgxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSwgMjAyMiBJZ2FsaWEgUy5MCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIpCisKKyNpbmNsdWRlICJHUmVm
UHRyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDxnc3QvdHJhbnNjb2Rlci9nc3R0cmFuc2Nv
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3Rm
L0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENvbnRlbnRUeXBlOworY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CitzdHJ1
Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOworCitjbGFzcyBNZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0ZSwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoTWVkaWFTdHJlYW1Qcml2
YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CisgICAgZXhwbGljaXQg
TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3Qg
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CisgICAgfk1lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3QgQ29u
dGVudFR5cGUmKTsKKworcHJvdGVjdGVkOgorICAgIGJvb2wgcHJlcGFyZVBpcGVsaW5lKCk7CisK
K3ByaXZhdGU6CisgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZp
ZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsIHsgfTsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWwgeyB9OworCisgICAgdm9p
ZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzdGFydFJl
Y29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJl
Y29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcGF1
c2VSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZVJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAg
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0U291
cmNlKEdzdEVsZW1lbnQqKTsKKyAgICB2b2lkIHNldFNpbmsoR3N0RWxlbWVudCopOworICAgIHZv
aWQgY29uZmlndXJlVmlkZW9FbmNvZGVyKEdzdEVsZW1lbnQqKTsKKworICAgIEdSZWZQdHI8R3N0
RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBjb250YWluZXJQcm9maWxlKCk7CisgICAgTWVkaWFT
dHJlYW1Qcml2YXRlJiBzdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbTsgfQorICAgIHZv
aWQgcHJvY2Vzc1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7CisgICAgdm9pZCBub3RpZnlQ
b3NpdGlvbihHc3RDbG9ja1RpbWUgcG9zaXRpb24pIHsgbV9wb3NpdGlvbiA9IEdTVF9USU1FX0FT
X1NFQ09ORFMocG9zaXRpb24pOyB9CisgICAgdm9pZCBub3RpZnlFT1MoKTsKKworICAgIEdSZWZQ
dHI8R3N0RW5jb2RpbmdQcm9maWxlPiBtX2F1ZGlvRW5jb2RpbmdQcm9maWxlOworICAgIEdSZWZQ
dHI8R3N0RW5jb2RpbmdQcm9maWxlPiBtX3ZpZGVvRW5jb2RpbmdQcm9maWxlOworICAgIEdSZWZQ
dHI8R3N0VHJhbnNjb2Rlcj4gbV90cmFuc2NvZGVyOworICAgIEdSZWZQdHI8R3N0VHJhbnNjb2Rl
clNpZ25hbEFkYXB0ZXI+IG1fc2lnbmFsQWRhcHRlcjsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+
IG1fcGlwZWxpbmU7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3NyYzsKKyAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IG1fc2luazsKKyAgICBDb25kaXRpb24gbV9lb3NDb25kaXRpb247CisgICAg
TG9jayBtX2Vvc0xvY2s7CisgICAgYm9vbCBtX2VvcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZW9z
TG9jayk7CisgICAgZG91YmxlIG1fcG9zaXRpb24geyAwIH07CisKKyAgICBMb2NrIG1fZGF0YUxv
Y2s7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyht
X2RhdGFMb2NrKTsKKworICAgIE1lZGlhU3RyZWFtUHJpdmF0ZSYgbV9zdHJlYW07CisgICAgY29u
c3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBtX29wdGlvbnM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAppbmRl
eCA5OTU0ZmE2NTgzMTNhOWE0NWE1MmUzY2Y3NjFmMTAxZjM0ZDlhYWQ1Li44YWNkZGUxOTZkOGE3
Y2Y0NmU0OGIxM2VlZWNlZDA1NWM0MmEyNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQCBwcml2YXRl
OgogICAgIEdzdEVsZW1lbnQqIG1fc3JjOwogfTsKIAorc3RhdGljIHZvaWQgd2Via2l0TWVkaWFT
dHJlYW1TcmNFbnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKFdlYktpdE1lZGlhU3RyZWFtU3Jj
Kik7CisKIGNsYXNzIEludGVybmFsU291cmNlIGZpbmFsIDogcHVibGljIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjpPYnNlcnZlciwKICAgICBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVk
aW9TYW1wbGVPYnNlcnZlciwKICAgICBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9T
YW1wbGVPYnNlcnZlciB7CkBAIC0xMzIsMTEgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGlm
ICh0cmFjay5oYXNBdWRpbygpKSB7CiAgICAgICAgICAgICBtX2F1ZGlvVHJhY2sgPSBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUodHJhY2spOwogICAgICAgICAgICAgZWxlbWVu
dE5hbWUgPSAiYXVkaW9zcmMiOwotICAgICAgICB9IGVsc2UgaWYgKHRyYWNrLmhhc1ZpZGVvKCkp
IHsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRyYWNrLmhh
c1ZpZGVvKCkpOwogICAgICAgICAgICAgbV92aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIGVsZW1lbnROYW1lID0gInZp
ZGVvc3JjIjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNDYXB0dXJlVHJhY2sgPSB0cmFjay5pc0Nh
cHR1cmVUcmFjaygpOwogICAgICAgICBtX3NyYyA9IG1ha2VHU3RyZWFtZXJFbGVtZW50KCJhcHBz
cmMiLCBlbGVtZW50TmFtZSk7CkBAIC0xODQsMTEgKzE4NiwxMyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgR1NUX0RFQlVHX09CSkVDVChtX3NyYy5nZXQoKSwgIlN0b3BwaW5nIHRyYWNrL3NvdXJjZSBv
YnNlcnZhdGlvbiIpOwogICAgICAgICBtX2lzT2JzZXJ2aW5nID0gZmFsc2U7Ci0gICAgICAgIGlm
IChtX3RyYWNrLmhhc0F1ZGlvKCkpCi0gICAgICAgICAgICBtX3RyYWNrLnNvdXJjZSgpLnJlbW92
ZUF1ZGlvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAgICBlbHNlIGlmIChtX3RyYWNrLmhh
c1ZpZGVvKCkpCi0gICAgICAgICAgICBtX3RyYWNrLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOwotICAgICAgICBtX3RyYWNrLnJlbW92ZU9ic2VydmVyKCp0aGlzKTsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKKyAgICAgICAgICAgIGlmICht
X3RyYWNrLmhhc0F1ZGlvKCkpCisgICAgICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5yZW1v
dmVBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fdHJh
Y2suaGFzVmlkZW8oKSkKKyAgICAgICAgICAgICAgICBtX3RyYWNrLnNvdXJjZSgpLnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgbV90cmFjay5yZW1vdmVPYnNl
cnZlcigqdGhpcyk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIHZvaWQgY29uZmlndXJlQXVk
aW9UcmFjayhmbG9hdCB2b2x1bWUsIGJvb2wgaXNNdXRlZCwgYm9vbCBpc1BsYXlpbmcpCkBAIC0x
OTYsMTcgKzIwMCwyNiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3RyYWNrLmhhc0F1ZGlv
KCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2stPnNldFZvbHVtZSh2b2x1bWUpOwogICAgICAgICBt
X2F1ZGlvVHJhY2stPnNldE11dGVkKGlzTXV0ZWQpOwotICAgICAgICBtX2F1ZGlvVHJhY2stPnNl
dEVuYWJsZWQobV9hdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSAmJiAhbV9hdWRp
b1RyYWNrLT5zdHJlYW1UcmFjaygpLm11dGVkKCkpOworICAgICAgICBtX2F1ZGlvVHJhY2stPnNl
dEVuYWJsZWQobV9hdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSk7CiAgICAgICAg
IGlmIChpc1BsYXlpbmcpCiAgICAgICAgICAgICBtX2F1ZGlvVHJhY2stPnBsYXkoKTsKICAgICB9
CiAKKyAgICB2b2lkIHNpZ25hbEVuZE9mU3RyZWFtKCkKKyAgICB7CisgICAgICAgIGlmIChtX3Ny
YykKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0oR1NUX0FQUF9TUkMobV9z
cmMuZ2V0KCkpKTsKKyAgICB9CisKICAgICB2b2lkIHB1c2hTYW1wbGUoR3N0U2FtcGxlKiBzYW1w
bGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9zcmMpOwogICAgICAgICBpZiAoIW1fc3JjKQog
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGF1dG8qIHBhcmVudCA9IFdFQktJVF9NRURJ
QV9TVFJFQU1fU1JDKG1fcGFyZW50KTsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNFbnN1
cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKHBhcmVudCk7CisKICAgICAgICAgYm9vbCBkcm9wID0g
bV9lbm91Z2hEYXRhOwogICAgICAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZm
ZXIoc2FtcGxlKTsKICAgICAgICAgYXV0byogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2Ft
cGxlKTsKQEAgLTI5OCwxMiArMzExLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXVkaW9TYW1w
bGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBh
dWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsCiAg
ICAgewotICAgICAgICAvLyBUT0RPOiBXZSBsaWtlbHkgbmVlZCB0byBlbWl0IHNpbGVudCBhdWRp
byBmcmFtZXMgaW4gY2FzZSB0aGUgdHJhY2sgaXMgZGlzYWJsZWQuCi0gICAgICAgIGlmICghbV90
cmFjay5lbmFibGVkKCkgfHwgIW1fcGFyZW50KQorICAgICAgICBpZiAoIW1fcGFyZW50KQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbnN0IGF1dG8mIGRhdGEgPSBzdGF0aWNfY2Fz
dDxjb25zdCBHU3RyZWFtZXJBdWRpb0RhdGEmPihhdWRpb0RhdGEpOwogICAgICAgICBhdXRvIHNh
bXBsZSA9IGRhdGEuZ2V0U2FtcGxlKCk7CisgICAgICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlv
bnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKICAgICAg
ICAgcHVzaFNhbXBsZShzYW1wbGUuZ2V0KCkpOwogICAgIH0KIApAQCAtMzY1LDYgKzM3OCw3IEBA
IHN0cnVjdCBfV2ViS2l0TWVkaWFTdHJlYW1TcmNQcml2YXRlIHsKICAgICBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gdHJhY2tzOwogICAgIEdVbmlxdWVQdHI8R3N0Rmxv
d0NvbWJpbmVyPiBmbG93Q29tYmluZXI7CiAgICAgR1JlZlB0cjxHc3RTdHJlYW1Db2xsZWN0aW9u
PiBzdHJlYW1Db2xsZWN0aW9uOworICAgIEF0b21pYzxib29sPiBzdHJlYW1Db2xsZWN0aW9uUG9z
dGVkOwogICAgIEF0b21pYzx1bnNpZ25lZD4gYXVkaW9QYWRDb3VudGVyOwogICAgIEF0b21pYzx1
bnNpZ25lZD4gdmlkZW9QYWRDb3VudGVyOwogfTsKQEAgLTU3Nyw2ICs1OTEsMTkgQEAgc3RhdGlj
IHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNQb3N0U3RyZWFtQ29sbGVjdGlvbihXZWJLaXRNZWRp
YVN0cmVhbVNyYyogc2VsZikKICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1F
TlRfQ0FTVChzZWxmKSwgZ3N0X21lc3NhZ2VfbmV3X3N0cmVhbV9jb2xsZWN0aW9uKEdTVF9PQkpF
Q1RfQ0FTVChzZWxmKSwgcHJpdi0+c3RyZWFtQ29sbGVjdGlvbi5nZXQoKSkpOwogfQogCitzdGF0
aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY0Vuc3VyZVN0cmVhbUNvbGxlY3Rpb25Qb3N0ZWQo
V2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYpCit7CisgICAgaWYgKHNlbGYtPnByaXYtPnN0cmVh
bUNvbGxlY3Rpb25Qb3N0ZWQubG9hZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZWxmLT5w
cml2LT5zdHJlYW1Db2xsZWN0aW9uUG9zdGVkLnN0b3JlKHRydWUpOworICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc2VsZiwgIlBvc3Rpbmcgc3RyZWFtIGNvbGxlY3Rpb24iKTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkQW5kV2FpdChbZWxlbWVudCA9IEdSZWZQdHI8R3N0RWxlbWVudD4oR1NUX0VMRU1FTlRf
Q0FTVChzZWxmKSldIHsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNQb3N0U3RyZWFtQ29s
bGVjdGlvbihXRUJLSVRfTUVESUFfU1RSRUFNX1NSQ19DQVNUKGVsZW1lbnQuZ2V0KCkpKTsKKyAg
ICB9KTsKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJTdHJlYW0gY29sbGVjdGlvbiBwb3N0
ZWQiKTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRQYWQoV2ViS2l0
TWVkaWFTdHJlYW1TcmMqIHNlbGYsIEdzdFBhZCogdGFyZ2V0LCBHc3RTdGF0aWNQYWRUZW1wbGF0
ZSogcGFkVGVtcGxhdGUsIEdSZWZQdHI8R3N0VGFnTGlzdD4mJiB0YWdzLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlIHNvdXJjZVR5cGUsIGNvbnN0IFN0cmluZyYgcGFkTmFtZSkKIHsKICAgICBB
U1NFUlQoc291cmNlVHlwZSAhPSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lKTsKQEAg
LTYzNSw5ICs2NjIsNiBAQCBzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gd2Via2l0TWVkaWFTdHJl
YW1TcmNQYWRQcm9iZUNiKEdzdFBhZCogcGFkLCBHc3RQYWRQcm9iZQogICAgICAgICBnc3RfcGFk
X3B1c2hfZXZlbnQocGFkLCBzdHJlYW1TdGFydCk7CiAKICAgICAgICAgd2Via2l0TWVkaWFTdHJl
YW1TcmNBZGRQYWQoc2VsZiwgcGFkLCBkYXRhLT5wYWRUZW1wbGF0ZSwgV1RGTW92ZShkYXRhLT50
YWdzKSwgZGF0YS0+c291cmNlVHlwZSwgZGF0YS0+cGFkTmFtZSk7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0KFtlbGVtZW50ID0gZGF0YS0+ZWxlbWVudF0gewotICAgICAgICAgICAg
d2Via2l0TWVkaWFTdHJlYW1TcmNQb3N0U3RyZWFtQ29sbGVjdGlvbihXRUJLSVRfTUVESUFfU1RS
RUFNX1NSQ19DQVNUKGVsZW1lbnQuZ2V0KCkpKTsKLSAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
biBHU1RfUEFEX1BST0JFX1JFTU9WRTsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTY4OCw2ICs3
MTIsMTMgQEAgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNrKFdlYktpdE1lZGlhU3Ry
ZWFtU3JjKiBzZWxmLCBNZWRpYVN0cmVhbVRyYWNrUHIKICAgICBzZWxmLT5wcml2LT50cmFja3Mu
YXBwZW5kKHRyYWNrKTsKIH0KIAordm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1NpZ25hbEVuZE9m
U3RyZWFtKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmKQoreworICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc2VsZiwgIlNpZ25hbGluZyBFT1MiKTsKKyAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IHNlbGYt
PnByaXYtPnNvdXJjZXMpCisgICAgICAgIHNvdXJjZS0+c2lnbmFsRW5kT2ZTdHJlYW0oKTsKK30K
Kwogdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVhbShXZWJLaXRNZWRpYVN0cmVhbVNy
Yyogc2VsZiwgTWVkaWFTdHJlYW1Qcml2YXRlKiBzdHJlYW0sIGJvb2wgaXNWaWRlb1BsYXllcikK
IHsKICAgICBBU1NFUlQoV0VCS0lUX0lTX01FRElBX1NUUkVBTV9TUkMoc2VsZikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lck1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaAppbmRleCA2MmFhZmY3
OGI5YmExNjI4OGM5OTY3NzZiNTVjODRmYmI2ZWFiMTVmLi4yMWI1NDAzNzI5ZTk2MjMzN2ZkOGQ5
ZDgyODNkYTljOTE4YmYyY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVk
aWFTdHJlYW1Tb3VyY2UuaApAQCAtNTgsNSArNTgsNiBAQCBHc3RFbGVtZW50KiB3ZWJraXRNZWRp
YVN0cmVhbVNyY05ldygpOwogdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVhbShXZWJL
aXRNZWRpYVN0cmVhbVNyYyosIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZSosIGJvb2wgaXNW
aWRlb1BsYXllcik7CiB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2soV2ViS2l0TWVk
aWFTdHJlYW1TcmMqLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSosIGJvb2wgb25s
eVRyYWNrKTsKIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNDb25maWd1cmVBdWRpb1RyYWNrcyhX
ZWJLaXRNZWRpYVN0cmVhbVNyYyosIGZsb2F0IHZvbHVtZSwgYm9vbCBpc011dGVkLCBib29sIGlz
UGxheWluZyk7Cit2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2lnbmFsRW5kT2ZTdHJlYW0oV2Vi
S2l0TWVkaWFTdHJlYW1TcmMqKTsKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9GaW5kR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UK
aW5kZXggOWQ5N2E0YjUwY2IwZjk4MGY1Yjg0MDU3YzJiYWVlODk5Nzk5ZGY2Ni4uZDU0ZDNiMDFl
NWM4NTUxMjhhM2Y1Y2FjYzRhNzhmM2JhM2M3NjIyMCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L0ZpbmRHU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21h
a2UKQEAgLTI2LDYgKzI2LDcgQEAKICMgIGdzdHJlYW1lci12aWRlbzogICAgICBHU1RSRUFNRVJf
VklERU9fSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfVklERU9fTElCUkFSSUVTCiAjICBnc3Ry
ZWFtZXItY29kZWNwYXJzZXI6R1NUUkVBTUVSX0NPREVDUEFSU0VSU19JTkNMVURFX0RJUlMgYW5k
IEdTVFJFQU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItZnVsbDogICAg
ICAgR1NUUkVBTUVSX0ZVTExfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfRlVMTF9MSUJSQVJJ
RVMKKyMgIGdzdHJlYW1lci10cmFuc2NvZGVyOiBHU1RSRUFNRVJfVFJBTlNDT0RFUl9JTkNMVURF
X0RJUlMgYW5kIEdTVFJFQU1FUl9UUkFOU0NPREVSX0xJQlJBUklFUwogIwogIyBDb3B5cmlnaHQg
KEMpIDIwMTIgUmFwaGFlbCBLdWJvIGRhIENvc3RhIDxyYWt1Y29Ad2Via2l0Lm9yZz4KICMKQEAg
LTEwNiw2ICsxMDcsNyBAQCBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX1BCVVRJ
TFMgZ3N0cmVhbWVyLXBidXRpbHMtMS4wIGdzdHBidXRpbHMtMS4wKQogRklORF9HU1RSRUFNRVJf
Q09NUE9ORU5UKEdTVFJFQU1FUl9UQUcgZ3N0cmVhbWVyLXRhZy0xLjAgZ3N0dGFnLTEuMCkKIEZJ
TkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfVklERU8gZ3N0cmVhbWVyLXZpZGVvLTEu
MCBnc3R2aWRlby0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0NPREVD
UEFSU0VSUyBnc3RyZWFtZXItY29kZWNwYXJzZXJzLTEuMCBnc3Rjb2RlY3BhcnNlcnMtMS4wKQor
RklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9UUkFOU0NPREVSIGdzdHJlYW1lci10
cmFuc2NvZGVyLTEuMCBnc3R0cmFuc2NvZGVyLTEuMCkKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgMy4gUHJvY2VzcyB0aGUgQ09NUE9ORU5U
UyBwYXNzZWQgdG8gRklORF9QQUNLQUdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0cmVh
bWVyQ2hlY2tzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQppbmRl
eCA3N2U5NTg0NWU5OTEzYTU5NzhkYWQxMGNmYzQzMDA5M2I0M2M3YWEzLi45NmZmMWRjMzQ2YmM4
M2VlN2FmYjUxNTNhZTQyNDUwMjBiYzFlNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0
cmVhbWVyQ2hlY2tzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21h
a2UKQEAgLTQ5LDYgKzQ5LDExIEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJ
TykKICAgICAgICAgICBpZiAoVVNFX0dTVFJFQU1FUl9HTCBBTkQgTk9UIFBDX0dTVFJFQU1FUl9H
TF9GT1VORCkKICAgICAgICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiR1N0cmVhbWVyR0wg
aXMgbmVlZGVkIGZvciBVU0VfR1NUUkVBTUVSX0dMLiIpCiAgICAgICAgICAgZW5kaWYgKCkKKwor
ICAgICAgICAgIGlmIChVU0VfR1NUUkVBTUVSX1RSQU5TQ09ERVIgQU5EIChOT1QgUENfR1NUUkVB
TUVSX1RSQU5TQ09ERVJfRk9VTkQgT1IgUENfR1NUUkVBTUVSX1RSQU5TQ09ERVJfVkVSU0lPTiBW
RVJTSU9OX0xFU1MgIjEuMjAiKSkKKyAgICAgICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAi
R1N0cmVhbWVyVHJhbnNjb2RlciA+PSAxLjIwIGlzIG5lZWRlZCBmb3IgVVNFX0dTVFJFQU1FUl9U
UkFOU0NPREVSLiIpCisgICAgICAgICAgZW5kaWYgKCkKKwogICAgICAgZW5kaWYgKCkKIGVuZGlm
ICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0aW9ucy5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0aW9ucy5jbWFrZQppbmRleCAxZjFhMjEz
YzIxMDEwZDMyYWNjMTdmYjkxY2I1MjBjMWJkMjM4ZWFiLi4zOTRmODBjYTI0N2U1OWNhMzg5OTVl
MDkxNmExMDA4NDhmM2I2NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVm
aW5pdGlvbnMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckRlZmluaXRpb25zLmNt
YWtlCkBAIC0xMCwzICsxMCw0IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJf
RlVMTCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3Igc3RhdGljIEdTCiBXRUJLSVRfT1BU
SU9OX0RFRklORShVU0VfR1NUUkVBTUVSX05BVElWRV9WSURFTyAiVG9nZ2xlIG5hdGl2ZSB2aWRl
byBzdXBwb3J0IGluIEdTdHJlYW1lciBtZWRpYSBwbGF5ZXIiIFBSSVZBVEUgT0ZGKQogV0VCS0lU
X09QVElPTl9ERUZJTkUoVVNFX0dTVFJFQU1FUl9OQVRJVkVfQVVESU8gIlRvZ2dsZSBuYXRpdmUg
YXVkaW8gc3VwcG9ydCBpbiBHU3RyZWFtZXIgbWVkaWEgcGxheWVyIiBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJfVEVYVF9TSU5LICJUb2dnbGUgdGV4dCBz
aW5rIHN1cHBvcnQgaW4gR1N0cmVhbWVyIG1lZGlhIHBsYXllciIgUFJJVkFURSBPTikKK1dFQktJ
VF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJfVFJBTlNDT0RFUiAiV2hldGhlciB0byBlbmFi
bGUgc3VwcG9ydCBmb3IgR1N0cmVhbWVyIE1lZGlhUmVjb3JkZXIgYmFja2VuZCIgUFJJVkFURSBP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZXBlbmRlbmNpZXMuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVwZW5kZW5jaWVzLmNtYWtlCmluZGV4IGY0MmM3ZTcw
Njk3N2JmMTZjOWYyOWJmM2RlMzA4YzVlOTY4MDI5OTYuLjkyZTYwMTRhN2E5NjYyNDcwZDA2NWU2
MjY0ODA2NDUxNDNiMjljYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZXBl
bmRlbmNpZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckRlcGVuZGVuY2llcy5j
bWFrZQpAQCAtMSwzICsxLDQgQEAKIFdFQktJVF9PUFRJT05fREVQRU5EKFVTRV9HU1RSRUFNRVJf
R0wgRU5BQkxFX1ZJREVPKQogV0VCS0lUX09QVElPTl9ERVBFTkQoVVNFX0dTVFJFQU1FUl9NUEVH
VFMgRU5BQkxFX1ZJREVPKQogV0VCS0lUX09QVElPTl9ERVBFTkQoVVNFX1dQRV9WSURFT19QTEFO
RV9ESVNQTEFZX0RNQUJVRiBVU0VfR1NUUkVBTUVSX0dMKQorV0VCS0lUX09QVElPTl9ERVBFTkQo
VVNFX0dTVFJFQU1FUl9UUkFOU0NPREVSIEVOQUJMRV9NRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Jl
MDcyNDVkMWVmZWZhMDRjZDFjZGU0OTk4YzA2NGViY2Q1YWMwOC4uZTk4YmMxOTRkNGY5NTg2NGY5
NjI0MGJhZjI5NWM4Y2Y5MGJlZGU3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTEz
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0
cmVhbWVyXSBJbml0aWFsIE1lZGlhUmVjb3JkZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU1OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZsYWcgdGhlIHJlbWFpbmluZyBN
ZWRpYVJlY29yZGVyIHRlc3QgZmFpbHVyZXMuIFRob3NlIHdpbGwgYmUgYWRyZXNzZWQgaW4gZm9s
bG93LXVwIHBhdGNoZXMuCisKKyAgICAgICAgKiBodHRwL3dwdC9tZWRpYXJlY29yZGVyL3BhdXNl
LXJlY29yZGluZy5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMi0wMi0xMiAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFNraXAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvdG9hc2NpaS53aW5kb3cu
aHRtbCBvbiBDYXRhbGluYS9CaWcgU3VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC9tZWRpYXJlY29yZGVyL3BhdXNlLXJlY29yZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvbWVkaWFyZWNvcmRlci9wYXVzZS1yZWNvcmRpbmcuaHRtbAppbmRleCA1NjkzMDdkMWViMjA1
OWE0OGE0MGNhMDlhZTczZTFjMGQ1NzIxY2Q0Li42YzExMGJjY2I4NmRiOGI3YmUwOGIzZjJmMDAw
MTdlYTk5YjMzZmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29y
ZGVyL3BhdXNlLXJlY29yZGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlh
cmVjb3JkZXIvcGF1c2UtcmVjb3JkaW5nLmh0bWwKQEAgLTUxLDExICs1MSwxNSBAQCBwcm9taXNl
X3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBhd2FpdCBzdGFydFByb21pc2U7CiAKICAgICBh
d2FpdCB3YWl0Rm9yKDEwMDApOworCisgICAgY29uc3QgcGF1c2VQcm9taXNlID0gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiByZWNvcmRlci5vbnBhdXNlID0gcmVzb2x2ZSk7CiAgICAgcmVjb3JkZXIu
cGF1c2UoKTsKKyAgICBhd2FpdCBwYXVzZVByb21pc2U7CisKICAgICByZWNvcmRlci5yZXF1ZXN0
RGF0YSgpOwogCiAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGRhdGFQcm9taXNlOwotICAgIGFzc2Vy
dF9ncmVhdGVyX3RoYW4oYmxvYi5zaXplLCAyMDAwKTsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFu
KGJsb2Iuc2l6ZSwgMTQwMCk7CiB9LCAiQ2FsbGluZyByZXF1ZXN0RGF0YSBvbmNlIGFmdGVyIHBh
dXNpbmcgc2hvdWxkIGxlYWQgdG8gbW9yZSB0aGFuIGhlYWRlciBkYXRhIik7CiAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDc0NjU0M2NiYjkzMmJh
OGY0ZGU4ZGE0ODQ3OGUzMDRlYTdkNzg2YmEuLmExNDQwYTBiOWNmYzA4MDE1ZWU4OTNkNWFmNjNj
OTgyNGRiNmUyNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTc4Miw2ICs3ODIsMTggQEAgd2Via2l0Lm9yZy9iLzIyMTQ0NSBmYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9zeXN0ZW0tbGFuZ3VhZ2UvanAtY2lyY2xlZC5odG1sIFsgU2sKICMgR1N0cmVh
bWVyLXJlbGF0ZWQgYnVncwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAord2Vi
a2l0Lm9yZy9iLzIxMzY5OSBodHRwL3dwdC9tZWRpYXJlY29yZGVyL21pbWVUeXBlLmh0bWwgWyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTM2OTkgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9tdXRl
LXRyYWNrcy5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjEzNjk5IGh0dHAvd3B0L21l
ZGlhcmVjb3JkZXIvdmlkZW8tcm90YXRpb24uaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIxMzY5OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNv
cmQvTWVkaWFSZWNvcmRlci1taW1ldHlwZS5odG1sIFsgVGltZW91dCBdCit3ZWJraXQub3JnL2Iv
MjEzNjk5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29y
ZC9NZWRpYVJlY29yZGVyLW5vLXNpbmsuaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzIxMzY5OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1y
ZWNvcmQvTWVkaWFSZWNvcmRlci1wZWVyY29ubmVjdGlvbi5odHRwcy5odG1sIFsgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjEzNjk5IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci1hdWRpby1iaXRyYXRlLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTM2OTkgaHR0
cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLXZpZGVvLWJpdHJhdGUuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIxMzY5OSBodHRwL3dwdC9tZWRpYXJlY29yZGVyL3NldC1z
cmNPYmplY3QtTWVkaWFTdHJlYW0tQmxvYi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KKyMgaHR0cHM6
Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3RyZWFtZXIvLS9pc3N1ZXMvMTAx
Nword2Via2l0Lm9yZy9iLzIxMzY5OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhY2FwdHVyZS1yZWNvcmQvTWVkaWFSZWNvcmRlci1iaXRyYXRlLmh0dHBzLmh0bWwgWyBQYXNz
IENyYXNoIF0KKwogd2Via2l0Lm9yZy9iLzIzMDQxNSBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLWljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZS1ldmVudC5odG1sIFsgVGltZW91dCBd
CiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXItcmVwbGFj
ZVRyYWNrLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODc2MDMgZmFzdC9tZWRpYXN0
cmVhbS9tZWRpYS1zdHJlYW0tdHJhY2stc291cmNlLWZhaWx1cmUuaHRtbCBbIFRpbWVvdXQgRmFp
bHVyZSBQYXNzIF0KQEAgLTE2NDAsMTAgKzE2NTIsNiBAQCBmYXN0L2V2ZW50cy93ZWJraXQtbWVk
aWEta2V5LWV2ZW50cy1jb25zdHJ1Y3Rvci5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL21lZGlh
L25vdy1wbGF5aW5nLWluZm8tcHJpdmF0ZS1icm93c2luZy5odG1sIFsgU2tpcCBdCiBodHRwL3Rl
c3RzL21lZGlhL25vdy1wbGF5aW5nLWluZm8uaHRtbCBbIFNraXAgXQogCi0jIE1lZGlhUmVjb3Jk
ZXIgaXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZAotaHR0cC93cHQvbWVkaWFyZWNvcmRlciBb
IFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVj
b3JkIFsgU2tpcCBdCi0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5k
ZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvZW1iZWRkZWQtY29udGVudC1yZW5kZXJpbmctcnVsZXMv
Y2FudmFzLXVwZGF0ZS13aXRoLWJvcmRlci1vYmplY3QtZml0Lmh0bWwgWyBQYXNzIF0KIAogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9mb3Jtcy90aGUtc2Vs
ZWN0LWVsZW1lbnQvcmVzZXQtYWxnb3JpdGhtLXJlbmRlcmluZy5odG1sIFsgUGFzcyBdCkBAIC0x
ODUzLDYgKzE4NjEsNyBAQCB3ZWJraXQub3JnL2IvMTkzNjIzIGFjY2Vzc2liaWxpdHkvc2V0LXNl
bGVjdGVkLWVkaXRhYmxlLmh0bWwgWyBTa2lwIF0KICMgTm8gc3VwcG9ydCBmb3IgR1BVUHJvY2Vz
cyB5ZXQKIGZhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZUluR1BVUHJvY2Vzcy5odG1sIFsgU2tpcCBd
CiBmYXN0L21lZGlhc3RyZWFtL3ZpZGVvLXJvdGF0aW9uLWdwdS1wcm9jZXNzLWNyYXNoLmh0bWwg
WyBTa2lwIF0KK2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12
aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbCBbIFNraXAgXQogCiAjIFBheW1lbnQg
UmVxdWVzdAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3Qg
WyBTa2lwIF0KQEAgLTIzMDAsNyArMjMwOSw2IEBAIHdlYmtpdC5vcmcvYi8yMDY1MjggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZW1vdGUtcGxheWJhY2svaWRsaGFybmVzcy53CiB3
ZWJraXQub3JnL2IvMjA2NTI4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcmVtb3Rl
LXBsYXliYWNrL3dhdGNoLWF2YWlsYWJpbGl0eS1pbml0aWFsLWNhbGxiYWNrLmh0bWwgWyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwNjU4NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3Rv
cnMtZnJvbS1zZXJ2aWNld29ya2VyLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMDY1ODggZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtbWVkaWEtcmVjb3JkZXIuaHRtbCBbIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNjAwNSBmYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94LXNo
YWRvdy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM0NTI5IGZhc3Qv
Ym94LXNoYWRvdy9oaWRwaS1ib3gtc2hhZG93LWluc2V0LW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDY2NTIgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2NvbnN0cnVjdG9yLzAxMS5odG1sIFsgRmFp
bHVyZSBdCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggODA0OTM1NWY0
Y2I2MWZhYTlkY2JmOWY4ZDY2M2MyMzUzZWFjMWQxYy4uOTRmYzZkYjg4NTAyMmI5NTk4ZDNlM2Fi
NzczZjNiNjk3YTcwNzZmNSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBJbml0aWFsIE1lZGlhUmVjb3JkZXIg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVuYWJsZSBNZWRpYVJlY29yZGVyIHN1cHBvcnQgaWYgR1N0cmVhbWVyID49IDEuMjAg
aXMgYXZhaWxhYmxlLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21h
a2U6CisgICAgICAgICogU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVmaW5pdGlvbnMuY21ha2U6CisgICAgICAgICog
U291cmNlL2NtYWtlL0dTdHJlYW1lckRlcGVuZGVuY2llcy5jbWFrZToKKwogMjAyMi0wMi0xMSAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
Q2hlY2sgZm9yIE1BUF9BTElHTkVEIHN1cHBvcnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451896</attachid>
            <date>2022-02-14 06:03:28 -0800</date>
            <delta_ts>2022-02-18 09:35:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236558-20220214060326.patch</filename>
            <type>text/plain</type>
            <size>50954</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmMzE0MGRmNzQ5MWVhOTYyY2NiMGJi
NTVkOWY0NDZmNDVkNTU1MjQuLjc4MzFiNjMxOWFkOGNhNzVjNTE2MTM3ZjY5YjRmNzU5ODVlN2Fi
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEluaXRpYWwgTWVkaWFS
ZWNvcmRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWw6IEVuYWJsZSBNZWRpYVJlY29yZGVyIGlmIGl0IHdhcworICAgICAgICBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUgaW4gR1N0cmVhbWVyIHBvcnRzLgorCiAyMDIyLTAyLTEzICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHBhcnNpbmcgJ3N1YmdyaWQnIGluIGdyaWQtdGVtcGxhdGUtY29sdW1ucy9yb3cKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4NGYzNDkyYTQ3ZWZiNjY0MjU0YWExZmMxZmFmNWFhZTY3M2RmNDg4Li4yMTQ2ZmIw
ZjgyMTMzYmFhMjlmN2YzOTY0ZjM4NzNhYTdlYzgxNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTYgQEAKKzIwMjItMDItMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIEluaXRpYWwgTWVkaWFSZWNvcmRlciBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgTWVkaWFSZWNvcmRlciBiYWNrZW5kIGJhc2VkIG9uIHRoZSBHU3RyZWFtZXIgVHJhbnNjb2Rl
ciBsaWJyYXJ5LiBXZSBhbnRpY2lwYXRlIHRoZQorICAgICAgICBzY2VuYXJpbyB3aGVyZSB0aGUg
R3N0V2ViUlRDIGJhY2tlbmQgbWlnaHQgcHJvdmlkZSBlbmNvZGVkIHN0cmVhbXMgdG8gdGhlIHJl
Y29yZGVyLCBpbiB3aGljaAorICAgICAgICBjYXNlIHRyYW5zY29kaW5nIGlzIHJlcXVpcmVkLiBU
aGUgdHJhbnNjb2RlciBsaWJyYXJ5IGNhbiBvcGVyYXRlIGluIHBhc3MtdGhyb3VnaCBhcyB3ZWxs
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
cjo6aXNUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OmNy
ZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyOjppc1N1cHBvcnRlZCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXVEY6OmFkb3B0R1JlZik6CisgICAgICAgIChXVEY6OnJlZkdQdHI8
R3N0RW5jb2RpbmdQcm9maWxlPik6CisgICAgICAgIChXVEY6OmRlcmVmR1B0cjxHc3RFbmNvZGlu
Z1Byb2ZpbGU+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0
ckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjppbml0aWFsaXplRW5jb2RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlR1N0cmVhbWVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnN0YXJ0UmVjb3JkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpzdG9w
UmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpmZXRjaERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVH
U3RyZWFtZXI6OnBhdXNlUmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlR1N0cmVhbWVyOjpyZXN1bWVSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6Om1pbWVUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjppc1R5cGVTdXBwb3J0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRh
aW5lclByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3Ry
ZWFtZXI6OnNldFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcjo6c2V0U2luayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y29uZmlndXJlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpwcmVwYXJlUGlwZWxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6Om5vdGlm
eUVPUyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAod2Via2l0
TWVkaWFTdHJlYW1TcmNFbnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKToKKyAgICAgICAgKHdl
YmtpdE1lZGlhU3RyZWFtU3JjUGFkUHJvYmVDYik6CisgICAgICAgICh3ZWJraXRNZWRpYVN0cmVh
bVNyY1NpZ25hbEVuZE9mU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKwogMjAyMi0wMi0xMyAgTGF1
cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBub24t
dW5pZmllZCBidWlsZCBmaXhlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBmZjlm
MTcwZmE4MGYxZTE4Nzk1YTlmMWNhOWQ0OGI5ZWRlMzYxZmVlLi4yYmEyMDMzOTUwZTZmNGU0Yjc2
ZmY0N2FmNTM5MGMwYTZjZTI4MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAt
ODYyLDYgKzg2Miw3IEBAIE1lZGlhUmVjb3JkZXJFbmFibGVkOgogICAgICAgZGVmYXVsdDogZmFs
c2UKICAgICBXZWJLaXQ6CiAgICAgICAiUExBVEZPUk0oQ09DT0EpIjogdHJ1ZQorICAgICAgIlVT
RShHU1RSRUFNRVJfVFJBTlNDT0RFUikiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAg
IFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA0
NTdjNGFhOWIxYTE4Y2NmYTlhYjI4N2U0ZTBiMzcwZWUzYWQ1MDljLi4xMzU0NGVhNmVjNzg0ZWFj
OThkMDgzZDI4YzA5NjExN2NhYzVkMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUxLDYg
KzE1MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9tZWRpYXN0cmVhbSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2NrIgogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9uZXR3b3JrIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDQwNmVjOTdmOTFmMDlkZDgzN2UyYWYz
NDAzNDk5MTY0ZGJmNTY4NTAuLjZmOTVmNDUxZjhmYmE0MDRhOTE4NWY3OTMwMWYxYTIyYTc0ZmUw
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgTWVkaWFSZWNvcmRlcjo6Q3JlYXRv
ckZ1bmN0aW9uIE1lZGlhUmVjb3JkZXI6Om1fY3VzdG9tQ3JlYXRvciA9IG51bGxwdHI7CiAKIGJv
b2wgTWVkaWFSZWNvcmRlcjo6aXNUeXBlU3VwcG9ydGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQogICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC5wYWdlKCk7CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWVkaWFSZWNvcmRlclByb3Zp
ZGVyKCkuaXNTdXBwb3J0ZWQodmFsdWUpOwogI2Vsc2UKQEAgLTg3LDcgKzg3LDcgQEAgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4gTWVkaWFSZWNvcmRl
cjo6Y3JlYXRlTWVkaWFSZWMKICAgICBpZiAobV9jdXN0b21DcmVhdG9yKQogICAgICAgICByZXR1
cm4gbV9jdXN0b21DcmVhdG9yKHN0cmVhbSwgb3B0aW9ucyk7CiAKLSNpZiBQTEFURk9STShDT0NP
QSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQogICAg
IGF1dG8gcmVzdWx0ID0gcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFS
ZWNvcmRlclByaXZhdGUoc3RyZWFtLCBvcHRpb25zKTsKICNlbHNlCiAgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIu
Y3BwCmluZGV4IDc3NzZhZmVjNzY0ZDI1ODYwMjc4NGY4MDYzYjFlY2M4NTQzODE3MTEuLmIzZWUz
NTllODUxMzdmODFjNDgzMmVmMWQ5ZmM0NmM4MTgyZmYwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJv
dmlkZXIuY3BwCkBAIC0yNiwxNyArMjYsMjggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIChQTEFURk9S
TShDT0NPQSkgfHwgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKSkKIAogI2luY2x1ZGUgIkNvbnRl
bnRUeXBlLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgiCisjZW5kaWYK
KworI2lmIFVTRShHU1RSRUFNRVJfVFJBTlNDT0RFUikKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rk
Ojp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBNZWRpYVJlY29yZGVyUHJvdmlkZXI6
OmNyZWF0ZU1lZGlhUmVjb3JkZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBj
b25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiB7CisjaWYgVVNFKEdT
VFJFQU1FUl9UUkFOU0NPREVSKQorICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlKHN0cmVhbSwgb3B0aW9ucyk7CisjZWxzZQogICAgIHJldHVybiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZShzdHJlYW0sIG9wdGlvbnMpOworI2VuZGlmCiB9
CiAKIGJvb2wgTWVkaWFSZWNvcmRlclByb3ZpZGVyOjppc1N1cHBvcnRlZChjb25zdCBTdHJpbmcm
IHZhbHVlKQpAQCAtNDUsNyArNTYsNyBAQCBib29sIE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6aXNT
dXBwb3J0ZWQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBDb250ZW50VHlwZSBtaW1lVHlwZSh2YWx1ZSk7Ci0KKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBhdXRvIGNvbnRhaW5lclR5cGUgPSBtaW1lVHlwZS5jb250YWluZXJUeXBlKCk7CiAgICAgaWYg
KCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAiYXVkaW8vbXA0
IikgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUsICJ2aWRl
by9tcDQiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTcsOCArNjgsMTMgQEAgYm9vbCBN
ZWRpYVJlY29yZGVyUHJvdmlkZXI6OmlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOworI2VsaWYg
VVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQorICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcjo6aXNUeXBlU3VwcG9ydGVkKG1pbWVUeXBlKTsKKyNlbHNlCisgICAgVU5VU0VE
X1ZBUklBQkxFKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KLQogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAppbmRleCAwOTI1ZWM5ZjI5MmMxODFmNmZh
MzgwMTZlYzZjNGYyNzljOWM0OWE1Li41ZGFiODVmYjUwNDdjZGU5YmM3NTU4MGNjM2M3YzdhNTlk
OGRhMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgTWVkaWFSZWNvcmRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1
YWwgfk1lZGlhUmVjb3JkZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IChQTEFURk9STShDT0NPQSkgfHwgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKSkKICAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZT4gY3JlYXRlTWVkaWFSZWNv
cmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZh
dGVPcHRpb25zJik7CiAgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDM0NTNm
ZDVhNjhhYWJiZjYzMWMwZmJhYmViYjlkY2Y0MDdkMTlmYzUuLmY0MjIzYTJmMmE3ZDI3YTExNzNm
MDhlMzMwMTg2YTMyNDNmYTZiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCkBAIC0xMTY4LDcgKzExNjgsNyBAQCBjbGFzcyBFbXB0eU1lZGlhUmVjb3JkZXJQcm92aWRl
ciBmaW5hbCA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJvdmlkZXIgewogcHVibGljOgogICAgIEVt
cHR5TWVkaWFSZWNvcmRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogcHJpdmF0ZToKLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiAoUExBVEZPUk0oQ09DT0EpIHx8IFVTRShHU1RSRUFNRVJfVFJBTlNDT0RFUikpCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiBjcmVhdGVNZWRpYVJlY29y
ZGVyUHJpdmF0ZShNZWRpYVN0cmVhbVByaXZhdGUmLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMmKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggYWI5YzcwOTJlNjVmNTExNTIwMTNj
MTJiYTQ4MDI3ZmQ3MGI4MjRiNC4uMWVkN2NkMjZjMzU3YjZkMTBiYjRlNWVmY2RhZDgxOTk3MmY0
YzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtMyw2ICsz
LDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIgogICAgICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZSIKICAgICAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUiCisgICAgICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2dzdHJlYW1lciIKICAgICApCiAKICAg
ICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKQEAgLTQ0LDYgKzQ1LDggQEAgaWYgKEVOQUJM
RV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1RyYWNrUXVldWUuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCiAKKyAgICAgICAgcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKwog
ICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1
bGUuY3BwCiAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1l
ci9HU3RyZWFtZXJWaWRlb0NvbW1vbi5jcHAKQEAgLTEwOSw2ICsxMTIsMTUgQEAgaWYgKEVOQUJM
RV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVy
dGllcyhwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwIFBST1BFUlRJRVMgQ09NUElMRV9ERUZJTklUSU9OUyAiR0xJQl9ESVNBQkxFX0RFUFJF
Q0FUSU9OX1dBUk5JTkdTPTEiKQogZW5kaWYgKCkKIAoraWYgKFVTRV9HU1RSRUFNRVJfVFJBTlND
T0RFUikKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAgICAke0dTVFJF
QU1FUl9UUkFOU0NPREVSX0xJQlJBUklFU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAke0dTVFJFQU1FUl9UUkFOU0NP
REVSX0lOQ0xVREVfRElSU30KKyAgICApCitlbmRpZiAoKQorCiBpZiAoRU5BQkxFX1ZJREVPKQog
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAg
ICAgJHtHU1RSRUFNRVJfVEFHX0lOQ0xVREVfRElSU30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVy
LmNwcAppbmRleCAyM2FjMTI1NzY2MjE5N2ZhNGVhYzk3YTk5N2NiNWQwZmVlZTc0MzkwLi4zMTBi
ZWFkNzJhNDhjYmRiMzMwYjQ1MzdlZTAxMDYyYWE3YjJkMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwCkBAIC01NjksNiArNTY5LDI4IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZH
UHRyPEdzdEVHTEltYWdlPihHc3RFR0xJbWFnZSogcHRyKQogCiAjZW5kaWYgLy8gVVNFKEdTVFJF
QU1FUl9HTCkKIAordGVtcGxhdGUgPD4KK0dSZWZQdHI8R3N0RW5jb2RpbmdQcm9maWxlPiBhZG9w
dEdSZWYoR3N0RW5jb2RpbmdQcm9maWxlKiBwdHIpCit7CisgICAgcmV0dXJuIEdSZWZQdHI8R3N0
RW5jb2RpbmdQcm9maWxlPihwdHIsIEdSZWZQdHJBZG9wdCk7Cit9CisKK3RlbXBsYXRlIDw+CitH
c3RFbmNvZGluZ1Byb2ZpbGUqIHJlZkdQdHI8R3N0RW5jb2RpbmdQcm9maWxlPihHc3RFbmNvZGlu
Z1Byb2ZpbGUqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc3RfZW5jb2RpbmdfcHJv
ZmlsZV9yZWYocHRyKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+Cit2b2lk
IGRlcmVmR1B0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+KEdzdEVuY29kaW5nUHJvZmlsZSogcHRyKQor
eworICAgIGlmIChwdHIpCisgICAgICAgIGdzdF9lbmNvZGluZ19wcm9maWxlX3VucmVmKHB0cik7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1JlZlB0ckdTdHJlYW1lci5oCmluZGV4IDA3OGQzYzU2Mzk3NGY2YTJiM2FmMWViODM5ODY0
OTg3OTQ1ZmE3ZDguLjdhMGI1YTExZGRmYTgxNjcwOTY4OGU4MTM2NmRiN2I1YjM1ZDNhNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaApAQCAtMjIsNiArMjIsNyBAQAogI2lmIFVTRShHU1RS
RUFNRVIpCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvZW5j
b2RpbmctcHJvZmlsZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2luayBXZWJLaXRWaWRlb1Npbms7CkBAIC0xNDYsNiArMTQ3
LDEwIEBAIHRlbXBsYXRlPD4gR3N0RUdMSW1hZ2UqIHJlZkdQdHI8R3N0RUdMSW1hZ2U+KEdzdEVH
TEltYWdlKiBwdHIpOwogdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RFR0xJbWFnZT4oR3N0
RUdMSW1hZ2UqIHB0cik7CiAjZW5kaWYKIAordGVtcGxhdGU8PiBHUmVmUHRyPEdzdEVuY29kaW5n
UHJvZmlsZT4gYWRvcHRHUmVmKEdzdEVuY29kaW5nUHJvZmlsZSopOwordGVtcGxhdGU8PiBHc3RF
bmNvZGluZ1Byb2ZpbGUqIHJlZkdQdHI8R3N0RW5jb2RpbmdQcm9maWxlPihHc3RFbmNvZGluZ1By
b2ZpbGUqKTsKK3RlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0RW5jb2RpbmdQcm9maWxlPihH
c3RFbmNvZGluZ1Byb2ZpbGUqKTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBV
U0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNw
cAppbmRleCA4MzE3Y2NkMzAxZmM0ODIzNTE2Y2FjNDMyNGE3NmU1YzAyODBjNjljLi42N2Q3YTMw
NTY5MjQyYWI0NmViNDEzNDZjNzlmNWMwYWU5OGVhZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtNDgwLDYgKzQ4MCw3IEBAIHZvaWQgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRW5jb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyCiAKICAgICBhdXRvIGgyNjRFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVz
Lmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNv
ZGVyLCAidmlkZW8veC1oMjY0LCBwcm9maWxlPShzdHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGlu
ZSwgYmFzZWxpbmUsIGhpZ2ggfSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFz
c2lmaWVyOjpZZXMpOwogICAgIGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkgeworICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiaDI2NCIpLCBoMjY0RW5jb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygieC1oMjY0IiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CiAgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIiksIGgyNjRF
bmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJtcDR2KiIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5n
SGFyZHdhcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mODk0NDQxODUyMTI5NmM4NTM5YjNiZjJkMDYxNzU4N2VjZTBhMDk2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEsIDIwMjIgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5oIgorCisjaWYgVVNFKEdTVFJF
QU1FUl9UUkFOU0NPREVSKQorCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJH
U3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorI2luY2x1ZGUgIkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oIgorI2luY2x1ZGUgIkdTdHJl
YW1lclZpZGVvRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdzdC9hcHAv
Z3N0YXBwc2luay5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfbWVkaWFfcmVjb3JkZXJfZGVidWcpOwor
I2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3JlY29yZGVyX2RlYnVnCisKK3N0
ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcj4gTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29u
c3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQoreworICAgIGVuc3VyZUdT
dHJlYW1lckluaXRpYWxpemVkKCk7CisgICAgcmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50
cygpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10geworICAgICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJr
aXRfbWVkaWFfcmVjb3JkZXJfZGVidWcsICJ3ZWJraXRtZWRpYXJlY29yZGVyIiwgMCwgIldlYktp
dCBNZWRpYVN0cmVhbSByZWNvcmRlciIpOworICAgIH0pOworCisgICAgYXV0byByZWNvcmRlciA9
IG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI+KHN0cmVhbSwgb3B0aW9u
cyk7CisgICAgaWYgKCFyZWNvcmRlci0+cHJlcGFyZVBpcGVsaW5lKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIHJlY29yZGVyOworfQorCitNZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lcjo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIoTWVkaWFTdHJlYW1Q
cml2YXRlJiBzdHJlYW0sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9u
cykKKyAgICA6IG1fc3RyZWFtKHN0cmVhbSkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQorewor
fQorCitNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyKCkKK3sKKyAgICBpZiAobV9zcmMpCisgICAgICAgIHdlYmtpdE1lZGlhU3RyZWFt
U3JjU2lnbmFsRW5kT2ZTdHJlYW0oV0VCS0lUX01FRElBX1NUUkVBTV9TUkMobV9zcmMuZ2V0KCkp
KTsKKyAgICBpZiAobV90cmFuc2NvZGVyKSB7CisgICAgICAgIG1fcGlwZWxpbmUuY2xlYXIoKTsK
KyAgICAgICAgbV90cmFuc2NvZGVyLmNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyOjpzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX3BpcGVsaW5lKQorICAgICAgICBwcmVwYXJl
UGlwZWxpbmUoKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwgIlN0
YXJ0aW5nIik7CisgICAgY2FsbGJhY2soU3RyaW5nKG1pbWVUeXBlKCkpLCAwLCAwKTsKKyAgICBn
c3RfdHJhbnNjb2Rlcl9ydW5fYXN5bmMobV90cmFuc2NvZGVyLmdldCgpKTsKK30KKwordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgR1NUX0RFQlVHX09CSkVD
VChtX3RyYW5zY29kZXIuZ2V0KCksICJTdG9wIHJlcXVlc3RlZCwgcHVzaGluZyBFT1MgZXZlbnQi
KTsKKworICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIG1fcGlwZWxpbmUuY2xlYXIoKTsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCht
X3RyYW5zY29kZXIuZ2V0KCksICJTdG9wcGluZyIpOworICAgICAgICBtX3RyYW5zY29kZXIuY2xl
YXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKworICAgIGlmICgh
bV9wb3NpdGlvbikgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQo
KSwgIlRyYW5zY29kZXIgaGFzIG5vdCBzdGFydGVkIHlldCwgbm8gbmVlZCBmb3IgRU9TIGV2ZW50
Iik7CisgICAgICAgIG1fZW9zID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3
ZWJraXRNZWRpYVN0cmVhbVNyY1NpZ25hbEVuZE9mU3RyZWFtKFdFQktJVF9NRURJQV9TVFJFQU1f
U1JDKG1fc3JjLmdldCgpKSk7CisKKyAgICBib29sIGlzRU9TID0gZmFsc2U7CisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9lb3NMb2NrKTsKKyAgICAgICAgaXNFT1MgPSBtX2VvczsK
KyAgICB9CisgICAgd2hpbGUgKCFpc0VPUykgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9l
b3NMb2NrKTsKKyAgICAgICAgbV9lb3NDb25kaXRpb24ud2FpdEZvcihtX2Vvc0xvY2ssIDIwMF9t
cywgW3dlYWtUaGlzID0gV2Vha1B0ciB7IHRoaXMgfV0oKSAtPiBib29sIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICByZXR1cm4gd2Vha1RoaXMtPm1fZW9zOworICAgICAgICB9KTsKKyAgICAgICAgaXNFT1MgPSBt
X2VvczsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmZl
dGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CisgICAgR1NUX0RFQlVHX09CSkVDVChtX3RyYW5z
Y29kZXIuZ2V0KCksICJUcmFuc2ZlcmluZyAlenUgZW5jb2RlZCBieXRlcyIsIG1fZGF0YS5zaXpl
KCkpOworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhLnRha2UoKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlKCksIG1fcG9zaXRpb24pOworfQorCit2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZVJlY29yZGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgR1NUX0lORk9fT0JK
RUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwgIlBhdXNpbmciKTsKKyAgICBpZiAobV9waXBlbGluZSkK
KyAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFU
RV9QQVVTRUQpOworCisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2
YXRlOjpzZWxlY3RUcmFja3Moc3RyZWFtKCkpOworICAgIGlmIChzZWxlY3RlZFRyYWNrcy5hdWRp
b1RyYWNrKQorICAgICAgICBzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zZXRNdXRlZCh0cnVl
KTsKKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjaykKKyAgICAgICAgc2VsZWN0ZWRU
cmFja3MudmlkZW9UcmFjay0+c2V0TXV0ZWQodHJ1ZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVzdW1lUmVjb3Jk
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBHU1RfSU5GT19PQkpFQ1QobV90cmFuc2NvZGVyLmdldCgpLCAiUmVzdW1pbmciKTsKKyAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyhz
dHJlYW0oKSk7CisgICAgaWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2spCisgICAgICAgIHNl
bGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2stPnNldE11dGVkKGZhbHNlKTsKKyAgICBpZiAoc2VsZWN0
ZWRUcmFja3MudmlkZW9UcmFjaykKKyAgICAgICAgc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjay0+
c2V0TXV0ZWQoZmFsc2UpOworICAgIGlmIChtX3BpcGVsaW5lKQorICAgICAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgTWVkaWFSZWNvcmRlclByaXZh
dGVHU3RyZWFtZXI6Om1pbWVUeXBlKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RyaW5nPiBNUDRBVURJT01JTUVUWVBFKE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJhdWRpby9tcDQiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
TVA0VklERU9NSU1FVFlQRShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgidmlkZW8vbXA0IikpOwor
CisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RU
cmFja3MobV9zdHJlYW0pOworICAgIHJldHVybiBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8g
TVA0VklERU9NSU1FVFlQRSA6IE1QNEFVRElPTUlNRVRZUEU7Cit9CisKK2Jvb2wgTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXI6OmlzVHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYg
Y29udGVudFR5cGUpCit7CisgICAgYXV0byYgc2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6c2luZ2xldG9uKCk7CisgICAgcmV0dXJuIHNjYW5uZXIuaXNDb250ZW50VHlwZVN1cHBv
cnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkVuY29kaW5nLCBj
b250ZW50VHlwZSwgeyB9KSA+IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7Cit9CisKK0dSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvZmlsZSgpCit7CisgICAgYXV0
byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3MobV9z
dHJlYW0pOworICAgIGF1dG8gbWltZVR5cGUgPSB0aGlzLT5taW1lVHlwZSgpOworICAgIGlmICgh
bWltZVR5cGUpCisgICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/
ICJ2aWRlby9tcDQiIDogImF1ZGlvL21wNCI7CisKKyAgICBHU1RfREVCVUcoIkNyZWF0aW5nIHZp
ZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1pbWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOworICAgIGF1dG8m
IHNjYW5uZXIgPSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpOworICAgIGlm
IChzY2FubmVyLmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
OjpDb25maWd1cmF0aW9uOjpFbmNvZGluZywgY29udGVudFR5cGUsIHsgfSkgPT0gTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBjb25zdCBjaGFyKiBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSAiIjsK
KyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCk7Cisg
ICAgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCJfcykpCisgICAgICAgIGNvbnRhaW5l
ckNhcHNEZXNjcmlwdGlvbiA9ICJ2aWRlby9xdWlja3RpbWUsIHZhcmlhbnQ9aXNvIjsKKyAgICBl
bHNlCisgICAgICAgIGNvbnRhaW5lckNhcHNEZXNjcmlwdGlvbiA9IGNvbnRhaW5lclR5cGUudXRm
OCgpLmRhdGEoKTsKKworICAgIGF1dG8gY29udGFpbmVyQ2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fw
c19mcm9tX3N0cmluZyhjb250YWluZXJDYXBzRGVzY3JpcHRpb24pKTsKKyAgICBhdXRvIHByb2Zp
bGUgPSBhZG9wdEdSZWYoZ3N0X2VuY29kaW5nX2NvbnRhaW5lcl9wcm9maWxlX25ldyhudWxscHRy
LCBudWxscHRyLCBjb250YWluZXJDYXBzLmdldCgpLCBudWxscHRyKSk7CisKKyAgICBpZiAoY29u
dGFpbmVyVHlwZS5lbmRzV2l0aCgibXA0Il9zKSkKKyAgICAgICAgZ3N0X2VuY29kaW5nX3Byb2Zp
bGVfc2V0X2VsZW1lbnRfcHJvcGVydGllcyhHU1RfRU5DT0RJTkdfUFJPRklMRShwcm9maWxlLmdl
dCgpKSwgZ3N0X3N0cnVjdHVyZV9mcm9tX3N0cmluZygiZWxlbWVudC1wcm9wZXJ0aWVzLW1hcCwg
bWFwPXtbbXA0bXV4LGZyYWdtZW50LWR1cmF0aW9uPTEwMDAsZnJhZ21lbnQtbW9kZT0wLHN0cmVh
bWFibGU9MCxmb3JjZS1jcmVhdGUtdGltZWNvZGUtdHJhaz0xXX0iLCBudWxscHRyKSk7CisKKyAg
ICBhdXRvIGNvZGVjcyA9IGNvbnRlbnRUeXBlLmNvZGVjcygpOworICAgIC8vIFRPRE86IEhhbmRs
ZSBwcm9maWxlcy4KKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjaykgeworICAgICAg
ICBTdHJpbmcgdmlkZW9DYXBzTmFtZTsKKyAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidnA4
Il9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC12cDgiX3M7CisgICAg
ICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygidnA5Il9zKSkKKyAgICAgICAgICAgIHZpZGVv
Q2Fwc05hbWUgPSAidmlkZW8veC12cDkiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250
YWlucygiYXYxIl9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1hdjEi
X3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0
dXJuIGNvZGVjLnN0YXJ0c1dpdGgoImF2YzEiX3MpOyB9KSAhPSBub3RGb3VuZCkKKyAgICAgICAg
ICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1oMjY0Il9zOworICAgICAgICBlbHNlIGlmIChj
b250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIl9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05h
bWUgPSAidmlkZW8veC12cDgiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5k
c1dpdGgoIm1wNCJfcykpCisgICAgICAgICAgICB2aWRlb0NhcHNOYW1lID0gInZpZGVvL3gtaDI2
NCJfczsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBHU1RfV0FSTklORygiVmlkZW8gY29k
ZWMgZm9yICVzIG5vdCBzdXBwb3J0ZWQiLCBjb250ZW50VHlwZS5yYXcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIXZpZGVvQ2Fwc05hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgYXV0byB2aWRl
b0NhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSh2aWRlb0NhcHNOYW1l
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJDcmVhdGluZyB2aWRlbyBlbmNv
ZGluZyBwcm9maWxlIGZvciBjYXBzICUiIEdTVF9QVFJfRk9STUFULCB2aWRlb0NhcHMuZ2V0KCkp
OworICAgICAgICBtX3ZpZGVvRW5jb2RpbmdQcm9maWxlID0gYWRvcHRHUmVmKEdTVF9FTkNPRElO
R19QUk9GSUxFKGdzdF9lbmNvZGluZ192aWRlb19wcm9maWxlX25ldyh2aWRlb0NhcHMuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsIDEpKSk7CisgICAgICAgIGdzdF9lbmNvZGluZ19jb250YWluZXJf
cHJvZmlsZV9hZGRfcHJvZmlsZShwcm9maWxlLmdldCgpLCBtX3ZpZGVvRW5jb2RpbmdQcm9maWxl
LmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaykgewor
ICAgICAgICBTdHJpbmcgYXVkaW9DYXBzTmFtZTsKKyAgICAgICAgaWYgKGNvZGVjcy5jb250YWlu
cygidm9yYmlzIl9zKSkKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3Ji
aXMiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCisgICAg
ICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgIGVsc2UgaWYg
KGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgo
Im1wNGEiX3MpOyB9KSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAi
YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKKyAgICAgICAgZWxzZSBpZiAoY29udGFpbmVy
VHlwZS5lbmRzV2l0aCgid2VibSJfcykpCisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL3gtdm9yYmlzIl9zOworICAgICAgICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRo
KCJtcDQiX3MpKQorICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby9tcGVnLCBtcGVn
dmVyc2lvbj00Il9zOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJB
dWRpbyBjb2RlYyBmb3IgJXMgbm90IHN1cHBvcnRlZCIsIGNvbnRlbnRUeXBlLnJhdygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghYXVkaW9DYXBzTmFtZS5pc0VtcHR5KCkpOworICAgICAgICBh
dXRvIGF1ZGlvQ2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19mcm9tX3N0cmluZyhhdWRpb0NhcHNO
YW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgR1NUX0RFQlVHKCJDcmVhdGluZyBhdWRpbyBl
bmNvZGluZyBwcm9maWxlIGZvciBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBhdWRpb0NhcHMuZ2V0
KCkpOworICAgICAgICBtX2F1ZGlvRW5jb2RpbmdQcm9maWxlID0gYWRvcHRHUmVmKEdTVF9FTkNP
RElOR19QUk9GSUxFKGdzdF9lbmNvZGluZ19hdWRpb19wcm9maWxlX25ldyhhdWRpb0NhcHMuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDEpKSk7CisgICAgICAgIGdzdF9lbmNvZGluZ19jb250YWlu
ZXJfcHJvZmlsZV9hZGRfcHJvZmlsZShwcm9maWxlLmdldCgpLCBtX2F1ZGlvRW5jb2RpbmdQcm9m
aWxlLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvZmlsZTsKK30KKwordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U291cmNlKEdzdEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxl
Y3RUcmFja3Moc3RyZWFtKCkpOworICAgIGJvb2wgb25seVRyYWNrID0gKHNlbGVjdGVkVHJhY2tz
LmF1ZGlvVHJhY2sgJiYgIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spIHx8IChzZWxlY3RlZFRy
YWNrcy52aWRlb1RyYWNrICYmICFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrKTsKKyAgICBhdXRv
KiBzcmMgPSBXRUJLSVRfTUVESUFfU1RSRUFNX1NSQyhlbGVtZW50KTsKKyAgICBpZiAoc2VsZWN0
ZWRUcmFja3MuYXVkaW9UcmFjaykgeworICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRy
YWNrKHNyYywgc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaywgb25seVRyYWNrKTsKKyAgICAgICAg
c2V0QXVkaW9Tb3VyY2UoJnNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2stPnNvdXJjZSgpKTsKKyAg
ICAgICAgY2hlY2tUcmFja1N0YXRlKCpzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrKTsKKyAgICB9
CisgICAgaWYgKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spIHsKKyAgICAgICAgd2Via2l0TWVk
aWFTdHJlYW1TcmNBZGRUcmFjayhzcmMsIHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2ssIG9ubHlU
cmFjayk7CisgICAgICAgIHNldFZpZGVvU291cmNlKCZzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
LT5zb3VyY2UoKSk7CisgICAgICAgIGNoZWNrVHJhY2tTdGF0ZSgqc2VsZWN0ZWRUcmFja3Mudmlk
ZW9UcmFjayk7CisgICAgfQorICAgIG1fc3JjID0gZWxlbWVudDsKK30KKwordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U2luayhHc3RFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIHN0YXRpYyBHc3RBcHBTaW5rQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKKyAgICAgICAgbnVs
bHB0ciwKKyAgICAgICAgW10oR3N0QXBwU2luayogc2luaywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+
IEdzdEZsb3dSZXR1cm4geworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0
X2FwcF9zaW5rX3B1bGxfcHJlcm9sbChzaW5rKSk7CisgICAgICAgICAgICBpZiAoc2FtcGxlKQor
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVy
Kj4odXNlckRhdGEpLT5wcm9jZXNzU2FtcGxlKFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAg
ICByZXR1cm4gZ3N0X2FwcF9zaW5rX2lzX2VvcyhzaW5rKSA/IEdTVF9GTE9XX0VPUyA6IEdTVF9G
TE9XX09LOworICAgICAgICB9LAorICAgICAgICBbXShHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRl
ciB1c2VyRGF0YSkgLT4gR3N0Rmxvd1JldHVybiB7CisgICAgICAgICAgICBhdXRvIHNhbXBsZSA9
IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUoc2luaykpOworICAgICAgICAgICAg
aWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lcio+KHVzZXJEYXRhKS0+cHJvY2Vzc1NhbXBsZShXVEZNb3ZlKHNhbXBsZSkp
OworICAgICAgICAgICAgcmV0dXJuIGdzdF9hcHBfc2lua19pc19lb3Moc2luaykgPyBHU1RfRkxP
V19FT1MgOiBHU1RfRkxPV19PSzsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gbmV3X2V2ZW50Cisg
ICAgICAgIG51bGxwdHIsCisgICAgICAgIHsgbnVsbHB0ciB9CisgICAgfTsKKyAgICBnc3RfYXBw
X3Npbmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJTksoZWxlbWVudCksICZjYWxsYmFja3MsIHRo
aXMsIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAiZW5hYmxlLWxhc3Qtc2Ft
cGxlIiwgRkFMU0UsICJtYXgtYnVmZmVycyIsIDEsICJhc3luYyIsIEZBTFNFLCBudWxscHRyKTsK
KyAgICBtX3NpbmsgPSBlbGVtZW50OworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyOjpjb25maWd1cmVWaWRlb0VuY29kZXIoR3N0RWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICBhdXRvIGZvcm1hdCA9IGFkb3B0R1JlZihnc3RfZW5jb2RpbmdfcHJvZmlsZV9nZXRfZm9ybWF0
KEdTVF9FTkNPRElOR19QUk9GSUxFKG1fdmlkZW9FbmNvZGluZ1Byb2ZpbGUuZ2V0KCkpKSk7Cisg
ICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJmb3JtYXQiLCBmb3JtYXQuZ2V0KCksIG51bGxwdHIp
OworCisgICAgYXV0byBiaXRyYXRlID0gW29wdGlvbnMgPSBtX29wdGlvbnNdKCkgLT4gdW5zaWdu
ZWQgeworICAgICAgICBpZiAob3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQpCisgICAgICAgICAg
ICByZXR1cm4gKm9wdGlvbnMudmlkZW9CaXRzUGVyU2Vjb25kOworICAgICAgICBpZiAob3B0aW9u
cy5iaXRzUGVyU2Vjb25kKQorICAgICAgICAgICAgcmV0dXJuICpvcHRpb25zLmJpdHNQZXJTZWNv
bmQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0oKTsKKworICAgIGlmIChiaXRyYXRlKQorICAg
ICAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgImJpdHJhdGUiLCBiaXRyYXRlIC8gMTAyNCwgbnVs
bHB0cik7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVQ
aXBlbGluZSgpCit7CisgICAgYXV0byBwcm9maWxlID0gY29udGFpbmVyUHJvZmlsZSgpOworICAg
IGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV90cmFuc2NvZGVy
ID0gYWRvcHRHUmVmKGdzdF90cmFuc2NvZGVyX25ld19mdWxsKCJtZWRpYXN0cmVhbTovLyIsICJh
cHBzaW5rOi8vIiwgR1NUX0VOQ09ESU5HX1BST0ZJTEUocHJvZmlsZS5nZXQoKSkpKTsKKyAgICBn
c3RfdHJhbnNjb2Rlcl9zZXRfYXZvaWRfcmVlbmNvZGluZyhtX3RyYW5zY29kZXIuZ2V0KCksIHRy
dWUpOworICAgIG1fcGlwZWxpbmUgPSBnc3RfdHJhbnNjb2Rlcl9nZXRfcGlwZWxpbmUobV90cmFu
c2NvZGVyLmdldCgpKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3BpcGVsaW5l
LmdldCgpLCAic291cmNlLXNldHVwIiwgR19DQUxMQkFDSygrW10oTWVkaWFSZWNvcmRlclByaXZh
dGVHU3RyZWFtZXIqIHJlY29yZGVyLCBHc3RFbGVtZW50KiBzb3VyY2VFbGVtZW50KSB7CisgICAg
ICAgIHJlY29yZGVyLT5zZXRTb3VyY2Uoc291cmNlRWxlbWVudCk7CisgICAgfSksIHRoaXMpOwor
CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fcGlwZWxpbmUuZ2V0KCksICJlbGVtZW50
LXNldHVwIiwgR19DQUxMQkFDSygrW10oTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIqIHJl
Y29yZGVyLCBHc3RFbGVtZW50KiBlbGVtZW50KSB7CisgICAgICAgIGlmIChXRUJLSVRfSVNfV0VC
UlRDX1ZJREVPX0VOQ09ERVIoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIHJlY29yZGVyLT5jb25m
aWd1cmVWaWRlb0VuY29kZXIoZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIUdTVF9JU19BUFBfU0lOSyhlbGVtZW50KSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICByZWNvcmRlci0+c2V0U2luayhlbGVtZW50KTsKKyAgICB9KSwg
dGhpcyk7CisKKyAgICBtX3NpZ25hbEFkYXB0ZXIgPSBhZG9wdEdSZWYoZ3N0X3RyYW5zY29kZXJf
Z2V0X3N5bmNfc2lnbmFsX2FkYXB0ZXIobV90cmFuc2NvZGVyLmdldCgpKSk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChtX3NpZ25hbEFkYXB0ZXIuZ2V0KCksICJ3YXJuaW5nIiwgR19DQUxMQkFDSygr
W10oR3N0VHJhbnNjb2RlciosIEdFcnJvciogZXJyb3IsIEdzdFN0cnVjdHVyZSogZGV0YWlscykg
eworICAgICAgICBHU1RfV0FSTklORygiJXMgZGV0YWlsczogJSIgR1NUX1BUUl9GT1JNQVQsIGVy
cm9yLT5tZXNzYWdlLCBkZXRhaWxzKTsKKyAgICB9KSwgbnVsbHB0cik7CisKKyAgICBnX3NpZ25h
bF9jb25uZWN0X3N3YXBwZWQobV9zaWduYWxBZGFwdGVyLmdldCgpLCAiZG9uZSIsIEdfQ0FMTEJB
Q0soK1tdKE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyKiByZWNvcmRlcikgeworICAgICAg
ICByZWNvcmRlci0+bm90aWZ5RU9TKCk7CisgICAgfSksIHRoaXMpOworCisgICAgZ19zaWduYWxf
Y29ubmVjdF9zd2FwcGVkKG1fc2lnbmFsQWRhcHRlci5nZXQoKSwgInBvc2l0aW9uLXVwZGF0ZWQi
LCBHX0NBTExCQUNLKCtbXShNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lciogcmVjb3JkZXIs
IEdzdENsb2NrVGltZSBwb3NpdGlvbikgeworICAgICAgICByZWNvcmRlci0+bm90aWZ5UG9zaXRp
b24ocG9zaXRpb24pOworICAgIH0pLCB0aGlzKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzU2FtcGxlKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSkKK3sKKyAgICBhdXRvKiBzYW1wbGVCdWZmZXIgPSBnc3Rfc2Ft
cGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKTsKKyAgICBHc3RNYXBwZWRCdWZmZXIgYnVmZmVy
KHNhbXBsZUJ1ZmZlciwgR1NUX01BUF9SRUFEKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
TG9jayB9OworCisgICAgR1NUX0xPR19PQkpFQ1QobV90cmFuc2NvZGVyLmdldCgpLCAiUXVldWVp
bmcgJXp1IGJ5dGVzIG9mIGVuY29kZWQgZGF0YSwgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIGJ1
ZmZlci5zaXplKCksIGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2FtcGxlLmdldCgpKSk7CisgICAgbV9k
YXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKK30KKwordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5RU9TKCkKK3sKKyAgICBHU1RfREVCVUco
IkVPUyByZWNlaXZlZCIpOworICAgIExvY2tIb2xkZXIgbG9jayhtX2Vvc0xvY2spOworICAgIG1f
ZW9zID0gdHJ1ZTsKKyAgICBtX2Vvc0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljOTUz
Njc3NmI0MzEzY2QxOGE1MjgxMGNlMWYzNTUzNDdjOTgxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSwg
MjAyMiBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoR1NUUkVBTUVSX1RSQU5TQ09E
RVIpCisKKyNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTWVkaWFSZWNv
cmRlclByaXZhdGUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDxnc3Qv
dHJhbnNjb2Rlci9nc3R0cmFuc2NvZGVyLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRUeXBlOworY2xhc3MgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU7CitzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOworCitj
bGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBNZWRpYVJl
Y29yZGVyUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyPiBj
cmVhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zJik7CisgICAgZXhwbGljaXQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIoTWVkaWFT
dHJlYW1Qcml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CisgICAg
fk1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsKKworcHJvdGVjdGVkOgorICAgIGJvb2wg
cHJlcGFyZVBpcGVsaW5lKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWls
YWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsIHsgfTsKKyAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
ZmluYWwgeyB9OworCisgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOworICAgIHZvaWQgcGF1c2VSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCBmaW5h
bDsKKworICAgIHZvaWQgc2V0U291cmNlKEdzdEVsZW1lbnQqKTsKKyAgICB2b2lkIHNldFNpbmso
R3N0RWxlbWVudCopOworICAgIHZvaWQgY29uZmlndXJlVmlkZW9FbmNvZGVyKEdzdEVsZW1lbnQq
KTsKKworICAgIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBjb250YWluZXJQ
cm9maWxlKCk7CisgICAgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0oKSBjb25zdCB7IHJldHVy
biBtX3N0cmVhbTsgfQorICAgIHZvaWQgcHJvY2Vzc1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4m
Jik7CisgICAgdm9pZCBub3RpZnlQb3NpdGlvbihHc3RDbG9ja1RpbWUgcG9zaXRpb24pIHsgbV9w
b3NpdGlvbiA9IEdTVF9USU1FX0FTX1NFQ09ORFMocG9zaXRpb24pOyB9CisgICAgdm9pZCBub3Rp
ZnlFT1MoKTsKKworICAgIEdSZWZQdHI8R3N0RW5jb2RpbmdQcm9maWxlPiBtX2F1ZGlvRW5jb2Rp
bmdQcm9maWxlOworICAgIEdSZWZQdHI8R3N0RW5jb2RpbmdQcm9maWxlPiBtX3ZpZGVvRW5jb2Rp
bmdQcm9maWxlOworICAgIEdSZWZQdHI8R3N0VHJhbnNjb2Rlcj4gbV90cmFuc2NvZGVyOworICAg
IEdSZWZQdHI8R3N0VHJhbnNjb2RlclNpZ25hbEFkYXB0ZXI+IG1fc2lnbmFsQWRhcHRlcjsKKyAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBtX3NyYzsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fc2luazsKKyAgICBDb25kaXRpb24g
bV9lb3NDb25kaXRpb247CisgICAgTG9jayBtX2Vvc0xvY2s7CisgICAgYm9vbCBtX2VvcyBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fZW9zTG9jayk7CisgICAgZG91YmxlIG1fcG9zaXRpb24geyAwIH07
CisKKyAgICBMb2NrIG1fZGF0YUxvY2s7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEg
V1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKworICAgIE1lZGlhU3RyZWFtUHJpdmF0
ZSYgbV9zdHJlYW07CisgICAgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBtX29w
dGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoR1NU
UkVBTUVSX1RSQU5TQ09ERVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlh
U3RyZWFtU291cmNlLmNwcAppbmRleCA5OTU0ZmE2NTgzMTNhOWE0NWE1MmUzY2Y3NjFmMTAxZjM0
ZDlhYWQ1Li43NzMxZWFkZTY5OGFlNDM1ODMyY2IzYWRkODYyM2I4OWFhNWRhYjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTEx
OCw2ICsxMTgsOCBAQCBwcml2YXRlOgogICAgIEdzdEVsZW1lbnQqIG1fc3JjOwogfTsKIAorc3Rh
dGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNFbnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVk
KFdlYktpdE1lZGlhU3RyZWFtU3JjKik7CisKIGNsYXNzIEludGVybmFsU291cmNlIGZpbmFsIDog
cHVibGljIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciwKICAgICBwdWJsaWMgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlciwKICAgICBwdWJsaWMgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciB7CkBAIC0xMzIsMTEgKzEzNCwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICh0cmFjay5oYXNBdWRpbygpKSB7CiAgICAgICAgICAgICBt
X2F1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUodHJhY2sp
OwogICAgICAgICAgICAgZWxlbWVudE5hbWUgPSAiYXVkaW9zcmMiOwotICAgICAgICB9IGVsc2Ug
aWYgKHRyYWNrLmhhc1ZpZGVvKCkpIHsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHRyYWNrLmhhc1ZpZGVvKCkpOwogICAgICAgICAgICAgbV92aWRlb1RyYWNr
ID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAg
ICAgIGVsZW1lbnROYW1lID0gInZpZGVvc3JjIjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNDYXB0
dXJlVHJhY2sgPSB0cmFjay5pc0NhcHR1cmVUcmFjaygpOwogICAgICAgICBtX3NyYyA9IG1ha2VH
U3RyZWFtZXJFbGVtZW50KCJhcHBzcmMiLCBlbGVtZW50TmFtZSk7CkBAIC0xODQsMTEgKzE4Niwx
NiBAQCBwdWJsaWM6CiAKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChtX3NyYy5nZXQoKSwgIlN0
b3BwaW5nIHRyYWNrL3NvdXJjZSBvYnNlcnZhdGlvbiIpOwogICAgICAgICBtX2lzT2JzZXJ2aW5n
ID0gZmFsc2U7Ci0gICAgICAgIGlmIChtX3RyYWNrLmhhc0F1ZGlvKCkpCi0gICAgICAgICAgICBt
X3RyYWNrLnNvdXJjZSgpLnJlbW92ZUF1ZGlvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAg
ICBlbHNlIGlmIChtX3RyYWNrLmhhc1ZpZGVvKCkpCi0gICAgICAgICAgICBtX3RyYWNrLnNvdXJj
ZSgpLnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAgICBtX3RyYWNrLnJl
bW92ZU9ic2VydmVyKCp0aGlzKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgYXJlIG9uIHRo
ZSBtYWluIHRocmVhZCwgdGhpcyBpcyBzcGVjaWFsbHkgbmVlZGVkIGJ5IHRoZSBNZWRpYVJlY29y
ZGVyCisgICAgICAgIC8vIGJhY2tlbmQsIHdoaWNoIHVzZXMgR3N0VHJhbnNjb2Rlciwgd2hpY2gg
cnVucyBpbiBhIGRlZGljYXRlZCB0aHJlYWQuCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoWyZd
IHsKKyAgICAgICAgICAgIGlmIChtX3RyYWNrLmhhc0F1ZGlvKCkpCisgICAgICAgICAgICAgICAg
bV90cmFjay5zb3VyY2UoKS5yZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKG1fdHJhY2suaGFzVmlkZW8oKSkKKyAgICAgICAgICAgICAgICBtX3Ry
YWNrLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAg
ICAgbV90cmFjay5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIH0pOwogICAgIH0KIAog
ICAgIHZvaWQgY29uZmlndXJlQXVkaW9UcmFjayhmbG9hdCB2b2x1bWUsIGJvb2wgaXNNdXRlZCwg
Ym9vbCBpc1BsYXlpbmcpCkBAIC0xOTYsMTcgKzIwMywyNiBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVChtX3RyYWNrLmhhc0F1ZGlvKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2stPnNldFZvbHVt
ZSh2b2x1bWUpOwogICAgICAgICBtX2F1ZGlvVHJhY2stPnNldE11dGVkKGlzTXV0ZWQpOwotICAg
ICAgICBtX2F1ZGlvVHJhY2stPnNldEVuYWJsZWQobV9hdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygp
LmVuYWJsZWQoKSAmJiAhbV9hdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygpLm11dGVkKCkpOworICAg
ICAgICBtX2F1ZGlvVHJhY2stPnNldEVuYWJsZWQobV9hdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygp
LmVuYWJsZWQoKSk7CiAgICAgICAgIGlmIChpc1BsYXlpbmcpCiAgICAgICAgICAgICBtX2F1ZGlv
VHJhY2stPnBsYXkoKTsKICAgICB9CiAKKyAgICB2b2lkIHNpZ25hbEVuZE9mU3RyZWFtKCkKKyAg
ICB7CisgICAgICAgIGlmIChtX3NyYykKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9z
dHJlYW0oR1NUX0FQUF9TUkMobV9zcmMuZ2V0KCkpKTsKKyAgICB9CisKICAgICB2b2lkIHB1c2hT
YW1wbGUoR3N0U2FtcGxlKiBzYW1wbGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9zcmMpOwot
ICAgICAgICBpZiAoIW1fc3JjKQorICAgICAgICBpZiAoIW1fc3JjIHx8ICFtX2lzT2JzZXJ2aW5n
KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGF1dG8qIHBhcmVudCA9IFdFQktJVF9N
RURJQV9TVFJFQU1fU1JDKG1fcGFyZW50KTsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNF
bnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKHBhcmVudCk7CisKICAgICAgICAgYm9vbCBkcm9w
ID0gbV9lbm91Z2hEYXRhOwogICAgICAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9i
dWZmZXIoc2FtcGxlKTsKICAgICAgICAgYXV0byogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMo
c2FtcGxlKTsKQEAgLTI1Myw3ICsyNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEpIGZp
bmFsCiAgICAgewotICAgICAgICBpZiAoIW1fcGFyZW50KQorICAgICAgICBpZiAoIW1fcGFyZW50
IHx8ICFtX2lzT2JzZXJ2aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8g
c2FtcGxlU2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CkBAIC0yOTgsMTIgKzMxNCwx
MiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbAogICAgIHsKLSAgICAgICAgLy8gVE9ETzog
V2UgbGlrZWx5IG5lZWQgdG8gZW1pdCBzaWxlbnQgYXVkaW8gZnJhbWVzIGluIGNhc2UgdGhlIHRy
YWNrIGlzIGRpc2FibGVkLgotICAgICAgICBpZiAoIW1fdHJhY2suZW5hYmxlZCgpIHx8ICFtX3Bh
cmVudCkKKyAgICAgICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBjb25zdCBhdXRvJiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgR1N0cmVhbWVyQXVkaW9E
YXRhJj4oYXVkaW9EYXRhKTsKICAgICAgICAgYXV0byBzYW1wbGUgPSBkYXRhLmdldFNhbXBsZSgp
OworICAgICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3Bl
IGRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnM7CiAgICAgICAgIHB1c2hTYW1wbGUoc2FtcGxlLmdl
dCgpKTsKICAgICB9CiAKQEAgLTM2NSw2ICszODEsNyBAQCBzdHJ1Y3QgX1dlYktpdE1lZGlhU3Ry
ZWFtU3JjUHJpdmF0ZSB7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZT4+IHRyYWNrczsKICAgICBHVW5pcXVlUHRyPEdzdEZsb3dDb21iaW5lcj4gZmxvd0NvbWJpbmVy
OwogICAgIEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlvbj4gc3RyZWFtQ29sbGVjdGlvbjsKKyAg
ICBBdG9taWM8Ym9vbD4gc3RyZWFtQ29sbGVjdGlvblBvc3RlZDsKICAgICBBdG9taWM8dW5zaWdu
ZWQ+IGF1ZGlvUGFkQ291bnRlcjsKICAgICBBdG9taWM8dW5zaWduZWQ+IHZpZGVvUGFkQ291bnRl
cjsKIH07CkBAIC01NzcsNiArNTk0LDE5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFt
U3JjUG9zdFN0cmVhbUNvbGxlY3Rpb24oV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYpCiAgICAg
Z3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc2VsZiksIGdzdF9tZXNz
YWdlX25ld19zdHJlYW1fY29sbGVjdGlvbihHU1RfT0JKRUNUX0NBU1Qoc2VsZiksIHByaXYtPnN0
cmVhbUNvbGxlY3Rpb24uZ2V0KCkpKTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJl
YW1TcmNFbnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBz
ZWxmKQoreworICAgIGlmIChzZWxmLT5wcml2LT5zdHJlYW1Db2xsZWN0aW9uUG9zdGVkLmxvYWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VsZi0+cHJpdi0+c3RyZWFtQ29sbGVjdGlvblBv
c3RlZC5zdG9yZSh0cnVlKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJQb3N0aW5nIHN0
cmVhbSBjb2xsZWN0aW9uIik7CisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoW2VsZW1lbnQg
PSBHUmVmUHRyPEdzdEVsZW1lbnQ+KEdTVF9FTEVNRU5UX0NBU1Qoc2VsZikpXSB7CisgICAgICAg
IHdlYmtpdE1lZGlhU3RyZWFtU3JjUG9zdFN0cmVhbUNvbGxlY3Rpb24oV0VCS0lUX01FRElBX1NU
UkVBTV9TUkNfQ0FTVChlbGVtZW50LmdldCgpKSk7CisgICAgfSk7CisgICAgR1NUX0RFQlVHX09C
SkVDVChzZWxmLCAiU3RyZWFtIGNvbGxlY3Rpb24gcG9zdGVkIik7Cit9CisKIHN0YXRpYyB2b2lk
IHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkUGFkKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmLCBH
c3RQYWQqIHRhcmdldCwgR3N0U3RhdGljUGFkVGVtcGxhdGUqIHBhZFRlbXBsYXRlLCBHUmVmUHRy
PEdzdFRhZ0xpc3Q+JiYgdGFncywgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBzb3VyY2VUeXBl
LCBjb25zdCBTdHJpbmcmIHBhZE5hbWUpCiB7CiAgICAgQVNTRVJUKHNvdXJjZVR5cGUgIT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZSk7CkBAIC02MzUsOSArNjY1LDYgQEAgc3RhdGlj
IEdzdFBhZFByb2JlUmV0dXJuIHdlYmtpdE1lZGlhU3RyZWFtU3JjUGFkUHJvYmVDYihHc3RQYWQq
IHBhZCwgR3N0UGFkUHJvYmUKICAgICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHBhZCwgc3RyZWFt
U3RhcnQpOwogCiAgICAgICAgIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkUGFkKHNlbGYsIHBhZCwg
ZGF0YS0+cGFkVGVtcGxhdGUsIFdURk1vdmUoZGF0YS0+dGFncyksIGRhdGEtPnNvdXJjZVR5cGUs
IGRhdGEtPnBhZE5hbWUpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbZWxlbWVu
dCA9IGRhdGEtPmVsZW1lbnRdIHsKLSAgICAgICAgICAgIHdlYmtpdE1lZGlhU3RyZWFtU3JjUG9z
dFN0cmVhbUNvbGxlY3Rpb24oV0VCS0lUX01FRElBX1NUUkVBTV9TUkNfQ0FTVChlbGVtZW50Lmdl
dCgpKSk7Ci0gICAgICAgIH0pOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9SRU1PVkU7
CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC02ODgsNiArNzE1LDEzIEBAIHZvaWQgd2Via2l0TWVk
aWFTdHJlYW1TcmNBZGRUcmFjayhXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgTWVkaWFTdHJl
YW1UcmFja1ByCiAgICAgc2VsZi0+cHJpdi0+dHJhY2tzLmFwcGVuZCh0cmFjayk7CiB9CiAKK3Zv
aWQgd2Via2l0TWVkaWFTdHJlYW1TcmNTaWduYWxFbmRPZlN0cmVhbShXZWJLaXRNZWRpYVN0cmVh
bVNyYyogc2VsZikKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJTaWduYWxpbmcgRU9T
Iik7CisgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBzZWxmLT5wcml2LT5zb3VyY2VzKQorICAgICAg
ICBzb3VyY2UtPnNpZ25hbEVuZE9mU3RyZWFtKCk7Cit9CisKIHZvaWQgd2Via2l0TWVkaWFTdHJl
YW1TcmNTZXRTdHJlYW0oV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsIE1lZGlhU3RyZWFtUHJp
dmF0ZSogc3RyZWFtLCBib29sIGlzVmlkZW9QbGF5ZXIpCiB7CiAgICAgQVNTRVJUKFdFQktJVF9J
U19NRURJQV9TVFJFQU1fU1JDKHNlbGYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ck1lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggNjJhYWZmNzhiOWJhMTYyODhjOTk2Nzc2YjU1Yzg0
ZmJiNmVhYjE1Zi4uMjFiNTQwMzcyOWU5NjIzMzdmZDhkOWQ4MjgzZGE5YzkxOGJmMmNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmgKQEAgLTU4
LDUgKzU4LDYgQEAgR3N0RWxlbWVudCogd2Via2l0TWVkaWFTdHJlYW1TcmNOZXcoKTsKIHZvaWQg
d2Via2l0TWVkaWFTdHJlYW1TcmNTZXRTdHJlYW0oV2ViS2l0TWVkaWFTdHJlYW1TcmMqLCBXZWJD
b3JlOjpNZWRpYVN0cmVhbVByaXZhdGUqLCBib29sIGlzVmlkZW9QbGF5ZXIpOwogdm9pZCB3ZWJr
aXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNrKFdlYktpdE1lZGlhU3RyZWFtU3JjKiwgV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqLCBib29sIG9ubHlUcmFjayk7CiB2b2lkIHdlYmtpdE1l
ZGlhU3RyZWFtU3JjQ29uZmlndXJlQXVkaW9UcmFja3MoV2ViS2l0TWVkaWFTdHJlYW1TcmMqLCBm
bG9hdCB2b2x1bWUsIGJvb2wgaXNNdXRlZCwgYm9vbCBpc1BsYXlpbmcpOwordm9pZCB3ZWJraXRN
ZWRpYVN0cmVhbVNyY1NpZ25hbEVuZE9mU3RyZWFtKFdlYktpdE1lZGlhU3RyZWFtU3JjKik7CiAK
ICNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShH
U1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZSBi
L1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCmluZGV4IDlkOTdhNGI1MGNiMGY5ODBm
NWI4NDA1N2MyYmFlZTg5OTc5OWRmNjYuLmQ1NGQzYjAxZTVjODU1MTI4YTNmNWNhY2M0YTc4ZjNi
YTNjNzYyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCkBAIC0yNiw2ICsyNiw3IEBACiAj
ICBnc3RyZWFtZXItdmlkZW86ICAgICAgR1NUUkVBTUVSX1ZJREVPX0lOQ0xVREVfRElSUyBhbmQg
R1NUUkVBTUVSX1ZJREVPX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLWNvZGVjcGFyc2VyOkdTVFJF
QU1FUl9DT0RFQ1BBUlNFUlNfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfQ09ERUNQQVJTRVJT
X0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLWZ1bGw6ICAgICAgIEdTVFJFQU1FUl9GVUxMX0lOQ0xV
REVfRElSUyBhbmQgR1NUUkVBTUVSX0ZVTExfTElCUkFSSUVTCisjICBnc3RyZWFtZXItdHJhbnNj
b2RlcjogR1NUUkVBTUVSX1RSQU5TQ09ERVJfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfVFJB
TlNDT0RFUl9MSUJSQVJJRVMKICMKICMgQ29weXJpZ2h0IChDKSAyMDEyIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSA8cmFrdWNvQHdlYmtpdC5vcmc+CiAjCkBAIC0xMDYsNiArMTA3LDcgQEAgRklORF9H
U1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9QQlVUSUxTIGdzdHJlYW1lci1wYnV0aWxzLTEu
MCBnc3RwYnV0aWxzLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfVEFH
IGdzdHJlYW1lci10YWctMS4wIGdzdHRhZy0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQo
R1NUUkVBTUVSX1ZJREVPIGdzdHJlYW1lci12aWRlby0xLjAgZ3N0dmlkZW8tMS4wKQogRklORF9H
U1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9DT0RFQ1BBUlNFUlMgZ3N0cmVhbWVyLWNvZGVj
cGFyc2Vycy0xLjAgZ3N0Y29kZWNwYXJzZXJzLTEuMCkKK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVO
VChHU1RSRUFNRVJfVFJBTlNDT0RFUiBnc3RyZWFtZXItdHJhbnNjb2Rlci0xLjAgZ3N0dHJhbnNj
b2Rlci0xLjApCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAjIDMuIFByb2Nlc3MgdGhlIENPTVBPTkVOVFMgcGFzc2VkIHRvIEZJTkRfUEFDS0FH
RQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKaW5kZXggNzdlOTU4NDVlOTkxM2E1OTc4ZGFk
MTBjZmM0MzAwOTNiNDNjN2FhMy4uOTZmZjFkYzM0NmJjODNlZTdhZmI1MTUzYWU0MjQ1MDIwYmMx
ZTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCkBAIC00OSw2ICs0OSwxMSBAQCBp
ZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgICAgaWYgKFVTRV9H
U1RSRUFNRVJfR0wgQU5EIE5PVCBQQ19HU1RSRUFNRVJfR0xfRk9VTkQpCiAgICAgICAgICAgICAg
IG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdTdHJlYW1lckdMIGlzIG5lZWRlZCBmb3IgVVNFX0dTVFJF
QU1FUl9HTC4iKQogICAgICAgICAgIGVuZGlmICgpCisKKyAgICAgICAgICBpZiAoVVNFX0dTVFJF
QU1FUl9UUkFOU0NPREVSIEFORCAoTk9UIFBDX0dTVFJFQU1FUl9UUkFOU0NPREVSX0ZPVU5EIE9S
IFBDX0dTVFJFQU1FUl9UUkFOU0NPREVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTICIxLjIwIikpCisg
ICAgICAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdTdHJlYW1lclRyYW5zY29kZXIgPj0g
MS4yMCBpcyBuZWVkZWQgZm9yIFVTRV9HU1RSRUFNRVJfVFJBTlNDT0RFUi4iKQorICAgICAgICAg
IGVuZGlmICgpCisKICAgICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvR1N0cmVhbWVyRGVmaW5pdGlvbnMuY21ha2UgYi9Tb3VyY2UvY21ha2UvR1N0cmVh
bWVyRGVmaW5pdGlvbnMuY21ha2UKaW5kZXggMWYxYTIxM2MyMTAxMGQzMmFjYzE3ZmI5MWNiNTIw
YzFiZDIzOGVhYi4uMzk0ZjgwY2EyNDdlNTljYTM4OTk1ZTA5MTZhMTAwODQ4ZjNiNjczYyAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL0dTdHJlYW1lckRlZmluaXRpb25zLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0aW9ucy5jbWFrZQpAQCAtMTAsMyArMTAsNCBAQCBX
RUJLSVRfT1BUSU9OX0RFRklORShVU0VfR1NUUkVBTUVSX0ZVTEwgIldoZXRoZXIgdG8gZW5hYmxl
IHN1cHBvcnQgZm9yIHN0YXRpYyBHUwogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX0dTVFJFQU1F
Ul9OQVRJVkVfVklERU8gIlRvZ2dsZSBuYXRpdmUgdmlkZW8gc3VwcG9ydCBpbiBHU3RyZWFtZXIg
bWVkaWEgcGxheWVyIiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RS
RUFNRVJfTkFUSVZFX0FVRElPICJUb2dnbGUgbmF0aXZlIGF1ZGlvIHN1cHBvcnQgaW4gR1N0cmVh
bWVyIG1lZGlhIHBsYXllciIgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0Vf
R1NUUkVBTUVSX1RFWFRfU0lOSyAiVG9nZ2xlIHRleHQgc2luayBzdXBwb3J0IGluIEdTdHJlYW1l
ciBtZWRpYSBwbGF5ZXIiIFBSSVZBVEUgT04pCitXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfR1NU
UkVBTUVSX1RSQU5TQ09ERVIgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIEdTdHJlYW1l
ciBNZWRpYVJlY29yZGVyIGJhY2tlbmQiIFBSSVZBVEUgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvR1N0cmVhbWVyRGVwZW5kZW5jaWVzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1l
ckRlcGVuZGVuY2llcy5jbWFrZQppbmRleCBmNDJjN2U3MDY5NzdiZjE2YzlmMjliZjNkZTMwOGM1
ZTk2ODAyOTk2Li45MmU2MDE0YTdhOTY2MjQ3MGQwNjVlNjI2NDgwNjQ1MTQzYjI5Y2JjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVwZW5kZW5jaWVzLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9HU3RyZWFtZXJEZXBlbmRlbmNpZXMuY21ha2UKQEAgLTEsMyArMSw0IEBACiBX
RUJLSVRfT1BUSU9OX0RFUEVORChVU0VfR1NUUkVBTUVSX0dMIEVOQUJMRV9WSURFTykKIFdFQktJ
VF9PUFRJT05fREVQRU5EKFVTRV9HU1RSRUFNRVJfTVBFR1RTIEVOQUJMRV9WSURFTykKIFdFQktJ
VF9PUFRJT05fREVQRU5EKFVTRV9XUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYgVVNFX0dT
VFJFQU1FUl9HTCkKK1dFQktJVF9PUFRJT05fREVQRU5EKFVTRV9HU1RSRUFNRVJfVFJBTlNDT0RF
UiBFTkFCTEVfTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkNjIxOTNlMzU5ZTQwMzQwY2NmOWJjNTM2
ODcwYWE1YjkwM2U0NmQuLmJlMzNhOGU2MjgxMjYzZDBkMzE4YzJiNjNhZTAyZTdkNzZlMzliMDMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW5pdGlhbCBNZWRpYVJl
Y29yZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzY1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGbGFnIHRoZSByZW1haW5pbmcgTWVkaWFSZWNvcmRlciB0ZXN0IGZhaWx1
cmVzLiBUaG9zZSB3aWxsIGJlIGFkcmVzc2VkIGluIGZvbGxvdy11cCBwYXRjaGVzLgorCisgICAg
ICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9wYXVzZS1yZWNvcmRpbmcuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDItMTMgIEZ1amlp
IEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgRGVsZXRlIGZh
c3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWRpc2FibGVkLmh0bWwgYWZ0ZXIg
UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCBzZXR0aW5nIGlzIGRlbGV0ZWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvcGF1c2UtcmVjb3JkaW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL3BhdXNlLXJlY29yZGluZy5o
dG1sCmluZGV4IDU2OTMwN2QxZWIyMDU5YTQ4YTQwY2EwOWFlNzNlMWMwZDU3MjFjZDQuLjZjMTEw
YmNjYjg2ZGI4YjdiZTA4YjNmMmYwMDAxN2VhOTliMzNmYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvcGF1c2UtcmVjb3JkaW5nLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9wYXVzZS1yZWNvcmRpbmcuaHRtbApAQCAt
NTEsMTEgKzUxLDE1IEBAIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewogICAgIGF3YWl0
IHN0YXJ0UHJvbWlzZTsKIAogICAgIGF3YWl0IHdhaXRGb3IoMTAwMCk7CisKKyAgICBjb25zdCBw
YXVzZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlY29yZGVyLm9ucGF1c2UgPSBy
ZXNvbHZlKTsKICAgICByZWNvcmRlci5wYXVzZSgpOworICAgIGF3YWl0IHBhdXNlUHJvbWlzZTsK
KwogICAgIHJlY29yZGVyLnJlcXVlc3REYXRhKCk7CiAKICAgICBjb25zdCBibG9iID0gYXdhaXQg
ZGF0YVByb21pc2U7Ci0gICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihibG9iLnNpemUsIDIwMDApOwor
ICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYmxvYi5zaXplLCAxNDAwKTsKIH0sICJDYWxsaW5nIHJl
cXVlc3REYXRhIG9uY2UgYWZ0ZXIgcGF1c2luZyBzaG91bGQgbGVhZCB0byBtb3JlIHRoYW4gaGVh
ZGVyIGRhdGEiKTsKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggNzQ2NTQzY2JiOTMyYmE4ZjRkZThkYTQ4NDc4ZTMwNGVhN2Q3ODZiYS4uYTE0NDBh
MGI5Y2ZjMDgwMTVlZTg5M2Q1YWY2M2M5ODI0ZGI2ZTI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzgyLDYgKzc4MiwxOCBAQCB3ZWJraXQub3Jn
L2IvMjIxNDQ1IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3N5c3RlbS1sYW5ndWFnZS9qcC1jaXJj
bGVkLmh0bWwgWyBTawogIyBHU3RyZWFtZXItcmVsYXRlZCBidWdzCiAjLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogCit3ZWJraXQub3JnL2IvMjEzNjk5IGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIvbWltZVR5cGUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxMzY5OSBodHRw
L3dwdC9tZWRpYXJlY29yZGVyL211dGUtdHJhY2tzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8yMTM2OTkgaHR0cC93cHQvbWVkaWFyZWNvcmRlci92aWRlby1yb3RhdGlvbi5odG1sIFsg
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjEzNjk5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9NZWRpYVJlY29yZGVyLW1pbWV0eXBlLmh0bWwgWyBU
aW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8yMTM2OTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItbm8tc2luay5odHRwcy5odG1s
IFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjEzNjk5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9NZWRpYVJlY29yZGVyLXBlZXJjb25uZWN0aW9u
Lmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTM2OTkgaHR0cC93cHQvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLWF1ZGlvLWJpdHJhdGUuaHRtbCBbIEZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzIxMzY5OSBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIt
dmlkZW8tYml0cmF0ZS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjEzNjk5IGh0dHAv
d3B0L21lZGlhcmVjb3JkZXIvc2V0LXNyY09iamVjdC1NZWRpYVN0cmVhbS1CbG9iLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQorIyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVy
L2dzdHJlYW1lci8tL2lzc3Vlcy8xMDE3Cit3ZWJraXQub3JnL2IvMjEzNjk5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9NZWRpYVJlY29yZGVyLWJp
dHJhdGUuaHR0cHMuaHRtbCBbIFBhc3MgQ3Jhc2ggXQorCiB3ZWJraXQub3JnL2IvMjMwNDE1IGZh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24taWNlY29ubmVjdGlvbnN0YXRlY2hhbmdl
LWV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlci1yZXBsYWNlVHJhY2suaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzE4NzYwMyBmYXN0L21lZGlhc3RyZWFtL21lZGlhLXN0cmVhbS10cmFjay1zb3VyY2UtZmFp
bHVyZS5odG1sIFsgVGltZW91dCBGYWlsdXJlIFBhc3MgXQpAQCAtMTY0MCwxMCArMTY1Miw2IEBA
IGZhc3QvZXZlbnRzL3dlYmtpdC1tZWRpYS1rZXktZXZlbnRzLWNvbnN0cnVjdG9yLmh0bWwgWyBT
a2lwIF0KIGh0dHAvdGVzdHMvbWVkaWEvbm93LXBsYXlpbmctaW5mby1wcml2YXRlLWJyb3dzaW5n
Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbWVkaWEvbm93LXBsYXlpbmctaW5mby5odG1sIFsg
U2tpcCBdCiAKLSMgTWVkaWFSZWNvcmRlciBpcyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkCi1o
dHRwL3dwdC9tZWRpYXJlY29yZGVyIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQgWyBTa2lwIF0KLQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9lbWJlZGRlZC1j
b250ZW50LXJlbmRlcmluZy1ydWxlcy9jYW52YXMtdXBkYXRlLXdpdGgtYm9yZGVyLW9iamVjdC1m
aXQuaHRtbCBbIFBhc3MgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2Zvcm1zL3RoZS1zZWxlY3QtZWxlbWVudC9yZXNldC1hbGdvcml0aG0tcmVuZGVy
aW5nLmh0bWwgWyBQYXNzIF0KQEAgLTE4NTMsNiArMTg2MSw3IEBAIHdlYmtpdC5vcmcvYi8xOTM2
MjMgYWNjZXNzaWJpbGl0eS9zZXQtc2VsZWN0ZWQtZWRpdGFibGUuaHRtbCBbIFNraXAgXQogIyBO
byBzdXBwb3J0IGZvciBHUFVQcm9jZXNzIHlldAogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlSW5H
UFVQcm9jZXNzLmh0bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWFzdHJlYW0vdmlkZW8tcm90YXRpb24t
Z3B1LXByb2Nlc3MtY3Jhc2guaHRtbCBbIFNraXAgXQoraHR0cC93cHQvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1s
IFsgU2tpcCBdCiAKICMgUGF5bWVudCBSZXF1ZXN0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3BheW1lbnQtcmVxdWVzdCBbIFNraXAgXQpAQCAtMjMwMCw3ICsyMzA5LDYgQEAgd2Vi
a2l0Lm9yZy9iLzIwNjUyOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3JlbW90ZS1w
bGF5YmFjay9pZGxoYXJuZXNzLncKIHdlYmtpdC5vcmcvYi8yMDY1MjggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9yZW1vdGUtcGxheWJhY2svd2F0Y2gtYXZhaWxhYmlsaXR5LWluaXRp
YWwtY2FsbGJhY2suaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA2NTg2IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUt
YW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1mcm9tLXNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBb
IEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwNjU4OCBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1t
ZWRpYS1yZWNvcmRlci5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA2MDA1IGZhc3Qv
Ym94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8yMzQ1MjkgZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFkb3ctaW5zZXQt
b24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzIwNjY1MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvY29u
c3RydWN0b3IvMDExLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCA4MDQ5MzU1ZjRjYjYxZmFhOWRjYmY5ZjhkNjYzYzIzNTNlYWMxZDFjLi45
NGZjNmRiODg1MDIyYjk1OThkM2UzYWI3NzNmM2I2OTdhNzA3NmY1IDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMTMgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJd
IEluaXRpYWwgTWVkaWFSZWNvcmRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIE1lZGlhUmVjb3JkZXIgc3VwcG9y
dCBpZiBHU3RyZWFtZXIgPj0gMS4yMCBpcyBhdmFpbGFibGUuCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvRmluZEdTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvR1N0cmVh
bWVyQ2hlY2tzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0
aW9ucy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVwZW5kZW5jaWVz
LmNtYWtlOgorCiAyMDIyLTAyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgW0NNYWtlXSBDaGVjayBmb3IgTUFQX0FMSUdORUQgc3VwcG9ydAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452529</attachid>
            <date>2022-02-18 09:35:57 -0800</date>
            <delta_ts>2022-02-19 02:47:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236558-20220218093555.patch</filename>
            <type>text/plain</type>
            <size>51251</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJhMGViYzVmZWMzNGM5ZGMxZjZjODc5
NTgxZjA2NTc3MGM4ZTY4YWUuLjc4M2E2NzFiNTZjZjM2ZjMzYzVjOTg3OTQ0YzlhOTQ4MTQzOGZl
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEluaXRpYWwgTWVkaWFS
ZWNvcmRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWw6IEVuYWJsZSBNZWRpYVJlY29yZGVyIGlmIGl0IHdhcworICAgICAgICBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUgaW4gR1N0cmVhbWVyIHBvcnRzLgorCiAyMDIyLTAyLTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgYSBkZWRp
Y2F0ZWQgRU5BQkxFIGZsYWcgZm9yIE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4M2JlMWU4
YjFmM2ZjMjE4N2ZlYmY3NzZkYzQ1Y2QzOTI5YmJjNTkxLi5lMDgxNGU0ZmZmNTZkYTRjNWJlNGQ4
MWI3MzY5ZDlkNzNmY2Y3ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDIt
MTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
U3RyZWFtZXJdIEluaXRpYWwgTWVkaWFSZWNvcmRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTU4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgTWVkaWFSZWNvcmRl
ciBiYWNrZW5kIGJhc2VkIG9uIHRoZSBHU3RyZWFtZXIgVHJhbnNjb2RlciBsaWJyYXJ5LiBXZSBh
bnRpY2lwYXRlIHRoZQorICAgICAgICBzY2VuYXJpbyB3aGVyZSB0aGUgR3N0V2ViUlRDIGJhY2tl
bmQgbWlnaHQgcHJvdmlkZSBlbmNvZGVkIHN0cmVhbXMgdG8gdGhlIHJlY29yZGVyLCBpbiB3aGlj
aAorICAgICAgICBjYXNlIHRyYW5zY29kaW5nIGlzIHJlcXVpcmVkLiBUaGUgdHJhbnNjb2RlciBs
aWJyYXJ5IGNhbiBvcGVyYXRlIGluIHBhc3MtdGhyb3VnaCBhcyB3ZWxsLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6aXNUeXBlU3VwcG9y
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OmNyZWF0ZU1lZGlhUmVjb3Jk
ZXJQcml2YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcjo6
Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByb3ZpZGVyOjppc1N1cHBvcnRlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXVEY6OmFkb3B0R1JlZik6CisgICAgICAgIChXVEY6OnJlZkdQdHI8R3N0RW5jb2RpbmdQcm9m
aWxlPik6CisgICAgICAgIChXVEY6OmRlcmVmR1B0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpp
bml0aWFsaXplRW5jb2RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVy
Ojp+TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpzdG9wUmVjb3JkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpmZXRjaERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnBhdXNl
UmVjb3JkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpyZXN1bWVSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXI6Om1pbWVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjppc1R5cGVTdXBwb3J0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclByb2ZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnNldFNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0
U2luayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6
Y29uZmlndXJlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlR1N0cmVhbWVyOjpwcmVwYXJlUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NTYW1wbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeUVPUyk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAod2Via2l0TWVkaWFTdHJlYW1TcmNF
bnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKToKKyAgICAgICAgKHdlYmtpdE1lZGlhU3RyZWFt
U3JjUGFkUHJvYmVDYik6CisgICAgICAgICh3ZWJraXRNZWRpYVN0cmVhbVNyY1NpZ25hbEVuZE9m
U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKwogMjAyMi0wMi0xNiAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIGEgZGVkaWNhdGVkIEVOQUJMRSBm
bGFnIGZvciBNZWRpYVJlY29yZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IDRk
NTE5MTA5MWIyZTkxYmY1MTcxZDBmODQ5Yjk4NDJhYmVhNzU1MTcuLjE5YzExZDUxMDFjYzZjM2Rj
YWIxMTBiNTRjMWZiNjE3YzgyMjNhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBA
IC04NjIsNiArODYyLDcgQEAgTWVkaWFSZWNvcmRlckVuYWJsZWQ6CiAgICAgICBkZWZhdWx0OiBm
YWxzZQogICAgIFdlYktpdDoKICAgICAgICJQTEFURk9STShDT0NPQSkiOiB0cnVlCisgICAgICAi
VVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAg
ICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDFkNjgwMTUwZWJmOWMxMTE5YmM5NWU2MTE3NzBlZTMzNTMwMmQwMmYuLjRkNzNkNGEyOGEyNjM3
NmQyNTZlNmQzZjM5NzM2NDdjNGI5ODc2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTEs
NiArMTUxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21vY2siCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL25ldHdvcmsiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggZmU1NzJkMTllMzljZmM5ZTQwMTlh
NDBhZmYxZWU1OWM4MWEzYmJmOS4uYTkxZTY2OTAwMDQ4MzE2YTlhOTEzY2EwZDUxMjhlYWExNTFk
OWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBNZWRpYVJlY29yZGVyOjpDcmVh
dG9yRnVuY3Rpb24gTWVkaWFSZWNvcmRlcjo6bV9jdXN0b21DcmVhdG9yID0gbnVsbHB0cjsKIAog
Ym9vbCBNZWRpYVJlY29yZGVyOjppc1R5cGVTdXBwb3J0ZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHZhbHVlKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIpCiAgICAgYXV0byogcGFnZSA9IGRv
Y3VtZW50LnBhZ2UoKTsKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5tZWRpYVJlY29yZGVyUHJv
dmlkZXIoKS5pc1N1cHBvcnRlZCh2YWx1ZSk7CiAjZWxzZQpAQCAtODcsNyArODcsNyBAQCBFeGNl
cHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+PiBNZWRpYVJlY29y
ZGVyOjpjcmVhdGVNZWRpYVJlYwogICAgIGlmIChtX2N1c3RvbUNyZWF0b3IpCiAgICAgICAgIHJl
dHVybiBtX2N1c3RvbUNyZWF0b3Ioc3RyZWFtLCBvcHRpb25zKTsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIpCiAg
ICAgYXV0byByZXN1bHQgPSBwYWdlLT5tZWRpYVJlY29yZGVyUHJvdmlkZXIoKS5jcmVhdGVNZWRp
YVJlY29yZGVyUHJpdmF0ZShzdHJlYW0sIG9wdGlvbnMpOwogI2Vsc2UKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRl
ci5jcHAKaW5kZXggMDNiNDdkNzIzN2Q0NGVlZWM1YjRhMmI1NzRjYjU3M2FjNGM4ZjQwMi4uZWIx
MDkzMGQzOGNmNjgyZjdlZDg5YjcxYWZkMTRmMGIzMmUxOGU3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cm92aWRlci5jcHAKQEAgLTM1LDE1ICszNSwyMSBAQAogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5oIgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIp
CisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0
ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZShNZWRp
YVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25z
JiBvcHRpb25zKQogewogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQVZGT1VOREFUSU9OKQog
ICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZShzdHJlYW0sIG9w
dGlvbnMpOwotI2Vsc2UKLSAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgorI2lmIFVTRShHU1RS
RUFNRVJfVFJBTlNDT0RFUikKKyAgICByZXR1cm4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXI6OmNyZWF0ZShzdHJlYW0sIG9wdGlvbnMpOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIGJvb2wgTWVkaWFSZWNvcmRlclByb3ZpZGVyOjppc1N1cHBvcnRlZChjb25zdCBTdHJp
bmcmIHZhbHVlKQpAQCAtNTIsNyArNTgsNyBAQCBib29sIE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6
aXNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBDb250ZW50VHlwZSBtaW1lVHlwZSh2YWx1ZSk7Ci0KKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBtaW1lVHlwZS5jb250YWluZXJUeXBlKCk7CiAgICAg
aWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAiYXVkaW8v
bXA0IikgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUsICJ2
aWRlby9tcDQiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQsOCArNzAsMTMgQEAgYm9v
bCBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOworI2Vs
aWYgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQorICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lcjo6aXNUeXBlU3VwcG9ydGVkKG1pbWVUeXBlKTsKKyNlbHNlCisgICAgVU5V
U0VEX1ZBUklBQkxFKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KLQog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuaAppbmRleCBhMGY2ZjZiMmE2NTFhZWQ0
M2ZlMDE3YWI0MWFmNDdmZGQwOWRkNmFmLi5lYWY2OGVhZmU1ZDFhMTc2YzUzZjdhZDViZWVhNzkx
ZDRiMmQ1MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR1N0cmVhbWVyLmNtYWtlCmluZGV4IGFiOWM3MDkyZTY1ZjUxMTUyMDEzYzEyYmE0ODAy
N2ZkNzBiODI0YjQuLjFlZDdjZDI2YzM1N2I2ZDEwYmI0ZTVlZmNkYWQ4MTk5NzJmNGMxNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTMsNiArMyw3IEBAIGlm
IChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciIKICAgICAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UiCiAgICAgICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lIgorICAgICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9nc3RyZWFtZXIiCiAgICAgKQogCiAgICAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCkBAIC00NCw2ICs0NSw4IEBAIGlmIChFTkFCTEVfVklERU8g
T1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9UcmFja1F1ZXVlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAogCisgICAgICAgIHBsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisKICAgICAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcAog
CiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9Db21tb24uY3BwCkBAIC0xMDksNiArMTEyLDE1IEBAIGlmIChFTkFCTEVfVklERU8g
T1IgRU5BQkxFX1dFQl9BVURJTykKICAgICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMocGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBQ
Uk9QRVJUSUVTIENPTVBJTEVfREVGSU5JVElPTlMgIkdMSUJfRElTQUJMRV9ERVBSRUNBVElPTl9X
QVJOSU5HUz0xIikKIGVuZGlmICgpCiAKK2lmIChVU0VfR1NUUkVBTUVSX1RSQU5TQ09ERVIpCisg
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKKyAgICAgICAgJHtHU1RSRUFNRVJfVFJB
TlNDT0RFUl9MSUJSQVJJRVN9CisgICAgKQorICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU1lTVEVN
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtHU1RSRUFNRVJfVFJBTlNDT0RFUl9JTkNM
VURFX0RJUlN9CisgICAgKQorZW5kaWYgKCkKKwogaWYgKEVOQUJMRV9WSURFTykKICAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgICAgICR7R1NU
UkVBTUVSX1RBR19JTkNMVURFX0RJUlN9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKaW5k
ZXggMjNhYzEyNTc2NjIxOTdmYTRlYWM5N2E5OTdjYjVkMGZlZWU3NDM5MC4uMzEwYmVhZDcyYTQ4
Y2JkYjMzMGI0NTM3ZWUwMTA2MmFhN2IyZDAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVy
LmNwcApAQCAtNTY5LDYgKzU2OSwyOCBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxHc3RF
R0xJbWFnZT4oR3N0RUdMSW1hZ2UqIHB0cikKIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wp
CiAKK3RlbXBsYXRlIDw+CitHUmVmUHRyPEdzdEVuY29kaW5nUHJvZmlsZT4gYWRvcHRHUmVmKEdz
dEVuY29kaW5nUHJvZmlsZSogcHRyKQoreworICAgIHJldHVybiBHUmVmUHRyPEdzdEVuY29kaW5n
UHJvZmlsZT4ocHRyLCBHUmVmUHRyQWRvcHQpOworfQorCit0ZW1wbGF0ZSA8PgorR3N0RW5jb2Rp
bmdQcm9maWxlKiByZWZHUHRyPEdzdEVuY29kaW5nUHJvZmlsZT4oR3N0RW5jb2RpbmdQcm9maWxl
KiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ3N0X2VuY29kaW5nX3Byb2ZpbGVfcmVm
KHB0cik7CisKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8Pgordm9pZCBkZXJlZkdQ
dHI8R3N0RW5jb2RpbmdQcm9maWxlPihHc3RFbmNvZGluZ1Byb2ZpbGUqIHB0cikKK3sKKyAgICBp
ZiAocHRyKQorICAgICAgICBnc3RfZW5jb2RpbmdfcHJvZmlsZV91bnJlZihwdHIpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQ
dHJHU3RyZWFtZXIuaAppbmRleCAwNzhkM2M1NjM5NzRmNmEyYjNhZjFlYjgzOTg2NDk4Nzk0NWZh
N2Q4Li43YTBiNWExMWRkZmE4MTY3MDk2ODhlODEzNjZkYjdiNWIzNWQzYTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
UmVmUHRyR1N0cmVhbWVyLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQog
CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL2VuY29kaW5nLXBy
b2ZpbGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRWaWRlb1NpbmsgV2ViS2l0VmlkZW9TaW5rOwpAQCAtMTQ2LDYgKzE0NywxMCBAQCB0
ZW1wbGF0ZTw+IEdzdEVHTEltYWdlKiByZWZHUHRyPEdzdEVHTEltYWdlPihHc3RFR0xJbWFnZSog
cHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0RUdMSW1hZ2U+KEdzdEVHTEltYWdl
KiBwdHIpOwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gR1JlZlB0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+
IGFkb3B0R1JlZihHc3RFbmNvZGluZ1Byb2ZpbGUqKTsKK3RlbXBsYXRlPD4gR3N0RW5jb2RpbmdQ
cm9maWxlKiByZWZHUHRyPEdzdEVuY29kaW5nUHJvZmlsZT4oR3N0RW5jb2RpbmdQcm9maWxlKik7
Cit0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdEVuY29kaW5nUHJvZmlsZT4oR3N0RW5jb2Rp
bmdQcm9maWxlKik7CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gVVNFKEdTVFJF
QU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXgg
ODMxN2NjZDMwMWZjNDgyMzUxNmNhYzQzMjRhNzZlNWMwMjgwYzY5Yy4uNjdkN2EzMDU2OTI0MmFi
NDZlYjQxMzQ2Yzc5ZjVjMGFlOThlYWQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTQ4MCw2ICs0ODAsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZUVuY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogCiAgICAgYXV0byBoMjY0RW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZp
ZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3RyaW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2Vs
aW5lLCBoaWdoIH0iLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
WWVzKTsKICAgICBpZiAoaDI2NEVuY29kZXJBdmFpbGFibGUpIHsKKyAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImgyNjQiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
IngtaDI2NCIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygibXA0dioiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmM5YTlkZDU1ZjVhOWE2NzhiOWMwMGRhZGM0ZTQ1N2FjNWM1MzI1NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsMzY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxLCAyMDIyIElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaCIKKworI2lmIFVTRShHU1RSRUFNRVJfVFJB
TlNDT0RFUikKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVy
Q29tbW9uLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlICJHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJWaWRl
b0VuY29kZXIuaCIKKyNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaCIKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKKyNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNp
bmsuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitH
U1RfREVCVUdfQ0FURUdPUlkod2Via2l0X21lZGlhX3JlY29yZGVyX2RlYnVnKTsKKyNkZWZpbmUg
R1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9yZWNvcmRlcl9kZWJ1ZworCitzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0sIGNvbnN0IE1lZGlh
UmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBlbnN1cmVHU3RyZWFtZXJJ
bml0aWFsaXplZCgpOworICAgIHJlZ2lzdGVyV2ViS2l0R1N0cmVhbWVyRWxlbWVudHMoKTsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21lZGlh
X3JlY29yZGVyX2RlYnVnLCAid2Via2l0bWVkaWFyZWNvcmRlciIsIDAsICJXZWJLaXQgTWVkaWFT
dHJlYW0gcmVjb3JkZXIiKTsKKyAgICB9KTsKKworICAgIGF1dG8gcmVjb3JkZXIgPSBtYWtlVW5p
cXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyPihzdHJlYW0sIG9wdGlvbnMpOworICAg
IGlmICghcmVjb3JkZXItPnByZXBhcmVQaXBlbGluZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiByZWNvcmRlcjsKK30KKworTWVkaWFSZWNvcmRlclByaXZhdGVHU3Ry
ZWFtZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhU3RyZWFtUHJpdmF0ZSYg
c3RyZWFtLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCisgICAg
OiBtX3N0cmVhbShzdHJlYW0pCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30KKworTWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1l
cigpCit7CisgICAgaWYgKG1fc3JjKQorICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY1NpZ25h
bEVuZE9mU3RyZWFtKFdFQktJVF9NRURJQV9TVFJFQU1fU1JDKG1fc3JjLmdldCgpKSk7CisgICAg
aWYgKG1fdHJhbnNjb2RlcikgeworICAgICAgICBtX3BpcGVsaW5lLmNsZWFyKCk7CisgICAgICAg
IG1fdHJhbnNjb2Rlci5jbGVhcigpOworICAgIH0KK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lcjo6c3RhcnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIGlmICghbV9waXBlbGluZSkKKyAgICAgICAgcHJlcGFyZVBpcGVsaW5l
KCk7CisgICAgR1NUX0RFQlVHX09CSkVDVChtX3RyYW5zY29kZXIuZ2V0KCksICJTdGFydGluZyIp
OworICAgIGNhbGxiYWNrKFN0cmluZyhtaW1lVHlwZSgpKSwgMCwgMCk7CisgICAgZ3N0X3RyYW5z
Y29kZXJfcnVuX2FzeW5jKG1fdHJhbnNjb2Rlci5nZXQoKSk7Cit9CisKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXI6OnN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEdTVF9ERUJVR19PQkpFQ1QobV90cmFu
c2NvZGVyLmdldCgpLCAiU3RvcCByZXF1ZXN0ZWQsIHB1c2hpbmcgRU9TIGV2ZW50Iik7CisKKyAg
ICBhdXRvIHNjb3BlRXhpdCA9IG1ha2VTY29wZUV4aXQoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIG1fcGlw
ZWxpbmUuY2xlYXIoKTsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChtX3RyYW5zY29kZXIuZ2V0
KCksICJTdG9wcGluZyIpOworICAgICAgICBtX3RyYW5zY29kZXIuY2xlYXIoKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKKworICAgIGlmICghbV9wb3NpdGlvbikgewor
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwgIlRyYW5zY29kZXIg
aGFzIG5vdCBzdGFydGVkIHlldCwgbm8gbmVlZCBmb3IgRU9TIGV2ZW50Iik7CisgICAgICAgIG1f
ZW9zID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3ZWJraXRNZWRpYVN0cmVh
bVNyY1NpZ25hbEVuZE9mU3RyZWFtKFdFQktJVF9NRURJQV9TVFJFQU1fU1JDKG1fc3JjLmdldCgp
KSk7CisKKyAgICBib29sIGlzRU9TID0gZmFsc2U7CisgICAgd2hpbGUgKCFpc0VPUykgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9lb3NMb2NrKTsKKyAgICAgICAgbV9lb3NDb25kaXRpb24u
d2FpdEZvcihtX2Vvc0xvY2ssIDIwMF9tcywgW3dlYWtUaGlzID0gV2Vha1B0ciB7IHRoaXMgfV0o
KSAtPiBib29sIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gd2Vha1RoaXMtPm1fZW9zOworICAgICAg
ICB9KTsKKyAgICAgICAgaXNFT1MgPSBtX2VvczsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXI6OmZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CisgICAg
R1NUX0RFQlVHX09CSkVDVChtX3RyYW5zY29kZXIuZ2V0KCksICJUcmFuc2ZlcmluZyAlenUgZW5j
b2RlZCBieXRlcyIsIG1fZGF0YS5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhLnRh
a2UoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlKCks
IG1fcG9zaXRpb24pOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpw
YXVzZVJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgR1NUX0lORk9fT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwgIlBhdXNpbmci
KTsKKyAgICBpZiAobV9waXBlbGluZSkKKyAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1f
cGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOworCisgICAgYXV0byBzZWxlY3RlZFRy
YWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3Moc3RyZWFtKCkpOworICAg
IGlmIChzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrKQorICAgICAgICBzZWxlY3RlZFRyYWNrcy5h
dWRpb1RyYWNrLT5zZXRNdXRlZCh0cnVlKTsKKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MudmlkZW9U
cmFjaykKKyAgICAgICAgc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjay0+c2V0TXV0ZWQodHJ1ZSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcjo6cmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBHU1RfSU5GT19PQkpFQ1QobV90cmFuc2NvZGVyLmdl
dCgpLCAiUmVzdW1pbmciKTsKKyAgICBhdXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRl
clByaXZhdGU6OnNlbGVjdFRyYWNrcyhzdHJlYW0oKSk7CisgICAgaWYgKHNlbGVjdGVkVHJhY2tz
LmF1ZGlvVHJhY2spCisgICAgICAgIHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2stPnNldE11dGVk
KGZhbHNlKTsKKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjaykKKyAgICAgICAgc2Vs
ZWN0ZWRUcmFja3MudmlkZW9UcmFjay0+c2V0TXV0ZWQoZmFsc2UpOworICAgIGlmIChtX3BpcGVs
aW5lKQorICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NU
X1NUQVRFX1BMQVlJTkcpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK2NvbnN0IFN0
cmluZyYgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6Om1pbWVUeXBlKCkgY29uc3QKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBNUDRBVURJT01JTUVUWVBF
KE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJhdWRpby9tcDQiKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gTVA0VklERU9NSU1FVFlQRShNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgidmlkZW8vbXA0IikpOworCisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlh
UmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3MobV9zdHJlYW0pOworICAgIHJldHVybiBzZWxl
Y3RlZFRyYWNrcy52aWRlb1RyYWNrID8gTVA0VklERU9NSU1FVFlQRSA6IE1QNEFVRElPTUlNRVRZ
UEU7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmlzVHlwZVN1cHBv
cnRlZChjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUpCit7CisgICAgYXV0byYgc2Nhbm5l
ciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CisgICAgcmV0dXJuIHNj
YW5uZXIuaXNDb250ZW50VHlwZVN1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNv
bmZpZ3VyYXRpb246OkVuY29kaW5nLCBjb250ZW50VHlwZSwgeyB9KSA+IE1lZGlhUGxheWVyRW51
bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7Cit9CisKK0dSZWZQdHI8R3N0RW5jb2Rp
bmdDb250YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFp
bmVyUHJvZmlsZSgpCit7CisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQ
cml2YXRlOjpzZWxlY3RUcmFja3MobV9zdHJlYW0pOworICAgIGF1dG8gbWltZVR5cGUgPSB0aGlz
LT5taW1lVHlwZSgpOworICAgIGlmICghbWltZVR5cGUpCisgICAgICAgIG1pbWVUeXBlID0gc2Vs
ZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/ICJ2aWRlby9tcDQiIDogImF1ZGlvL21wNCI7CisKKyAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOworICAgIGF1dG8mIHNjYW5uZXIgPSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OnNpbmdsZXRvbigpOworICAgIGlmIChzY2FubmVyLmlzQ29udGVudFR5cGVTdXBwb3J0ZWQo
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpFbmNvZGluZywgY29udGVu
dFR5cGUsIHsgfSkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBv
cnRlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBjaGFyKiBjb250YWlu
ZXJDYXBzRGVzY3JpcHRpb24gPSAiIjsKKyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBjb250ZW50
VHlwZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIm1w
NCJfcykpCisgICAgICAgIGNvbnRhaW5lckNhcHNEZXNjcmlwdGlvbiA9ICJ2aWRlby9xdWlja3Rp
bWUsIHZhcmlhbnQ9aXNvIjsKKyAgICBlbHNlCisgICAgICAgIGNvbnRhaW5lckNhcHNEZXNjcmlw
dGlvbiA9IGNvbnRhaW5lclR5cGUudXRmOCgpLmRhdGEoKTsKKworICAgIGF1dG8gY29udGFpbmVy
Q2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19mcm9tX3N0cmluZyhjb250YWluZXJDYXBzRGVzY3Jp
cHRpb24pKTsKKyAgICBhdXRvIHByb2ZpbGUgPSBhZG9wdEdSZWYoZ3N0X2VuY29kaW5nX2NvbnRh
aW5lcl9wcm9maWxlX25ldyhudWxscHRyLCBudWxscHRyLCBjb250YWluZXJDYXBzLmdldCgpLCBu
dWxscHRyKSk7CisKKyAgICBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgibXA0Il9zKSkKKyAg
ICAgICAgZ3N0X2VuY29kaW5nX3Byb2ZpbGVfc2V0X2VsZW1lbnRfcHJvcGVydGllcyhHU1RfRU5D
T0RJTkdfUFJPRklMRShwcm9maWxlLmdldCgpKSwgZ3N0X3N0cnVjdHVyZV9mcm9tX3N0cmluZygi
ZWxlbWVudC1wcm9wZXJ0aWVzLW1hcCwgbWFwPXtbbXA0bXV4LGZyYWdtZW50LWR1cmF0aW9uPTEw
MDAsZnJhZ21lbnQtbW9kZT0wLHN0cmVhbWFibGU9MCxmb3JjZS1jcmVhdGUtdGltZWNvZGUtdHJh
az0xXX0iLCBudWxscHRyKSk7CisKKyAgICBhdXRvIGNvZGVjcyA9IGNvbnRlbnRUeXBlLmNvZGVj
cygpOworICAgIC8vIFRPRE86IEhhbmRsZSBwcm9maWxlcy4KKyAgICBpZiAoc2VsZWN0ZWRUcmFj
a3MudmlkZW9UcmFjaykgeworICAgICAgICBTdHJpbmcgdmlkZW9DYXBzTmFtZTsKKyAgICAgICAg
aWYgKGNvZGVjcy5jb250YWlucygidnA4Il9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUg
PSAidmlkZW8veC12cDgiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygidnA5
Il9zKSkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC12cDkiX3M7CisgICAg
ICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygiYXYxIl9zKSkKKyAgICAgICAgICAgIHZpZGVv
Q2Fwc05hbWUgPSAidmlkZW8veC1hdjEiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5k
SWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoImF2YzEiX3MpOyB9
KSAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1oMjY0
Il9zOworICAgICAgICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIl9zKSkK
KyAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC12cDgiX3M7CisgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCJfcykpCisgICAgICAgICAgICB2aWRl
b0NhcHNOYW1lID0gInZpZGVvL3gtaDI2NCJfczsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBHU1RfV0FSTklORygiVmlkZW8gY29kZWMgZm9yICVzIG5vdCBzdXBwb3J0ZWQiLCBjb250ZW50
VHlwZS5yYXcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXZpZGVvQ2Fwc05hbWUuaXNFbXB0
eSgpKTsKKyAgICAgICAgYXV0byB2aWRlb0NhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X2Vt
cHR5X3NpbXBsZSh2aWRlb0NhcHNOYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgR1NUX0RF
QlVHKCJDcmVhdGluZyB2aWRlbyBlbmNvZGluZyBwcm9maWxlIGZvciBjYXBzICUiIEdTVF9QVFJf
Rk9STUFULCB2aWRlb0NhcHMuZ2V0KCkpOworICAgICAgICBtX3ZpZGVvRW5jb2RpbmdQcm9maWxl
ID0gYWRvcHRHUmVmKEdTVF9FTkNPRElOR19QUk9GSUxFKGdzdF9lbmNvZGluZ192aWRlb19wcm9m
aWxlX25ldyh2aWRlb0NhcHMuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDEpKSk7CisgICAgICAg
IGdzdF9lbmNvZGluZ19jb250YWluZXJfcHJvZmlsZV9hZGRfcHJvZmlsZShwcm9maWxlLmdldCgp
LCBtX3ZpZGVvRW5jb2RpbmdQcm9maWxlLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZWN0
ZWRUcmFja3MuYXVkaW9UcmFjaykgeworICAgICAgICBTdHJpbmcgYXVkaW9DYXBzTmFtZTsKKyAg
ICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKKyAgICAgICAgICAgIGF1ZGlv
Q2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5j
b250YWlucygib3B1cyJfcykpCisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gt
b3B1cyI7CisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsg
cmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiX3MpOyB9KSAhPSBub3RGb3VuZCkKKyAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKKyAg
ICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSJfcykpCisgICAgICAg
ICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOworICAgICAgICBlbHNlIGlm
IChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgICAgICAgICAgYXVkaW9DYXBz
TmFtZSA9ICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj00Il9zOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIEdTVF9XQVJOSU5HKCJBdWRpbyBjb2RlYyBmb3IgJXMgbm90IHN1cHBvcnRlZCIs
IGNvbnRlbnRUeXBlLnJhdygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVCghYXVkaW9DYXBzTmFt
ZS5pc0VtcHR5KCkpOworICAgICAgICBhdXRvIGF1ZGlvQ2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fw
c19mcm9tX3N0cmluZyhhdWRpb0NhcHNOYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgR1NU
X0RFQlVHKCJDcmVhdGluZyBhdWRpbyBlbmNvZGluZyBwcm9maWxlIGZvciBjYXBzICUiIEdTVF9Q
VFJfRk9STUFULCBhdWRpb0NhcHMuZ2V0KCkpOworICAgICAgICBtX2F1ZGlvRW5jb2RpbmdQcm9m
aWxlID0gYWRvcHRHUmVmKEdTVF9FTkNPRElOR19QUk9GSUxFKGdzdF9lbmNvZGluZ19hdWRpb19w
cm9maWxlX25ldyhhdWRpb0NhcHMuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDEpKSk7CisgICAg
ICAgIGdzdF9lbmNvZGluZ19jb250YWluZXJfcHJvZmlsZV9hZGRfcHJvZmlsZShwcm9maWxlLmdl
dCgpLCBtX2F1ZGlvRW5jb2RpbmdQcm9maWxlLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cHJvZmlsZTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U291
cmNlKEdzdEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1l
ZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3Moc3RyZWFtKCkpOworICAgIGJvb2wgb25s
eVRyYWNrID0gKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2sgJiYgIXNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2spIHx8IChzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrICYmICFzZWxlY3RlZFRyYWNr
cy5hdWRpb1RyYWNrKTsKKyAgICBhdXRvKiBzcmMgPSBXRUJLSVRfTUVESUFfU1RSRUFNX1NSQyhl
bGVtZW50KTsKKyAgICBpZiAoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaykgeworICAgICAgICB3
ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNrKHNyYywgc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFj
aywgb25seVRyYWNrKTsKKyAgICAgICAgc2V0QXVkaW9Tb3VyY2UoJnNlbGVjdGVkVHJhY2tzLmF1
ZGlvVHJhY2stPnNvdXJjZSgpKTsKKyAgICAgICAgY2hlY2tUcmFja1N0YXRlKCpzZWxlY3RlZFRy
YWNrcy5hdWRpb1RyYWNrKTsKKyAgICB9CisgICAgaWYgKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJh
Y2spIHsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhzcmMsIHNlbGVjdGVk
VHJhY2tzLnZpZGVvVHJhY2ssIG9ubHlUcmFjayk7CisgICAgICAgIHNldFZpZGVvU291cmNlKCZz
ZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrLT5zb3VyY2UoKSk7CisgICAgICAgIGNoZWNrVHJhY2tT
dGF0ZSgqc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayk7CisgICAgfQorICAgIG1fc3JjID0gZWxl
bWVudDsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U2luayhH
c3RFbGVtZW50KiBlbGVtZW50KQoreworICAgIHN0YXRpYyBHc3RBcHBTaW5rQ2FsbGJhY2tzIGNh
bGxiYWNrcyA9IHsKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgW10oR3N0QXBwU2luayogc2lu
aywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdEZsb3dSZXR1cm4geworICAgICAgICAgICAgYXV0
byBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2FwcF9zaW5rX3B1bGxfcHJlcm9sbChzaW5rKSk7Cisg
ICAgICAgICAgICBpZiAoc2FtcGxlKQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lZGlh
UmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyKj4odXNlckRhdGEpLT5wcm9jZXNzU2FtcGxlKFdURk1v
dmUoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gZ3N0X2FwcF9zaW5rX2lzX2VvcyhzaW5r
KSA/IEdTVF9GTE9XX0VPUyA6IEdTVF9GTE9XX09LOworICAgICAgICB9LAorICAgICAgICBbXShH
c3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0Rmxvd1JldHVybiB7Cisg
ICAgICAgICAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfcHVsbF9zYW1w
bGUoc2luaykpOworICAgICAgICAgICAgaWYgKHNhbXBsZSkKKyAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcio+KHVzZXJEYXRhKS0+cHJvY2Vz
c1NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpOworICAgICAgICAgICAgcmV0dXJuIGdzdF9hcHBfc2lu
a19pc19lb3Moc2luaykgPyBHU1RfRkxPV19FT1MgOiBHU1RfRkxPV19PSzsKKyAgICAgICAgfSwK
KyAgICAgICAgLy8gbmV3X2V2ZW50CisgICAgICAgIG51bGxwdHIsCisgICAgICAgIHsgbnVsbHB0
ciB9CisgICAgfTsKKyAgICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJTkso
ZWxlbWVudCksICZjYWxsYmFja3MsIHRoaXMsIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChl
bGVtZW50LCAiZW5hYmxlLWxhc3Qtc2FtcGxlIiwgRkFMU0UsICJtYXgtYnVmZmVycyIsIDEsICJh
c3luYyIsIEZBTFNFLCBudWxscHRyKTsKKyAgICBtX3NpbmsgPSBlbGVtZW50OworfQorCit2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVWaWRlb0VuY29kZXIoR3N0
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBhdXRvIGZvcm1hdCA9IGFkb3B0R1JlZihnc3RfZW5j
b2RpbmdfcHJvZmlsZV9nZXRfZm9ybWF0KEdTVF9FTkNPRElOR19QUk9GSUxFKG1fdmlkZW9FbmNv
ZGluZ1Byb2ZpbGUuZ2V0KCkpKSk7CisgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJmb3JtYXQi
LCBmb3JtYXQuZ2V0KCksIG51bGxwdHIpOworCisgICAgYXV0byBiaXRyYXRlID0gW29wdGlvbnMg
PSBtX29wdGlvbnNdKCkgLT4gdW5zaWduZWQgeworICAgICAgICBpZiAob3B0aW9ucy52aWRlb0Jp
dHNQZXJTZWNvbmQpCisgICAgICAgICAgICByZXR1cm4gKm9wdGlvbnMudmlkZW9CaXRzUGVyU2Vj
b25kOworICAgICAgICBpZiAob3B0aW9ucy5iaXRzUGVyU2Vjb25kKQorICAgICAgICAgICAgcmV0
dXJuICpvcHRpb25zLmJpdHNQZXJTZWNvbmQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0oKTsK
KworICAgIGlmIChiaXRyYXRlKQorICAgICAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgImJpdHJh
dGUiLCBiaXRyYXRlIC8gMTAyNCwgbnVsbHB0cik7Cit9CisKK2Jvb2wgTWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXI6OnByZXBhcmVQaXBlbGluZSgpCit7CisgICAgYXV0byBwcm9maWxlID0g
Y29udGFpbmVyUHJvZmlsZSgpOworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgbV90cmFuc2NvZGVyID0gYWRvcHRHUmVmKGdzdF90cmFuc2NvZGVyX25ld19m
dWxsKCJtZWRpYXN0cmVhbTovLyIsICJhcHBzaW5rOi8vIiwgR1NUX0VOQ09ESU5HX1BST0ZJTEUo
cHJvZmlsZS5nZXQoKSkpKTsKKyAgICBnc3RfdHJhbnNjb2Rlcl9zZXRfYXZvaWRfcmVlbmNvZGlu
ZyhtX3RyYW5zY29kZXIuZ2V0KCksIHRydWUpOworICAgIG1fcGlwZWxpbmUgPSBnc3RfdHJhbnNj
b2Rlcl9nZXRfcGlwZWxpbmUobV90cmFuc2NvZGVyLmdldCgpKTsKKworICAgIGdfc2lnbmFsX2Nv
bm5lY3Rfc3dhcHBlZChtX3BpcGVsaW5lLmdldCgpLCAic291cmNlLXNldHVwIiwgR19DQUxMQkFD
SygrW10oTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIqIHJlY29yZGVyLCBHc3RFbGVtZW50
KiBzb3VyY2VFbGVtZW50KSB7CisgICAgICAgIHJlY29yZGVyLT5zZXRTb3VyY2Uoc291cmNlRWxl
bWVudCk7CisgICAgfSksIHRoaXMpOworCisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1f
cGlwZWxpbmUuZ2V0KCksICJlbGVtZW50LXNldHVwIiwgR19DQUxMQkFDSygrW10oTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXIqIHJlY29yZGVyLCBHc3RFbGVtZW50KiBlbGVtZW50KSB7Cisg
ICAgICAgIGlmIChXRUJLSVRfSVNfV0VCUlRDX1ZJREVPX0VOQ09ERVIoZWxlbWVudCkpIHsKKyAg
ICAgICAgICAgIHJlY29yZGVyLT5jb25maWd1cmVWaWRlb0VuY29kZXIoZWxlbWVudCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIUdTVF9JU19BUFBfU0lO
SyhlbGVtZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZWNvcmRlci0+c2V0
U2luayhlbGVtZW50KTsKKyAgICB9KSwgdGhpcyk7CisKKyAgICBtX3NpZ25hbEFkYXB0ZXIgPSBh
ZG9wdEdSZWYoZ3N0X3RyYW5zY29kZXJfZ2V0X3N5bmNfc2lnbmFsX2FkYXB0ZXIobV90cmFuc2Nv
ZGVyLmdldCgpKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3NpZ25hbEFkYXB0ZXIuZ2V0KCks
ICJ3YXJuaW5nIiwgR19DQUxMQkFDSygrW10oR3N0VHJhbnNjb2RlciosIEdFcnJvciogZXJyb3Is
IEdzdFN0cnVjdHVyZSogZGV0YWlscykgeworICAgICAgICBHU1RfV0FSTklORygiJXMgZGV0YWls
czogJSIgR1NUX1BUUl9GT1JNQVQsIGVycm9yLT5tZXNzYWdlLCBkZXRhaWxzKTsKKyAgICB9KSwg
bnVsbHB0cik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9zaWduYWxBZGFwdGVy
LmdldCgpLCAiZG9uZSIsIEdfQ0FMTEJBQ0soK1tdKE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyKiByZWNvcmRlcikgeworICAgICAgICByZWNvcmRlci0+bm90aWZ5RU9TKCk7CisgICAgfSks
IHRoaXMpOworCisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2lnbmFsQWRhcHRlci5n
ZXQoKSwgInBvc2l0aW9uLXVwZGF0ZWQiLCBHX0NBTExCQUNLKCtbXShNZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lciogcmVjb3JkZXIsIEdzdENsb2NrVGltZSBwb3NpdGlvbikgeworICAgICAg
ICByZWNvcmRlci0+bm90aWZ5UG9zaXRpb24ocG9zaXRpb24pOworICAgIH0pLCB0aGlzKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVy
Ojpwcm9jZXNzU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKK3sKKyAgICBhdXRv
KiBzYW1wbGVCdWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKTsKKyAg
ICBHc3RNYXBwZWRCdWZmZXIgYnVmZmVyKHNhbXBsZUJ1ZmZlciwgR1NUX01BUF9SRUFEKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OworCisgICAgR1NUX0xPR19PQkpFQ1QobV90
cmFuc2NvZGVyLmdldCgpLCAiUXVldWVpbmcgJXp1IGJ5dGVzIG9mIGVuY29kZWQgZGF0YSwgY2Fw
czogJSIgR1NUX1BUUl9GT1JNQVQsIGJ1ZmZlci5zaXplKCksIGdzdF9zYW1wbGVfZ2V0X2NhcHMo
c2FtcGxlLmdldCgpKSk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5
RU9TKCkKK3sKKyAgICBHU1RfREVCVUcoIkVPUyByZWNlaXZlZCIpOworICAgIExvY2tIb2xkZXIg
bG9jayhtX2Vvc0xvY2spOworICAgIG1fZW9zID0gdHJ1ZTsKKyAgICBtX2Vvc0NvbmRpdGlvbi5u
b3RpZnlBbGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNF
KEdTVFJFQU1FUl9UUkFOU0NPREVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJl
YW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjljOTUzNjc3NmI0MzEzY2QxOGE1MjgxMGNlMWYzNTUzNDdjOTgx
YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSwgMjAyMiBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIpCisKKyNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVy
LmgiCisjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGUuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlIDxnc3QvdHJhbnNjb2Rlci9nc3R0cmFuc2NvZGVyLmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRl
bnRUeXBlOworY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CitzdHJ1Y3QgTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zOworCitjbGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1l
ciBmaW5hbCA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFr
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3Qg
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJik7CisgICAgZXhwbGljaXQgTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIoTWVkaWFTdHJlYW1Qcml2YXRlJiwgY29uc3QgTWVkaWFSZWNvcmRl
clByaXZhdGVPcHRpb25zJik7CisgICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyKCk7
CisKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVudFR5cGUmKTsK
KworcHJvdGVjdGVkOgorICAgIGJvb2wgcHJlcGFyZVBpcGVsaW5lKCk7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvU2FtcGxlTWV0
YWRhdGEpIGZpbmFsIHsgfTsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBX
VEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWwgeyB9OworCisgICAgdm9pZCBmZXRjaERhdGEo
RmV0Y2hEYXRhQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFy
dFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcGF1c2VSZWNvcmRpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZVJlY29y
ZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgc2V0U291cmNlKEdzdEVsZW1l
bnQqKTsKKyAgICB2b2lkIHNldFNpbmsoR3N0RWxlbWVudCopOworICAgIHZvaWQgY29uZmlndXJl
VmlkZW9FbmNvZGVyKEdzdEVsZW1lbnQqKTsKKworICAgIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBjb250YWluZXJQcm9maWxlKCk7CisgICAgTWVkaWFTdHJlYW1Qcml2YXRl
JiBzdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbTsgfQorICAgIHZvaWQgcHJvY2Vzc1Nh
bXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7CisgICAgdm9pZCBub3RpZnlQb3NpdGlvbihHc3RD
bG9ja1RpbWUgcG9zaXRpb24pIHsgbV9wb3NpdGlvbiA9IEdTVF9USU1FX0FTX1NFQ09ORFMocG9z
aXRpb24pOyB9CisgICAgdm9pZCBub3RpZnlFT1MoKTsKKworICAgIEdSZWZQdHI8R3N0RW5jb2Rp
bmdQcm9maWxlPiBtX2F1ZGlvRW5jb2RpbmdQcm9maWxlOworICAgIEdSZWZQdHI8R3N0RW5jb2Rp
bmdQcm9maWxlPiBtX3ZpZGVvRW5jb2RpbmdQcm9maWxlOworICAgIEdSZWZQdHI8R3N0VHJhbnNj
b2Rlcj4gbV90cmFuc2NvZGVyOworICAgIEdSZWZQdHI8R3N0VHJhbnNjb2RlclNpZ25hbEFkYXB0
ZXI+IG1fc2lnbmFsQWRhcHRlcjsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7
CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3NyYzsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+
IG1fc2luazsKKyAgICBDb25kaXRpb24gbV9lb3NDb25kaXRpb247CisgICAgTG9jayBtX2Vvc0xv
Y2s7CisgICAgYm9vbCBtX2VvcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZW9zTG9jayk7CisgICAg
ZG91YmxlIG1fcG9zaXRpb24geyAwIH07CisKKyAgICBMb2NrIG1fZGF0YUxvY2s7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsK
KworICAgIE1lZGlhU3RyZWFtUHJpdmF0ZSYgbV9zdHJlYW07CisgICAgY29uc3QgTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zJiBtX29wdGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAppbmRleCA5OTU0ZmE2NTgz
MTNhOWE0NWE1MmUzY2Y3NjFmMTAxZjM0ZDlhYWQ1Li4yMzk1MDA2OWVhZWY5OTIyMjUwNmJhNzZm
NjgyMjlmZmE1MjkwNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YVN0cmVhbVNvdXJjZS5jcHAKQEAgLTExOCw2ICsxMTgsOCBAQCBwcml2YXRlOgogICAgIEdzdEVs
ZW1lbnQqIG1fc3JjOwogfTsKIAorc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNFbnN1
cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKFdlYktpdE1lZGlhU3RyZWFtU3JjKik7CisKIGNsYXNz
IEludGVybmFsU291cmNlIGZpbmFsIDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciwKICAgICBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNl
cnZlciwKICAgICBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZl
ciB7CkBAIC0xMzIsMTEgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICh0cmFjay5oYXNB
dWRpbygpKSB7CiAgICAgICAgICAgICBtX2F1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtOjpjcmVhdGUodHJhY2spOwogICAgICAgICAgICAgZWxlbWVudE5hbWUgPSAiYXVk
aW9zcmMiOwotICAgICAgICB9IGVsc2UgaWYgKHRyYWNrLmhhc1ZpZGVvKCkpIHsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRyYWNrLmhhc1ZpZGVvKCkpOwog
ICAgICAgICAgICAgbV92aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIGVsZW1lbnROYW1lID0gInZpZGVvc3JjIjsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgaXNDYXB0dXJlVHJhY2sgPSB0cmFjay5pc0NhcHR1cmVUcmFjaygp
OwogICAgICAgICBtX3NyYyA9IG1ha2VHU3RyZWFtZXJFbGVtZW50KCJhcHBzcmMiLCBlbGVtZW50
TmFtZSk7CkBAIC0xODQsNiArMTg2LDcgQEAgcHVibGljOgogCiAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QobV9zcmMuZ2V0KCksICJTdG9wcGluZyB0cmFjay9zb3VyY2Ugb2JzZXJ2YXRpb24iKTsK
ICAgICAgICAgbV9pc09ic2VydmluZyA9IGZhbHNlOworCiAgICAgICAgIGlmIChtX3RyYWNrLmhh
c0F1ZGlvKCkpCiAgICAgICAgICAgICBtX3RyYWNrLnNvdXJjZSgpLnJlbW92ZUF1ZGlvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBlbHNlIGlmIChtX3RyYWNrLmhhc1ZpZGVvKCkpCkBA
IC0xOTYsMTcgKzE5OSwyOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3RyYWNrLmhhc0F1
ZGlvKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2stPnNldFZvbHVtZSh2b2x1bWUpOwogICAgICAg
ICBtX2F1ZGlvVHJhY2stPnNldE11dGVkKGlzTXV0ZWQpOwotICAgICAgICBtX2F1ZGlvVHJhY2st
PnNldEVuYWJsZWQobV9hdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSAmJiAhbV9h
dWRpb1RyYWNrLT5zdHJlYW1UcmFjaygpLm11dGVkKCkpOworICAgICAgICBtX2F1ZGlvVHJhY2st
PnNldEVuYWJsZWQobV9hdWRpb1RyYWNrLT5zdHJlYW1UcmFjaygpLmVuYWJsZWQoKSk7CiAgICAg
ICAgIGlmIChpc1BsYXlpbmcpCiAgICAgICAgICAgICBtX2F1ZGlvVHJhY2stPnBsYXkoKTsKICAg
ICB9CiAKKyAgICB2b2lkIHNpZ25hbEVuZE9mU3RyZWFtKCkKKyAgICB7CisgICAgICAgIGlmICht
X3NyYykKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0oR1NUX0FQUF9TUkMo
bV9zcmMuZ2V0KCkpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKKyAg
ICAgICAgICAgIHN0b3BPYnNlcnZpbmcoKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgdm9p
ZCBwdXNoU2FtcGxlKEdzdFNhbXBsZSogc2FtcGxlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
c3JjKTsKLSAgICAgICAgaWYgKCFtX3NyYykKKyAgICAgICAgaWYgKCFtX3NyYyB8fCAhbV9pc09i
c2VydmluZykKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBhdXRvKiBwYXJlbnQgPSBX
RUJLSVRfTUVESUFfU1RSRUFNX1NSQyhtX3BhcmVudCk7CisgICAgICAgIHdlYmtpdE1lZGlhU3Ry
ZWFtU3JjRW5zdXJlU3RyZWFtQ29sbGVjdGlvblBvc3RlZChwYXJlbnQpOworCiAgICAgICAgIGJv
b2wgZHJvcCA9IG1fZW5vdWdoRGF0YTsKICAgICAgICAgYXV0byogYnVmZmVyID0gZ3N0X3NhbXBs
ZV9nZXRfYnVmZmVyKHNhbXBsZSk7CiAgICAgICAgIGF1dG8qIGNhcHMgPSBnc3Rfc2FtcGxlX2dl
dF9jYXBzKHNhbXBsZSk7CkBAIC0yNTMsNyArMjY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB2
aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFk
YXRhKSBmaW5hbAogICAgIHsKLSAgICAgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAgaWYgKCFt
X3BhcmVudCB8fCAhbV9pc09ic2VydmluZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBhdXRvIHNhbXBsZVNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOwpAQCAtMjk4LDEy
ICszMTMsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWwKICAgICB7Ci0gICAgICAgIC8v
IFRPRE86IFdlIGxpa2VseSBuZWVkIHRvIGVtaXQgc2lsZW50IGF1ZGlvIGZyYW1lcyBpbiBjYXNl
IHRoZSB0cmFjayBpcyBkaXNhYmxlZC4KLSAgICAgICAgaWYgKCFtX3RyYWNrLmVuYWJsZWQoKSB8
fCAhbV9wYXJlbnQpCisgICAgICAgIGlmICghbV9wYXJlbnQpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgY29uc3QgYXV0byYgZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IEdTdHJlYW1l
ckF1ZGlvRGF0YSY+KGF1ZGlvRGF0YSk7CiAgICAgICAgIGF1dG8gc2FtcGxlID0gZGF0YS5nZXRT
YW1wbGUoKTsKKyAgICAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJl
YWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zOwogICAgICAgICBwdXNoU2FtcGxlKHNh
bXBsZS5nZXQoKSk7CiAgICAgfQogCkBAIC0zNjUsNiArMzgwLDcgQEAgc3RydWN0IF9XZWJLaXRN
ZWRpYVN0cmVhbVNyY1ByaXZhdGUgewogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+PiB0cmFja3M7CiAgICAgR1VuaXF1ZVB0cjxHc3RGbG93Q29tYmluZXI+IGZsb3dD
b21iaW5lcjsKICAgICBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24+IHN0cmVhbUNvbGxlY3Rp
b247CisgICAgQXRvbWljPGJvb2w+IHN0cmVhbUNvbGxlY3Rpb25Qb3N0ZWQ7CiAgICAgQXRvbWlj
PHVuc2lnbmVkPiBhdWRpb1BhZENvdW50ZXI7CiAgICAgQXRvbWljPHVuc2lnbmVkPiB2aWRlb1Bh
ZENvdW50ZXI7CiB9OwpAQCAtNTc3LDYgKzU5MywxOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRNZWRp
YVN0cmVhbVNyY1Bvc3RTdHJlYW1Db2xsZWN0aW9uKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxm
KQogICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNlbGYpLCBn
c3RfbWVzc2FnZV9uZXdfc3RyZWFtX2NvbGxlY3Rpb24oR1NUX09CSkVDVF9DQVNUKHNlbGYpLCBw
cml2LT5zdHJlYW1Db2xsZWN0aW9uLmdldCgpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdE1l
ZGlhU3RyZWFtU3JjRW5zdXJlU3RyZWFtQ29sbGVjdGlvblBvc3RlZChXZWJLaXRNZWRpYVN0cmVh
bVNyYyogc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+cHJpdi0+c3RyZWFtQ29sbGVjdGlvblBvc3Rl
ZC5sb2FkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbGYtPnByaXYtPnN0cmVhbUNvbGxl
Y3Rpb25Qb3N0ZWQuc3RvcmUodHJ1ZSk7CisgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiUG9z
dGluZyBzdHJlYW0gY29sbGVjdGlvbiIpOworICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFtl
bGVtZW50ID0gR1JlZlB0cjxHc3RFbGVtZW50PihHU1RfRUxFTUVOVF9DQVNUKHNlbGYpKV0gewor
ICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY1Bvc3RTdHJlYW1Db2xsZWN0aW9uKFdFQktJVF9N
RURJQV9TVFJFQU1fU1JDX0NBU1QoZWxlbWVudC5nZXQoKSkpOworICAgIH0pOworICAgIEdTVF9E
RUJVR19PQkpFQ1Qoc2VsZiwgIlN0cmVhbSBjb2xsZWN0aW9uIHBvc3RlZCIpOworfQorCiBzdGF0
aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFBhZChXZWJLaXRNZWRpYVN0cmVhbVNyYyog
c2VsZiwgR3N0UGFkKiB0YXJnZXQsIEdzdFN0YXRpY1BhZFRlbXBsYXRlKiBwYWRUZW1wbGF0ZSwg
R1JlZlB0cjxHc3RUYWdMaXN0PiYmIHRhZ3MsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291
cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBwYWROYW1lKQogewogICAgIEFTU0VSVChzb3VyY2VUeXBl
ICE9IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmUpOwpAQCAtNjM1LDkgKzY2NCw2IEBA
IHN0YXRpYyBHc3RQYWRQcm9iZVJldHVybiB3ZWJraXRNZWRpYVN0cmVhbVNyY1BhZFByb2JlQ2Io
R3N0UGFkKiBwYWQsIEdzdFBhZFByb2JlCiAgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudChwYWQs
IHN0cmVhbVN0YXJ0KTsKIAogICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFBhZChzZWxm
LCBwYWQsIGRhdGEtPnBhZFRlbXBsYXRlLCBXVEZNb3ZlKGRhdGEtPnRhZ3MpLCBkYXRhLT5zb3Vy
Y2VUeXBlLCBkYXRhLT5wYWROYW1lKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
W2VsZW1lbnQgPSBkYXRhLT5lbGVtZW50XSB7Ci0gICAgICAgICAgICB3ZWJraXRNZWRpYVN0cmVh
bVNyY1Bvc3RTdHJlYW1Db2xsZWN0aW9uKFdFQktJVF9NRURJQV9TVFJFQU1fU1JDX0NBU1QoZWxl
bWVudC5nZXQoKSkpOwotICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVf
UkVNT1ZFOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtNjg4LDYgKzcxNCwxNCBAQCB2b2lkIHdl
YmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2soV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsIE1l
ZGlhU3RyZWFtVHJhY2tQcgogICAgIHNlbGYtPnByaXYtPnRyYWNrcy5hcHBlbmQodHJhY2spOwog
fQogCit2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2lnbmFsRW5kT2ZTdHJlYW0oV2ViS2l0TWVk
aWFTdHJlYW1TcmMqIHNlbGYpCit7CisgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiU2lnbmFs
aW5nIEVPUyIpOworICAgIGZvciAoYXV0byYgc291cmNlIDogc2VsZi0+cHJpdi0+c291cmNlcykK
KyAgICAgICAgc291cmNlLT5zaWduYWxFbmRPZlN0cmVhbSgpOworICAgIHNlbGYtPnByaXYtPnNv
dXJjZXMuY2xlYXIoKTsKK30KKwogdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVhbShX
ZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgTWVkaWFTdHJlYW1Qcml2YXRlKiBzdHJlYW0sIGJv
b2wgaXNWaWRlb1BsYXllcikKIHsKICAgICBBU1NFUlQoV0VCS0lUX0lTX01FRElBX1NUUkVBTV9T
UkMoc2VsZikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3Vy
Y2UuaAppbmRleCA2MmFhZmY3OGI5YmExNjI4OGM5OTY3NzZiNTVjODRmYmI2ZWFiMTVmLi4yMWI1
NDAzNzI5ZTk2MjMzN2ZkOGQ5ZDgyODNkYTljOTE4YmYyY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJl
YW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtNTgsNSArNTgsNiBAQCBHc3RF
bGVtZW50KiB3ZWJraXRNZWRpYVN0cmVhbVNyY05ldygpOwogdm9pZCB3ZWJraXRNZWRpYVN0cmVh
bVNyY1NldFN0cmVhbShXZWJLaXRNZWRpYVN0cmVhbVNyYyosIFdlYkNvcmU6Ok1lZGlhU3RyZWFt
UHJpdmF0ZSosIGJvb2wgaXNWaWRlb1BsYXllcik7CiB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3Jj
QWRkVHJhY2soV2ViS2l0TWVkaWFTdHJlYW1TcmMqLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSosIGJvb2wgb25seVRyYWNrKTsKIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNDb25m
aWd1cmVBdWRpb1RyYWNrcyhXZWJLaXRNZWRpYVN0cmVhbVNyYyosIGZsb2F0IHZvbHVtZSwgYm9v
bCBpc011dGVkLCBib29sIGlzUGxheWluZyk7Cit2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2ln
bmFsRW5kT2ZTdHJlYW0oV2ViS2l0TWVkaWFTdHJlYW1TcmMqKTsKIAogI2VuZGlmIC8vIEVOQUJM
RShWSURFTykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL2NtYWtlL0Zp
bmRHU3RyZWFtZXIuY21ha2UKaW5kZXggOWQ5N2E0YjUwY2IwZjk4MGY1Yjg0MDU3YzJiYWVlODk5
Nzk5ZGY2Ni4uZDU0ZDNiMDFlNWM4NTUxMjhhM2Y1Y2FjYzRhNzhmM2JhM2M3NjIyMCAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L0ZpbmRHU3RyZWFtZXIuY21ha2UKQEAgLTI2LDYgKzI2LDcgQEAKICMgIGdzdHJlYW1lci12aWRl
bzogICAgICBHU1RSRUFNRVJfVklERU9fSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfVklERU9f
TElCUkFSSUVTCiAjICBnc3RyZWFtZXItY29kZWNwYXJzZXI6R1NUUkVBTUVSX0NPREVDUEFSU0VS
U19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFSSUVTCiAjICBn
c3RyZWFtZXItZnVsbDogICAgICAgR1NUUkVBTUVSX0ZVTExfSU5DTFVERV9ESVJTIGFuZCBHU1RS
RUFNRVJfRlVMTF9MSUJSQVJJRVMKKyMgIGdzdHJlYW1lci10cmFuc2NvZGVyOiBHU1RSRUFNRVJf
VFJBTlNDT0RFUl9JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9UUkFOU0NPREVSX0xJQlJBUklF
UwogIwogIyBDb3B5cmlnaHQgKEMpIDIwMTIgUmFwaGFlbCBLdWJvIGRhIENvc3RhIDxyYWt1Y29A
d2Via2l0Lm9yZz4KICMKQEAgLTEwNiw2ICsxMDcsNyBAQCBGSU5EX0dTVFJFQU1FUl9DT01QT05F
TlQoR1NUUkVBTUVSX1BCVVRJTFMgZ3N0cmVhbWVyLXBidXRpbHMtMS4wIGdzdHBidXRpbHMtMS4w
KQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9UQUcgZ3N0cmVhbWVyLXRhZy0x
LjAgZ3N0dGFnLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfVklERU8g
Z3N0cmVhbWVyLXZpZGVvLTEuMCBnc3R2aWRlby0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05F
TlQoR1NUUkVBTUVSX0NPREVDUEFSU0VSUyBnc3RyZWFtZXItY29kZWNwYXJzZXJzLTEuMCBnc3Rj
b2RlY3BhcnNlcnMtMS4wKQorRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9UUkFO
U0NPREVSIGdzdHJlYW1lci10cmFuc2NvZGVyLTEuMCBnc3R0cmFuc2NvZGVyLTEuMCkKIAogIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgMy4gUHJv
Y2VzcyB0aGUgQ09NUE9ORU5UUyBwYXNzZWQgdG8gRklORF9QQUNLQUdFCmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1l
ckNoZWNrcy5jbWFrZQppbmRleCA3N2U5NTg0NWU5OTEzYTU5NzhkYWQxMGNmYzQzMDA5M2I0M2M3
YWEzLi45MTFmNmU2Yzk1YWI4MzBiNmZjMDJlMDFlZGI3NzU0ZmE5MTJmMzRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9H
U3RyZWFtZXJDaGVja3MuY21ha2UKQEAgLTI4LDYgKzI4LDEwIEBAIGlmIChFTkFCTEVfVklERU8g
T1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgICAgICAgbGlzdChBUFBFTkQgR1NUUkVBTUVS
X0NPTVBPTkVOVFMgYXVkaW8gZmZ0KQogICAgICAgICAgIGVuZGlmICgpCiAKKyAgICAgICAgICBp
ZiAoRU5BQkxFX01FRElBX1JFQ09SREVSKQorICAgICAgICAgICAgICBsaXN0KEFQUEVORCBHU1RS
RUFNRVJfQ09NUE9ORU5UUyB0cmFuc2NvZGVyKQorICAgICAgICAgIGVuZGlmICgpCisKICAgICAg
ICAgICBmaW5kX3BhY2thZ2UoR1N0cmVhbWVyIDEuMTQuMCBSRVFVSVJFRCBDT01QT05FTlRTICR7
R1NUUkVBTUVSX0NPTVBPTkVOVFN9KQogCiAgICAgICAgICAgaWYgKEVOQUJMRV9XRUJfQVVESU8p
CkBAIC00OSw2ICs1MywxMSBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8p
CiAgICAgICAgICAgaWYgKFVTRV9HU1RSRUFNRVJfR0wgQU5EIE5PVCBQQ19HU1RSRUFNRVJfR0xf
Rk9VTkQpCiAgICAgICAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdTdHJlYW1lckdMIGlz
IG5lZWRlZCBmb3IgVVNFX0dTVFJFQU1FUl9HTC4iKQogICAgICAgICAgIGVuZGlmICgpCisKKyAg
ICAgICAgICBpZiAoRU5BQkxFX01FRElBX1JFQ09SREVSIEFORCBVU0VfR1NUUkVBTUVSX1RSQU5T
Q09ERVIgQU5EIChOT1QgUENfR1NUUkVBTUVSX1RSQU5TQ09ERVJfRk9VTkQgT1IgUENfR1NUUkVB
TUVSX1RSQU5TQ09ERVJfVkVSU0lPTiBWRVJTSU9OX0xFU1MgIjEuMjAiKSkKKyAgICAgICAgICAg
ICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiR1N0cmVhbWVyVHJhbnNjb2RlciA+PSAxLjIwIGlzIG5l
ZWRlZCBmb3IgVVNFX0dTVFJFQU1FUl9UUkFOU0NPREVSLiIpCisgICAgICAgICAgZW5kaWYgKCkK
KwogICAgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9H
U3RyZWFtZXJEZWZpbml0aW9ucy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0
aW9ucy5jbWFrZQppbmRleCAxZjFhMjEzYzIxMDEwZDMyYWNjMTdmYjkxY2I1MjBjMWJkMjM4ZWFi
Li4zOTRmODBjYTI0N2U1OWNhMzg5OTVlMDkxNmExMDA4NDhmM2I2NzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvR1N0cmVhbWVyRGVmaW5pdGlvbnMuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L0dTdHJlYW1lckRlZmluaXRpb25zLmNtYWtlCkBAIC0xMCwzICsxMCw0IEBAIFdFQktJVF9PUFRJ
T05fREVGSU5FKFVTRV9HU1RSRUFNRVJfRlVMTCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBm
b3Igc3RhdGljIEdTCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfR1NUUkVBTUVSX05BVElWRV9W
SURFTyAiVG9nZ2xlIG5hdGl2ZSB2aWRlbyBzdXBwb3J0IGluIEdTdHJlYW1lciBtZWRpYSBwbGF5
ZXIiIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX0dTVFJFQU1FUl9OQVRJ
VkVfQVVESU8gIlRvZ2dsZSBuYXRpdmUgYXVkaW8gc3VwcG9ydCBpbiBHU3RyZWFtZXIgbWVkaWEg
cGxheWVyIiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJf
VEVYVF9TSU5LICJUb2dnbGUgdGV4dCBzaW5rIHN1cHBvcnQgaW4gR1N0cmVhbWVyIG1lZGlhIHBs
YXllciIgUFJJVkFURSBPTikKK1dFQktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJfVFJB
TlNDT0RFUiAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgR1N0cmVhbWVyIE1lZGlhUmVj
b3JkZXIgYmFja2VuZCIgUFJJVkFURSBPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3Ry
ZWFtZXJEZXBlbmRlbmNpZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVwZW5kZW5j
aWVzLmNtYWtlCmluZGV4IGY0MmM3ZTcwNjk3N2JmMTZjOWYyOWJmM2RlMzA4YzVlOTY4MDI5OTYu
LjIzZDIxZjUyZDA1NTA1MzI1Njk1ZDNhMWFmYTFmODcxNjcxYzBhMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9HU3RyZWFtZXJEZXBlbmRlbmNpZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L0dTdHJlYW1lckRlcGVuZGVuY2llcy5jbWFrZQpAQCAtMSwzICsxLDQgQEAKIFdFQktJVF9PUFRJ
T05fREVQRU5EKFVTRV9HU1RSRUFNRVJfR0wgRU5BQkxFX1ZJREVPKQogV0VCS0lUX09QVElPTl9E
RVBFTkQoVVNFX0dTVFJFQU1FUl9NUEVHVFMgRU5BQkxFX1ZJREVPKQogV0VCS0lUX09QVElPTl9E
RVBFTkQoVVNFX1dQRV9WSURFT19QTEFORV9ESVNQTEFZX0RNQUJVRiBVU0VfR1NUUkVBTUVSX0dM
KQorV0VCS0lUX09QVElPTl9ERVBFTkQoVVNFX0dTVFJFQU1FUl9UUkFOU0NPREVSIEVOQUJMRV9N
RURJQV9SRUNPUkRFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
IGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggOTc5Yzc4YTA3YTJlYWIwM2E4
NzU3YWQwZjkyMDlhNTA5N2EwNjgyNi4uMDdhOWUwZGMxMTdhMDYyYmYxYjcyNGM2OGJkMTA5YThl
YjkwNDE0MiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTE1Myw2ICsxNTMsNyBAQCBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9XRUVLIFBSSVZBVEUg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5URUxMSUdFTlRf
VFJBQ0tJTkdfUFJFVkVOVElPTiBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0xBWUVSX0JBU0VEX1NWR19FTkdJTkUgUFJJVkFURSBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MQVlPVVRfRk9STUFUVElOR19DT05U
RVhUIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKK1dFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9SRUNPUkRFUiBQUklWQVRFICR7RU5B
QkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTiBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9G
RUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFf
U0VTU0lPTl9QTEFZTElTVCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9NRURJQV9TVFJFQU0gUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxf
RkVBVFVSRVN9KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQppbmRleCA5MDM4MTcwZjA2ODUyMDc5ZDRjMjZk
YWM2MjEwZjg3ZWRmZTU1ZDJmLi5kNDM2Mjc2YzdiNTViY2ZlN2Q3YjBhMWVhMGJhN2I4ZmUxNzU0
ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpAQCAtNTMsNiArNTMsNyBAQCBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR1BVX1BST0NFU1MgUFJJVkFURSBPRkYpCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5URUxMSUdFTlRfVFJBQ0tJTkdf
UFJFVkVOVElPTiBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0xBWUVSX0JBU0VEX1NWR19FTkdJTkUgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MQVlPVVRfRk9STUFUVElOR19DT05URVhUIFBSSVZB
VEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKK1dFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9SRUNPUkRFUiBQUklWQVRFICR7RU5BQkxFX0VYUEVS
SU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfTUVESUFfU0VTU0lPTiBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTl9Q
TEFZTElTVCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9NRURJQV9TVFJFQU0gUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDc3ZjZlMmZmNTMwZDYxNjZlZGMyNGJjNmY1MjFkYzkwMzNmZGIzMWMuLjJiYzNl
MTc4NWZlNjA0OTIzZGY5MTlmMTQ4NDI3NDI3YTg2YTVhMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMi0wMi0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dTdHJlYW1lcl0gSW5pdGlhbCBNZWRpYVJlY29yZGVyIGltcGxlbWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGbGFnIHRo
ZSByZW1haW5pbmcgTWVkaWFSZWNvcmRlciB0ZXN0IGZhaWx1cmVzLiBUaG9zZSB3aWxsIGJlIGFk
cmVzc2VkIGluIGZvbGxvdy11cCBwYXRjaGVzLgorCisgICAgICAgICogaHR0cC93cHQvbWVkaWFy
ZWNvcmRlci9wYXVzZS1yZWNvcmRpbmcuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDItMTYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBhIGRlZGljYXRlZCBFTkFCTEUgZmxhZyBmb3Ig
TWVkaWFSZWNvcmRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNv
cmRlci9wYXVzZS1yZWNvcmRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVj
b3JkZXIvcGF1c2UtcmVjb3JkaW5nLmh0bWwKaW5kZXggNTY5MzA3ZDFlYjIwNTlhNDhhNDBjYTA5
YWU3M2UxYzBkNTcyMWNkNC4uNmMxMTBiY2NiODZkYjhiN2JlMDhiM2YyZjAwMDE3ZWE5OWIzM2Zi
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9wYXVzZS1y
ZWNvcmRpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL3Bh
dXNlLXJlY29yZGluZy5odG1sCkBAIC01MSwxMSArNTEsMTUgQEAgcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CiAgICAgYXdhaXQgc3RhcnRQcm9taXNlOwogCiAgICAgYXdhaXQgd2FpdEZv
cigxMDAwKTsKKworICAgIGNvbnN0IHBhdXNlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gcmVjb3JkZXIub25wYXVzZSA9IHJlc29sdmUpOwogICAgIHJlY29yZGVyLnBhdXNlKCk7Cisg
ICAgYXdhaXQgcGF1c2VQcm9taXNlOworCiAgICAgcmVjb3JkZXIucmVxdWVzdERhdGEoKTsKIAog
ICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBkYXRhUHJvbWlzZTsKLSAgICBhc3NlcnRfZ3JlYXRlcl90
aGFuKGJsb2Iuc2l6ZSwgMjAwMCk7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihibG9iLnNpemUs
IDE0MDApOwogfSwgIkNhbGxpbmcgcmVxdWVzdERhdGEgb25jZSBhZnRlciBwYXVzaW5nIHNob3Vs
ZCBsZWFkIHRvIG1vcmUgdGhhbiBoZWFkZXIgZGF0YSIpOwogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyYWZmZmRiMzhhNGIxZDc4NzhlMjE4YWU5
NTYyMWQ2ZjgyZjVlM2ZjLi5mNzZkZDAxNmUyNmU0YTI0NTQzYWZmYzg4NjQ3ODliMzBmNDk3ZDdj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC03ODUs
NiArNzg1LDE4IEBAIHdlYmtpdC5vcmcvYi8yMjE0NDUgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwv
c3lzdGVtLWxhbmd1YWdlL2pwLWNpcmNsZWQuaHRtbCBbIFNrCiAjIEdTdHJlYW1lci1yZWxhdGVk
IGJ1Z3MKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKK3dlYmtpdC5vcmcvYi8y
MTM2OTkgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9taW1lVHlwZS5odG1sIFsgRmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjEzNjk5IGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvbXV0ZS10cmFja3MuaHRt
bCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxMzY5OSBodHRwL3dwdC9tZWRpYXJlY29yZGVy
L3ZpZGVvLXJvdGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTM2OTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3JkL01lZGlhUmVj
b3JkZXItbWltZXR5cGUuaHRtbCBbIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzIxMzY5OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1yZWNvcmQvTWVkaWFSZWNv
cmRlci1uby1zaW5rLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTM2OTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3JkL01lZGlh
UmVjb3JkZXItcGVlcmNvbm5lY3Rpb24uaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzIxMzY5OSBodHRwL3dwdC9tZWRpYXJlY29yZGVyL3NldC1zcmNPYmplY3QtTWVkaWFTdHJl
YW0tQmxvYi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KKyMgT3VyIFdlYlJUQyBlbmNvZGVyIGRvZXNu
J3Qgc3VwcG9ydCBoaWdoIGguMjY0IHByb2ZpbGUgeWV0Lgord2Via2l0Lm9yZy9iLzIxMzY5OSBo
dHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItdmlkZW8taDI2NC1wcm9maWxlcy5o
dG1sIFsgRmFpbHVyZSBdCisjIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFt
ZXIvZ3N0cmVhbWVyLy0vaXNzdWVzLzEwMTcKK3dlYmtpdC5vcmcvYi8yMTM2OTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3JkL01lZGlhUmVjb3JkZXIt
Yml0cmF0ZS5odHRwcy5odG1sIFsgUGFzcyBDcmFzaCBdCisKIHdlYmtpdC5vcmcvYi8yMzA0MTUg
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1pY2Vjb25uZWN0aW9uc3RhdGVjaGFu
Z2UtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyLXJlcGxhY2VUcmFjay5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTg3NjAzIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtc3RyZWFtLXRyYWNrLXNvdXJjZS1m
YWlsdXJlLmh0bWwgWyBUaW1lb3V0IEZhaWx1cmUgUGFzcyBdCkBAIC0xNjQ1LDExICsxNjU3LDYg
QEAgZmFzdC9ldmVudHMvd2Via2l0LW1lZGlhLWtleS1ldmVudHMtY29uc3RydWN0b3IuaHRtbCBb
IFNraXAgXQogaHR0cC90ZXN0cy9tZWRpYS9ub3ctcGxheWluZy1pbmZvLXByaXZhdGUtYnJvd3Np
bmcuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9tZWRpYS9ub3ctcGxheWluZy1pbmZvLmh0bWwg
WyBTa2lwIF0KIAotIyBNZWRpYVJlY29yZGVyIGlzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQK
LWh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAgXQotZmFzdC9tZWRpYWNhcHR1cmVm
cm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tb2Zmc2NyZWVuY2FudmFzLmh0bWwg
WyBTa2lwIF0KLQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmlu
Zy9yZXBsYWNlZC1lbGVtZW50cy9lbWJlZGRlZC1jb250ZW50LXJlbmRlcmluZy1ydWxlcy9jYW52
YXMtdXBkYXRlLXdpdGgtYm9yZGVyLW9iamVjdC1maXQuaHRtbCBbIFBhc3MgXQogCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1zZWxlY3Qt
ZWxlbWVudC9yZXNldC1hbGdvcml0aG0tcmVuZGVyaW5nLmh0bWwgWyBQYXNzIF0KQEAgLTE4NTks
NiArMTg2Niw3IEBAIHdlYmtpdC5vcmcvYi8xOTM2MjMgYWNjZXNzaWJpbGl0eS9zZXQtc2VsZWN0
ZWQtZWRpdGFibGUuaHRtbCBbIFNraXAgXQogIyBObyBzdXBwb3J0IGZvciBHUFVQcm9jZXNzIHll
dAogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlSW5HUFVQcm9jZXNzLmh0bWwgWyBTa2lwIF0KIGZh
c3QvbWVkaWFzdHJlYW0vdmlkZW8tcm90YXRpb24tZ3B1LXByb2Nlc3MtY3Jhc2guaHRtbCBbIFNr
aXAgXQoraHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVv
LWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIFsgU2tpcCBdCiAKICMgUGF5bWVudCBSZXF1
ZXN0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdCBbIFNr
aXAgXQpAQCAtMjMwNiw3ICsyMzE0LDYgQEAgd2Via2l0Lm9yZy9iLzIwNjUyOCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3JlbW90ZS1wbGF5YmFjay9pZGxoYXJuZXNzLncKIHdlYmtp
dC5vcmcvYi8yMDY1MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZW1vdGUtcGxh
eWJhY2svd2F0Y2gtYXZhaWxhYmlsaXR5LWluaXRpYWwtY2FsbGJhY2suaHRtbCBbIEZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMjA2NTg2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1m
cm9tLXNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIw
NjU4OCBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRlci5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjA2MDA1IGZhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzQ1MjkgZmFzdC9ib3gt
c2hhZG93L2hpZHBpLWJveC1zaGFkb3ctaW5zZXQtb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNjY1MiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvY29uc3RydWN0b3IvMDExLmh0bWwgWyBGYWlsdXJl
IF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyNWE3NmJlOGE3YWFh
MDQwYTZkYmE3YTViZGY5ZTllOWQ2YmVlZjBkLi5mMDIwYTUzOWY3MTk3MTdkOTJjMTJhMzgzNjBi
MTIxNGFlM2ZlYWRjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMjItMDItMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEluaXRpYWwgTWVkaWFSZWNvcmRlciBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRW5hYmxlIE1lZGlhUmVjb3JkZXIgc3VwcG9ydCBpZiBHU3RyZWFtZXIgPj0gMS4yMCBpcyBh
dmFpbGFibGUuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0aW9ucy5jbWFrZToKKyAgICAgICAgKiBTb3Vy
Y2UvY21ha2UvR1N0cmVhbWVyRGVwZW5kZW5jaWVzLmNtYWtlOgorCiAyMDIyLTAyLTE1ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtl
XSBDaGVja3MgdXNlcyBvZiBleGVjdXRlX3Byb2Nlc3MoKSBmb3IgY29ycmVjdCBjb21tYW5kIHNw
bGl0dGluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452633</attachid>
            <date>2022-02-19 02:47:34 -0800</date>
            <delta_ts>2022-02-22 11:32:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236558-20220219024732.patch</filename>
            <type>text/plain</type>
            <size>55154</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBiOGQ4YTE1ZWQxZjg3MDc2NDI2ZWUz
OTRhMGMwMzAyOGYzMGEwZTUuLjcwM2FmNTA5NTNlMDViMzgwMzg2NTQwNGE0YjcyMWNmOTQyNmVm
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEluaXRpYWwgTWVkaWFS
ZWNvcmRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWw6IEVuYWJsZSBNZWRpYVJlY29yZGVyIGlmIGl0IHdhcworICAgICAgICBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUgaW4gR1N0cmVhbWVyIHBvcnRzLgorCiAyMDIyLTAyLTE4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTYWZhcmkgY2Fu
IHNvbWV0aW1lcyBoYW5nIHdoaWxlIHByaW50aW5nIGR1ZSB0byBzeW5jIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGZjMDliYWY2OThhOWY1MTc3OWI5YzliMTVlZmM0NTQ1ZDk2ZmFjYmIuLjY1MjhmNjdmZGU5
NzlmZmYwN2IzNWNjNTY2M2VlOWExZDBmOWZhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBA
QAorMjAyMi0wMi0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dTdHJlYW1lcl0gSW5pdGlhbCBNZWRpYVJlY29yZGVyIGltcGxlbWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBN
ZWRpYVJlY29yZGVyIGJhY2tlbmQgYmFzZWQgb24gdGhlIEdTdHJlYW1lciBUcmFuc2NvZGVyIGxp
YnJhcnkuIFdlIGFudGljaXBhdGUgdGhlCisgICAgICAgIHNjZW5hcmlvIHdoZXJlIHRoZSBHc3RX
ZWJSVEMgYmFja2VuZCBtaWdodCBwcm92aWRlIGVuY29kZWQgc3RyZWFtcyB0byB0aGUgcmVjb3Jk
ZXIsIGluIHdoaWNoCisgICAgICAgIGNhc2UgdHJhbnNjb2RpbmcgaXMgcmVxdWlyZWQuIFRoZSB0
cmFuc2NvZGVyIGxpYnJhcnkgY2FuIG9wZXJhdGUgaW4gcGFzcy10aHJvdWdoIGFzIHdlbGwuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpp
c1R5cGVTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6Y3JlYXRl
TWVkaWFSZWNvcmRlclByaXZhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmlzU3VwcG9ydGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdURjo6YWRvcHRHUmVmKToKKyAgICAgICAgKFdURjo6cmVmR1B0cjxHc3RF
bmNvZGluZ1Byb2ZpbGU+KToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRyPEdzdEVuY29kaW5nUHJv
ZmlsZT4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZh
dGVHU3RyZWFtZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6c3RhcnRSZWNvcmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnN0b3BSZWNv
cmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6
OmZldGNoRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJl
YW1lcjo6cGF1c2VSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXI6OnJlc3VtZVJlY29yZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6bWltZVR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmlzVHlwZVN1cHBvcnRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVy
UHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1l
cjo6c2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyOjpjb25maWd1cmVWaWRlb0VuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVQaXBlbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1NhbXBsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5RU9T
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICh3ZWJraXRNZWRp
YVN0cmVhbVNyY0Vuc3VyZVN0cmVhbUNvbGxlY3Rpb25Qb3N0ZWQpOgorICAgICAgICAod2Via2l0
TWVkaWFTdHJlYW1TcmNQYWRQcm9iZUNiKToKKyAgICAgICAgKHdlYmtpdE1lZGlhU3RyZWFtU3Jj
U2lnbmFsRW5kT2ZTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5oOgorCiAyMDIyLTAyLTE5ICBBbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIGxheW91dEJvdW5k
c0ZvcklubGluZUJveCBzaG91bGQgcmVhZCBsYXlvdXRCb3VuZHNQcmltYXJ5TWV0cmljc0Zvcklu
bGluZUJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCAzNzYzODU4MjgwMDBiNTcz
MTlhNjFmNTQyMDAyYmRjYzZkM2Y0YmQ3Li4xMTU2ZWM4NjY0NzVjMWYxNjFkNjZkNTQ1ZTI2MTQ2
YTgxN2FlYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtODYyLDYgKzg2Miw3
IEBAIE1lZGlhUmVjb3JkZXJFbmFibGVkOgogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJL
aXQ6CiAgICAgICAiUExBVEZPUk0oQ09DT0EpIjogdHJ1ZQorICAgICAgIlVTRShHU1RSRUFNRVJf
VFJBTlNDT0RFUikiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgIFdlYkNvcmU6CiAg
ICAgICBkZWZhdWx0OiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxNGQxMDIxODAwZjJi
MDAwNTRlZGE1Mjg1M2E1MGJhZDA1NjNkYWU1Li4yYmI4MjljZDU5YjhjMDc1ZTAzNjY1NWMyMzdi
ODUwMTQ4MWM0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUxLDYgKzE1MSw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2NrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3
b3JrIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwCmluZGV4IGZlNTcyZDE5ZTM5Y2ZjOWU0MDE5YTQwYWZmMWVlNTljODFh
M2JiZjkuLmE5MWU2NjkwMDA0ODMxNmE5YTkxM2NhMGQ1MTI4ZWFhMTUxZDljY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgTWVkaWFSZWNvcmRlcjo6Q3JlYXRvckZ1bmN0aW9uIE1l
ZGlhUmVjb3JkZXI6Om1fY3VzdG9tQ3JlYXRvciA9IG51bGxwdHI7CiAKIGJvb2wgTWVkaWFSZWNv
cmRlcjo6aXNUeXBlU3VwcG9ydGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KEdTVFJFQU1FUl9UUkFOU0NPREVSKQogICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7
CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuaXNTdXBw
b3J0ZWQodmFsdWUpOwogI2Vsc2UKQEAgLTg3LDcgKzg3LDcgQEAgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPj4gTWVkaWFSZWNvcmRlcjo6Y3JlYXRlTWVk
aWFSZWMKICAgICBpZiAobV9jdXN0b21DcmVhdG9yKQogICAgICAgICByZXR1cm4gbV9jdXN0b21D
cmVhdG9yKHN0cmVhbSwgb3B0aW9ucyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQogICAgIGF1dG8gcmVzdWx0
ID0gcGFnZS0+bWVkaWFSZWNvcmRlclByb3ZpZGVyKCkuY3JlYXRlTWVkaWFSZWNvcmRlclByaXZh
dGUoc3RyZWFtLCBvcHRpb25zKTsKICNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlPiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmluZGV4IDAz
YjQ3ZDcyMzdkNDRlZWVjNWI0YTJiNTc0Y2I1NzNhYzRjOGY0MDIuLmViMTA5MzBkMzhjZjY4MmY3
ZWQ4OWI3MWFmZDE0ZjBiMzJlMThlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCkBA
IC0zNSwxNSArMzUsMjEgQEAKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
aCIKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQorI2luY2x1ZGUgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGU+IE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRl
JiBzdHJlYW0sIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICByZXR1cm4gTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUoc3RyZWFtLCBvcHRpb25zKTsKLSNlbHNl
Ci0gICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSX1RSQU5TQ09E
RVIpCisgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoc3Ry
ZWFtLCBvcHRpb25zKTsKKyNlbmRpZgorICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIE1l
ZGlhUmVjb3JkZXJQcm92aWRlcjo6aXNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAg
LTUyLDcgKzU4LDcgQEAgYm9vbCBNZWRpYVJlY29yZGVyUHJvdmlkZXI6OmlzU3VwcG9ydGVkKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgQ29udGVudFR5
cGUgbWltZVR5cGUodmFsdWUpOwotCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYXV0byBjb250
YWluZXJUeXBlID0gbWltZVR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIGlmICghZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29udGFpbmVyVHlwZSwgImF1ZGlvL21wNCIpICYmICFlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAidmlkZW8vbXA0IikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0LDggKzcwLDEzIEBAIGJvb2wgTWVkaWFSZWNvcmRl
clByb3ZpZGVyOjppc1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKKyNlbGlmIFVTRShHU1RSRUFN
RVJfVFJBTlNDT0RFUikKKyAgICByZXR1cm4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6
OmlzVHlwZVN1cHBvcnRlZChtaW1lVHlwZSk7CisjZWxzZQorICAgIFVOVVNFRF9WQVJJQUJMRSht
aW1lVHlwZSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9Ci0KIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByb3ZpZGVyLmgKaW5kZXggYTBmNmY2YjJhNjUxYWVkNDNmZTAxN2FiNDFhZjQ3
ZmRkMDlkZDZhZi4uZWFmNjhlYWZlNWQxYTE3NmM1M2Y3YWQ1YmVlYTc5MWQ0YjJkNTI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJvdmlkZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0dTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1l
ci5jbWFrZQppbmRleCBhYjljNzA5MmU2NWY1MTE1MjAxM2MxMmJhNDgwMjdmZDcwYjgyNGI0Li4x
ZWQ3Y2QyNmMzNTdiNmQxMGJiNGU1ZWZjZGFkODE5OTcyZjRjMTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCkBAIC0zLDYgKzMsNyBAQCBpZiAoRU5BQkxFX1ZJREVP
IE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIiCiAgICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlIgogICAgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZSIKKyAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvZ3N0cmVhbWVyIgogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwpAQCAtNDQsNiArNDUsOCBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJf
QVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvVHJhY2tRdWV1
ZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRp
YVNvdXJjZUdTdHJlYW1lci5jcHAKIAorICAgICAgICBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorCiAgICAgICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAKIAogICAgICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ29tbW9u
LmNwcApAQCAtMTA5LDYgKzExMiwxNSBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJf
QVVESU8pCiAgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKHBsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgUFJPUEVSVElFUyBDT01Q
SUxFX0RFRklOSVRJT05TICJHTElCX0RJU0FCTEVfREVQUkVDQVRJT05fV0FSTklOR1M9MSIpCiBl
bmRpZiAoKQogCitpZiAoVVNFX0dTVFJFQU1FUl9UUkFOU0NPREVSKQorICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAgICR7R1NUUkVBTUVSX1RSQU5TQ09ERVJfTElCUkFS
SUVTfQorICAgICkKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVD
VE9SSUVTCisgICAgICAgICR7R1NUUkVBTUVSX1RSQU5TQ09ERVJfSU5DTFVERV9ESVJTfQorICAg
ICkKK2VuZGlmICgpCisKIGlmIChFTkFCTEVfVklERU8pCiAgICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICAgICAke0dTVFJFQU1FUl9UQUdfSU5D
TFVERV9ESVJTfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmluZGV4IDIzYWMxMjU3NjYy
MTk3ZmE0ZWFjOTdhOTk3Y2I1ZDBmZWVlNzQzOTAuLjMxMGJlYWQ3MmE0OGNiZGIzMzBiNDUzN2Vl
MDEwNjJhYTdiMmQwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKQEAgLTU2OSw2
ICs1NjksMjggQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8R3N0RUdMSW1hZ2U+KEdzdEVH
TEltYWdlKiBwdHIpCiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQogCit0ZW1wbGF0ZSA8
PgorR1JlZlB0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+IGFkb3B0R1JlZihHc3RFbmNvZGluZ1Byb2Zp
bGUqIHB0cikKK3sKKyAgICByZXR1cm4gR1JlZlB0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+KHB0ciwg
R1JlZlB0ckFkb3B0KTsKK30KKwordGVtcGxhdGUgPD4KK0dzdEVuY29kaW5nUHJvZmlsZSogcmVm
R1B0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+KEdzdEVuY29kaW5nUHJvZmlsZSogcHRyKQoreworICAg
IGlmIChwdHIpCisgICAgICAgIGdzdF9lbmNvZGluZ19wcm9maWxlX3JlZihwdHIpOworCisgICAg
cmV0dXJuIHB0cjsKK30KKwordGVtcGxhdGUgPD4KK3ZvaWQgZGVyZWZHUHRyPEdzdEVuY29kaW5n
UHJvZmlsZT4oR3N0RW5jb2RpbmdQcm9maWxlKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAg
ICAgZ3N0X2VuY29kaW5nX3Byb2ZpbGVfdW5yZWYocHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmgK
aW5kZXggMDc4ZDNjNTYzOTc0ZjZhMmIzYWYxZWI4Mzk4NjQ5ODc5NDVmYTdkOC4uN2EwYjVhMTFk
ZGZhODE2NzA5Njg4ZTgxMzY2ZGI3YjViMzVkM2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaWYgVVNFKEdTVFJFQU1FUikKIAogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9lbmNvZGluZy1wcm9maWxlLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VmlkZW9T
aW5rIFdlYktpdFZpZGVvU2luazsKQEAgLTE0Niw2ICsxNDcsMTAgQEAgdGVtcGxhdGU8PiBHc3RF
R0xJbWFnZSogcmVmR1B0cjxHc3RFR0xJbWFnZT4oR3N0RUdMSW1hZ2UqIHB0cik7CiB0ZW1wbGF0
ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdEVHTEltYWdlPihHc3RFR0xJbWFnZSogcHRyKTsKICNlbmRp
ZgogCit0ZW1wbGF0ZTw+IEdSZWZQdHI8R3N0RW5jb2RpbmdQcm9maWxlPiBhZG9wdEdSZWYoR3N0
RW5jb2RpbmdQcm9maWxlKik7Cit0ZW1wbGF0ZTw+IEdzdEVuY29kaW5nUHJvZmlsZSogcmVmR1B0
cjxHc3RFbmNvZGluZ1Byb2ZpbGU+KEdzdEVuY29kaW5nUHJvZmlsZSopOwordGVtcGxhdGU8PiB2
b2lkIGRlcmVmR1B0cjxHc3RFbmNvZGluZ1Byb2ZpbGU+KEdzdEVuY29kaW5nUHJvZmlsZSopOwor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDgzMTdjY2QzMDFmYzQ4
MjM1MTZjYWM0MzI0YTc2ZTVjMDI4MGM2OWMuLjY3ZDdhMzA1NjkyNDJhYjQ2ZWI0MTM0NmM3OWY1
YzBhZTk4ZWFkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIu
Y3BwCkBAIC00ODAsNiArNDgwLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Omlu
aXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKIAogICAgIGF1
dG8gaDI2NEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRlby94LWgyNjQsIHBy
b2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGlnaCB9Iiwg
RWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAgaWYg
KGgyNjRFbmNvZGVyQXZhaWxhYmxlKSB7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJoMjY0IiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CiAgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiKSwgaDI2
NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1w
NHYqIiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjOWE5ZGQ1NWY1
YTlhNjc4YjljMDBkYWRjNGU0NTdhYzVjNTMyNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtMCwwICsxLDM2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSwgMjAy
MiBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQ
cml2YXRlR1N0cmVhbWVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSX1RSQU5TQ09ERVIpCisKKyNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgorI2lu
Y2x1ZGUgIkdTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9FbmNvZGVyLmgiCisj
aW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzaW5rLmg+CisjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1NUX0RFQlVHX0NBVEVH
T1JZKHdlYmtpdF9tZWRpYV9yZWNvcmRlcl9kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVM
VCB3ZWJraXRfbWVkaWFfcmVjb3JkZXJfZGVidWcKKworc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3Jl
YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29yZGVyUHJpdmF0
ZU9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZW5zdXJlR1N0cmVhbWVySW5pdGlhbGl6ZWQoKTsK
KyAgICByZWdpc3RlcldlYktpdEdTdHJlYW1lckVsZW1lbnRzKCk7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tZWRpYV9yZWNvcmRlcl9kZWJ1
ZywgIndlYmtpdG1lZGlhcmVjb3JkZXIiLCAwLCAiV2ViS2l0IE1lZGlhU3RyZWFtIHJlY29yZGVy
Iik7CisgICAgfSk7CisKKyAgICBhdXRvIHJlY29yZGVyID0gbWFrZVVuaXF1ZTxNZWRpYVJlY29y
ZGVyUHJpdmF0ZUdTdHJlYW1lcj4oc3RyZWFtLCBvcHRpb25zKTsKKyAgICBpZiAoIXJlY29yZGVy
LT5wcmVwYXJlUGlwZWxpbmUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gcmVjb3JkZXI7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSwgY29uc3Qg
TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zJiBvcHRpb25zKQorICAgIDogbV9zdHJlYW0oc3Ry
ZWFtKQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIoKQoreworICAgIGlm
IChtX3NyYykKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNTaWduYWxFbmRPZlN0cmVhbShX
RUJLSVRfTUVESUFfU1RSRUFNX1NSQyhtX3NyYy5nZXQoKSkpOworICAgIGlmIChtX3RyYW5zY29k
ZXIpIHsKKyAgICAgICAgbV9waXBlbGluZS5jbGVhcigpOworICAgICAgICBtX3RyYW5zY29kZXIu
Y2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6
OnN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIW1fcGlwZWxpbmUpCisgICAgICAgIHByZXBhcmVQaXBlbGluZSgpOworICAgIEdTVF9E
RUJVR19PQkpFQ1QobV90cmFuc2NvZGVyLmdldCgpLCAiU3RhcnRpbmciKTsKKyAgICBjYWxsYmFj
ayhTdHJpbmcobWltZVR5cGUoKSksIDAsIDApOworICAgIGdzdF90cmFuc2NvZGVyX3J1bl9hc3lu
YyhtX3RyYW5zY29kZXIuZ2V0KCkpOworfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyOjpzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwg
IlN0b3AgcmVxdWVzdGVkLCBwdXNoaW5nIEVPUyBldmVudCIpOworCisgICAgYXV0byBzY29wZUV4
aXQgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBtX3BpcGVsaW5lLmNsZWFyKCk7
CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QobV90cmFuc2NvZGVyLmdldCgpLCAiU3RvcHBpbmci
KTsKKyAgICAgICAgbV90cmFuc2NvZGVyLmNsZWFyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfSk7CisKKyAgICBpZiAoIW1fcG9zaXRpb24pIHsKKyAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChtX3RyYW5zY29kZXIuZ2V0KCksICJUcmFuc2NvZGVyIGhhcyBub3Qgc3RhcnRl
ZCB5ZXQsIG5vIG5lZWQgZm9yIEVPUyBldmVudCIpOworICAgICAgICBtX2VvcyA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNTaWduYWxFbmRP
ZlN0cmVhbShXRUJLSVRfTUVESUFfU1RSRUFNX1NSQyhtX3NyYy5nZXQoKSkpOworCisgICAgYm9v
bCBpc0VPUyA9IGZhbHNlOworICAgIHdoaWxlICghaXNFT1MpIHsKKyAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fZW9zTG9jayk7CisgICAgICAgIG1fZW9zQ29uZGl0aW9uLndhaXRGb3IobV9lb3NM
b2NrLCAyMDBfbXMsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyB0aGlzIH1dKCkgLT4gYm9vbCB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIHdlYWtUaGlzLT5tX2VvczsKKyAgICAgICAgfSk7CisgICAgICAg
IGlzRU9TID0gbV9lb3M7CisgICAgfQorfQorCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OworICAgIEdTVF9ERUJVR19PQkpF
Q1QobV90cmFuc2NvZGVyLmdldCgpLCAiVHJhbnNmZXJpbmcgJXp1IGVuY29kZWQgYnl0ZXMiLCBt
X2RhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YS50YWtlKCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBtaW1lVHlwZSgpLCBtX3Bvc2l0aW9uKTsK
K30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2VSZWNvcmRpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEdT
VF9JTkZPX09CSkVDVChtX3RyYW5zY29kZXIuZ2V0KCksICJQYXVzaW5nIik7CisgICAgaWYgKG1f
cGlwZWxpbmUpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgp
LCBHU1RfU1RBVEVfUEFVU0VEKTsKKworICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJl
Y29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tzKHN0cmVhbSgpKTsKKyAgICBpZiAoc2VsZWN0ZWRU
cmFja3MuYXVkaW9UcmFjaykKKyAgICAgICAgc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjay0+c2V0
TXV0ZWQodHJ1ZSk7CisgICAgaWYgKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spCisgICAgICAg
IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2stPnNldE11dGVkKHRydWUpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnJl
c3VtZVJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgR1NUX0lORk9fT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQoKSwgIlJlc3VtaW5n
Iik7CisgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxl
Y3RUcmFja3Moc3RyZWFtKCkpOworICAgIGlmIChzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrKQor
ICAgICAgICBzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zZXRNdXRlZChmYWxzZSk7CisgICAg
aWYgKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2spCisgICAgICAgIHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2stPnNldE11dGVkKGZhbHNlKTsKKyAgICBpZiAobV9waXBlbGluZSkKKyAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5H
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCitjb25zdCBTdHJpbmcmIE1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyOjptaW1lVHlwZSgpIGNvbnN0Cit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gTVA0QVVESU9NSU1FVFlQRShNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiYXVkaW8vbXA0IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IE1QNFZJREVPTUlNRVRZUEUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoInZpZGVv
L21wNCIpKTsKKworICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0
ZTo6c2VsZWN0VHJhY2tzKG1fc3RyZWFtKTsKKyAgICByZXR1cm4gc2VsZWN0ZWRUcmFja3Mudmlk
ZW9UcmFjayA/IE1QNFZJREVPTUlNRVRZUEUgOiBNUDRBVURJT01JTUVUWVBFOworfQorCitib29s
IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjppc1R5cGVTdXBwb3J0ZWQoY29uc3QgQ29u
dGVudFR5cGUmIGNvbnRlbnRUeXBlKQoreworICAgIGF1dG8mIHNjYW5uZXIgPSBHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpOworICAgIHJldHVybiBzY2FubmVyLmlzQ29udGVu
dFR5cGVTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpF
bmNvZGluZywgY29udGVudFR5cGUsIHsgfSkgPiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGU6OklzTm90U3VwcG9ydGVkOworfQorCitHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJv
ZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclByb2ZpbGUoKQor
eworICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKG1fc3RyZWFtKTsKKyAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsK
KyAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworCisgICAgR1NUX0RFQlVHKCJD
cmVhdGluZyB2aWRlbyBwcm9maWxlIGZvciBtaW1lLXR5cGUgJXMiLCBtaW1lVHlwZS5hc2NpaSgp
LmRhdGEoKSk7CisgICAgYXV0byBjb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlKTsK
KyAgICBhdXRvJiBzY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpzaW5nbGV0b24o
KTsKKyAgICBpZiAoc2Nhbm5lci5pc0NvbnRlbnRUeXBlU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RW5jb2RpbmcsIGNvbnRlbnRUeXBlLCB7IH0pID09
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgY29uc3QgY2hhciogY29udGFpbmVyQ2Fwc0Rlc2NyaXB0
aW9uID0gIiI7CisgICAgYXV0byBjb250YWluZXJUeXBlID0gY29udGVudFR5cGUuY29udGFpbmVy
VHlwZSgpOworICAgIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgICAg
ICBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSAidmlkZW8vcXVpY2t0aW1lLCB2YXJpYW50PWlz
byI7CisgICAgZWxzZQorICAgICAgICBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSBjb250YWlu
ZXJUeXBlLnV0ZjgoKS5kYXRhKCk7CisKKyAgICBhdXRvIGNvbnRhaW5lckNhcHMgPSBhZG9wdEdS
ZWYoZ3N0X2NhcHNfZnJvbV9zdHJpbmcoY29udGFpbmVyQ2Fwc0Rlc2NyaXB0aW9uKSk7CisgICAg
YXV0byBwcm9maWxlID0gYWRvcHRHUmVmKGdzdF9lbmNvZGluZ19jb250YWluZXJfcHJvZmlsZV9u
ZXcobnVsbHB0ciwgbnVsbHB0ciwgY29udGFpbmVyQ2Fwcy5nZXQoKSwgbnVsbHB0cikpOworCisg
ICAgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCJfcykpCisgICAgICAgIGdzdF9lbmNv
ZGluZ19wcm9maWxlX3NldF9lbGVtZW50X3Byb3BlcnRpZXMoR1NUX0VOQ09ESU5HX1BST0ZJTEUo
cHJvZmlsZS5nZXQoKSksIGdzdF9zdHJ1Y3R1cmVfZnJvbV9zdHJpbmcoImVsZW1lbnQtcHJvcGVy
dGllcy1tYXAsIG1hcD17W21wNG11eCxmcmFnbWVudC1kdXJhdGlvbj0xMDAwLGZyYWdtZW50LW1v
ZGU9MCxzdHJlYW1hYmxlPTAsZm9yY2UtY3JlYXRlLXRpbWVjb2RlLXRyYWs9MV19IiwgbnVsbHB0
cikpOworCisgICAgYXV0byBjb2RlY3MgPSBjb250ZW50VHlwZS5jb2RlY3MoKTsKKyAgICAvLyBU
T0RPOiBIYW5kbGUgcHJvZmlsZXMuCisgICAgaWYgKHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sp
IHsKKyAgICAgICAgU3RyaW5nIHZpZGVvQ2Fwc05hbWU7CisgICAgICAgIGlmIChjb2RlY3MuY29u
dGFpbnMoInZwOCJfcykpCisgICAgICAgICAgICB2aWRlb0NhcHNOYW1lID0gInZpZGVvL3gtdnA4
Il9zOworICAgICAgICBlbHNlIGlmIChjb2RlY3MuY29udGFpbnMoInZwOSJfcykpCisgICAgICAg
ICAgICB2aWRlb0NhcHNOYW1lID0gInZpZGVvL3gtdnA5Il9zOworICAgICAgICBlbHNlIGlmIChj
b2RlY3MuY29udGFpbnMoImF2MSJfcykpCisgICAgICAgICAgICB2aWRlb0NhcHNOYW1lID0gInZp
ZGVvL3gtYXYxIl9zOworICAgICAgICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNv
ZGVjKSB7IHJldHVybiBjb2RlYy5zdGFydHNXaXRoKCJhdmMxIl9zKTsgfSkgIT0gbm90Rm91bmQp
CisgICAgICAgICAgICB2aWRlb0NhcHNOYW1lID0gInZpZGVvL3gtaDI2NCJfczsKKyAgICAgICAg
ZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSJfcykpCisgICAgICAgICAgICB2
aWRlb0NhcHNOYW1lID0gInZpZGVvL3gtdnA4Il9zOworICAgICAgICBlbHNlIGlmIChjb250YWlu
ZXJUeXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgICAgICAgICAgdmlkZW9DYXBzTmFtZSA9ICJ2
aWRlby94LWgyNjQiX3M7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgR1NUX1dBUk5JTkco
IlZpZGVvIGNvZGVjIGZvciAlcyBub3Qgc3VwcG9ydGVkIiwgY29udGVudFR5cGUucmF3KCkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCF2aWRlb0NhcHNOYW1lLmlzRW1wdHkoKSk7CisgICAgICAg
IGF1dG8gdmlkZW9DYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUodmlk
ZW9DYXBzTmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcg
dmlkZW8gZW5jb2RpbmcgcHJvZmlsZSBmb3IgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgdmlkZW9D
YXBzLmdldCgpKTsKKyAgICAgICAgbV92aWRlb0VuY29kaW5nUHJvZmlsZSA9IGFkb3B0R1JlZihH
U1RfRU5DT0RJTkdfUFJPRklMRShnc3RfZW5jb2RpbmdfdmlkZW9fcHJvZmlsZV9uZXcodmlkZW9D
YXBzLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAxKSkpOworICAgICAgICBnc3RfZW5jb2Rpbmdf
Y29udGFpbmVyX3Byb2ZpbGVfYWRkX3Byb2ZpbGUocHJvZmlsZS5nZXQoKSwgbV92aWRlb0VuY29k
aW5nUHJvZmlsZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlv
VHJhY2spIHsKKyAgICAgICAgU3RyaW5nIGF1ZGlvQ2Fwc05hbWU7CisgICAgICAgIGlmIChjb2Rl
Y3MuY29udGFpbnMoInZvcmJpcyJfcykpCisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL3gtdm9yYmlzIl9zOworICAgICAgICBlbHNlIGlmIChjb2RlY3MuY29udGFpbnMoIm9wdXMi
X3MpKQorICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiOworICAgICAg
ICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNvZGVjKSB7IHJldHVybiBjb2RlYy5z
dGFydHNXaXRoKCJtcDRhIl9zKTsgfSkgIT0gbm90Rm91bmQpCisgICAgICAgICAgICBhdWRpb0Nh
cHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CisgICAgICAgIGVsc2UgaWYg
KGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iX3MpKQorICAgICAgICAgICAgYXVkaW9DYXBz
TmFtZSA9ICJhdWRpby94LXZvcmJpcyJfczsKKyAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlw
ZS5lbmRzV2l0aCgibXA0Il9zKSkKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8v
bXBlZywgbXBlZ3ZlcnNpb249NCJfczsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBHU1Rf
V0FSTklORygiQXVkaW8gY29kZWMgZm9yICVzIG5vdCBzdXBwb3J0ZWQiLCBjb250ZW50VHlwZS5y
YXcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWF1ZGlvQ2Fwc05hbWUuaXNFbXB0eSgpKTsK
KyAgICAgICAgYXV0byBhdWRpb0NhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfZnJvbV9zdHJpbmco
YXVkaW9DYXBzTmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIEdTVF9ERUJVRygiQ3JlYXRp
bmcgYXVkaW8gZW5jb2RpbmcgcHJvZmlsZSBmb3IgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgYXVk
aW9DYXBzLmdldCgpKTsKKyAgICAgICAgbV9hdWRpb0VuY29kaW5nUHJvZmlsZSA9IGFkb3B0R1Jl
ZihHU1RfRU5DT0RJTkdfUFJPRklMRShnc3RfZW5jb2RpbmdfYXVkaW9fcHJvZmlsZV9uZXcoYXVk
aW9DYXBzLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAxKSkpOworICAgICAgICBnc3RfZW5jb2Rp
bmdfY29udGFpbmVyX3Byb2ZpbGVfYWRkX3Byb2ZpbGUocHJvZmlsZS5nZXQoKSwgbV9hdWRpb0Vu
Y29kaW5nUHJvZmlsZS5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHByb2ZpbGU7Cit9CisK
K3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnNldFNvdXJjZShHc3RFbGVtZW50
KiBlbGVtZW50KQoreworICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJp
dmF0ZTo6c2VsZWN0VHJhY2tzKHN0cmVhbSgpKTsKKyAgICBib29sIG9ubHlUcmFjayA9IChzZWxl
Y3RlZFRyYWNrcy5hdWRpb1RyYWNrICYmICFzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrKSB8fCAo
c2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayAmJiAhc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjayk7
CisgICAgYXV0byogc3JjID0gV0VCS0lUX01FRElBX1NUUkVBTV9TUkMoZWxlbWVudCk7CisgICAg
aWYgKHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2spIHsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJl
YW1TcmNBZGRUcmFjayhzcmMsIHNlbGVjdGVkVHJhY2tzLmF1ZGlvVHJhY2ssIG9ubHlUcmFjayk7
CisgICAgICAgIHNldEF1ZGlvU291cmNlKCZzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNrLT5zb3Vy
Y2UoKSk7CisgICAgICAgIGNoZWNrVHJhY2tTdGF0ZSgqc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFj
ayk7CisgICAgfQorICAgIGlmIChzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrKSB7CisgICAgICAg
IHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2soc3JjLCBzZWxlY3RlZFRyYWNrcy52aWRlb1Ry
YWNrLCBvbmx5VHJhY2spOworICAgICAgICBzZXRWaWRlb1NvdXJjZSgmc2VsZWN0ZWRUcmFja3Mu
dmlkZW9UcmFjay0+c291cmNlKCkpOworICAgICAgICBjaGVja1RyYWNrU3RhdGUoKnNlbGVjdGVk
VHJhY2tzLnZpZGVvVHJhY2spOworICAgIH0KKyAgICBtX3NyYyA9IGVsZW1lbnQ7Cit9CisKK3Zv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OnNldFNpbmsoR3N0RWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICBzdGF0aWMgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3MgPSB7Cisg
ICAgICAgIG51bGxwdHIsCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVz
ZXJEYXRhKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRv
cHRHUmVmKGdzdF9hcHBfc2lua19wdWxsX3ByZXJvbGwoc2luaykpOworICAgICAgICAgICAgaWYg
KHNhbXBsZSkKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcio+KHVzZXJEYXRhKS0+cHJvY2Vzc1NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIGdzdF9hcHBfc2lua19pc19lb3Moc2luaykgPyBHU1RfRkxPV19F
T1MgOiBHU1RfRkxPV19PSzsKKyAgICAgICAgfSwKKyAgICAgICAgW10oR3N0QXBwU2luayogc2lu
aywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdEZsb3dSZXR1cm4geworICAgICAgICAgICAgYXV0
byBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2FwcF9zaW5rX3B1bGxfc2FtcGxlKHNpbmspKTsKKyAg
ICAgICAgICAgIGlmIChzYW1wbGUpCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVkaWFS
ZWNvcmRlclByaXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSktPnByb2Nlc3NTYW1wbGUoV1RGTW92
ZShzYW1wbGUpKTsKKyAgICAgICAgICAgIHJldHVybiBnc3RfYXBwX3NpbmtfaXNfZW9zKHNpbmsp
ID8gR1NUX0ZMT1dfRU9TIDogR1NUX0ZMT1dfT0s7CisgICAgICAgIH0sCisgICAgICAgIC8vIG5l
d19ldmVudAorICAgICAgICBudWxscHRyLAorICAgICAgICB7IG51bGxwdHIgfQorICAgIH07Cisg
ICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKGVsZW1lbnQpLCAmY2Fs
bGJhY2tzLCB0aGlzLCBudWxscHRyKTsKKyAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgImVuYWJs
ZS1sYXN0LXNhbXBsZSIsIEZBTFNFLCAibWF4LWJ1ZmZlcnMiLCAxLCAiYXN5bmMiLCBGQUxTRSwg
bnVsbHB0cik7CisgICAgbV9zaW5rID0gZWxlbWVudDsKK30KKwordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lcjo6Y29uZmlndXJlVmlkZW9FbmNvZGVyKEdzdEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgYXV0byBmb3JtYXQgPSBhZG9wdEdSZWYoZ3N0X2VuY29kaW5nX3Byb2ZpbGVf
Z2V0X2Zvcm1hdChHU1RfRU5DT0RJTkdfUFJPRklMRShtX3ZpZGVvRW5jb2RpbmdQcm9maWxlLmdl
dCgpKSkpOworICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAiZm9ybWF0IiwgZm9ybWF0LmdldCgp
LCBudWxscHRyKTsKKworICAgIGF1dG8gYml0cmF0ZSA9IFtvcHRpb25zID0gbV9vcHRpb25zXSgp
IC0+IHVuc2lnbmVkIHsKKyAgICAgICAgaWYgKG9wdGlvbnMudmlkZW9CaXRzUGVyU2Vjb25kKQor
ICAgICAgICAgICAgcmV0dXJuICpvcHRpb25zLnZpZGVvQml0c1BlclNlY29uZDsKKyAgICAgICAg
aWYgKG9wdGlvbnMuYml0c1BlclNlY29uZCkKKyAgICAgICAgICAgIHJldHVybiAqb3B0aW9ucy5i
aXRzUGVyU2Vjb25kOworICAgICAgICByZXR1cm4gMDsKKyAgICB9KCk7CisKKyAgICBpZiAoYml0
cmF0ZSkKKyAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJiaXRyYXRlIiwgYml0cmF0ZSAv
IDEwMjQsIG51bGxwdHIpOworfQorCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVy
OjpwcmVwYXJlUGlwZWxpbmUoKQoreworICAgIGF1dG8gcHJvZmlsZSA9IGNvbnRhaW5lclByb2Zp
bGUoKTsKKyAgICBpZiAoIXByb2ZpbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
dHJhbnNjb2RlciA9IGFkb3B0R1JlZihnc3RfdHJhbnNjb2Rlcl9uZXdfZnVsbCgibWVkaWFzdHJl
YW06Ly8iLCAiYXBwc2luazovLyIsIEdTVF9FTkNPRElOR19QUk9GSUxFKHByb2ZpbGUuZ2V0KCkp
KSk7CisgICAgZ3N0X3RyYW5zY29kZXJfc2V0X2F2b2lkX3JlZW5jb2RpbmcobV90cmFuc2NvZGVy
LmdldCgpLCB0cnVlKTsKKyAgICBtX3BpcGVsaW5lID0gZ3N0X3RyYW5zY29kZXJfZ2V0X3BpcGVs
aW5lKG1fdHJhbnNjb2Rlci5nZXQoKSk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
bV9waXBlbGluZS5nZXQoKSwgInNvdXJjZS1zZXR1cCIsIEdfQ0FMTEJBQ0soK1tdKE1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyKiByZWNvcmRlciwgR3N0RWxlbWVudCogc291cmNlRWxlbWVu
dCkgeworICAgICAgICByZWNvcmRlci0+c2V0U291cmNlKHNvdXJjZUVsZW1lbnQpOworICAgIH0p
LCB0aGlzKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3BpcGVsaW5lLmdldCgp
LCAiZWxlbWVudC1zZXR1cCIsIEdfQ0FMTEJBQ0soK1tdKE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyKiByZWNvcmRlciwgR3N0RWxlbWVudCogZWxlbWVudCkgeworICAgICAgICBpZiAoV0VC
S0lUX0lTX1dFQlJUQ19WSURFT19FTkNPREVSKGVsZW1lbnQpKSB7CisgICAgICAgICAgICByZWNv
cmRlci0+Y29uZmlndXJlVmlkZW9FbmNvZGVyKGVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFHU1RfSVNfQVBQX1NJTksoZWxlbWVudCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVjb3JkZXItPnNldFNpbmsoZWxlbWVudCk7
CisgICAgfSksIHRoaXMpOworCisgICAgbV9zaWduYWxBZGFwdGVyID0gYWRvcHRHUmVmKGdzdF90
cmFuc2NvZGVyX2dldF9zeW5jX3NpZ25hbF9hZGFwdGVyKG1fdHJhbnNjb2Rlci5nZXQoKSkpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zaWduYWxBZGFwdGVyLmdldCgpLCAid2FybmluZyIsIEdf
Q0FMTEJBQ0soK1tdKEdzdFRyYW5zY29kZXIqLCBHRXJyb3IqIGVycm9yLCBHc3RTdHJ1Y3R1cmUq
IGRldGFpbHMpIHsKKyAgICAgICAgR1NUX1dBUk5JTkcoIiVzIGRldGFpbHM6ICUiIEdTVF9QVFJf
Rk9STUFULCBlcnJvci0+bWVzc2FnZSwgZGV0YWlscyk7CisgICAgfSksIG51bGxwdHIpOworCisg
ICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fc2lnbmFsQWRhcHRlci5nZXQoKSwgImRvbmUi
LCBHX0NBTExCQUNLKCtbXShNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lciogcmVjb3JkZXIp
IHsKKyAgICAgICAgcmVjb3JkZXItPm5vdGlmeUVPUygpOworICAgIH0pLCB0aGlzKTsKKworICAg
IGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3NpZ25hbEFkYXB0ZXIuZ2V0KCksICJwb3NpdGlv
bi11cGRhdGVkIiwgR19DQUxMQkFDSygrW10oTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIq
IHJlY29yZGVyLCBHc3RDbG9ja1RpbWUgcG9zaXRpb24pIHsKKyAgICAgICAgcmVjb3JkZXItPm5v
dGlmeVBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICB9KSwgdGhpcyk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1NhbXBs
ZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCit7CisgICAgYXV0byogc2FtcGxlQnVmZmVy
ID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSk7CisgICAgR3N0TWFwcGVkQnVm
ZmVyIGJ1ZmZlcihzYW1wbGVCdWZmZXIsIEdTVF9NQVBfUkVBRCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fZGF0YUxvY2sgfTsKKworICAgIEdTVF9MT0dfT0JKRUNUKG1fdHJhbnNjb2Rlci5nZXQo
KSwgIlF1ZXVlaW5nICV6dSBieXRlcyBvZiBlbmNvZGVkIGRhdGEsIGNhcHM6ICUiIEdTVF9QVFJf
Rk9STUFULCBidWZmZXIuc2l6ZSgpLCBnc3Rfc2FtcGxlX2dldF9jYXBzKHNhbXBsZS5nZXQoKSkp
OworICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cit9CisK
K3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeUVPUygpCit7CisgICAg
R1NUX0RFQlVHKCJFT1MgcmVjZWl2ZWQiKTsKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9lb3NMb2Nr
KTsKKyAgICBtX2VvcyA9IHRydWU7CisgICAgbV9lb3NDb25kaXRpb24ubm90aWZ5QWxsKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfVFJB
TlNDT0RFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Yzk1MzY3NzZiNDMxM2NkMThhNTI4MTBjZTFmMzU1MzQ3Yzk4MWIzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEsIDIwMjIgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1F
Ul9UUkFOU0NPREVSKQorCisjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSA8Z3N0L3RyYW5zY29kZXIvZ3N0dHJhbnNjb2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZW50VHlwZTsKK2NsYXNz
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOworc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9uczsKKworY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIgZmluYWwgOiBwdWJs
aWMgTWVkaWFSZWNvcmRlclByaXZhdGUsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZUdTdHJlYW1lcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUdT
dHJlYW1lcj4gY3JlYXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE1lZGlhUmVjb3JkZXJQ
cml2YXRlT3B0aW9ucyYpOworICAgIGV4cGxpY2l0IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyKE1lZGlhU3RyZWFtUHJpdmF0ZSYsIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cyYpOworICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcigpOworCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlU3VwcG9ydGVkKGNvbnN0IENvbnRlbnRUeXBlJik7CisKK3Byb3RlY3RlZDoK
KyAgICBib29sIHByZXBhcmVQaXBlbGluZSgpOworCitwcml2YXRlOgorICAgIHZvaWQgdmlkZW9T
YW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhKSBmaW5hbCB7
IH07CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUm
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBzaXplX3QpIGZpbmFsIHsgfTsKKworICAgIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBhdXNlUmVjb3JkaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCByZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkg
Y29uc3QgZmluYWw7CisKKyAgICB2b2lkIHNldFNvdXJjZShHc3RFbGVtZW50Kik7CisgICAgdm9p
ZCBzZXRTaW5rKEdzdEVsZW1lbnQqKTsKKyAgICB2b2lkIGNvbmZpZ3VyZVZpZGVvRW5jb2RlcihH
c3RFbGVtZW50Kik7CisKKyAgICBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmlsZT4g
Y29udGFpbmVyUHJvZmlsZSgpOworICAgIE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJlYW07IH0KKyAgICB2b2lkIHByb2Nlc3NTYW1wbGUoR1JlZlB0cjxH
c3RTYW1wbGU+JiYpOworICAgIHZvaWQgbm90aWZ5UG9zaXRpb24oR3N0Q2xvY2tUaW1lIHBvc2l0
aW9uKSB7IG1fcG9zaXRpb24gPSBHU1RfVElNRV9BU19TRUNPTkRTKHBvc2l0aW9uKTsgfQorICAg
IHZvaWQgbm90aWZ5RU9TKCk7CisKKyAgICBHUmVmUHRyPEdzdEVuY29kaW5nUHJvZmlsZT4gbV9h
dWRpb0VuY29kaW5nUHJvZmlsZTsKKyAgICBHUmVmUHRyPEdzdEVuY29kaW5nUHJvZmlsZT4gbV92
aWRlb0VuY29kaW5nUHJvZmlsZTsKKyAgICBHUmVmUHRyPEdzdFRyYW5zY29kZXI+IG1fdHJhbnNj
b2RlcjsKKyAgICBHUmVmUHRyPEdzdFRyYW5zY29kZXJTaWduYWxBZGFwdGVyPiBtX3NpZ25hbEFk
YXB0ZXI7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3BpcGVsaW5lOworICAgIEdSZWZQdHI8
R3N0RWxlbWVudD4gbV9zcmM7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3Npbms7CisgICAg
Q29uZGl0aW9uIG1fZW9zQ29uZGl0aW9uOworICAgIExvY2sgbV9lb3NMb2NrOworICAgIGJvb2wg
bV9lb3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2Vvc0xvY2spOworICAgIGRvdWJsZSBtX3Bvc2l0
aW9uIHsgMCB9OworCisgICAgTG9jayBtX2RhdGFMb2NrOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisKKyAgICBNZWRpYVN0
cmVhbVByaXZhdGUmIG1fc3RyZWFtOworICAgIGNvbnN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9ucyYgbV9vcHRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKEdTVFJFQU1FUl9UUkFOU0NPREVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggOTk1NGZhNjU4MzEzYTlhNDVhNTJlM2Nm
NzYxZjEwMWYzNGQ5YWFkNS4uNGE4N2QyYTgyMzBhZTFhMWQ0MWNkYzA2YTE4NjQ1ZTE1Y2I3Njdj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCkBAIC0xMTgsNiArMTE4LDggQEAgcHJpdmF0ZToKICAgICBHc3RFbGVtZW50KiBtX3NyYzsK
IH07CiAKK3N0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjRW5zdXJlU3RyZWFtQ29sbGVj
dGlvblBvc3RlZChXZWJLaXRNZWRpYVN0cmVhbVNyYyopOworCiBjbGFzcyBJbnRlcm5hbFNvdXJj
ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIsCiAgICAg
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIsCiAgICAgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgewpAQCAtMTMyLDEx
ICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICBpZiAodHJhY2suaGFzQXVkaW8oKSkgewogICAg
ICAgICAgICAgbV9hdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3Jl
YXRlKHRyYWNrKTsKICAgICAgICAgICAgIGVsZW1lbnROYW1lID0gImF1ZGlvc3JjIjsKLSAgICAg
ICAgfSBlbHNlIGlmICh0cmFjay5oYXNWaWRlbygpKSB7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh0cmFjay5oYXNWaWRlbygpKTsKICAgICAgICAgICAgIG1f
dmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNyZWF0ZSh0cmFjayk7
CiAgICAgICAgICAgICBlbGVtZW50TmFtZSA9ICJ2aWRlb3NyYyI7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KIAogICAgICAgICBi
b29sIGlzQ2FwdHVyZVRyYWNrID0gdHJhY2suaXNDYXB0dXJlVHJhY2soKTsKICAgICAgICAgbV9z
cmMgPSBtYWtlR1N0cmVhbWVyRWxlbWVudCgiYXBwc3JjIiwgZWxlbWVudE5hbWUpOwpAQCAtMTg0
LDYgKzE4Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLmdl
dCgpLCAiU3RvcHBpbmcgdHJhY2svc291cmNlIG9ic2VydmF0aW9uIik7CiAgICAgICAgIG1faXNP
YnNlcnZpbmcgPSBmYWxzZTsKKwogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRpbygpKQogICAg
ICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5yZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlz
KTsKICAgICAgICAgZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQpAQCAtMTk2LDE3ICsxOTks
MjkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV90cmFjay5oYXNBdWRpbygpKTsKICAgICAg
ICAgbV9hdWRpb1RyYWNrLT5zZXRWb2x1bWUodm9sdW1lKTsKICAgICAgICAgbV9hdWRpb1RyYWNr
LT5zZXRNdXRlZChpc011dGVkKTsKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5zZXRFbmFibGVkKG1f
YXVkaW9UcmFjay0+c3RyZWFtVHJhY2soKS5lbmFibGVkKCkgJiYgIW1fYXVkaW9UcmFjay0+c3Ry
ZWFtVHJhY2soKS5tdXRlZCgpKTsKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5zZXRFbmFibGVkKG1f
YXVkaW9UcmFjay0+c3RyZWFtVHJhY2soKS5lbmFibGVkKCkpOwogICAgICAgICBpZiAoaXNQbGF5
aW5nKQogICAgICAgICAgICAgbV9hdWRpb1RyYWNrLT5wbGF5KCk7CiAgICAgfQogCisgICAgdm9p
ZCBzaWduYWxFbmRPZlN0cmVhbSgpCisgICAgeworICAgICAgICBpZiAobV9zcmMpCisgICAgICAg
ICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKEdTVF9BUFBfU1JDKG1fc3JjLmdldCgpKSk7
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CisgICAgICAgICAgICBzdG9w
T2JzZXJ2aW5nKCk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHZvaWQgcHVzaFNhbXBsZShH
c3RTYW1wbGUqIHNhbXBsZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3NyYyk7Ci0gICAgICAg
IGlmICghbV9zcmMpCisgICAgICAgIGlmICghbV9zcmMgfHwgIW1faXNPYnNlcnZpbmcpCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgYXV0byogcGFyZW50ID0gV0VCS0lUX01FRElBX1NU
UkVBTV9TUkMobV9wYXJlbnQpOworICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY0Vuc3VyZVN0
cmVhbUNvbGxlY3Rpb25Qb3N0ZWQocGFyZW50KTsKKwogICAgICAgICBib29sIGRyb3AgPSBtX2Vu
b3VnaERhdGE7CiAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihz
YW1wbGUpOwogICAgICAgICBhdXRvKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUp
OwpAQCAtMjUzLDcgKzI2OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFp
bGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWwKICAg
ICB7Ci0gICAgICAgIGlmICghbV9wYXJlbnQpCisgICAgICAgIGlmICghbV9wYXJlbnQgfHwgIW1f
aXNPYnNlcnZpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBzYW1wbGVT
aXplID0gc2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKQEAgLTI5OCwxMyArMzEzLDIzIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpIGZpbmFsCiAgICAgewotICAgICAgICAvLyBUT0RPOiBXZSBsaWtl
bHkgbmVlZCB0byBlbWl0IHNpbGVudCBhdWRpbyBmcmFtZXMgaW4gY2FzZSB0aGUgdHJhY2sgaXMg
ZGlzYWJsZWQuCi0gICAgICAgIGlmICghbV90cmFjay5lbmFibGVkKCkgfHwgIW1fcGFyZW50KQor
ICAgICAgICBpZiAoIW1fcGFyZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNv
bnN0IGF1dG8mIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBHU3RyZWFtZXJBdWRpb0RhdGEmPihh
dWRpb0RhdGEpOwogICAgICAgICBhdXRvIHNhbXBsZSA9IGRhdGEuZ2V0U2FtcGxlKCk7Ci0gICAg
ICAgIHB1c2hTYW1wbGUoc2FtcGxlLmdldCgpKTsKKyAgICAgICAgRGlzYWJsZU1hbGxvY1Jlc3Ry
aWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zOwor
ICAgICAgICBpZiAobV90cmFjay5lbmFibGVkKCkpIHsKKyAgICAgICAgICAgIHB1c2hTYW1wbGUo
c2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8gYnVmZmVyID0gYWRvcHRHUmVmKGdzdF9idWZmZXJfY29weV9kZWVwKGdzdF9zYW1wbGVf
Z2V0X2J1ZmZlcihzYW1wbGUuZ2V0KCkpKSk7CisgICAgICAgIEdzdE1hcHBlZEJ1ZmZlciBtYXAo
YnVmZmVyLmdldCgpLCBHU1RfTUFQX1dSSVRFKTsKKyAgICAgICAgY29uc3QgYXV0byYgaW5mbyA9
IGRhdGEuZ2V0QXVkaW9JbmZvKCk7CisgICAgICAgIHdlYmtpdEdzdEF1ZGlvRm9ybWF0RmlsbFNp
bGVuY2UoaW5mby5maW5mbywgbWFwLmRhdGEoKSwgbWFwLnNpemUoKSk7CisgICAgICAgIGF1dG8g
c2lsZW50U2FtcGxlID0gYWRvcHRHUmVmKGdzdF9zYW1wbGVfbmV3KGJ1ZmZlci5nZXQoKSwgZ3N0
X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0KCkpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAg
ICAgIHB1c2hTYW1wbGUoc2lsZW50U2FtcGxlLmdldCgpKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0zNjUsNiArMzkwLDcgQEAgc3RydWN0IF9XZWJLaXRNZWRpYVN0cmVhbVNyY1ByaXZhdGUgewog
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiB0cmFja3M7CiAgICAg
R1VuaXF1ZVB0cjxHc3RGbG93Q29tYmluZXI+IGZsb3dDb21iaW5lcjsKICAgICBHUmVmUHRyPEdz
dFN0cmVhbUNvbGxlY3Rpb24+IHN0cmVhbUNvbGxlY3Rpb247CisgICAgQXRvbWljPGJvb2w+IHN0
cmVhbUNvbGxlY3Rpb25Qb3N0ZWQ7CiAgICAgQXRvbWljPHVuc2lnbmVkPiBhdWRpb1BhZENvdW50
ZXI7CiAgICAgQXRvbWljPHVuc2lnbmVkPiB2aWRlb1BhZENvdW50ZXI7CiB9OwpAQCAtNTc3LDYg
KzYwMywxOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1Bvc3RTdHJlYW1Db2xs
ZWN0aW9uKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmKQogICAgIGdzdF9lbGVtZW50X3Bvc3Rf
bWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNlbGYpLCBnc3RfbWVzc2FnZV9uZXdfc3RyZWFtX2Nv
bGxlY3Rpb24oR1NUX09CSkVDVF9DQVNUKHNlbGYpLCBwcml2LT5zdHJlYW1Db2xsZWN0aW9uLmdl
dCgpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjRW5zdXJlU3RyZWFt
Q29sbGVjdGlvblBvc3RlZChXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZikKK3sKKyAgICBpZiAo
c2VsZi0+cHJpdi0+c3RyZWFtQ29sbGVjdGlvblBvc3RlZC5sb2FkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNlbGYtPnByaXYtPnN0cmVhbUNvbGxlY3Rpb25Qb3N0ZWQuc3RvcmUodHJ1ZSk7
CisgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiUG9zdGluZyBzdHJlYW0gY29sbGVjdGlvbiIp
OworICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFtlbGVtZW50ID0gR1JlZlB0cjxHc3RFbGVt
ZW50PihHU1RfRUxFTUVOVF9DQVNUKHNlbGYpKV0geworICAgICAgICB3ZWJraXRNZWRpYVN0cmVh
bVNyY1Bvc3RTdHJlYW1Db2xsZWN0aW9uKFdFQktJVF9NRURJQV9TVFJFQU1fU1JDX0NBU1QoZWxl
bWVudC5nZXQoKSkpOworICAgIH0pOworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIlN0cmVh
bSBjb2xsZWN0aW9uIHBvc3RlZCIpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVh
bVNyY0FkZFBhZChXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgR3N0UGFkKiB0YXJnZXQsIEdz
dFN0YXRpY1BhZFRlbXBsYXRlKiBwYWRUZW1wbGF0ZSwgR1JlZlB0cjxHc3RUYWdMaXN0PiYmIHRh
Z3MsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgc291cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBw
YWROYW1lKQogewogICAgIEFTU0VSVChzb3VyY2VUeXBlICE9IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6Ok5vbmUpOwpAQCAtNjM1LDkgKzY3NCw2IEBAIHN0YXRpYyBHc3RQYWRQcm9iZVJldHVy
biB3ZWJraXRNZWRpYVN0cmVhbVNyY1BhZFByb2JlQ2IoR3N0UGFkKiBwYWQsIEdzdFBhZFByb2Jl
CiAgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudChwYWQsIHN0cmVhbVN0YXJ0KTsKIAogICAgICAg
ICB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFBhZChzZWxmLCBwYWQsIGRhdGEtPnBhZFRlbXBsYXRl
LCBXVEZNb3ZlKGRhdGEtPnRhZ3MpLCBkYXRhLT5zb3VyY2VUeXBlLCBkYXRhLT5wYWROYW1lKTsK
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoW2VsZW1lbnQgPSBkYXRhLT5lbGVtZW50
XSB7Ci0gICAgICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY1Bvc3RTdHJlYW1Db2xsZWN0aW9u
KFdFQktJVF9NRURJQV9TVFJFQU1fU1JDX0NBU1QoZWxlbWVudC5nZXQoKSkpOwotICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfUkVNT1ZFOwogICAgIH0KICAgICBkZWZh
dWx0OgpAQCAtNjg4LDYgKzcyNCwxNCBAQCB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJh
Y2soV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsIE1lZGlhU3RyZWFtVHJhY2tQcgogICAgIHNl
bGYtPnByaXYtPnRyYWNrcy5hcHBlbmQodHJhY2spOwogfQogCit2b2lkIHdlYmtpdE1lZGlhU3Ry
ZWFtU3JjU2lnbmFsRW5kT2ZTdHJlYW0oV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYpCit7Cisg
ICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiU2lnbmFsaW5nIEVPUyIpOworICAgIGZvciAoYXV0
byYgc291cmNlIDogc2VsZi0+cHJpdi0+c291cmNlcykKKyAgICAgICAgc291cmNlLT5zaWduYWxF
bmRPZlN0cmVhbSgpOworICAgIHNlbGYtPnByaXYtPnNvdXJjZXMuY2xlYXIoKTsKK30KKwogdm9p
ZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVhbShXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2Vs
ZiwgTWVkaWFTdHJlYW1Qcml2YXRlKiBzdHJlYW0sIGJvb2wgaXNWaWRlb1BsYXllcikKIHsKICAg
ICBBU1NFUlQoV0VCS0lUX0lTX01FRElBX1NUUkVBTV9TUkMoc2VsZikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1l
ZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaAppbmRleCA2MmFhZmY3OGI5YmEx
NjI4OGM5OTY3NzZiNTVjODRmYmI2ZWFiMTVmLi4yMWI1NDAzNzI5ZTk2MjMzN2ZkOGQ5ZDgyODNk
YTljOTE4YmYyY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJl
YW1Tb3VyY2UuaApAQCAtNTgsNSArNTgsNiBAQCBHc3RFbGVtZW50KiB3ZWJraXRNZWRpYVN0cmVh
bVNyY05ldygpOwogdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVhbShXZWJLaXRNZWRp
YVN0cmVhbVNyYyosIFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZSosIGJvb2wgaXNWaWRlb1Bs
YXllcik7CiB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2soV2ViS2l0TWVkaWFTdHJl
YW1TcmMqLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSosIGJvb2wgb25seVRyYWNr
KTsKIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNDb25maWd1cmVBdWRpb1RyYWNrcyhXZWJLaXRN
ZWRpYVN0cmVhbVNyYyosIGZsb2F0IHZvbHVtZSwgYm9vbCBpc011dGVkLCBib29sIGlzUGxheWlu
Zyk7Cit2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2lnbmFsRW5kT2ZTdHJlYW0oV2ViS2l0TWVk
aWFTdHJlYW1TcmMqKTsKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5k
R1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UKaW5kZXgg
OWQ5N2E0YjUwY2IwZjk4MGY1Yjg0MDU3YzJiYWVlODk5Nzk5ZGY2Ni4uZDU0ZDNiMDFlNWM4NTUx
MjhhM2Y1Y2FjYzRhNzhmM2JhM2M3NjIyMCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRH
U3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UKQEAg
LTI2LDYgKzI2LDcgQEAKICMgIGdzdHJlYW1lci12aWRlbzogICAgICBHU1RSRUFNRVJfVklERU9f
SU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfVklERU9fTElCUkFSSUVTCiAjICBnc3RyZWFtZXIt
Y29kZWNwYXJzZXI6R1NUUkVBTUVSX0NPREVDUEFSU0VSU19JTkNMVURFX0RJUlMgYW5kIEdTVFJF
QU1FUl9DT0RFQ1BBUlNFUlNfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItZnVsbDogICAgICAgR1NU
UkVBTUVSX0ZVTExfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfRlVMTF9MSUJSQVJJRVMKKyMg
IGdzdHJlYW1lci10cmFuc2NvZGVyOiBHU1RSRUFNRVJfVFJBTlNDT0RFUl9JTkNMVURFX0RJUlMg
YW5kIEdTVFJFQU1FUl9UUkFOU0NPREVSX0xJQlJBUklFUwogIwogIyBDb3B5cmlnaHQgKEMpIDIw
MTIgUmFwaGFlbCBLdWJvIGRhIENvc3RhIDxyYWt1Y29Ad2Via2l0Lm9yZz4KICMKQEAgLTEwNiw2
ICsxMDcsNyBAQCBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX1BCVVRJTFMgZ3N0
cmVhbWVyLXBidXRpbHMtMS4wIGdzdHBidXRpbHMtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9O
RU5UKEdTVFJFQU1FUl9UQUcgZ3N0cmVhbWVyLXRhZy0xLjAgZ3N0dGFnLTEuMCkKIEZJTkRfR1NU
UkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfVklERU8gZ3N0cmVhbWVyLXZpZGVvLTEuMCBnc3R2
aWRlby0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0NPREVDUEFSU0VS
UyBnc3RyZWFtZXItY29kZWNwYXJzZXJzLTEuMCBnc3Rjb2RlY3BhcnNlcnMtMS4wKQorRklORF9H
U1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9UUkFOU0NPREVSIGdzdHJlYW1lci10cmFuc2Nv
ZGVyLTEuMCBnc3R0cmFuc2NvZGVyLTEuMCkKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgMy4gUHJvY2VzcyB0aGUgQ09NUE9ORU5UUyBwYXNz
ZWQgdG8gRklORF9QQUNLQUdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hl
Y2tzLmNtYWtlIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQppbmRleCA3N2U5
NTg0NWU5OTEzYTU5NzhkYWQxMGNmYzQzMDA5M2I0M2M3YWEzLi45MTFmNmU2Yzk1YWI4MzBiNmZj
MDJlMDFlZGI3NzU0ZmE5MTJmMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVy
Q2hlY2tzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKQEAg
LTI4LDYgKzI4LDEwIEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAg
ICAgICAgICAgICAgbGlzdChBUFBFTkQgR1NUUkVBTUVSX0NPTVBPTkVOVFMgYXVkaW8gZmZ0KQog
ICAgICAgICAgIGVuZGlmICgpCiAKKyAgICAgICAgICBpZiAoRU5BQkxFX01FRElBX1JFQ09SREVS
KQorICAgICAgICAgICAgICBsaXN0KEFQUEVORCBHU1RSRUFNRVJfQ09NUE9ORU5UUyB0cmFuc2Nv
ZGVyKQorICAgICAgICAgIGVuZGlmICgpCisKICAgICAgICAgICBmaW5kX3BhY2thZ2UoR1N0cmVh
bWVyIDEuMTQuMCBSRVFVSVJFRCBDT01QT05FTlRTICR7R1NUUkVBTUVSX0NPTVBPTkVOVFN9KQog
CiAgICAgICAgICAgaWYgKEVOQUJMRV9XRUJfQVVESU8pCkBAIC00OSw2ICs1MywxMSBAQCBpZiAo
RU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgICAgaWYgKFVTRV9HU1RS
RUFNRVJfR0wgQU5EIE5PVCBQQ19HU1RSRUFNRVJfR0xfRk9VTkQpCiAgICAgICAgICAgICAgIG1l
c3NhZ2UoRkFUQUxfRVJST1IgIkdTdHJlYW1lckdMIGlzIG5lZWRlZCBmb3IgVVNFX0dTVFJFQU1F
Ul9HTC4iKQogICAgICAgICAgIGVuZGlmICgpCisKKyAgICAgICAgICBpZiAoRU5BQkxFX01FRElB
X1JFQ09SREVSIEFORCBVU0VfR1NUUkVBTUVSX1RSQU5TQ09ERVIgQU5EIChOT1QgUENfR1NUUkVB
TUVSX1RSQU5TQ09ERVJfRk9VTkQgT1IgUENfR1NUUkVBTUVSX1RSQU5TQ09ERVJfVkVSU0lPTiBW
RVJTSU9OX0xFU1MgIjEuMjAiKSkKKyAgICAgICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAi
R1N0cmVhbWVyVHJhbnNjb2RlciA+PSAxLjIwIGlzIG5lZWRlZCBmb3IgVVNFX0dTVFJFQU1FUl9U
UkFOU0NPREVSLiIpCisgICAgICAgICAgZW5kaWYgKCkKKwogICAgICAgZW5kaWYgKCkKIGVuZGlm
ICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0aW9ucy5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZWZpbml0aW9ucy5jbWFrZQppbmRleCAxZjFhMjEz
YzIxMDEwZDMyYWNjMTdmYjkxY2I1MjBjMWJkMjM4ZWFiLi4zOTRmODBjYTI0N2U1OWNhMzg5OTVl
MDkxNmExMDA4NDhmM2I2NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVm
aW5pdGlvbnMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckRlZmluaXRpb25zLmNt
YWtlCkBAIC0xMCwzICsxMCw0IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJf
RlVMTCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3Igc3RhdGljIEdTCiBXRUJLSVRfT1BU
SU9OX0RFRklORShVU0VfR1NUUkVBTUVSX05BVElWRV9WSURFTyAiVG9nZ2xlIG5hdGl2ZSB2aWRl
byBzdXBwb3J0IGluIEdTdHJlYW1lciBtZWRpYSBwbGF5ZXIiIFBSSVZBVEUgT0ZGKQogV0VCS0lU
X09QVElPTl9ERUZJTkUoVVNFX0dTVFJFQU1FUl9OQVRJVkVfQVVESU8gIlRvZ2dsZSBuYXRpdmUg
YXVkaW8gc3VwcG9ydCBpbiBHU3RyZWFtZXIgbWVkaWEgcGxheWVyIiBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJfVEVYVF9TSU5LICJUb2dnbGUgdGV4dCBz
aW5rIHN1cHBvcnQgaW4gR1N0cmVhbWVyIG1lZGlhIHBsYXllciIgUFJJVkFURSBPTikKK1dFQktJ
VF9PUFRJT05fREVGSU5FKFVTRV9HU1RSRUFNRVJfVFJBTlNDT0RFUiAiV2hldGhlciB0byBlbmFi
bGUgc3VwcG9ydCBmb3IgR1N0cmVhbWVyIE1lZGlhUmVjb3JkZXIgYmFja2VuZCIgUFJJVkFURSBP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZXBlbmRlbmNpZXMuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyRGVwZW5kZW5jaWVzLmNtYWtlCmluZGV4IGY0MmM3ZTcw
Njk3N2JmMTZjOWYyOWJmM2RlMzA4YzVlOTY4MDI5OTYuLjIzZDIxZjUyZDA1NTA1MzI1Njk1ZDNh
MWFmYTFmODcxNjcxYzBhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZXBl
bmRlbmNpZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0dTdHJlYW1lckRlcGVuZGVuY2llcy5j
bWFrZQpAQCAtMSwzICsxLDQgQEAKIFdFQktJVF9PUFRJT05fREVQRU5EKFVTRV9HU1RSRUFNRVJf
R0wgRU5BQkxFX1ZJREVPKQogV0VCS0lUX09QVElPTl9ERVBFTkQoVVNFX0dTVFJFQU1FUl9NUEVH
VFMgRU5BQkxFX1ZJREVPKQogV0VCS0lUX09QVElPTl9ERVBFTkQoVVNFX1dQRV9WSURFT19QTEFO
RV9ESVNQTEFZX0RNQUJVRiBVU0VfR1NUUkVBTUVSX0dMKQorV0VCS0lUX09QVElPTl9ERVBFTkQo
VVNFX0dTVFJFQU1FUl9UUkFOU0NPREVSIEVOQUJMRV9NRURJQV9SRUNPUkRFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKaW5kZXggNDMwODA3NTEyMmY3NTNlNzJiNWFjNjZlMDZkYjFjMTRmMjA2ZDNkNC4u
Y2Y1NTk2NDNmZTk3YTBjNWM0YjYxZWM1ZGFlZmFiYzFlZTA5MmY1MSAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKQEAgLTE1Myw2ICsxNTMsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfSU5QVVRfVFlQRV9XRUVLIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTiBQUklW
QVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xBWUVSX0JB
U0VEX1NWR19FTkdJTkUgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9MQVlPVVRfRk9STUFUVElOR19DT05URVhUIFBSSVZBVEUgJHtFTkFCTEVfRVhQ
RVJJTUVOVEFMX0ZFQVRVUkVTfSkKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9NRURJQV9SRUNPUkRFUiBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
U30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lP
TiBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTl9QTEFZTElTVCBQUklWQVRF
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TVFJF
QU0gUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5j
bWFrZQppbmRleCA5MDM4MTcwZjA2ODUyMDc5ZDRjMjZkYWM2MjEwZjg3ZWRmZTU1ZDJmLi5kNDM2
Mjc2YzdiNTViY2ZlN2Q3YjBhMWVhMGJhN2I4ZmUxNzU0ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFr
ZQpAQCAtNTMsNiArNTMsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfR1BVX1BST0NFU1MgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTiBQUklWQVRFIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xBWUVSX0JBU0VEX1NWR19F
TkdJTkUgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9MQVlPVVRfRk9STUFUVElOR19DT05URVhUIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFM
X0ZFQVRVUkVTfSkKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJ
QV9SRUNPUkRFUiBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTiBQUklWQVRF
ICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUVESUFfU0VTU0lPTl9QTEFZTElTVCBQUklWQVRFIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9TVFJFQU0gUFJJVkFU
RSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk5YThiNzAxYjYxYzFi
MTAzM2RiMDJiNmVhNzhmMzYzNDM0ZmI0NjAuLmNiMDlhZWViNTAwMWE5ZWI3ZTQ3OGNmMDgxY2My
ZTMyMTYzM2UzYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0xMyAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW5p
dGlhbCBNZWRpYVJlY29yZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGbGFnIHRoZSByZW1haW5pbmcgTWVkaWFSZWNvcmRl
ciB0ZXN0IGZhaWx1cmVzLiBUaG9zZSB3aWxsIGJlIGFkcmVzc2VkIGluIGZvbGxvdy11cCBwYXRj
aGVzLgorCisgICAgICAgICogaHR0cC93cHQvbWVkaWFyZWNvcmRlci9wYXVzZS1yZWNvcmRpbmcu
aHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjIt
MDItMTggIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSG9vayB1cCBQdXNo
TWFuYWdlciB0byBwZXJtaXNzaW9uIHN0YXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbS1vZmZzY3Jl
ZW5jYW52YXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9t
ZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tb2Zmc2NyZWVuY2FudmFzLWV4cGVjdGVk
LnR4dAppbmRleCBhYmQ3NjQyNjkxNGNmOWNmZDliMzExNjIxZjU2NTNlNGZhM2Q0YjUxLi5mYWRl
NGQzNmY3M2RiYzg3MmNhYWFjZTMzNDc0NDg1YTI2MjljMTI4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bS1vZmZzY3JlZW5jYW52YXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFjYXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLW9mZnNjcmVlbmNh
bnZhcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiAKLUZBSUwgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtLW9mZnNjcmVlbmNhbnZhcyBjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3Jl
ZW4gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2Ny
ZWVuKCknLCAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbS1vZmZzY3JlZW5jYW52YXMgMSBjYW52YXMu
dHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY2FudmFz
LnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCknLCAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRv
T2Zmc2NyZWVuJyBpcyB1bmRlZmluZWQpCitGQUlMIGNhcHR1cmUgb2YgYW4gT2Zmc2NyZWVuQ2Fu
dmFzIHdpdGggMkQgY29udGV4dCBjYW52YXMudHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4gaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCkn
LCAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuJyBpcyB1bmRlZmluZWQpCitGQUlM
IGNhcHR1cmUgb2YgYW4gT2Zmc2NyZWVuQ2FudmFzIHdpdGggV2ViR0wgY29udGV4dCBjYW52YXMu
dHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY2FudmFz
LnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCknLCAnY2FudmFzLnRyYW5zZmVyQ29udHJvbFRv
T2Zmc2NyZWVuJyBpcyB1bmRlZmluZWQpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFjYXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLW9mZnNjcmVl
bmNhbnZhcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tb2Zmc2NyZWVuY2FudmFzLmh0bWwKaW5kZXggNWI0MzQ5
ZjY0MjA4ZmIyMTU0M2E0NjNlY2I5N2NlNDZjMTcyNDI0OC4uZWM1ODM1MzZlYjJhNzMyY2IxNjk5
MjA2NWMxMmZkNWQ0OWE1MjlmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNh
cHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tb2Zmc2NyZWVuY2FudmFz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW0tb2Zmc2NyZWVuY2FudmFzLmh0bWwKQEAgLTI3LDE1ICsyNywx
NSBAQCB2YXIgdGVzdE9mZlNjcmVlbkNhbnZhc0NvbW1pdHMgPSBmdW5jdGlvbihkcmF3RnVuY3Rp
b24sIG1lc3NhZ2UpIHsKICAgICByZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSB0ZXN0LnN0ZXBf
ZnVuY19kb25lKGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICBhc3NlcnRfdHJ1ZShldmVudC5kYXRh
LnNpemUgPiAwLCAnUmVjb3JkZWQgZGF0YSBzaXplIHNob3VsZCBiZSA+IDAnKTsKICAgICB9KTsK
LSAgICByZWNvcmRlci5zdGFydCgwKTsKKyAgICByZWNvcmRlci5zdGFydCgxMDAwKTsKIAogICAg
IHZhciBjdHggPSBkcmF3RnVuY3Rpb24ob2Zmc2NyZWVuKTsKICAgICBjdHguY29tbWl0KCk7Ci0g
IH0pLCBtZXNzYWdlOworICB9LCBtZXNzYWdlKTsKIH07CiAKIHRlc3RPZmZTY3JlZW5DYW52YXND
b21taXRzKGRyYXcyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXB0dXJlIG9mIGFu
IE9mZnNjcmVlbkNhbnZhcyB3aXRoIDJEIGNvbnRleHQnKTsKIHRlc3RPZmZTY3JlZW5DYW52YXND
b21taXRzKGRyYXdXZWJHTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXB0dXJlIG9m
IGFuIE9mZnNjcmVlbkNhbnZhcyB3aXRoIFdlYkdMIGNvbnRleHQnKTsKLTwvc2NyaXB0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9wYXVzZS1yZWNvcmRpbmcuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvcGF1c2UtcmVjb3JkaW5nLmh0bWwKaW5kZXggNTY5
MzA3ZDFlYjIwNTlhNDhhNDBjYTA5YWU3M2UxYzBkNTcyMWNkNC4uNmMxMTBiY2NiODZkYjhiN2Jl
MDhiM2YyZjAwMDE3ZWE5OWIzM2ZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
bWVkaWFyZWNvcmRlci9wYXVzZS1yZWNvcmRpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9tZWRpYXJlY29yZGVyL3BhdXNlLXJlY29yZGluZy5odG1sCkBAIC01MSwxMSArNTEsMTUg
QEAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiAgICAgYXdhaXQgc3RhcnRQcm9taXNl
OwogCiAgICAgYXdhaXQgd2FpdEZvcigxMDAwKTsKKworICAgIGNvbnN0IHBhdXNlUHJvbWlzZSA9
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVjb3JkZXIub25wYXVzZSA9IHJlc29sdmUpOwogICAg
IHJlY29yZGVyLnBhdXNlKCk7CisgICAgYXdhaXQgcGF1c2VQcm9taXNlOworCiAgICAgcmVjb3Jk
ZXIucmVxdWVzdERhdGEoKTsKIAogICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBkYXRhUHJvbWlzZTsK
LSAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGJsb2Iuc2l6ZSwgMjAwMCk7CisgICAgYXNzZXJ0X2dy
ZWF0ZXJfdGhhbihibG9iLnNpemUsIDE0MDApOwogfSwgIkNhbGxpbmcgcmVxdWVzdERhdGEgb25j
ZSBhZnRlciBwYXVzaW5nIHNob3VsZCBsZWFkIHRvIG1vcmUgdGhhbiBoZWFkZXIgZGF0YSIpOwog
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyYWZm
ZmRiMzhhNGIxZDc4NzhlMjE4YWU5NTYyMWQ2ZjgyZjVlM2ZjLi5mNzZkZDAxNmUyNmU0YTI0NTQz
YWZmYzg4NjQ3ODliMzBmNDk3ZDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zCkBAIC03ODUsNiArNzg1LDE4IEBAIHdlYmtpdC5vcmcvYi8yMjE0NDUgZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvc3lzdGVtLWxhbmd1YWdlL2pwLWNpcmNsZWQuaHRtbCBbIFNr
CiAjIEdTdHJlYW1lci1yZWxhdGVkIGJ1Z3MKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAKK3dlYmtpdC5vcmcvYi8yMTM2OTkgaHR0cC93cHQvbWVkaWFyZWNvcmRlci9taW1lVHlw
ZS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjEzNjk5IGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIvbXV0ZS10cmFja3MuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxMzY5OSBo
dHRwL3dwdC9tZWRpYXJlY29yZGVyL3ZpZGVvLXJvdGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8yMTM2OTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNh
cHR1cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItbWltZXR5cGUuaHRtbCBbIFRpbWVvdXQgXQord2Vi
a2l0Lm9yZy9iLzIxMzY5OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhY2Fw
dHVyZS1yZWNvcmQvTWVkaWFSZWNvcmRlci1uby1zaW5rLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMTM2OTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YWNhcHR1cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItcGVlcmNvbm5lY3Rpb24uaHR0cHMuaHRtbCBb
IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxMzY5OSBodHRwL3dwdC9tZWRpYXJlY29yZGVyL3Nl
dC1zcmNPYmplY3QtTWVkaWFTdHJlYW0tQmxvYi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KKyMgT3Vy
IFdlYlJUQyBlbmNvZGVyIGRvZXNuJ3Qgc3VwcG9ydCBoaWdoIGguMjY0IHByb2ZpbGUgeWV0Lgor
d2Via2l0Lm9yZy9iLzIxMzY5OSBodHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIt
dmlkZW8taDI2NC1wcm9maWxlcy5odG1sIFsgRmFpbHVyZSBdCisjIGh0dHBzOi8vZ2l0bGFiLmZy
ZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0cmVhbWVyLy0vaXNzdWVzLzEwMTcKK3dlYmtpdC5v
cmcvYi8yMTM2OTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUt
cmVjb3JkL01lZGlhUmVjb3JkZXItYml0cmF0ZS5odHRwcy5odG1sIFsgUGFzcyBDcmFzaCBdCisK
IHdlYmtpdC5vcmcvYi8yMzA0MTUgZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1p
Y2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UtZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9y
Zy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLXJlcGxhY2VUcmFjay5odG1s
IFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTg3NjAzIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEt
c3RyZWFtLXRyYWNrLXNvdXJjZS1mYWlsdXJlLmh0bWwgWyBUaW1lb3V0IEZhaWx1cmUgUGFzcyBd
CkBAIC0xNjQ1LDExICsxNjU3LDYgQEAgZmFzdC9ldmVudHMvd2Via2l0LW1lZGlhLWtleS1ldmVu
dHMtY29uc3RydWN0b3IuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9tZWRpYS9ub3ctcGxheWlu
Zy1pbmZvLXByaXZhdGUtYnJvd3NpbmcuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9tZWRpYS9u
b3ctcGxheWluZy1pbmZvLmh0bWwgWyBTa2lwIF0KIAotIyBNZWRpYVJlY29yZGVyIGlzIG5vdCBj
dXJyZW50bHkgaW1wbGVtZW50ZWQKLWh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBTa2lwIF0KLWlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFNraXAg
XQotZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0t
b2Zmc2NyZWVuY2FudmFzLmh0bWwgWyBTa2lwIF0KLQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9lbWJlZGRlZC1jb250ZW50
LXJlbmRlcmluZy1ydWxlcy9jYW52YXMtdXBkYXRlLXdpdGgtYm9yZGVyLW9iamVjdC1maXQuaHRt
bCBbIFBhc3MgXQogCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2Zvcm1zL3RoZS1zZWxlY3QtZWxlbWVudC9yZXNldC1hbGdvcml0aG0tcmVuZGVyaW5nLmh0
bWwgWyBQYXNzIF0KQEAgLTE4NTksNiArMTg2Niw3IEBAIHdlYmtpdC5vcmcvYi8xOTM2MjMgYWNj
ZXNzaWJpbGl0eS9zZXQtc2VsZWN0ZWQtZWRpdGFibGUuaHRtbCBbIFNraXAgXQogIyBObyBzdXBw
b3J0IGZvciBHUFVQcm9jZXNzIHlldAogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlSW5HUFVQcm9j
ZXNzLmh0bWwgWyBTa2lwIF0KIGZhc3QvbWVkaWFzdHJlYW0vdmlkZW8tcm90YXRpb24tZ3B1LXBy
b2Nlc3MtY3Jhc2guaHRtbCBbIFNraXAgXQoraHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIFsgU2tp
cCBdCiAKICMgUGF5bWVudCBSZXF1ZXN0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3BheW1lbnQtcmVxdWVzdCBbIFNraXAgXQpAQCAtMjMwNiw3ICsyMzE0LDYgQEAgd2Via2l0Lm9y
Zy9iLzIwNjUyOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3JlbW90ZS1wbGF5YmFj
ay9pZGxoYXJuZXNzLncKIHdlYmtpdC5vcmcvYi8yMDY1MjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9yZW1vdGUtcGxheWJhY2svd2F0Y2gtYXZhaWxhYmlsaXR5LWluaXRpYWwtY2Fs
bGJhY2suaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjA2NTg2IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0
b3JzL2ZyYW1lLWFuY2VzdG9ycy1mcm9tLXNlcnZpY2V3b3JrZXIuaHR0cHMuaHRtbCBbIEZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzIwNjU4OCBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1y
ZWNvcmRlci5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA2MDA1IGZhc3QvYm94LXNo
YWRvdy9pbnNldC1ib3gtc2hhZG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMzQ1MjkgZmFzdC9ib3gtc2hhZG93L2hpZHBpLWJveC1zaGFkb3ctaW5zZXQtb24tc3Vi
cGl4ZWwtcG9zaXRpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIw
NjY1MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvY29uc3RydWN0
b3IvMDExLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2dsaWIvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW0tb2Zmc2NyZWVuY2FudmFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0t
b2Zmc2NyZWVuY2FudmFzLWV4cGVjdGVkLnR4dAppbmRleCA3ZTE3MDEyNmQ1YmJlZGM1MmJmYWQ2
YmNiYTVjZTkyNzg0ZTE5YjI4Li4wZDNhNWZkZmQxNjJiNWMyNGVjMmZjZmQ2YTY0MDY1MTQ3OWFi
MzE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2Zhc3QvbWVkaWFjYXB0
dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLW9mZnNjcmVlbmNhbnZhcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9mYXN0L21lZGlhY2Fw
dHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbS1vZmZzY3JlZW5jYW52YXMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbS1vZmZzY3JlZW5jYW52YXMgbWltZVR5cGUgaXMgbm90IHN1cHBvcnRlZAotRkFJTCBDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW0tb2Zmc2NyZWVuY2FudmFzIDEgbWltZVR5cGUgaXMgbm90IHN1
cHBvcnRlZAorUEFTUyBjYXB0dXJlIG9mIGFuIE9mZnNjcmVlbkNhbnZhcyB3aXRoIDJEIGNvbnRl
eHQKK0ZBSUwgY2FwdHVyZSBvZiBhbiBPZmZzY3JlZW5DYW52YXMgd2l0aCBXZWJHTCBjb250ZXh0
IGN0eC5jb21taXQgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY3R4LmNvbW1pdCgpJywgJ2N0eC5j
b21taXQnIGlzIHVuZGVmaW5lZCkKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IDdiOTQzYTVhNzQzNTU0OGQ0NWQ3YjQ5ZDkwMTdmZjhmNjg5MmUxZWUuLjZkYWE3OThl
MTI3M2IxOWQyOTBkYWNmNTdhZGQ4MjA1MDRlNWFhMDIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0xMyAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gSW5pdGlh
bCBNZWRpYVJlY29yZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgTWVkaWFSZWNvcmRlciBzdXBwb3J0IGlmIEdT
dHJlYW1lciA+PSAxLjIwIGlzIGF2YWlsYWJsZS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9G
aW5kR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVj
a3MuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL0dTdHJlYW1lckRlZmluaXRpb25zLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9HU3RyZWFtZXJEZXBlbmRlbmNpZXMuY21ha2U6
CisKIDIwMjItMDItMTggIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkwMTQ5Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>