<?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>212058</bug_id>
          
          <creation_ts>2020-05-18 18:20:00 -0700</creation_ts>
          <short_desc>Add SPI to unblock third party cookies from WKWebViews with ResourceLoadStatistics turned on</short_desc>
          <delta_ts>2020-05-22 11:27:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653848</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-18 18:20:00 -0700</bug_when>
    <thetext>Add SPI to unblock third party cookies from WKWebViews with ResourceLoadStatistics turned on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653851</commentid>
    <comment_count>1</comment_count>
      <attachid>399692</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-18 18:25:07 -0700</bug_when>
    <thetext>Created attachment 399692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653852</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-18 18:25:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/60595539&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653885</commentid>
    <comment_count>3</comment_count>
      <attachid>399705</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-18 20:26:51 -0700</bug_when>
    <thetext>Created attachment 399705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654258</commentid>
    <comment_count>4</comment_count>
      <attachid>399790</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 17:40:32 -0700</bug_when>
    <thetext>Created attachment 399790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654267</commentid>
    <comment_count>5</comment_count>
      <attachid>399790</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 17:58:39 -0700</bug_when>
    <thetext>Comment on attachment 399790
Patch

Based on John&apos;s suggestion, I&apos;m going to rename this and make it override the ThirdPartyCookieBlockingMode for a WKWebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654271</commentid>
    <comment_count>6</comment_count>
      <attachid>399790</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-19 18:02:29 -0700</bug_when>
    <thetext>Comment on attachment 399790
Patch

This should make use of the existing enum WebCore::ThirdPartyCookieBlockingMode, probably with a new value None, and possibly also make use of the existing SPI infrastructure hooked up to setThirdPartyCookieBlockingMode() in various classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654508</commentid>
    <comment_count>7</comment_count>
      <attachid>399850</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 10:34:20 -0700</bug_when>
    <thetext>Created attachment 399850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654565</commentid>
    <comment_count>8</comment_count>
      <attachid>399868</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 11:59:34 -0700</bug_when>
    <thetext>Created attachment 399868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654582</commentid>
    <comment_count>9</comment_count>
      <attachid>399873</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 12:32:20 -0700</bug_when>
    <thetext>Created attachment 399873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654591</commentid>
    <comment_count>10</comment_count>
      <attachid>399877</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 12:51:47 -0700</bug_when>
    <thetext>Created attachment 399877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654679</commentid>
    <comment_count>11</comment_count>
      <attachid>399901</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 15:38:13 -0700</bug_when>
    <thetext>Created attachment 399901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655055</commentid>
    <comment_count>12</comment_count>
      <attachid>399901</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-21 13:34:06 -0700</bug_when>
    <thetext>Comment on attachment 399901
Patch

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

The logic of this looks sane. Please consider a boolean enum for self documentation purposes. I&apos;d like Chris to have a look at the cookie cache part since that&apos;s code he wrote fairly recently.

&gt; Source/WebCore/ChangeLog:11
&gt; +        (WebCore::m_loadsFromNetwork): Deleted.

I think these are changes in the header file and not in the implementation file. Also, the deletion of m_loadsFromNetwork seems wrong.

&gt; Source/WebCore/loader/CookieJar.cpp:45
&gt; +static bool relaxThirdPartyCookieBlocking(const Document&amp; document)

I think this function too should be called shouldRelaxThirdPartyCookieBlocking() since it returns a boolean.

&gt; Source/WebCore/page/Page.h:1049
&gt; +    bool m_relaxThirdPartyCookieBlocking { false };

I think this one should be called m_shouldRelaxThirdPartyCookieBlocking.

&gt; Source/WebCore/page/PageConfiguration.h:134
&gt; +    bool relaxThirdPartyCookieBlocking { false };

shouldRelaxThirdPartyCookieBlocking

&gt; Source/WebCore/platform/network/CacheValidation.cpp:343
&gt; +    return session.cookieRequestHeaderFieldValue(request.firstPartyForCookies(), SameSiteInfo::create(request), request.url(), WTF::nullopt, WTF::nullopt, request.url().protocolIs(&quot;https&quot;) ? IncludeSecureCookies::Yes : IncludeSecureCookies::No, ShouldAskITP::Yes, false).first;

It&apos;s unfortunate that we get a boolean parameter here. Did you consider a boolean enum to make it more self documenting?

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:153
&gt; +    WEBCORE_EXPORT void setCookiesFromDOM(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp;, Optional&lt;FrameIdentifier&gt;, Optional&lt;PageIdentifier&gt;, ShouldAskITP, const String&amp;, bool relaxThirdPartyCookieBlocking) const;

I think it should be called shouldRelaxThirdPartyCookieBlocking.

If we made this boolean (ideally boolean enum) parameter have a default false value, we wouldn&apos;t have to send in &apos;false&apos; in all call sites. However, I do see you had to make ShouldAskITP mandatory which is an example of why such params never last.

&gt; Source/WebKit/NetworkProcess/NetworkLoadParameters.h:62
&gt; +    bool relaxThirdPartyCookieBlocking { false };

shouldRelaxThirdPartyCookieBlocking

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h:107
&gt; +    bool m_relaxThirdPartyCookieBlocking { false };

m_shouldRelaxThirdPartyCookieBlocking

&gt; Source/WebKit/Shared/WebPageCreationParameters.h:223
&gt; +    bool relaxThirdPartyCookieBlocking { false };

shouldRelaxThirdPartyCookieBlocking

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:1257
&gt; +- (BOOL)_relaxThirdPartyCookieBlocking

_shouldRelaxThirdPartyCookieBlocking

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:129
&gt; +@property (nonatomic, setter=_setRelaxThirdPartyCookieBlocking:) BOOL _relaxThirdPartyCookieBlocking WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

I worry that this SPI will be abused. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655056</commentid>
    <comment_count>13</comment_count>
      <attachid>399901</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-21 13:38:22 -0700</bug_when>
    <thetext>Comment on attachment 399901
Patch

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

&gt;&gt; Source/WebCore/loader/CookieJar.cpp:45
&gt;&gt; +static bool relaxThirdPartyCookieBlocking(const Document&amp; document)
&gt; 
&gt; I think this function too should be called shouldRelaxThirdPartyCookieBlocking() since it returns a boolean.

+1

&gt; Source/WebCore/loader/CookieJar.cpp:142
&gt; +        std::pair&lt;String, bool&gt; result = session-&gt;cookieRequestHeaderFieldValue(firstParty, sameSiteInfo, url, frameID, pageID, includeSecureCookies, ShouldAskITP::Yes, false);

That&apos;s why we use enum classes instead of boolean for parameters. This looks very obscure passing false here.

&gt;&gt; Source/WebCore/page/Page.h:1049
&gt;&gt; +    bool m_relaxThirdPartyCookieBlocking { false };
&gt; 
&gt; I think this one should be called m_shouldRelaxThirdPartyCookieBlocking.

+1

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:114
&gt; +    if (relaxThirdPartyCookieBlocking)

Seems weird to pass in a new relaxThirdPartyCookieBlocking just to return early if it is true. This makes me think that we should not add a parameter and that call sites should check if they should relax policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655064</commentid>
    <comment_count>14</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-21 14:00:55 -0700</bug_when>
    <thetext>Going back to my first comments, did you try using the existing infrastructure for cookie blocking with WebCore::ThirdPartyCookieBlockingMode? It seems just setting the blocking mode would be simpler, introduce fewer function signature changes, and be less prone to breakage down the road.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655072</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 14:13:01 -0700</bug_when>
    <thetext>ThirdPartyCookieBlockingMode cannot be used for this because it is per-session.  We need this to be only for one WKWebView&apos;s loads, with other WKWebViews in the same session having a different value.  I could&apos;ve done it with an overrideThirdPartyCookieBlockingMode, but that is basically what I did with a bool.  I&apos;m going to make the bool a 2-state enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655073</commentid>
    <comment_count>16</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-21 14:14:57 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; ThirdPartyCookieBlockingMode cannot be used for this because it is
&gt; per-session.  We need this to be only for one WKWebView&apos;s loads, with other
&gt; WKWebViews in the same session having a different value.  I could&apos;ve done it
&gt; with an overrideThirdPartyCookieBlockingMode, but that is basically what I
&gt; did with a bool.  I&apos;m going to make the bool a 2-state enum.

Thanks. I think you already told me about the per-view vs per-session issue elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655098</commentid>
    <comment_count>17</comment_count>
      <attachid>399983</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 15:17:52 -0700</bug_when>
    <thetext>Created attachment 399983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655101</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 15:19:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; Seems weird to pass in a new relaxThirdPartyCookieBlocking just to return
&gt; early if it is true. This makes me think that we should not add a parameter
&gt; and that call sites should check if they should relax policy.
We could indeed do this at all callsites, but making it a parameter makes us consider if we can find a Page to ask for this for future call sites.  Same technique we use when we add an unused LockHolder&amp; parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655108</commentid>
    <comment_count>19</comment_count>
      <attachid>399983</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-21 15:28:45 -0700</bug_when>
    <thetext>Comment on attachment 399983
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        (WebCore::m_loadsFromNetwork): Deleted.

I still think this is wrong.

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp:200
&gt; +void NetworkStorageSession::setCookiesFromDOM(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt; frameID, Optional&lt;PageIdentifier&gt; pageID, ShouldAskITP, const String&amp; value, bool) const

Shouldn&apos;t this also use the new enum?

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp:236
&gt; +std::pair&lt;String, bool&gt; NetworkStorageSession::cookiesForDOM(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt; frameID, Optional&lt;PageIdentifier&gt; pageID, IncludeSecureCookies includeSecureCookies, ShouldAskITP, bool) const

Ditto.

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp:251
&gt; +std::pair&lt;String, bool&gt; NetworkStorageSession::cookieRequestHeaderFieldValue(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt; frameID, Optional&lt;PageIdentifier&gt; pageID, IncludeSecureCookies includeSecureCookies, ShouldAskITP, bool) const

Ditto.

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp:283
&gt; +bool NetworkStorageSession::getRawCookies(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt; frameID, Optional&lt;PageIdentifier&gt; pageID, ShouldAskITP, bool, Vector&lt;Cookie&gt;&amp; rawCookies) const

Ditto.

&gt; Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp:98
&gt; +void NetworkStorageSession::setCookiesFromDOM(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt;, Optional&lt;PageIdentifier&gt;, ShouldAskITP, const String&amp; value, bool) const

Ditto.

&gt; Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp:130
&gt; +std::pair&lt;String, bool&gt; NetworkStorageSession::cookiesForDOM(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt;, Optional&lt;PageIdentifier&gt;, IncludeSecureCookies, ShouldAskITP, bool) const

Ditto.

&gt; Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp:199
&gt; +bool NetworkStorageSession::getRawCookies(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt;, Optional&lt;PageIdentifier&gt;, ShouldAskITP, bool, Vector&lt;Cookie&gt;&amp; rawCookies) const

Ditto.

&gt; Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp:214
&gt; +std::pair&lt;String, bool&gt; NetworkStorageSession::cookieRequestHeaderFieldValue(const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;FrameIdentifier&gt;, Optional&lt;PageIdentifier&gt;, IncludeSecureCookies, ShouldAskITP, bool) const

Ditto.

&gt; Source/WebKit/NetworkProcess/NetworkLoadParameters.h:63
&gt; +    WebCore::ShouldRelaxThirdPartyCookieBlocking shouldRelaxThirdPartyCookieBlocking { false };

Does this work? Seems fragile in what &apos;false&apos; maps to. Isn&apos;t that dependent on the order of the enum values now?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:1264
&gt; +    bool allowed = WebCore::applicationBundleIdentifier() == &quot;com.apple.WebKit.TestWebKitAPI&quot;;

Should this use _s? I don&apos;t know if we do that in ObjC files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655114</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 15:37:21 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #19)

&gt; Does this work? Seems fragile in what &apos;false&apos; maps to. Isn&apos;t that dependent
&gt; on the order of the enum values now?
I&apos;m surprised this compiled.  Fixing.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:1264
&gt; &gt; +    bool allowed = WebCore::applicationBundleIdentifier() == &quot;com.apple.WebKit.TestWebKitAPI&quot;;
&gt; 
&gt; Should this use _s? I don&apos;t know if we do that in ObjC files.
May as well.  I don&apos;t think it matters in this case because there&apos;s a operator==(const String&amp; a, const char* b) but it&apos;s still good practice.  Will do.

The rest were programmatic find/replaces that failed, and EWS was about to tell me the same fixes you just did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655116</commentid>
    <comment_count>21</comment_count>
      <attachid>399989</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 15:39:37 -0700</bug_when>
    <thetext>Created attachment 399989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655122</commentid>
    <comment_count>22</comment_count>
      <attachid>399989</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-21 15:49:03 -0700</bug_when>
    <thetext>Comment on attachment 399989
Patch

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

If EWS is happy and you fix the one stray change log thing, I&apos;m happy.

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore::m_loadsFromNetwork): Deleted.

It&apos;s probably the change log generator messing this up because the diff shows this member as untouched. Please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655131</commentid>
    <comment_count>23</comment_count>
      <attachid>399994</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 16:14:14 -0700</bug_when>
    <thetext>Created attachment 399994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655373</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-22 11:27:18 -0700</bug_when>
    <thetext>Committed r262066: &lt;https://trac.webkit.org/changeset/262066&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399994.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399692</attachid>
            <date>2020-05-18 18:25:07 -0700</date>
            <delta_ts>2020-05-18 20:26:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200518182506.patch</filename>
            <type>text/plain</type>
            <size>40012</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgb3RoZXJ3aXNlIGVmZmVjdGl2
ZWx5IGJsb2NrcyBhbGwgdGhpcmQgcGFydHkgY29va2llcywgd2hpY2ggd2UgbmVlZCBpbiB0aGUg
Y2FzZSBpbiB0aGUgcmFkYXIuCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzIHdoaWNoIHZl
cmlmeSB0aGlzIHdvcmtzIGNvcnJlY3RseSB3aXRoIGFuZCB3aXRob3V0IGEgcHJlLWV4aXN0aW5n
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjphZGRQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcyk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVBhZ2VBbGxvd2luZ1RoaXJkUGFy
dHlDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cGFn
ZUFsbG93c1RoaXJkUGFydHlDb29raWVzIGNvbnN0KToKKwogMjAyMC0wNS0xMSAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gRG9j
dW1lbnQuZ2V0QW5pbWF0aW9ucygpIHNob3VsZCBvbmx5IGNvbnNpZGVyIGRvY3VtZW50IGNvbm5l
Y3Rpb24gYW5kIG5vdCB0aW1lbGluZSBhc3NvY2lhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNw
cAkocmV2aXNpb24gMjYxNDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDkg
QEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQwogICAgIGlmICghbV9p
c1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICBpZiAocGFnZUlEICYmIHBhZ2VBbGxvd3NUaGlyZFBhcnR5Q29va2llcygqcGFnZUlEKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0
eURvbWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVzIH07CiAgICAgaWYgKGZpcnN0UGFydHlEb21h
aW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJ
KHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2ICsyMDEsOSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAgICB2b2lk
IGFkZFBhZ2VBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIHsgbV9wYWdlc0FsbG93aW5nVGhpcmRQYXJ0eUNvb2tpZXMuYWRkKGlkZW50aWZpZXIpOyB9
CisgICAgdm9pZCByZW1vdmVQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcyhQYWdlSWRlbnRp
ZmllciBpZGVudGlmaWVyKSB7IG1fcGFnZXNBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzLnJlbW92
ZShpZGVudGlmaWVyKTsgfQorICAgIGJvb2wgcGFnZUFsbG93c1RoaXJkUGFydHlDb29raWVzKFBh
Z2VJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZXNBbGxvd2luZ1Ro
aXJkUGFydHlDb29raWVzLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAjZW5kaWYKIAogcHJpdmF0
ZToKQEAgLTI2MCw2ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0
aExpbmtEZWNvcmF0aW9uVGVzdE1vZGUgPSBmYWxzZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbCB9OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1f
YXBwQm91bmREb21haW5zOworICAgIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+IG1fcGFnZXNBbGxv
d2luZ1RoaXJkUGFydHlDb29raWVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4MTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTE4ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJs
b2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSB3
ZSBkb24ndCB3YW50IGEgY29tcHJvbWlzZWQgd2ViIHByb2Nlc3MgdG8gYmUgYWJsZSB0byBzZXQg
dGhpcyB0byB0cnVlIGFuZCBzdGVhbCBvdGhlciBjb29raWVzLAorICAgICAgICB3ZSBoYXZlIHRo
ZSBVSSBwcm9jZXNzIGFuZCBOZXR3b3JrIHByb2Nlc3MgbWFpbnRhaW5pbmcgc3RhdGUgb2Ygd2hp
Y2ggcGFnZXMgaGF2ZSBhY2Nlc3MgdG8gdGhpcmQgcGFydHkgY29va2llcy4KKyAgICAgICAgVGhp
cyBpcyBhIGxpdHRsZSB0cmlja3kgYmVjYXVzZSBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lv
bmFsUGFnZSBjaGFuZ2VzIHRoZSBwYWdlIGlkLCBidXQgbm90IHRvbyBiYWQuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjp1cGRhdGVUaGlyZFBhcnR5Q29va2llUGVybWlzc2lvbnMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIFNoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRBbGxvd1RoaXJkUGFydHlD
b29raWVzKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmFsbG93VGhpcmRQYXJ0
eUNvb2tpZXMgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfYWxs
b3dUaGlyZFBhcnR5Q29va2llc10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF9zZXRBbGxvd1RoaXJkUGFydHlDb29raWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dh
cFRvUHJvdmlzaW9uYWxQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVw
ZGF0ZVRoaXJkUGFydHlDb29raWVQZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDUtMTggIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gVW5leHBlY3RlZCBjYXBpdGFsaXph
dGlvbiBvZiBuZXh0IHdvcmQgYWZ0ZXIgcmVwb3NpdGlvbmluZyBjYXJldApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY3LDYgKzEzNjcsMTcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0VG9TYW1lU2l0ZVN0cmljdAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0KIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBl
cm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IGlkVG9BZGQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBp
ZFRvUmVtb3ZlKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChpZFRvQWRkKQorICAgICAgICAg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5hZGRQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2ll
cygqaWRUb0FkZCk7CisgICAgICAgIGlmIChpZFRvUmVtb3ZlKQorICAgICAgICAgICAgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcygqaWRU
b1JlbW92ZSk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sIGRlYnVnTW9kZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJ
KHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1p
c3Npb25zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
aWRUb0FkZCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IGlkVG9SZW1vdmUpOwog
I2VuZGlmCiAKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxNDkxKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTQ3LDYgKzE0Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2Vp
dmUKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIG1vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIFVwZGF0ZVRoaXJkUGFydHlDb29raWVQZXJtaXNz
aW9ucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBpZFRvQWRkLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gaWRUb1Jl
bW92ZSkKICNlbmRpZgogCiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wg
ZGVidWdNb2RlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwx
MCBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1ByCiAgICAgLCBtX3Rl
c3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3BlZWRNdWx0aXBsaWVyKQogICAgICwg
bV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KHBhcmFtZXRlcnMuYWxsb3dzU2VydmVyUHJlY29ubmVj
dCkKIHsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNlc3Np
b24oKSkgeworICAgICAgICBmb3IgKGF1dG8mIHBhZ2VJRCA6IHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucGFnZXNBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzKQor
ICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmFkZFBhZ2VBbGxvd2luZ1RoaXJkUGFydHlDb29r
aWVzKHBhZ2VJRCk7CisgICAgfQogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkg
ewogICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5uZXR3
b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5Lmlz
TnVsbCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzIAogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbjsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBh
cHBCb3VuZERvbWFpbnM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbWFudWFsUHJl
dmFsZW50UmVzb3VyY2U7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
c0FsbG93aW5nVGhpcmRQYXJ0eUNvb2tpZXM7CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKQEAgLTY4LDYgKzY5LDcgQEAgc3RydWN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIAogICAgICAgICBlbmNvZGVyIDw8IHN0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgZW5jb2RlciA8PCBhcHBCb3VuZERvbWFp
bnM7CiAgICAgICAgIGVuY29kZXIgPDwgbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAgICAg
IGVuY29kZXIgPDwgcGFnZXNBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzOwogICAgIH0KIAogICAg
IHN0YXRpYyBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycz4gZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTEzOSw2ICsxNDEsMTEgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIAogICAgICAgICBpZiAoIW1hbnVhbFByZXZhbGVu
dFJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgICAgICBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBwYWdlc0FsbG93aW5nVGhp
cmRQYXJ0eUNvb2tpZXM7CisgICAgICAgIGRlY29kZXIgPj4gcGFnZXNBbGxvd2luZ1RoaXJkUGFy
dHlDb29raWVzOworICAgICAgICBpZiAoIXBhZ2VzQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcykK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICAgICAgcmV0dXJuIHt7CiAg
ICAgICAgICAgICBXVEZNb3ZlKCpkaXJlY3RvcnkpLAogICAgICAgICAgICAgV1RGTW92ZSgqZGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKQEAgLTE1NSw2ICsxNjIsNyBAQCBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4pLAogICAgICAgICAgICAgV1RGTW92ZSgqYXBwQm91bmREb21h
aW5zKSwKICAgICAgICAgICAgIFdURk1vdmUoKm1hbnVhbFByZXZhbGVudFJlc291cmNlKSwKKyAg
ICAgICAgICAgIFdURk1vdmUoKnBhZ2VzQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcyksCiAgICAg
ICAgIH19OwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1MjYsMTAgQEAgV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgIGlmIChtX2NvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VzKCktPnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVz
dGluZygpKQogICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3Jr
UHJvY2VzcygpOwogI2VuZGlmCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICBpZiAobV9jb25maWd1cmF0aW9uLT5hbGxvd1RoaXJkUGFydHlDb29raWVzKCkpCisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25z
KG1fd2ViUGFnZUlELCBXVEY6Om51bGxvcHQpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5M
b29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtu
b3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CkBAIC01NjYs
NiArNTcwLDcgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNpZm5kZWYgTkRFQlVH
CiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgorICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25zKFdURjo6bnVs
bG9wdCwgbV93ZWJQYWdlSUQpOwogfQogCiAvLyBGSVhNRTogU2hvdWxkIHJldHVybiBhIGNvbnN0
IFBhZ2VDbGllbnQmIGFuZCBhZGQgYSBzZXBhcmF0ZSBub24tY29uc3QKQEAgLTg5NCwxMCArODk5
LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6IG5ld1dl
YlBhZ2VJRD0lIiBQUkl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQo
KSk7CiAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsKKyAgICBh
dXRvIG9sZFBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIG1fd2ViUGFnZUlEID0gcHJvdmlzaW9u
YWxQYWdlLT53ZWJQYWdlSUQoKTsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlV2ViUGFnZUlE
KCk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3Jl
KCk7CiAKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLT5hbGxvd1RoaXJkUGFydHlDb29raWVzKCkp
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1p
c3Npb25zKG1fd2ViUGFnZUlELCBvbGRQYWdlSUQpOworCiAjaWYgSEFWRShWSVNJQklMSVRZX1BS
T1BBR0FUSU9OX1ZJRVcpCiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24g
PSBwcm92aXNpb25hbFBhZ2UtPmNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDYgKzg1LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbgog
I2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9u
TWFuaWZlc3QgPSB0aGlzLT5tX2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKKyAgICBjb3B5
LT5tX2FsbG93VGhpcmRQYXJ0eUNvb2tpZXMgPSB0aGlzLT5tX2FsbG93VGhpcmRQYXJ0eUNvb2tp
ZXM7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVycykKICAg
ICAgICAgY29weS0+bV91cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUu
Y29weVJlZigpKTsKICAgICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1f
Y29yc0Rpc2FibGluZ1BhdHRlcm5zOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTksNiArMTU5LDkgQEAgcHVibGljOgogICAgIGJvb2wgbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWluczsgfQogICAgIHZvaWQgc2V0TGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWlucyhib29sIGxpbWl0cykgeyBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMgPSBsaW1pdHM7IH0KIAorICAgIHZvaWQgc2V0QWxsb3dUaGlyZFBhcnR5Q29va2ll
cyhib29sIHZhbHVlKSB7IG1fYWxsb3dUaGlyZFBhcnR5Q29va2llcyA9IHZhbHVlOyB9CisgICAg
Ym9vbCBhbGxvd1RoaXJkUGFydHlDb29raWVzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd1RoaXJk
UGFydHlDb29raWVzOyB9CisgICAgCiBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7CkBAIC0yMDIsNiArMjA1LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRz
RnJvbU5ldHdvcmsgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBC
b3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hbGxvd1RoaXJkUGFydHlDb29raWVz
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0JKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU0
LDYgKzEyNTQsMTYgQEAgLSAodm9pZClfc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczooQk9PTAog
ICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0SWdub3Jlc0FwcEJvdW5kRG9tYWlucyhpZ25vcmVz
QXBwQm91bmREb21haW5zKTsKIH0KIAorLSAoQk9PTClfYWxsb3dUaGlyZFBhcnR5Q29va2llcwor
eworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmFsbG93VGhpcmRQYXJ0eUNvb2tpZXMo
KTsKK30KKworLSAodm9pZClfc2V0QWxsb3dUaGlyZFBhcnR5Q29va2llczooQk9PTClhbGxvdwor
eworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dUaGlyZFBhcnR5Q29va2llcyhhbGxv
dyk7Cit9CisKIC0gKE5TU3RyaW5nICopX3Byb2Nlc3NEaXNwbGF5TmFtZQogewogICAgIHJldHVy
biBfcGFnZUNvbmZpZ3VyYXRpb24tPnByb2Nlc3NEaXNwbGF5TmFtZSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDkgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUlu
dGVnZXIsIF9XS1dlYlZpZXdDYQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VW5k
b01hbmFnZXJBUElFbmFibGVkOikgQk9PTCBfdW5kb01hbmFnZXJBUElFbmFibGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0V2ViVmlld0NhdGVnb3J5OikgX1dLV2ViVmlld0NhdGVnb3J5IF93ZWJWaWV3
Q2F0ZWdvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAotLSAodm9pZClfc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczooQk9PTClpZ25vcmVz
QXBwQm91bmREb21haW5zICBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0SWdub3Jlc0Fw
cEJvdW5kRG9tYWluczopIEJPT0wgX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldEFsbG93VGhpcmRQYXJ0eUNvb2tpZXM6KSBCT09MIF9hbGxvd1Ro
aXJkUGFydHlDb29raWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKIC0gKEJPT0wpX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5
IChub25hdG9taWMsIHNldHRlcj1fc2V0UHJvY2Vzc0Rpc3BsYXlOYW1lOikgTlNTdHJpbmcgKl9w
cm9jZXNzRGlzcGxheU5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxNDkxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4Nyw2ICsxMTg3LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0VG9TYW1lU2l0ZVMKIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhzZXNz
aW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVUaGlyZFBhcnR5Q29va2llUGVybWlzc2lvbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
aWRUb0FkZCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IGlkVG9SZW1vdmUpCit7
CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlVwZGF0ZVRoaXJkUGFydHlDb29r
aWVQZXJtaXNzaW9ucyhzZXNzaW9uSUQsIGlkVG9BZGQsIGlkVG9SZW1vdmUpLCAwKTsKK30KICNl
bmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sIGRlYnVnTW9k
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjE0OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlVGhp
cmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gaWRUb0FkZCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IGlkVG9SZW1vdmUpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlv
bkRlYnVnTW9kZShib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNjE0OTEp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxMCw2ICsxOTEwLDE5IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3QKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5z
ZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KIH0KKwordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjp1cGRhdGVUaGlyZFBhcnR5Q29va2llUGVybWlzc2lvbnMoT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IGlkVG9BZGQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBpZFRvUmVtb3ZlKQoreworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT51cGRhdGVU
aGlyZFBhcnR5Q29va2llUGVybWlzc2lvbnMobV9zZXNzaW9uSUQsIGlkVG9BZGQsIGlkVG9SZW1v
dmUpOworICAgIH0KKyAgICBpZiAoaWRUb0FkZCkKKyAgICAgICAgbV9wYWdlc0FsbG93aW5nVGhp
cmRQYXJ0eUNvb2tpZXMuYWRkKCppZFRvQWRkKTsKKyAgICBpZiAoaWRUb1JlbW92ZSkKKyAgICAg
ICAgbV9wYWdlc0FsbG93aW5nVGhpcmRQYXJ0eUNvb2tpZXMucmVtb3ZlKCppZFRvUmVtb3ZlKTsK
K30KKwogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
U2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC0yMjU3LDYgKzIyNzAsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBX
ZWJzaXRlRGF0YVN0CiAgICAgICAgIFdURk1vdmUoc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
KSwKICAgICAgICAgV1RGTW92ZShhcHBCb3VuZERvbWFpbnMpLAogICAgICAgICBXVEZNb3ZlKHJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCisgICAgICAgIGNv
cHlUb1ZlY3RvcihtX3BhZ2VzQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcyksCiAgICAgfTsKIAog
ICAgIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdDsKICAg
ICBib29sIGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0l0cFN0
YXRlRXhwbGljaXRseVNldDsgfQogICAgIHZvaWQgdXNlRXhwbGljaXRJVFBTdGF0ZSgpIHsgbV9p
c0l0cFN0YXRlRXhwbGljaXRseVNldCA9IHRydWU7IH0KKyAgICB2b2lkIHVwZGF0ZVRoaXJkUGFy
dHlDb29raWVQZXJtaXNzaW9ucyhPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gaWRU
b0FkZCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IGlkVG9SZW1vdmUpOwogI2Vu
ZGlmCiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNv
bmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpAQCAtMzUyLDYgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s7CisgICAgSGFzaFNldDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gbV9wYWdlc0FsbG93aW5nVGhpcmRQYXJ0eUNvb2tpZXM7CiAjZW5k
aWYKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4NDIpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0wNS0xOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBTUEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3cyB3aXRo
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwNTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIG1ha2UgdGVzdHMgZWFzaWVyIHRvIHJlYWQgYW5kIHdyaXRlLCBJIG1hZGUgQ29ubmVj
dGlvbjo6c2VuZCBhbmQgQ29ubmVjdGlvbjo6cmVjZWl2ZSwgd2hpY2ggYXNzdW1lIG5vIG5ldHdv
cmsgZXJyb3JzLgorICAgICAgICBUaGlzIGlzIHRydWUgd2hlbiBkb2luZyBsb2NhbCB0ZXN0aW5n
IGluIEFQSSB0ZXN0cy4gIFdlIHdlcmUgYWxyZWFkeSBhc3N1bWluZyBubyBuZXR3b3JrIGVycm9y
cy4KKyAgICAgICAgSSBhbHNvIGFkZCBfdGVzdF93YWl0Rm9yQWxlcnQgdG8gbWFrZSB0ZXN0cyBs
ZXNzIHZlcmJvc2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OkNvbm5lY3Rp
b24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6ZGF0YUZyb21TdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bnVs
bFRlcm1pbmF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OnJlcXVlc3QgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6cmVj
ZWl2ZSBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpzZW5kIGNv
bnN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0pOgorCiAyMDIwLTA1LTE4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgdXNlcyBv
ZiArc2VsZiB3aXRoICtjbGFzcwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCShyZXZpc2lvbiAyNjE1NzkpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcyLDQxICsxMTcyLDMwIEBAIFN0cmluZyBsb25nU3RyaW5nKExDaGFyIGMpCiBURVNU
KF9XS0Rvd25sb2FkLCBSZXN1bWUpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEk7Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKG53X2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29u
bmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKICAgICAg
ICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAg
ICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSByZXRhaW5Q
dHIoY29ubmVjdGlvbildKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRl
eHRfdCBjb250ZXh0LCBib29sLCBud19lcnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAg
RVhQRUNUX1RSVUUoY29udGVudCk7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGVycm9y
KTsKLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBkYXRhRnJvbVN0cmluZyhtYWtlU3RyaW5n
KAorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0aW9uXShWZWN0b3I8Y2hh
cj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAg
ICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKICAgICAgICAgICAgICAgICAg
ICAgIkVUYWc6IHRlc3RcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6
IDEwMDAwXHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0
dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCi0gICAgICAgICAgICAgICAg
ICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7Ci0gICAgICAgICAgICAgICAgbndf
Y29ubmVjdGlvbl9zZW5kKGNvbm5lY3Rpb24uZ2V0KCksIGRhdGEuZ2V0KCksIGNvbnRleHQsIGZh
bHNlLCBeKG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFl
cnJvcik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpCisgICAgICAgICAg
ICAgICAgKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIDI6Ci0gICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5l
Y3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbildKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBu
d19jb250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sLCBud19lcnJvcl90IGVycm9yKSB7Ci0g
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGVudCk7Ci0gICAgICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGVycm9yKTsKLQotICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdCA9IG51bGxU
ZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZShbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxy
XG4iKSk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBkYXRhRnJvbVN0cmluZyhtYWtl
U3RyaW5nKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAg
ICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCiAgICAg
ICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkNv
bnRlbnQtTGVuZ3RoOiA1MDAwXHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtUmFu
Z2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCi0gICAgICAgICAgICAgICAgICAgICJcclxu
IiwgbG9uZ1N0cmluZzw1MDAwPignYicpKSk7Ci0gICAgICAgICAgICAgICAgbndfY29ubmVjdGlv
bl9zZW5kKGNvbm5lY3Rpb24uZ2V0KCksIGRhdGEuZ2V0KCksIGNvbnRleHQsIHRydWUsIF4obndf
ZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWVycm9yKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdiJykKKyAgICAgICAgICAgICAgICApKTsK
KyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQkocmV2
aXNpb24gMjYxNDkxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9O
ZXR3b3JrUHJvY2Vzcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQsMTcgKzU0LDE1IEBAIFRFU1Qo
V2ViS2l0LCBIVFRQUmVmZXJlcikKICAgICBhdXRvIGNoZWNrUmVmZXJlciA9IFtdIChOU1VSTCAq
YmFzZVVSTCwgY29uc3QgY2hhciogZXhwZWN0ZWRSZWZlcmVyKSB7CiAgICAgICAgIHVzaW5nIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICAg
ICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2RvbmUgPSAmZG9uZSwgZXhwZWN0ZWRSZWZlcmVyXSAobndf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVj
ZWl2ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCks
IG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKSwgZG9uZSwg
ZXhwZWN0ZWRSZWZlcmVyXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250
ZXh0X3QsIGJvb2wsIG53X2Vycm9yX3QpIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShj
b250ZW50KTsKLSAgICAgICAgICAgICAgICBhdXRvIHJlcXVlc3QgPSBudWxsVGVybWluYXRlZFJl
cXVlc3QoY29udGVudCk7CisgICAgICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFsmXSAoQ29ubmVjdGlv
biBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmUoW2Nvbm5lY3Rp
b24sIGV4cGVjdGVkUmVmZXJlciwgJmRvbmVdIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUmVmZXJlcikgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIGV4cGVjdGVkSGVhZGVyRmllbGQgPSBtYWtlU3RyaW5nKCJSZWZlcmVyOiAiLCBleHBl
Y3RlZFJlZmVyZXIsICJcclxuIik7CiAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0
cnN0cihyZXF1ZXN0LmRhdGEoKSwgZXhwZWN0ZWRIZWFkZXJGaWVsZC51dGY4KCkuZGF0YSgpKSk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJSZWZlcmVyOiIpKTsKLSAgICAgICAgICAgICAgICAq
ZG9uZSA9IHRydWU7Ci0gICAgICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8Ym9keSBvbmxvYWQ9J2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKFwiZm9ybUlEXCIpLnN1Ym1pdCgpJz48Zm9ybSBpZD0nZm9ybUlE
JyBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvZm9ybT48L2Jv
ZHk+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpiYXNlVVJMXTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQkocmV2aXNpb24gMjYxNDkx
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDE4IEBACiAKICNpZiBIQVZFKFNTTCkKIAorI2ltcG9y
dCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlRDUFNlcnZlci5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiVGVzdFVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQg
IlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIEBpbnRlcmZhY2Ug
UHJveHlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVn
YXRlPgogLSAoTlNTdHJpbmcgKil3YWl0Rm9yQWxlcnQ7CkBAIC0xNzcsMyArMTgyLDEwNiBAQCBU
RVNUKFdlYktpdCwgU2VjdXJlUHJveHlDb25uZWN0aW9uKQogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShTU0wpCisKKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVX
T1JLKQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0LCBBbGxvd1Ro
aXJkUGFydHlDb29raWVzKQoreworICAgIGF1dG8gcnVuVGVzdCA9IFtdIChib29sIGFsbG93VGhp
cmRQYXJ0eUNvb2tpZXMsIGJvb2wgcHJld2FybU5ldHdvcmtQcm9jZXNzKSB7CisgICAgICAgIEhU
VFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCBhbGxvd1RoaXJkUGFydHlDb29r
aWVzXSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICsrY29u
bmVjdGlvbkNvdW50OworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0aW9u
LCBjb25uZWN0aW9uQ291bnQsIGFsbG93VGhpcmRQYXJ0eUNvb2tpZXNdIChWZWN0b3I8Y2hhcj4m
JiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJlcGx5OworICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGJvZHkgPQorICAgICAgICAgICAgICAgICI8c2NyaXB0PiIKKyAgICAg
ICAgICAgICAgICAgICAgImZldGNoKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICInaHR0cDov
L3dlYmtpdC5vcmcvcGF0aDMnLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ7Y3JlZGVudGlh
bHM6J2luY2x1ZGUnfSIKKyAgICAgICAgICAgICAgICAgICAgIikudGhlbigoKT0+eyIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJhbGVydCgnZmV0Y2hlZCcpIgorICAgICAgICAgICAgICAgICAg
ICAifSkuY2F0Y2goKGUpPT57IgorICAgICAgICAgICAgICAgICAgICAgICAgImFsZXJ0KGUpIgor
ICAgICAgICAgICAgICAgICAgICAifSkiCisgICAgICAgICAgICAgICAgIjwvc2NyaXB0PiI7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIDE6IHsKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVl
c3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93ZWJraXQub3JnL3BhdGgxIEhUVFAvMS4xXHJcbiIpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAi
Q29udGVudC1MZW5ndGg6ICIsIHN0cmxlbihib2R5KSwgIlxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiU2V0LUNvb2tpZTogYT1iXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJD
b25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGJv
ZHkKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMzogeworICAgICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDovL2V4
YW1wbGUuY29tL3BhdGgyIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVw
bHkgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBP
S1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxc
clxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCBzdHJsZW4o
Ym9keSksICJcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNsb3Nl
XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJcclxuIiwgYm9keQorICAgICAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Db3VudCA9PSAyIHx8IGFsbG93VGhpcmRQYXJ0
eUNvb2tpZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVx
dWVzdC5kYXRhKCksICJDb29raWU6IGE9YlxyXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdHJzdHIocmVxdWVzdC5k
YXRhKCksICJDb29raWU6IGE9YlxyXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkdFVCBodHRwOi8vd2Via2l0Lm9yZy9wYXRoMyBI
VFRQLzEuMVxyXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGx5ID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJBY2Nl
c3MtQ29udHJvbC1BbGxvdy1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6IHRydWVc
clxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJcclxuIjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChXVEZNb3ZlKHJlcGx5KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlv
bl0pOworICAgICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldFByb3h5Q29uZmlndXJhdGlvbjpA
eworICAgICAgICAgICAgKE5TU3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlIb3N0
OiBAIjEyNy4wLjAuMSIsCisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0
eUhUVFBQcm94eVBvcnQ6IEAoc2VydmVyLnBvcnQoKSkKKyAgICAgICAgfV07CisgICAgICAgIFtz
dG9yZUNvbmZpZ3VyYXRpb24gc2V0QWxsb3dzU2VydmVyUHJlY29ubmVjdDpOT107CisgICAgICAg
IGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IG5ldHdvcmtQcm9jZXNzUHJld2FybWluZ1dlYlZpZXc7
CisgICAgICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIG5ld10pOworICAgICAgICBpZiAocHJld2FybU5ldHdvcmtQcm9jZXNzKSB7Cisg
ICAgICAgICAgICBhdXRvIHByZXdhcm1pbmdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICAgICAgICAgIHByZXdhcm1pbmdDb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgICAgICAg
ICBuZXR3b3JrUHJvY2Vzc1ByZXdhcm1pbmdXZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpwcmV3YXJtaW5nQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICAgICAgW25l
dHdvcmtQcm9jZXNzUHJld2FybWluZ1dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAic3RhcnQgcHJvY2Vzc2VzIl07CisgICAgICAgICAgICB2aWV3Q29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzUG9vbCA9IHByZXdhcm1pbmdDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29s
OworICAgICAgICB9CisgICAgICAgIFt2aWV3Q29uZmlndXJhdGlvbiBfc2V0QWxsb3dUaGlyZFBh
cnR5Q29va2llczphbGxvd1RoaXJkUGFydHlDb29raWVzXTsKKyAgICAgICAgW3ZpZXdDb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAgICAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdl
dCgpXSk7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnL3BhdGgx
Il1dXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVy
dF0sICJmZXRjaGVkIik7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxl
LmNvbS9wYXRoMiJdXV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93
YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCIpOworICAgIH07CisgICAgcnVuVGVzdCh0cnVlLCB0cnVl
KTsKKyAgICBydW5UZXN0KGZhbHNlLCB0cnVlKTsKKyAgICBydW5UZXN0KHRydWUsIGZhbHNlKTsK
KyAgICBydW5UZXN0KGZhbHNlLCBmYWxzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjYxNDkxKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEy
ICszMCwxNSBAQAogI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiAKICNpbXBvcnQgPE5ldHdv
cmsvTmV0d29yay5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0
IDx3dGYvRm9yd2FyZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCitjbGFzcyBD
b25uZWN0aW9uOworCiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSFRU
UFJlc3BvbnNlOwpAQCAtNDQsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDZXJ0aWZp
Y2F0ZVZlcmlmaWVyID0gRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2Vj
X3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+OwogCiAgICAgSFRUUFNl
cnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNl
Pj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAsIENlcnRpZmljYXRlVmVyaWZpZXImJiA9IG51
bGxwdHIpOwotICAgIEhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChud19jb25uZWN0aW9uX3QpPiYm
LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKKyAgICBIVFRQU2VydmVyKEZ1bmN0aW9uPHZv
aWQoQ29ubmVjdGlvbik+JiYsIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOwogICAgIH5IVFRQ
U2VydmVyKCk7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OwotICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCgpIGNvbnN0OworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdChjb25zdCBTdHJpbmcm
IHBhdGggPSAiLyIpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVlc3RzKCkgY29uc3Q7CiAK
IHByaXZhdGU6CkBAIC01OSw4ICs2MiwyMyBAQCBwcml2YXRlOgogICAgIFByb3RvY29sIG1fcHJv
dG9jb2wgeyBQcm90b2NvbDo6SHR0cCB9OwogfTsKIAotUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFf
dD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYpOwotVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVk
UmVxdWVzdChkaXNwYXRjaF9kYXRhX3QpOworY2xhc3MgQ29ubmVjdGlvbiB7CitwdWJsaWM6Cisg
ICAgQ29ubmVjdGlvbihjb25zdCBDb25uZWN0aW9uJikgPSBkZWZhdWx0OworICAgIENvbm5lY3Rp
b24oQ29ubmVjdGlvbiYmKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0b3I9KGNv
bnN0IENvbm5lY3Rpb24mKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0b3I9KENv
bm5lY3Rpb24mJikgPSBkZWZhdWx0OworCisgICAgdm9pZCBzZW5kKFN0cmluZyYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsKKyAgICB2b2lkIHJlY2VpdmUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBIVFRQU2VydmVyOworICAgIENvbm5lY3Rpb24obndfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
IHsgfQorCisgICAgUmV0YWluUHRyPG53X2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOworfTsK
IAogc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgZW51bSBjbGFzcyBUZXJt
aW5hdGVDb25uZWN0aW9uIHsgTm8sIFllcyB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjYxNDkxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
ICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKICAgICBzdGFydExpc3RlbmluZyhtX2xpc3RlbmVy
LmdldCgpKTsKIH0KIAotSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKG53X2Nv
bm5lY3Rpb25fdCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIFByb3RvY29sIHByb3RvY29sKQorSFRU
UFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmIGNvbm5lY3Rp
b25IYW5kbGVyLCBQcm90b2NvbCBwcm90b2NvbCkKICAgICA6IG1fbGlzdGVuZXIoYWRvcHROUyhu
d19saXN0ZW5lcl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBudWxscHRyKS5n
ZXQoKSkpKQogICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKIHsKQEAgLTEwOCw3ICsxMDgsNyBA
QCAgICAgLCBtX3Byb3RvY29sKHByb3RvY29sKQogICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29u
bmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVyKV0gKG53X2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uKSB7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0X3F1ZXVlKGNvbm5lY3Rpb24s
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBud19jb25uZWN0aW9uX3N0YXJ0
KGNvbm5lY3Rpb24pOwotICAgICAgICBjb25uZWN0aW9uSGFuZGxlcihjb25uZWN0aW9uKTsKKyAg
ICAgICAgY29ubmVjdGlvbkhhbmRsZXIoQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAgfSku
Z2V0KCkpOwogICAgIHN0YXJ0TGlzdGVuaW5nKG1fbGlzdGVuZXIuZ2V0KCkpOwogfQpAQCAtMTM2
LDcgKzEzNiw3IEBAIHN0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25lZCBzdGF0dXMKICAg
ICByZXR1cm4geyB9OwogfQogCi1SZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVN0
cmluZyhTdHJpbmcmJiBzKQorc3RhdGljIFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRhdGFG
cm9tU3RyaW5nKFN0cmluZyYmIHMpCiB7CiAgICAgYXV0byBpbXBsID0gcy5yZWxlYXNlSW1wbCgp
OwogICAgIEFTU0VSVChpbXBsLT5pczhCaXQoKSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgUmV0YWlu
UHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbgogICAgIH0pKTsKIH0KIAotVmVjdG9y
PGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3QgY29udGVudCkKK3N0
YXRpYyBWZWN0b3I8Y2hhcj4gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGRpc3BhdGNoX2RhdGFfdCBj
b250ZW50KQogewogICAgIF9fYmxvY2sgVmVjdG9yPGNoYXI+IHJlcXVlc3Q7CiAgICAgZGlzcGF0
Y2hfZGF0YV9hcHBseShjb250ZW50LCBeYm9vbChkaXNwYXRjaF9kYXRhX3QsIHNpemVfdCwgY29u
c3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkgewpAQCAtMjMyLDE5ICsyMzIsMzcgQEAgdWlu
dDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIG53X2xpc3RlbmVyX2dl
dF9wb3J0KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCi1OU1VSTFJlcXVlc3QgKkhUVFBTZXJ2ZXI6
OnJlcXVlc3QoKSBjb25zdAorTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNvbnN0
IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqZm9ybWF0OwogICAgIHN3aXRj
aCAobV9wcm90b2NvbCkgewogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6Ci0gICAgICAgIGZvcm1h
dCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBAImh0dHA6Ly8x
MjcuMC4wLjE6JWQlcyI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBz
OgogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKLSAgICAgICAgZm9ybWF0
ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBAImh0dHBzOi8v
MTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CisgICAgcmV0dXJuIFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCksIHBhdGgudXRmOCgpLmRhdGEoKV1dXTsKK30KKwordm9p
ZCBDb25uZWN0aW9uOjpyZWNlaXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGNoYXI+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIG53X2Nvbm5lY3Rpb25fcmVj
ZWl2ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+
OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0
X3QsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29u
dGVudCk7CisgICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihudWxsVGVybWluYXRlZFJlcXVlc3QoY29udGVudCkpOworICAgIH0pLmdldCgpKTsKK30KKwor
dm9pZCBDb25uZWN0aW9uOjpzZW5kKFN0cmluZyYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBud19jb25uZWN0aW9u
X3NlbmQobV9jb25uZWN0aW9uLmdldCgpLCBkYXRhRnJvbVN0cmluZyhXVEZNb3ZlKG1lc3NhZ2Up
KS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZBVUxUX01FU1NBR0VfQ09OVEVYVCwgdHJ1ZSwgbWFr
ZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFlcnJvcik7Cisg
ICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oCShyZXZp
c2lvbiAyNjE0OTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMgKzMyLDcgQEAKIC0gKE5TU3RyaW5nICopd2FpdEZv
ckFsZXJ0OwogCiBAZW5kCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0VUlEZWxlZ2F0ZUV4
dHJhcykKKy0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0OworQGVuZApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjE0
OTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSwzICs1OSwxNyBAQCAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVydAog
fQogCiBAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0
cmFzKQorCistIChOU1N0cmluZyAqKV90ZXN0X3dhaXRGb3JBbGVydAoreworICAgIEVYUEVDVF9G
QUxTRShzZWxmLlVJRGVsZWdhdGUpOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3RVSURlbGVnYXRlIG5ld10pOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IHVpRGVsZWdhdGUuZ2V0
KCk7CisgICAgTlNTdHJpbmcgKmFsZXJ0ID0gW3VpRGVsZWdhdGUgd2FpdEZvckFsZXJ0XTsKKyAg
ICBzZWxmLlVJRGVsZWdhdGUgPSBuaWw7CisgICAgcmV0dXJuIGFsZXJ0OworfQorCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399705</attachid>
            <date>2020-05-18 20:26:51 -0700</date>
            <delta_ts>2020-05-19 17:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200518202649.patch</filename>
            <type>text/plain</type>
            <size>40485</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgb3RoZXJ3aXNlIGVmZmVjdGl2
ZWx5IGJsb2NrcyBhbGwgdGhpcmQgcGFydHkgY29va2llcywgd2hpY2ggd2UgbmVlZCBpbiB0aGUg
Y2FzZSBpbiB0aGUgcmFkYXIuCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzIHdoaWNoIHZl
cmlmeSB0aGlzIHdvcmtzIGNvcnJlY3RseSB3aXRoIGFuZCB3aXRob3V0IGEgcHJlLWV4aXN0aW5n
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjphZGRQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcyk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVBhZ2VBbGxvd2luZ1RoaXJkUGFy
dHlDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cGFn
ZUFsbG93c1RoaXJkUGFydHlDb29raWVzIGNvbnN0KToKKwogMjAyMC0wNS0xMSAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gRG9j
dW1lbnQuZ2V0QW5pbWF0aW9ucygpIHNob3VsZCBvbmx5IGNvbnNpZGVyIGRvY3VtZW50IGNvbm5l
Y3Rpb24gYW5kIG5vdCB0aW1lbGluZSBhc3NvY2lhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNw
cAkocmV2aXNpb24gMjYxNDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDkg
QEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQwogICAgIGlmICghbV9p
c1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICBpZiAocGFnZUlEICYmIHBhZ2VBbGxvd3NUaGlyZFBhcnR5Q29va2llcygqcGFnZUlEKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0
eURvbWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVzIH07CiAgICAgaWYgKGZpcnN0UGFydHlEb21h
aW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJ
KHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2ICsyMDEsOSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRBcHBCb3VuZERvbWFpbnMoKTsKKyAgICB2b2lk
IGFkZFBhZ2VBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIHsgbV9wYWdlc0FsbG93aW5nVGhpcmRQYXJ0eUNvb2tpZXMuYWRkKGlkZW50aWZpZXIpOyB9
CisgICAgdm9pZCByZW1vdmVQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcyhQYWdlSWRlbnRp
ZmllciBpZGVudGlmaWVyKSB7IG1fcGFnZXNBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzLnJlbW92
ZShpZGVudGlmaWVyKTsgfQorICAgIGJvb2wgcGFnZUFsbG93c1RoaXJkUGFydHlDb29raWVzKFBh
Z2VJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZXNBbGxvd2luZ1Ro
aXJkUGFydHlDb29raWVzLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAjZW5kaWYKIAogcHJpdmF0
ZToKQEAgLTI2MCw2ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0
aExpbmtEZWNvcmF0aW9uVGVzdE1vZGUgPSBmYWxzZTsKICAgICBUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbCB9OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1f
YXBwQm91bmREb21haW5zOworICAgIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+IG1fcGFnZXNBbGxv
d2luZ1RoaXJkUGFydHlDb29raWVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4MTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTE4ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJs
b2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSB3
ZSBkb24ndCB3YW50IGEgY29tcHJvbWlzZWQgd2ViIHByb2Nlc3MgdG8gYmUgYWJsZSB0byBzZXQg
dGhpcyB0byB0cnVlIGFuZCBzdGVhbCBvdGhlciBjb29raWVzLAorICAgICAgICB3ZSBoYXZlIHRo
ZSBVSSBwcm9jZXNzIGFuZCBOZXR3b3JrIHByb2Nlc3MgbWFpbnRhaW5pbmcgc3RhdGUgb2Ygd2hp
Y2ggcGFnZXMgaGF2ZSBhY2Nlc3MgdG8gdGhpcmQgcGFydHkgY29va2llcy4KKyAgICAgICAgVGhp
cyBpcyBhIGxpdHRsZSB0cmlja3kgYmVjYXVzZSBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lv
bmFsUGFnZSBjaGFuZ2VzIHRoZSBwYWdlIGlkLCBidXQgbm90IHRvbyBiYWQuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjp1cGRhdGVUaGlyZFBhcnR5Q29va2llUGVybWlzc2lvbnMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIFNoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRBbGxvd1RoaXJkUGFydHlD
b29raWVzKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmFsbG93VGhpcmRQYXJ0
eUNvb2tpZXMgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfYWxs
b3dUaGlyZFBhcnR5Q29va2llc10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF9zZXRBbGxvd1RoaXJkUGFydHlDb29raWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dh
cFRvUHJvdmlzaW9uYWxQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnVw
ZGF0ZVRoaXJkUGFydHlDb29raWVQZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDUtMTggIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gVW5leHBlY3RlZCBjYXBpdGFsaXph
dGlvbiBvZiBuZXh0IHdvcmQgYWZ0ZXIgcmVwb3NpdGlvbmluZyBjYXJldApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY3LDYgKzEzNjcsMTcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0VG9TYW1lU2l0ZVN0cmljdAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0KIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBl
cm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IGlkVG9BZGQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBp
ZFRvUmVtb3ZlKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChpZFRvQWRkKQorICAgICAgICAg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5hZGRQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2ll
cygqaWRUb0FkZCk7CisgICAgICAgIGlmIChpZFRvUmVtb3ZlKQorICAgICAgICAgICAgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVQYWdlQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcygqaWRU
b1JlbW92ZSk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sIGRlYnVnTW9kZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJ
KHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1p
c3Npb25zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
aWRUb0FkZCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IGlkVG9SZW1vdmUpOwog
I2VuZGlmCiAKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxNDkxKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTQ3LDYgKzE0Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2Vp
dmUKICAgICBTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIG1vZGUpIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluKSAtPiAoKSBBc3luYworICAgIFVwZGF0ZVRoaXJkUGFydHlDb29raWVQZXJtaXNz
aW9ucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBpZFRvQWRkLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gaWRUb1Jl
bW92ZSkKICNlbmRpZgogCiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wg
ZGVidWdNb2RlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwx
MCBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1ByCiAgICAgLCBtX3Rl
c3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3BlZWRNdWx0aXBsaWVyKQogICAgICwg
bV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KHBhcmFtZXRlcnMuYWxsb3dzU2VydmVyUHJlY29ubmVj
dCkKIHsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNlc3Np
b24oKSkgeworICAgICAgICBmb3IgKGF1dG8mIHBhZ2VJRCA6IHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucGFnZXNBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzKQor
ICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmFkZFBhZ2VBbGxvd2luZ1RoaXJkUGFydHlDb29r
aWVzKHBhZ2VJRCk7CisgICAgfQogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkg
ewogICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5uZXR3
b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5Lmlz
TnVsbCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzIAogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBs
aWNhdGlvbkRvbWFpbjsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBh
cHBCb3VuZERvbWFpbnM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbWFudWFsUHJl
dmFsZW50UmVzb3VyY2U7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
c0FsbG93aW5nVGhpcmRQYXJ0eUNvb2tpZXM7CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKQEAgLTY4LDYgKzY5LDcgQEAgc3RydWN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIAogICAgICAgICBlbmNvZGVyIDw8IHN0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgZW5jb2RlciA8PCBhcHBCb3VuZERvbWFp
bnM7CiAgICAgICAgIGVuY29kZXIgPDwgbWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAgICAg
IGVuY29kZXIgPDwgcGFnZXNBbGxvd2luZ1RoaXJkUGFydHlDb29raWVzOwogICAgIH0KIAogICAg
IHN0YXRpYyBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycz4gZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTEzOSw2ICsxNDEsMTEgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIAogICAgICAgICBpZiAoIW1hbnVhbFByZXZhbGVu
dFJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgICAgICBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBwYWdlc0FsbG93aW5nVGhp
cmRQYXJ0eUNvb2tpZXM7CisgICAgICAgIGRlY29kZXIgPj4gcGFnZXNBbGxvd2luZ1RoaXJkUGFy
dHlDb29raWVzOworICAgICAgICBpZiAoIXBhZ2VzQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcykK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICAgICAgcmV0dXJuIHt7CiAg
ICAgICAgICAgICBXVEZNb3ZlKCpkaXJlY3RvcnkpLAogICAgICAgICAgICAgV1RGTW92ZSgqZGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKQEAgLTE1NSw2ICsxNjIsNyBAQCBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4pLAogICAgICAgICAgICAgV1RGTW92ZSgqYXBwQm91bmREb21h
aW5zKSwKICAgICAgICAgICAgIFdURk1vdmUoKm1hbnVhbFByZXZhbGVudFJlc291cmNlKSwKKyAg
ICAgICAgICAgIFdURk1vdmUoKnBhZ2VzQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcyksCiAgICAg
ICAgIH19OwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1MjYsMTAgQEAgV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgIGlmIChtX2NvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VzKCktPnNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVz
dGluZygpKQogICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3Jr
UHJvY2VzcygpOwogI2VuZGlmCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICBpZiAobV9jb25maWd1cmF0aW9uLT5hbGxvd1RoaXJkUGFydHlDb29raWVzKCkpCisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25z
KG1fd2ViUGFnZUlELCBXVEY6Om51bGxvcHQpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5M
b29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtu
b3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CkBAIC01NjYs
NiArNTcwLDcgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNpZm5kZWYgTkRFQlVH
CiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgorICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25zKFdURjo6bnVs
bG9wdCwgbV93ZWJQYWdlSUQpOwogfQogCiAvLyBGSVhNRTogU2hvdWxkIHJldHVybiBhIGNvbnN0
IFBhZ2VDbGllbnQmIGFuZCBhZGQgYSBzZXBhcmF0ZSBub24tY29uc3QKQEAgLTg5NCwxMCArODk5
LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9Qcm92aXNpb25hbFBhZ2U6IG5ld1dl
YlBhZ2VJRD0lIiBQUkl1NjQsIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQo
KSk7CiAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsKKyAgICBh
dXRvIG9sZFBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIG1fd2ViUGFnZUlEID0gcHJvdmlzaW9u
YWxQYWdlLT53ZWJQYWdlSUQoKTsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlV2ViUGFnZUlE
KCk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3Jl
KCk7CiAKKyAgICBpZiAobV9jb25maWd1cmF0aW9uLT5hbGxvd1RoaXJkUGFydHlDb29raWVzKCkp
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1p
c3Npb25zKG1fd2ViUGFnZUlELCBvbGRQYWdlSUQpOworCiAjaWYgSEFWRShWSVNJQklMSVRZX1BS
T1BBR0FUSU9OX1ZJRVcpCiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24g
PSBwcm92aXNpb25hbFBhZ2UtPmNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CShyZXZpc2lvbiAyNjE0OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsNyBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbiwKICAgICAgICAgYXBwQm91bmREb21haW5zLAogICAgICAgICBtYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSwKKyAgICAgICAgeyB9LAogICAgIH07CiAKICAgICAvLyBBZGQgYW55IHBsYXRm
b3JtIHNwZWNpZmljIHBhcmFtZXRlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjYxNDkxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBh
Z2VDb25maWd1cmF0aW9uCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIGNv
cHktPm1fYXBwbGljYXRpb25NYW5pZmVzdCA9IHRoaXMtPm1fYXBwbGljYXRpb25NYW5pZmVzdDsK
ICNlbmRpZgorICAgIGNvcHktPm1fYWxsb3dUaGlyZFBhcnR5Q29va2llcyA9IHRoaXMtPm1fYWxs
b3dUaGlyZFBhcnR5Q29va2llczsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0aGlzLT5tX3VybFNj
aGVtZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVtZUhhbmRsZXJzLnNldChwYWly
LmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHktPm1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNp
b24gMjYxNDkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkgY29uc3QgeyByZXR1cm4g
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOyB9CiAgICAgdm9pZCBzZXRMaW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKGJvb2wgbGltaXRzKSB7IG1fbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IGxpbWl0czsgfQogCisgICAgdm9pZCBzZXRBbGxv
d1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUpIHsgbV9hbGxvd1RoaXJkUGFydHlDb29raWVz
ID0gdmFsdWU7IH0KKyAgICBib29sIGFsbG93VGhpcmRQYXJ0eUNvb2tpZXMoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93VGhpcmRQYXJ0eUNvb2tpZXM7IH0KKyAgICAKIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKQEAgLTIwMiw2ICsy
MDUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsK
ICAgICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKICAgICBib29sIG1fbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2FsbG93
VGhpcmRQYXJ0eUNvb2tpZXMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjYxNDkxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxNiBAQCAtICh2b2lkKV9zZXRJZ25vcmVzQXBwQm91
bmREb21haW5zOihCT09MCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRJZ25vcmVzQXBwQm91
bmREb21haW5zKGlnbm9yZXNBcHBCb3VuZERvbWFpbnMpOwogfQogCistIChCT09MKV9hbGxvd1Ro
aXJkUGFydHlDb29raWVzCit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+YWxsb3dU
aGlyZFBhcnR5Q29va2llcygpOworfQorCistICh2b2lkKV9zZXRBbGxvd1RoaXJkUGFydHlDb29r
aWVzOihCT09MKWFsbG93Cit7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd1RoaXJk
UGFydHlDb29raWVzKGFsbG93KTsKK30KKwogLSAoTlNTdHJpbmcgKilfcHJvY2Vzc0Rpc3BsYXlO
YW1lCiB7CiAgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+cHJvY2Vzc0Rpc3BsYXlOYW1l
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkocmV2aXNpb24gMjYx
NDkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsOSBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhCiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRVbmRvTWFuYWdlckFQSUVuYWJsZWQ6KSBCT09MIF91bmRvTWFuYWdlckFQ
SUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJWaWV3Q2F0ZWdvcnk6KSBfV0tXZWJWaWV3
Q2F0ZWdvcnkgX3dlYlZpZXdDYXRlZ29yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCi0tICh2b2lkKV9zZXRJZ25vcmVzQXBwQm91bmREb21h
aW5zOihCT09MKWlnbm9yZXNBcHBCb3VuZERvbWFpbnMgIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOikgQk9PTCBfaWdub3Jlc0FwcEJvdW5kRG9t
YWlucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dUaGlyZFBhcnR5Q29va2ll
czopIEJPT0wgX2FsbG93VGhpcmRQYXJ0eUNvb2tpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAoQk9PTClfaWdub3Jlc0FwcEJvdW5k
RG9tYWlucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQcm9jZXNzRGlzcGxheU5h
bWU6KSBOU1N0cmluZyAqX3Byb2Nlc3NEaXNwbGF5TmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAyNjE0OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg3LDYgKzExODcsMTEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlUwogCiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VG9TYW1lU2l0ZVN0cmljdENvb2tp
ZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVRoaXJkUGFydHlDb29r
aWVQZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBpZFRvQWRkLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gaWRUb1JlbW92ZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VXBk
YXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25zKHNlc3Npb25JRCwgaWRUb0FkZCwgaWRUb1Jl
bW92ZSksIDApOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdN
b2RlKGJvb2wgZGVidWdNb2RlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MTQ5MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hv
dWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCB1cGRhdGVUaGlyZFBhcnR5Q29va2llUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBpZFRvQWRkLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gaWRUb1JlbW92ZSk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0
QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJ
KHJldmlzaW9uIDI2MTQ5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEwLDYgKzE5MTAsMTkg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdAogICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhtX3Nl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgfQogfQor
Cit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZVRoaXJkUGFydHlDb29raWVQZXJtaXNzaW9u
cyhPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gaWRUb0FkZCwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IGlkVG9SZW1vdmUpCit7CisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJv
Y2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29y
a1Byb2Nlc3MtPnVwZGF0ZVRoaXJkUGFydHlDb29raWVQZXJtaXNzaW9ucyhtX3Nlc3Npb25JRCwg
aWRUb0FkZCwgaWRUb1JlbW92ZSk7CisgICAgfQorICAgIGlmIChpZFRvQWRkKQorICAgICAgICBt
X3BhZ2VzQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcy5hZGQoKmlkVG9BZGQpOworICAgIGlmIChp
ZFRvUmVtb3ZlKQorICAgICAgICBtX3BhZ2VzQWxsb3dpbmdUaGlyZFBhcnR5Q29va2llcy5yZW1v
dmUoKmlkVG9SZW1vdmUpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIyNTcsNiArMjI3MCw3IEBAIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICAgICAgV1RGTW92ZShzdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW4pLAogICAgICAgICBXVEZNb3ZlKGFwcEJvdW5kRG9tYWlucyksCiAg
ICAgICAgIFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291
cmNlKSwKKyAgICAgICAgY29weVRvVmVjdG9yKG1fcGFnZXNBbGxvd2luZ1RoaXJkUGFydHlDb29r
aWVzKSwKICAgICB9OwogCiAgICAgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjYxNDkx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDcgQEAgcHVibGljOgogICAgIFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSgpIGNvbnN0OwogICAgIGJvb2wgaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQoKSBjb25zdCB7
IHJldHVybiBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OyB9CiAgICAgdm9pZCB1c2VFeHBsaWNp
dElUUFN0YXRlKCkgeyBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0ID0gdHJ1ZTsgfQorICAgIHZv
aWQgdXBkYXRlVGhpcmRQYXJ0eUNvb2tpZVBlcm1pc3Npb25zKE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBpZFRvQWRkLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
aWRUb1JlbW92ZSk7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zNTIsNiArMzUzLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKICAgICBXVEY6OkZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazsKKyAg
ICBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VzQWxsb3dpbmdUaGlyZFBh
cnR5Q29va2llczsKICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI2MTg0MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0
IEBACisyMDIwLTA1LTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJv
bSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVG8gbWFrZSB0ZXN0cyBlYXNpZXIgdG8gcmVhZCBhbmQgd3Jp
dGUsIEkgbWFkZSBDb25uZWN0aW9uOjpzZW5kIGFuZCBDb25uZWN0aW9uOjpyZWNlaXZlLCB3aGlj
aCBhc3N1bWUgbm8gbmV0d29yayBlcnJvcnMuCisgICAgICAgIFRoaXMgaXMgdHJ1ZSB3aGVuIGRv
aW5nIGxvY2FsIHRlc3RpbmcgaW4gQVBJIHRlc3RzLiAgV2Ugd2VyZSBhbHJlYWR5IGFzc3VtaW5n
IG5vIG5ldHdvcmsgZXJyb3JzLgorICAgICAgICBJIGFsc28gYWRkIF90ZXN0X3dhaXRGb3JBbGVy
dCB0byBtYWtlIHRlc3RzIGxlc3MgdmVyYm9zZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm94eS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFNlcnZl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkYXRhRnJvbVN0cmluZyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpudWxsVGVybWluYXRlZFJlcXVlc3QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpDb25uZWN0aW9uOjpyZWNlaXZlIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNv
bm5lY3Rpb246OnNlbmQgY29uc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFVJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVn
YXRlLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSk6CisKIDIw
MjAtMDUtMTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSB1c2VzIG9mICtzZWxmIHdpdGggK2NsYXNzCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHJldmlzaW9uIDI2
MTU3OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTExNzIsNDEgKzExNzIsMzAgQEAgU3RyaW5nIGxvbmdTdHJp
bmcoTENoYXIgYykKIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKIHsKICAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNv
dW50ID0gMF0obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNvbm5lY3Rpb24p
IG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAg
IGNhc2UgMToKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAx
LCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29u
bmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQs
IG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIHsK
LSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UoZXJyb3IpOwotICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGRhdGFGcm9t
U3RyaW5nKG1ha2VTdHJpbmcoCisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmUoW2Nvbm5l
Y3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgog
ICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCiAgICAgICAgICAgICAgICAgICAg
ICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVu
dC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIK
LSAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpKTsKLSAg
ICAgICAgICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5n
ZXQoKSwgY29udGV4dCwgZmFsc2UsIF4obndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIWVycm9yKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0pLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+
KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2
ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1h
a2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hf
ZGF0YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vy
cm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAg
ICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwotCi0gICAgICAgICAgICAgICAgYXV0
byByZXF1ZXN0ID0gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpOworICAgICAgICAgICAg
Y29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7
CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFu
Z2U6IGJ5dGVzPTUwMDAtXHJcbiIpKTsKLQotICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGRh
dGFGcm9tU3RyaW5nKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBD
b250ZW50XHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgogICAgICAg
ICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgogICAgICAgICAgICAgICAg
ICAgICAiQ29udGVudC1SYW5nZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAwXHJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdiJykpKTsKLSAgICAgICAgICAg
ICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5nZXQoKSwgY29u
dGV4dCwgdHJ1ZSwgXihud19lcnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghZXJyb3IpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2InKQorICAg
ICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdv
cmtQcm9jZXNzLm1tCShyZXZpc2lvbiAyNjE0OTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCwx
NyArNTQsMTUgQEAgVEVTVChXZWJLaXQsIEhUVFBSZWZlcmVyKQogICAgIGF1dG8gY2hlY2tSZWZl
cmVyID0gW10gKE5TVVJMICpiYXNlVVJMLCBjb25zdCBjaGFyKiBleHBlY3RlZFJlZmVyZXIpIHsK
ICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgICAgIGJvb2wgZG9u
ZSA9IGZhbHNlOwotICAgICAgICBIVFRQU2VydmVyIHNlcnZlcihbZG9uZSA9ICZkb25lLCBleHBl
Y3RlZFJlZmVyZXJdIChud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgewotICAgICAgICAgICAg
bndfY29ubmVjdGlvbl9yZWNlaXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWluUHRyKGNv
bm5lY3Rpb24pLCBkb25lLCBleHBlY3RlZFJlZmVyZXJdKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50
LCBud19jb250ZW50X2NvbnRleHRfdCwgYm9vbCwgbndfZXJyb3JfdCkgewotICAgICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKGNvbnRlbnQpOwotICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdCA9
IG51bGxUZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoWyZdIChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZShbY29ubmVjdGlvbiwgZXhwZWN0ZWRSZWZlcmVyLCAmZG9uZV0gKFZlY3RvcjxjaGFy
PiYmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSZWZlcmVyKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRIZWFkZXJGaWVsZCA9IG1ha2VTdHJpbmco
IlJlZmVyZXI6ICIsIGV4cGVjdGVkUmVmZXJlciwgIlxyXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCBleHBlY3RlZEhlYWRlckZpZWxk
LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJlZmVyZXI6IikpOwot
ICAgICAgICAgICAgICAgICpkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgICAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxi
b2R5IG9ubG9hZD0nZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJmb3JtSURcIikuc3VibWl0KCkn
Pjxmb3JtIGlkPSdmb3JtSUQnIG1ldGhvZD0ncG9zdCcgYWN0aW9uPSdodHRwOi8vMTI3LjAuMC4x
OiVkLyc+PC9mb3JtPjwvYm9keT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOmJhc2VVUkxdOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1t
CShyZXZpc2lvbiAyNjE0OTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTggQEAKIAogI2lmIEhB
VkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KIAogQGludGVyZmFjZSBQcm94eURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlLCBXS1VJRGVsZWdhdGU+CiAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVydDsKQEAgLTE3
NywzICsxODIsMTA2IEBAIFRFU1QoV2ViS2l0LCBTZWN1cmVQcm94eUNvbm5lY3Rpb24pCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKFNTTCkKKworI2lmIEhB
VkUoTkVUV09SS19GUkFNRVdPUkspCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVT
VChXZWJLaXQsIEFsbG93VGhpcmRQYXJ0eUNvb2tpZXMpCit7CisgICAgYXV0byBydW5UZXN0ID0g
W10gKGJvb2wgYWxsb3dUaGlyZFBhcnR5Q29va2llcywgYm9vbCBwcmV3YXJtTmV0d29ya1Byb2Nl
c3MpIHsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsIGFs
bG93VGhpcmRQYXJ0eUNvb2tpZXNdIChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewor
ICAgICAgICAgICAgKytjb25uZWN0aW9uQ291bnQ7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJl
Y2VpdmUoW2Nvbm5lY3Rpb24sIGNvbm5lY3Rpb25Db3VudCwgYWxsb3dUaGlyZFBhcnR5Q29va2ll
c10gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVw
bHk7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYm9keSA9CisgICAgICAgICAgICAgICAg
IjxzY3JpcHQ+IgorICAgICAgICAgICAgICAgICAgICAiZmV0Y2goIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIidodHRwOi8vd2Via2l0Lm9yZy9wYXRoMycsIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIntjcmVkZW50aWFsczonaW5jbHVkZSd9IgorICAgICAgICAgICAgICAgICAgICAiKS50
aGVuKCgpPT57IgorICAgICAgICAgICAgICAgICAgICAgICAgImFsZXJ0KCdmZXRjaGVkJykiCisg
ICAgICAgICAgICAgICAgICAgICJ9KS5jYXRjaCgoZSk9PnsiCisgICAgICAgICAgICAgICAgICAg
ICAgICAiYWxlcnQoZSkiCisgICAgICAgICAgICAgICAgICAgICJ9KSIKKyAgICAgICAgICAgICAg
ICAiPC9zY3JpcHQ+IjsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbm5lY3Rpb25Db3VudCkg
eworICAgICAgICAgICAgICAgIGNhc2UgMTogeworICAgICAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDovL3dlYmtpdC5vcmcvcGF0aDEg
SFRUUC8xLjFcclxuIikpOworICAgICAgICAgICAgICAgICAgICByZXBseSA9IG1ha2VTdHJpbmco
CisgICAgICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogIiwgc3RybGVuKGJvZHkpLCAiXHJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJTZXQtQ29va2llOiBhPWJcclxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJcclxuIiwgYm9keQorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAz
OiB7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEo
KSwgIkdFVCBodHRwOi8vZXhhbXBsZS5jb20vcGF0aDIgSFRUUC8xLjFcclxuIikpOworICAgICAg
ICAgICAgICAgICAgICByZXBseSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAg
ICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50
LVR5cGU6IHRleHQvaHRtbFxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1M
ZW5ndGg6ICIsIHN0cmxlbihib2R5KSwgIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAi
Q29ubmVjdGlvbjogY2xvc2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBi
b2R5CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAg
ICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvbkNvdW50ID09IDIg
fHwgYWxsb3dUaGlyZFBhcnR5Q29va2llcykKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJcbiIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJcbiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93
ZWJraXQub3JnL3BhdGgzIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVw
bHkgPQorICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogaHR0cDovL2V4YW1wbGUu
Y29tXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1D
cmVkZW50aWFsczogdHJ1ZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlv
bjogY2xvc2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4iOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi5zZW5kKFdURk1vdmUocmVwbHkpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNp
c3RlbnRDb25maWd1cmF0aW9uXSk7CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UHJv
eHlDb25maWd1cmF0aW9uOkB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9w
ZXJ0eUhUVFBQcm94eUhvc3Q6IEAiMTI3LjAuMC4xIiwKKyAgICAgICAgICAgIChOU1N0cmluZyAq
KWtDRlN0cmVhbVByb3BlcnR5SFRUUFByb3h5UG9ydDogQChzZXJ2ZXIucG9ydCgpKQorICAgICAg
ICB9XTsKKyAgICAgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25u
ZWN0Ok5PXTsKKyAgICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gbmV0d29ya1Byb2Nlc3NQ
cmV3YXJtaW5nV2ViVmlldzsKKyAgICAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgICAgIGlmIChwcmV3YXJtTmV0
d29ya1Byb2Nlc3MpIHsKKyAgICAgICAgICAgIGF1dG8gcHJld2FybWluZ0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAgICAgICAgcHJl
d2FybWluZ0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZS5n
ZXQoKTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzUHJld2FybWluZ1dlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOnByZXdhcm1pbmdDb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgICAgICAgICBbbmV0d29ya1Byb2Nlc3NQcmV3YXJtaW5nV2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBwcm9jZXNzZXMiXTsKKyAgICAgICAgICAgIHZpZXdD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gcHJld2FybWluZ0NvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1Bvb2w7CisgICAgICAgIH0KKyAgICAgICAgW3ZpZXdDb25maWd1cmF0aW9u
IF9zZXRBbGxvd1RoaXJkUGFydHlDb29raWVzOmFsbG93VGhpcmRQYXJ0eUNvb2tpZXNdOworICAg
ICAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0
KCldOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246dmll
d0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L3dlYmtpdC5vcmcvcGF0aDEiXV1dOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQiKTsKKworICAgICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgyIl1dXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIik7CisgICAgfTsKKyAgICBy
dW5UZXN0KHRydWUsIHRydWUpOworICAgIHJ1blRlc3QoZmFsc2UsIHRydWUpOworICAgIHJ1blRl
c3QodHJ1ZSwgZmFsc2UpOworICAgIHJ1blRlc3QoZmFsc2UsIGZhbHNlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAy
NjE0OTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDE1IEBACiAjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykK
IAogI2ltcG9ydCA8TmV0d29yay9OZXR3b3JrLmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5o
PgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKK2NsYXNzIENvbm5lY3Rpb247CisKIGNsYXNzIEhUVFBTZXJ2ZXIgewogcHVibGlj
OgogICAgIHN0cnVjdCBIVFRQUmVzcG9uc2U7CkBAIC00NCwxMCArNDcsMTAgQEAgcHVibGljOgog
ICAgIHVzaW5nIENlcnRpZmljYXRlVmVyaWZpZXIgPSBGdW5jdGlvbjx2b2lkKHNlY19wcm90b2Nv
bF9tZXRhZGF0YV90LCBzZWNfdHJ1c3RfdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9jb21wbGV0ZV90
KT47CiAKICAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3Ry
aW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCwgQ2VydGlmaWNh
dGVWZXJpZmllciYmID0gbnVsbHB0cik7Ci0gICAgSFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKG53
X2Nvbm5lY3Rpb25fdCk+JiYsIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOworICAgIEhUVFBT
ZXJ2ZXIoRnVuY3Rpb248dm9pZChDb25uZWN0aW9uKT4mJiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6
SHR0cCk7CiAgICAgfkhUVFBTZXJ2ZXIoKTsKICAgICB1aW50MTZfdCBwb3J0KCkgY29uc3Q7Ci0g
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCA9ICIvIikgY29uc3Q7CiAgICAgc2l6ZV90IHRvdGFsUmVx
dWVzdHMoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTU5LDggKzYyLDIzIEBAIHByaXZhdGU6CiAg
ICAgUHJvdG9jb2wgbV9wcm90b2NvbCB7IFByb3RvY29sOjpIdHRwIH07CiB9OwogCi1SZXRhaW5Q
dHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVN0cmluZyhTdHJpbmcmJik7Ci1WZWN0b3I8Y2hh
cj4gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGRpc3BhdGNoX2RhdGFfdCk7CitjbGFzcyBDb25uZWN0
aW9uIHsKK3B1YmxpYzoKKyAgICBDb25uZWN0aW9uKGNvbnN0IENvbm5lY3Rpb24mKSA9IGRlZmF1
bHQ7CisgICAgQ29ubmVjdGlvbihDb25uZWN0aW9uJiYpID0gZGVmYXVsdDsKKyAgICBDb25uZWN0
aW9uJiBvcGVyYXRvcj0oY29uc3QgQ29ubmVjdGlvbiYpID0gZGVmYXVsdDsKKyAgICBDb25uZWN0
aW9uJiBvcGVyYXRvcj0oQ29ubmVjdGlvbiYmKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNlbmQo
U3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIHZvaWQgcmVjZWl2ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxjaGFyPiYmKT4m
JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEhUVFBTZXJ2ZXI7CisgICAg
Q29ubmVjdGlvbihud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKKyAgICAgICAgOiBtX2Nvbm5l
Y3Rpb24oY29ubmVjdGlvbikgeyB9CisKKyAgICBSZXRhaW5QdHI8bndfY29ubmVjdGlvbl90PiBt
X2Nvbm5lY3Rpb247Cit9OwogCiBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKICAg
ICBlbnVtIGNsYXNzIFRlcm1pbmF0ZUNvbm5lY3Rpb24geyBObywgWWVzIH07CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNjE0OTEpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw3ICsxMDAsNyBAQCAgICAgLCBtX3Byb3RvY29sKHByb3RvY29sKQogICAgIHN0YXJ0TGlz
dGVuaW5nKG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCi1IVFRQU2VydmVyOjpIVFRQU2VydmVyKEZ1
bmN0aW9uPHZvaWQobndfY29ubmVjdGlvbl90KT4mJiBjb25uZWN0aW9uSGFuZGxlciwgUHJvdG9j
b2wgcHJvdG9jb2wpCitIVFRQU2VydmVyOjpIVFRQU2VydmVyKEZ1bmN0aW9uPHZvaWQoQ29ubmVj
dGlvbik+JiYgY29ubmVjdGlvbkhhbmRsZXIsIFByb3RvY29sIHByb3RvY29sKQogICAgIDogbV9s
aXN0ZW5lcihhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShsaXN0ZW5lclBhcmFtZXRlcnMocHJv
dG9jb2wsIG51bGxwdHIpLmdldCgpKSkpCiAgICAgLCBtX3Byb3RvY29sKHByb3RvY29sKQogewpA
QCAtMTA4LDcgKzEwOCw3IEBAICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCiAgICAgbndfbGlz
dGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5lci5nZXQoKSwgbWFrZUJs
b2NrUHRyKFtjb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpXSAo
bndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKICAgICAgICAgbndfY29ubmVjdGlvbl9zZXRf
cXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAgICAgICAgIG53
X2Nvbm5lY3Rpb25fc3RhcnQoY29ubmVjdGlvbik7Ci0gICAgICAgIGNvbm5lY3Rpb25IYW5kbGVy
KGNvbm5lY3Rpb24pOworICAgICAgICBjb25uZWN0aW9uSGFuZGxlcihDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pKTsKICAgICB9KS5nZXQoKSk7CiAgICAgc3RhcnRMaXN0ZW5pbmcobV9saXN0ZW5lci5n
ZXQoKSk7CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIFN0cmluZyBzdGF0dXNUZXh0KHVu
c2lnbmVkIHN0YXR1cwogICAgIHJldHVybiB7IH07CiB9CiAKLVJldGFpblB0cjxkaXNwYXRjaF9k
YXRhX3Q+IGRhdGFGcm9tU3RyaW5nKFN0cmluZyYmIHMpCitzdGF0aWMgUmV0YWluUHRyPGRpc3Bh
dGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYgcykKIHsKICAgICBhdXRvIGltcGwg
PSBzLnJlbGVhc2VJbXBsKCk7CiAgICAgQVNTRVJUKGltcGwtPmlzOEJpdCgpKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVN0cmluCiAgICAg
fSkpOwogfQogCi1WZWN0b3I8Y2hhcj4gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGRpc3BhdGNoX2Rh
dGFfdCBjb250ZW50KQorc3RhdGljIFZlY3RvcjxjaGFyPiBudWxsVGVybWluYXRlZFJlcXVlc3Qo
ZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQpCiB7CiAgICAgX19ibG9jayBWZWN0b3I8Y2hhcj4gcmVx
dWVzdDsKICAgICBkaXNwYXRjaF9kYXRhX2FwcGx5KGNvbnRlbnQsIF5ib29sKGRpc3BhdGNoX2Rh
dGFfdCwgc2l6ZV90LCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKSB7CkBAIC0yMzIs
MTkgKzIzMiwzNyBAQCB1aW50MTZfdCBIVFRQU2VydmVyOjpwb3J0KCkgY29uc3QKICAgICByZXR1
cm4gbndfbGlzdGVuZXJfZ2V0X3BvcnQobV9saXN0ZW5lci5nZXQoKSk7CiB9CiAKLU5TVVJMUmVx
dWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdCgpIGNvbnN0CitOU1VSTFJlcXVlc3QgKkhUVFBTZXJ2
ZXI6OnJlcXVlc3QoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAogewogICAgIE5TU3RyaW5nICpm
b3JtYXQ7CiAgICAgc3dpdGNoIChtX3Byb3RvY29sKSB7CiAgICAgY2FzZSBQcm90b2NvbDo6SHR0
cDoKLSAgICAgICAgZm9ybWF0ID0gQCJodHRwOi8vMTI3LjAuMC4xOiVkLyI7CisgICAgICAgIGZv
cm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZCVzIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQcm90b2NvbDo6SHR0cHM6CiAgICAgY2FzZSBQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExT
OgotICAgICAgICBmb3JtYXQgPSBAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyI7CisgICAgICAgIGZv
cm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQlcyI7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHBvcnQoKV1dXTsKKyAgICBy
ZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHBvcnQoKSwgcGF0aC51dGY4KCkuZGF0
YSgpXV1dOworfQorCit2b2lkIENvbm5lY3Rpb246OnJlY2VpdmUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAg
bndfY29ubmVjdGlvbl9yZWNlaXZlKG1fY29ubmVjdGlvbi5nZXQoKSwgMSwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBu
d19jb250ZW50X2NvbnRleHRfdCwgYm9vbCwgbndfZXJyb3JfdCBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIEFTU0VSVChjb250ZW50KTsKKyAgICAgICAgQVNTRVJUKCFlcnJvcik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxUZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KSk7CisgICAg
fSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmQoU3RyaW5nJiYgbWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAorewor
ICAgIG53X2Nvbm5lY3Rpb25fc2VuZChtX2Nvbm5lY3Rpb24uZ2V0KCksIGRhdGFGcm9tU3RyaW5n
KFdURk1vdmUobWVzc2FnZSkpLmdldCgpLCBOV19DT05ORUNUSU9OX0RFRkFVTFRfTUVTU0FHRV9D
T05URVhULCB0cnVlLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKG53X2Vycm9yX3QgZXJyb3IpIG11dGFibGUgeworICAgICAgICBB
U1NFUlQoIWVycm9yKTsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJ
RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RV
SURlbGVnYXRlLmgJKHJldmlzaW9uIDI2MTQ5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMyArMzIsNyBAQAogLSAo
TlNTdHJpbmcgKil3YWl0Rm9yQWxlcnQ7CiAKIEBlbmQKKworQGludGVyZmFjZSBXS1dlYlZpZXcg
KFRlc3RVSURlbGVnYXRlRXh0cmFzKQorLSAoTlNTdHJpbmcgKilfdGVzdF93YWl0Rm9yQWxlcnQ7
CitAZW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUu
bW0JKHJldmlzaW9uIDI2MTQ5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJ
RGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDMgKzU5LDE3IEBAIC0gKE5TU3RyaW5n
ICopd2FpdEZvckFsZXJ0CiB9CiAKIEBlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAo
VGVzdFVJRGVsZWdhdGVFeHRyYXMpCisKKy0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0
Cit7CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYuVUlEZWxlZ2F0ZSk7CisgICAgYXV0byB1aURlbGVn
YXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgc2VsZi5VSURlbGVnYXRl
ID0gdWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICBOU1N0cmluZyAqYWxlcnQgPSBbdWlEZWxlZ2F0ZSB3
YWl0Rm9yQWxlcnRdOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IG5pbDsKKyAgICByZXR1cm4gYWxl
cnQ7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399790</attachid>
            <date>2020-05-19 17:40:32 -0700</date>
            <delta_ts>2020-05-20 10:34:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200519174031.patch</filename>
            <type>text/plain</type>
            <size>42181</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxvd0FsbFRo
aXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0aXZlcyBvbmx5IHNob3du
IGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5zZXJ0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsNiArMjk4LDcgQEAgUGFnZTo6UGFnZShQ
YWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVy
bnMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMpKQogICAg
ICwgbV9sb2Fkc1N1YnJlc291cmNlcyhwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJlc291cmNl
cykKICAgICAsIG1fbG9hZHNGcm9tTmV0d29yayhwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc0Zyb21O
ZXR3b3JrKQorICAgICwgbV9hbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKHBhZ2VDb25maWd1cmF0
aW9uLmFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMpCiB7CiAgICAgdXBkYXRlVGltZXJUaHJvdHRs
aW5nU3RhdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZHNTdWJyZXNvdXJjZXM7IH0KICAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsoKSBjb25z
dCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7IH0KKyAgICBib29sIGFsbG93QWxsVGhpcmRQ
YXJ0eUNvb2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXM7
IH0KIAogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90
aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUp
OyB9CiAgICAgYm9vbCBjYW5VcGRhdGVUaHJvdHRsaW5nUmVhc29uKFRocm90dGxpbmdSZWFzb24g
cmVhc29uKSBjb25zdCB7IHJldHVybiAhbV90aHJvdHRsaW5nUmVhc29uc092ZXJyaWRlbkZvclRl
c3RpbmcuY29udGFpbnMocmVhc29uKTsgfQpAQCAtMTA0NSw2ICsxMDQ2LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fc2hvdWxkRmlyZUV2ZW50cyB7IHRydWUgfTsKICAgICBib29sIG1fbG9hZHNT
dWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVl
IH07CisgICAgYm9vbCBtX2FsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzIHsgZmFsc2UgfTsKICAg
ICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxET01XcmFwcGVyV29ybGQ+LCBVbmlxdWVSZWY8VXNlclNj
cmlwdD4+PiBtX3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb247CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYxODg2KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzEsNiArMTMxLDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0
cnVlIH07CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgdXNl
clNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CisgICAgYm9vbCBh
bGxvd0FsbFRoaXJkUGFydHlDb29raWVzIHsgZmFsc2UgfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA1LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJsb2NrIHRoaXJk
IHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB2YWx1ZSBtYWtlcyBO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6YmxvY2tDb29raWVzKCkgbm90IGRvIGFueXRoaW5nIGZvciBj
ZXJ0YWluIFdLV2ViVmlld3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2NrQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp1bmJsb2NrQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tD
b2NvYSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpz
ZXRBbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OmFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llc10pOgorICAgICAg
ICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRBbGxvd0FsbFRoaXJkUGFydHlDb29raWVz
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
blByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmFkZFBhcmFtZXRlcnNTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKToKKwogMjAyMC0wNS0xOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gRml4IG1lc3NhZ2UgZmlsdGVyIHNhbmRib3ggdmlvbGF0
aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAg
UmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcgogewogICAgIEFTU0VSVCgh
cGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24s
IGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFt
ZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJzLmlz
TWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25G
b3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIC8vIEZJWE1FOiBKdXN0IHBhc3Mg
cGFyYW1ldGVycyB0byB0aGUgTmV0d29ya0RhdGFUYXNrQ29jb2EgY29uc3RydWN0b3IuCisgICAg
cmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJh
bWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdl
SUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVu
dFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBh
cmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZp
Z2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBw
YXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgcGFyYW1ldGVycy5hbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKTsK
ICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpj
cmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9u
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NiArNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0NlcnRpZmljYXRlSW5mbyB7IGZhbHNl
IH07CiAgICAgYm9vbCBpc01haW5GcmFtZU5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wg
aXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUgeyBmYWxzZSB9OworICAgIGJvb2wg
YWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmlsZVJlZmVyZW5jZXM7CiAgICAg
UHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25seTo6Tm8g
fTsKICAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlU
cmFja2VyOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY28KICAgICBlbmNvZGVyIDw8IG5lZWRzQ2VydGlm
aWNhdGVJbmZvOwogICAgIGVuY29kZXIgPDwgaXNNYWluRnJhbWVOYXZpZ2F0aW9uOwogICAgIGVu
Y29kZXIgPDwgaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWU7CisgICAgZW5jb2Rl
ciA8PCBhbGxvd0FsbFRoaXJkUGFydHlDb29raWVzOwogICAgIGVuY29kZXIgPDwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWU7CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHNvdXJjZU9y
aWdpbik7CkBAIC0xOTgsNiArMTk5LDggQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM+IAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5hbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYXhpbXVtQnVmZmVyaW5nVGltZSkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsOSBAQCBz
dHJ1Y3QgU2Vzc2lvbldyYXBwZXI7CiAKIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NvY29hIGZpbmFs
IDogcHVibGljIE5ldHdvcmtEYXRhVGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3
b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFU
YXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VO
YXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0Rh
dGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdh
dGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgYm9vbCBhbGxvd0FsbFRoaXJkUGFydHlDb29raWVz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29j
b2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVj
b25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGRhdGFUYXNrSXNG
b3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIG5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXIsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBm
cmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25p
ZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5G
cmFtZU5hdmlnYXRpb24sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55
RnJhbWUsIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIGFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMpKTsKICAgICB9CiAKICAgICB+TmV0d29ya0Rh
dGFUYXNrQ29jb2EoKTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBkZXNj
cmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNv
cmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
UHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9u
YWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJD
b3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgYm9vbCBhbGxvd0FsbFRoaXJk
UGFydHlDb29raWVzKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1
ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91
bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwpAQCAtMTAz
LDYgKzEwMyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNGb3JNYWluUmVzb3VyY2VOYXZp
Z2F0aW9uRm9yQW55RnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hbGxvd0FsbFRoaXJkUGFydHlDb29raWVz
IHsgZmFsc2UgfTsKIH07CiAKIFdlYkNvcmU6OkNyZWRlbnRpYWwgc2VydmVyVHJ1c3RDcmVkZW50
aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw2ICsxMzYsOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpibG9ja0Nvb2tpZXMo
CiAgICAgaWYgKG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKG1fYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcykKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgW21fdGFzayBfc2V0RXhwbGljaXRDb29raWVTdG9yYWdlOnN0YXRl
bGVzc0Nvb2tpZVN0b3JhZ2UoKS5fY29va2llU3RvcmFnZV07CiAgICAgbV9oYXNCZWVuU2V0VG9V
c2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlID0gdHJ1ZTsKIH0KQEAgLTE0Nyw2ICsxNTAsOCBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp1bmJsb2NrQ29va2llCiAgICAgaWYgKCFtX2hhc0Jl
ZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAg
IEFTU0VSVCghbV9hbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKTsKKwogICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAg
ICAgICAgW21fdGFzayBfc2V0RXhwbGljaXRDb29raWVTdG9yYWdlOnN0b3JhZ2VTZXNzaW9uLT5u
c0Nvb2tpZVN0b3JhZ2UoKS5fY29va2llU3RvcmFnZV07CiAgICAgICAgIG1faGFzQmVlblNldFRv
VXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSA9IGZhbHNlOwpAQCAtMTk5LDEzICsyMDQsMTQgQEAg
c3RhdGljIGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZwogICAgIHJldHVybiBzZXNz
aW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwogfQogCi1OZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91
bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRp
b25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikKK05ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNv
cmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNv
bm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBib29sIGFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMpCiAgICAg
OiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxz
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgLCBtX3Nl
c3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2Em
PihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdpdGhDcmVkZW50aWFscywg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKSkK
ICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwg
bV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShkYXRhVGFza0lzRm9yTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQogICAgICwgbV9pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoY29tcHV0ZUlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZChzZXNzaW9uKSkKKyAgICAs
IG1fYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyhhbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKQog
ewogICAgIGlmIChtX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkKICAgICAgICAg
cmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgs
NiArMTQ4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAg
IGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIg
PDwgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOwogICAgIGVuY29kZXIgPDwgbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBlbmNvZGVyIDw8IGFsbG93QWxsVGhp
cmRQYXJ0eUNvb2tpZXM7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgZW5jb2RlciA8PCB0aGVt
ZU5hbWU7CkBAIC00NzcsNiArNDc4LDkgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gV2ViUAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWxsb3dBbGxUaGlyZFBh
cnR5Q29va2llcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50aGVtZU5hbWUp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjYxODg2KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjAsNiArMjIwLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzIHsgZmFsc2Ug
fTsKICAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAg
ICBib29sIGFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIFN0cmluZyB0aGVtZU5hbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4NTIsNiArNzg1
Miw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJh
bWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkucmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2Fw
dHVyZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1
cmF0aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwogICAgIHBhcmFtZXRl
cnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBwYXJhbWV0ZXJzLmFsbG93QWxsVGhpcmRQYXJ0eUNv
b2tpZXMgPSBtX2NvbmZpZ3VyYXRpb24tPmFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMoKTsKIAog
I2lmIFBMQVRGT1JNKEdUSykKICAgICBwYXJhbWV0ZXJzLnRoZW1lTmFtZSA9IHBhZ2VDbGllbnQo
KS50aGVtZU5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODUsNiArODUsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1
cmF0aW9uCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIGNvcHktPm1fYXBw
bGljYXRpb25NYW5pZmVzdCA9IHRoaXMtPm1fYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgor
ICAgIGNvcHktPm1fYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyA9IHRoaXMtPm1fYWxsb3dBbGxU
aGlyZFBhcnR5Q29va2llczsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0aGlzLT5tX3VybFNjaGVt
ZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVtZUhhbmRsZXJzLnNldChwYWlyLmtl
eSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHktPm1fY29yc0Rpc2FibGluZ1BhdHRl
cm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24g
MjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOyB9CiAgICAgdm9pZCBzZXRMaW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKGJvb2wgbGltaXRzKSB7IG1fbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IGxpbWl0czsgfQogCisgICAgdm9pZCBzZXRBbGxvd0Fs
bFRoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUpIHsgbV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzID0gdmFsdWU7IH0KKyAgICBib29sIGFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMoKSBjb25z
dCB7IHJldHVybiBtX2FsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXM7IH0KKyAgICAKIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKQEAg
LTIwMiw2ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNlcyB7
IHRydWUgfTsKICAgICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKICAgICBib29s
IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2FsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjYxODg2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxNiBAQCAtICh2b2lkKV9zZXRJ
Z25vcmVzQXBwQm91bmREb21haW5zOihCT09MCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRJ
Z25vcmVzQXBwQm91bmREb21haW5zKGlnbm9yZXNBcHBCb3VuZERvbWFpbnMpOwogfQogCistIChC
T09MKV9hbGxvd0FsbFRoaXJkUGFydHlDb29raWVzCit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmln
dXJhdGlvbi0+YWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcygpOworfQorCistICh2b2lkKV9zZXRB
bGxvd0FsbFRoaXJkUGFydHlDb29raWVzOihCT09MKWFsbG93Cit7CisgICAgX3BhZ2VDb25maWd1
cmF0aW9uLT5zZXRBbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKGFsbG93KTsKK30KKwogLSAoTlNT
dHJpbmcgKilfcHJvY2Vzc0Rpc3BsYXlOYW1lCiB7CiAgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJh
dGlvbi0+cHJvY2Vzc0Rpc3BsYXlOYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
blByaXZhdGUuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSwxMCArMTI1LDggQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZp
ZXdDYQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RWRpdGFibGVJbWFnZXNFbmFi
bGVkOikgQk9PTCBfZWRpdGFibGVJbWFnZXNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTQuNCksIGlvcygxMi4yKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRV
bmRvTWFuYWdlckFQSUVuYWJsZWQ6KSBCT09MIF91bmRvTWFuYWdlckFQSUVuYWJsZWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRXZWJWaWV3Q2F0ZWdvcnk6KSBfV0tXZWJWaWV3Q2F0ZWdvcnkgX3dlYlZp
ZXdDYXRlZ29yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwotCi0tICh2b2lkKV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOihCT09MKWlnbm9y
ZXNBcHBCb3VuZERvbWFpbnMgIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7Ci0tIChCT09MKV9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KSBCT09MIF9p
Z25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxv
d0FsbFRoaXJkUGFydHlDb29raWVzOikgQk9PTCBfYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UHJvY2Vzc0Rpc3BsYXlOYW1lOikgTlNTdHJp
bmcgKl9wcm9jZXNzRGlzcGxheU5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24g
MjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsOCArMjY4LDEwIEBAIHN0YXRpYyB2b2lk
IGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3QgRnIKIAogICAgIHBhcmFtZXRlcnMuaXNIVFRQU1Vw
Z3JhZGVFbmFibGVkID0gZnJhbWUtPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpOwog
Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgIGlmIChhdXRvKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxv
YWRDbGllbnQgPSBwYWdlLT5oYXNSZXNvdXJjZUxvYWRDbGllbnQoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5hbGxvd0FsbFRoaXJkUGFydHlDb29raWVzID0gcGFnZS0+YWxsb3dBbGxUaGlyZFBhcnR5
Q29va2llcygpOworICAgIH0KIAogICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQgPSBmcmFtZS0+
b3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHBhcmVudEZyYW1lID0gb3duZXJF
bGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
MCw2ICs1NTAsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRp
b24gPSBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fk
c1N1YnJlc291cmNlczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0g
cGFyYW1ldGVycy5sb2Fkc0Zyb21OZXR3b3JrOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmFsbG93
QWxsVGhpcmRQYXJ0eUNvb2tpZXMgPSBwYXJhbWV0ZXJzLmFsbG93QWxsVGhpcmRQYXJ0eUNvb2tp
ZXM7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tF
bmFibGVkKQogICAgICAgICBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpz
aW5nbGV0b24oKS5zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZmFsc2Up
OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjYxODkyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMjAtMDUtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIHVuYmxvY2sgdGhpcmQgcGFydHkgY29v
a2llcyBmcm9tIFdLV2ViVmlld3Mgd2l0aCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR1cm5lZCBv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMDU4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDU5NTUzOT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBtYWtlIHRlc3RzIGVhc2llciB0byByZWFk
IGFuZCB3cml0ZSwgSSBtYWRlIENvbm5lY3Rpb246OnNlbmQgYW5kIENvbm5lY3Rpb246OnJlY2Vp
dmUsIHdoaWNoIGFzc3VtZSBubyBuZXR3b3JrIGVycm9ycy4KKyAgICAgICAgVGhpcyBpcyB0cnVl
IHdoZW4gZG9pbmcgbG9jYWwgdGVzdGluZyBpbiBBUEkgdGVzdHMuICBXZSB3ZXJlIGFscmVhZHkg
YXNzdW1pbmcgbm8gbmV0d29yayBlcnJvcnMuCisgICAgICAgIEkgYWxzbyBhZGQgX3Rlc3Rfd2Fp
dEZvckFsZXJ0IHRvIG1ha2UgdGVzdHMgbGVzcyB2ZXJib3NlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3Mu
bW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb3h5Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpI
VFRQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRhdGFGcm9tU3RyaW5nKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Om51bGxUZXJtaW5hdGVkUmVxdWVzdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkNvbm5lY3Rpb246OnJlY2VpdmUgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6Q29ubmVjdGlvbjo6c2VuZCBjb25zdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0VUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRd
KToKKwogMjAyMC0wNS0xOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXSBTeW5jIGpoYnVpbGQgdG8gZmxhdHBhawpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCShyZXZp
c2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcyLDQxICsxMTcyLDMwIEBAIFN0cmluZyBs
b25nU3RyaW5nKExDaGFyIGMpCiBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiB7CiAgICAgdXNp
bmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5l
Y3Rpb25Db3VudCA9IDBdKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAg
ICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25u
ZWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewog
ICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVj
dGlvbiwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQ
dHIoW2Nvbm5lY3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbildKGRpc3BhdGNoX2RhdGFfdCBj
b250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sLCBud19lcnJvcl90IGVy
cm9yKSB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGVudCk7Ci0gICAgICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGVycm9yKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBk
YXRhRnJvbVN0cmluZyhtYWtlU3RyaW5nKAorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZl
KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9L
XHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgogICAgICAgICAgICAg
ICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKICAgICAgICAgICAgICAgICAgICAg
IkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRc
IlxyXG4iCi0gICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScp
KSk7Ci0gICAgICAgICAgICAgICAgbndfY29ubmVjdGlvbl9zZW5kKGNvbm5lY3Rpb24uZ2V0KCks
IGRhdGEuZ2V0KCksIGNvbnRleHQsIGZhbHNlLCBeKG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFlcnJvcik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmlu
Zzw1MDAwPignYScpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBud19jb25uZWN0aW9u
X3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbildKGRp
c3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29s
LCBud19lcnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGVu
dCk7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGVycm9yKTsKLQotICAgICAgICAgICAg
ICAgIGF1dG8gcmVxdWVzdCA9IG51bGxUZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAg
ICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZShbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYgcmVx
dWVzdCkgewogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEo
KSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iKSk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGRh
dGEgPSBkYXRhRnJvbVN0cmluZyhtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBh
cnRpYWwgQ29udGVudFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIK
ICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiA1MDAwXHJcbiIKICAgICAgICAg
ICAgICAgICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCi0g
ICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYicpKSk7Ci0gICAg
ICAgICAgICAgICAgbndfY29ubmVjdGlvbl9zZW5kKGNvbm5lY3Rpb24uZ2V0KCksIGRhdGEuZ2V0
KCksIGNvbnRleHQsIHRydWUsIF4obndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoIWVycm9yKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0p
LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdi
JykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nl
c3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9OZXR3b3JrUHJvY2Vzcy5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTQsMTcgKzU0LDE1IEBAIFRFU1QoV2ViS2l0LCBIVFRQUmVmZXJlcikKICAgICBhdXRvIGNo
ZWNrUmVmZXJlciA9IFtdIChOU1VSTCAqYmFzZVVSTCwgY29uc3QgY2hhciogZXhwZWN0ZWRSZWZl
cmVyKSB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogICAgICAgICBi
b29sIGRvbmUgPSBmYWxzZTsKLSAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2RvbmUgPSAmZG9u
ZSwgZXhwZWN0ZWRSZWZlcmVyXSAobndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKLSAgICAg
ICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJldGFp
blB0cihjb25uZWN0aW9uKSwgZG9uZSwgZXhwZWN0ZWRSZWZlcmVyXShkaXNwYXRjaF9kYXRhX3Qg
Y29udGVudCwgbndfY29udGVudF9jb250ZXh0X3QsIGJvb2wsIG53X2Vycm9yX3QpIHsKLSAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAgICAgICBhdXRvIHJl
cXVlc3QgPSBudWxsVGVybWluYXRlZFJlcXVlc3QoY29udGVudCk7CisgICAgICAgIEhUVFBTZXJ2
ZXIgc2VydmVyKFsmXSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBjb25u
ZWN0aW9uLnJlY2VpdmUoW2Nvbm5lY3Rpb24sIGV4cGVjdGVkUmVmZXJlciwgJmRvbmVdIChWZWN0
b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUmVmZXJl
cikgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkSGVhZGVyRmllbGQgPSBtYWtl
U3RyaW5nKCJSZWZlcmVyOiAiLCBleHBlY3RlZFJlZmVyZXIsICJcclxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgZXhwZWN0ZWRIZWFk
ZXJGaWVsZC51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJSZWZlcmVy
OiIpKTsKLSAgICAgICAgICAgICAgICAqZG9uZSA9IHRydWU7Ci0gICAgICAgICAgICB9KS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsK
ICAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCI8Ym9keSBvbmxvYWQ9J2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZm9ybUlEXCIpLnN1
Ym1pdCgpJz48Zm9ybSBpZD0nZm9ybUlEJyBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0naHR0cDovLzEy
Ny4wLjAuMTolZC8nPjwvZm9ybT48L2JvZHk+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpiYXNl
VVJMXTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHku
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm94eS5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDE4IEBACiAK
ICNpZiBIQVZFKFNTTCkKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgorI2ltcG9ydCAiVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVO
dW1iZXJzLmg+CiAKIEBpbnRlcmZhY2UgUHJveHlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmln
YXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlPgogLSAoTlNTdHJpbmcgKil3YWl0Rm9yQWxlcnQ7
CkBAIC0xNzcsMyArMTgyLDk3IEBAIFRFU1QoV2ViS2l0LCBTZWN1cmVQcm94eUNvbm5lY3Rpb24p
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKFNTTCkKKwor
I2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworVEVTVChXZWJLaXQsIEFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMpCit7CisgICAgYXV0byBy
dW5UZXN0ID0gW10gKGJvb2wgYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcykgeworICAgICAgICBI
VFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgYWxsb3dBbGxUaGlyZFBhcnR5
Q29va2llc10gKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAgICAr
K2Nvbm5lY3Rpb25Db3VudDsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZShbY29ubmVj
dGlvbiwgY29ubmVjdGlvbkNvdW50LCBhbGxvd0FsbFRoaXJkUGFydHlDb29raWVzXSAoVmVjdG9y
PGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIFN0cmluZyByZXBseTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBib2R5ID0KKyAgICAgICAgICAgICAgICAiPHNjcmlwdD4i
CisgICAgICAgICAgICAgICAgICAgICJmZXRjaCgiCisgICAgICAgICAgICAgICAgICAgICAgICAi
J2h0dHA6Ly93ZWJraXQub3JnL3BhdGgzJywiCisgICAgICAgICAgICAgICAgICAgICAgICAie2Ny
ZWRlbnRpYWxzOidpbmNsdWRlJ30iCisgICAgICAgICAgICAgICAgICAgICIpLnRoZW4oKCk9Pnsi
CisgICAgICAgICAgICAgICAgICAgICAgICAiYWxlcnQoJ2ZldGNoZWQnKSIKKyAgICAgICAgICAg
ICAgICAgICAgIn0pLmNhdGNoKChlKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGVy
dChlKSIKKyAgICAgICAgICAgICAgICAgICAgIn0pIgorICAgICAgICAgICAgICAgICI8L3Njcmlw
dD4iOworICAgICAgICAgICAgICAgIHN3aXRjaCAoY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOiB7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0
cihyZXF1ZXN0LmRhdGEoKSwgIkdFVCBodHRwOi8vd2Via2l0Lm9yZy9wYXRoMSBIVFRQLzEuMVxy
XG4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGx5ID0gbWFrZVN0cmluZygKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCBzdHJsZW4oYm9keSksICJcclxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgIlNldC1Db29raWU6IGE9YlxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxy
XG4iLCBib2R5CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIDM6IHsKKyAgICAg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoMiBIVFRQLzEuMVxyXG4iKSk7CisgICAgICAgICAgICAgICAg
ICAgIHJlcGx5ID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEu
MSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogdGV4
dC9odG1sXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogIiwg
c3RybGVuKGJvZHkpLCAiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9u
OiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGJvZHkKKyAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQ291bnQgPT0gMiB8fCBhbGxvd0Fs
bFRoaXJkUGFydHlDb29raWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUo
c3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2llOiBhPWJcclxuIikpOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Ryc3Ry
KHJlcXVlc3QuZGF0YSgpLCAiQ29va2llOiBhPWJcclxuIikpOworICAgICAgICAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDovL3dlYmtpdC5v
cmcvcGF0aDMgSFRUUC8xLjFcclxuIikpOworICAgICAgICAgICAgICAgICAgICByZXBseSA9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRp
YWxzOiB0cnVlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9z
ZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiI7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXBseSkpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGF1dG8gc3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENv
bmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQcm94eUNvbmZp
Z3VyYXRpb246QHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRU
UFByb3h5SG9zdDogQCIxMjcuMC4wLjEiLAorICAgICAgICAgICAgKE5TU3RyaW5nICopa0NGU3Ry
ZWFtUHJvcGVydHlIVFRQUHJveHlQb3J0OiBAKHNlcnZlci5wb3J0KCkpCisgICAgICAgIH1dOwor
ICAgICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldEFsbG93c1NlcnZlclByZWNvbm5lY3Q6Tk9d
OworICAgICAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllF
U107CisgICAgICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIG5ld10pOworICAgICAgICBbdmlld0NvbmZpZ3VyYXRpb24gX3NldEFsbG93
QWxsVGhpcmRQYXJ0eUNvb2tpZXM6YWxsb3dBbGxUaGlyZFBhcnR5Q29va2llc107CisgICAgICAg
IFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjp2aWV3Q29u
ZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Vi
a2l0Lm9yZy9wYXRoMSJdXV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVz
dF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCIpOworCisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vZXhhbXBsZS5jb20vcGF0aDIiXV1dOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQiKTsKKyAgICB9OworICAgIHJ1blRl
c3QodHJ1ZSk7CisgICAgcnVuVGVzdChmYWxzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjYxODg2KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDEyICszMCwxNSBAQAogI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiAKICNpbXBvcnQgPE5l
dHdvcmsvTmV0d29yay5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1w
b3J0IDx3dGYvRm9yd2FyZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCitjbGFz
cyBDb25uZWN0aW9uOworCiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
SFRUUFJlc3BvbnNlOwpAQCAtNDQsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDZXJ0
aWZpY2F0ZVZlcmlmaWVyID0gRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwg
c2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+OwogCiAgICAgSFRU
UFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3Bv
bnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAsIENlcnRpZmljYXRlVmVyaWZpZXImJiA9
IG51bGxwdHIpOwotICAgIEhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChud19jb25uZWN0aW9uX3Qp
PiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKKyAgICBIVFRQU2VydmVyKEZ1bmN0aW9u
PHZvaWQoQ29ubmVjdGlvbik+JiYsIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOwogICAgIH5I
VFRQU2VydmVyKCk7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OwotICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCgpIGNvbnN0OworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdChjb25zdCBTdHJp
bmcmIHBhdGggPSAiLyIpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVlc3RzKCkgY29uc3Q7
CiAKIHByaXZhdGU6CkBAIC01OSw4ICs2MiwyMyBAQCBwcml2YXRlOgogICAgIFByb3RvY29sIG1f
cHJvdG9jb2wgeyBQcm90b2NvbDo6SHR0cCB9OwogfTsKIAotUmV0YWluUHRyPGRpc3BhdGNoX2Rh
dGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYpOwotVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5h
dGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3QpOworY2xhc3MgQ29ubmVjdGlvbiB7CitwdWJsaWM6
CisgICAgQ29ubmVjdGlvbihjb25zdCBDb25uZWN0aW9uJikgPSBkZWZhdWx0OworICAgIENvbm5l
Y3Rpb24oQ29ubmVjdGlvbiYmKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0b3I9
KGNvbnN0IENvbm5lY3Rpb24mKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0b3I9
KENvbm5lY3Rpb24mJikgPSBkZWZhdWx0OworCisgICAgdm9pZCBzZW5kKFN0cmluZyYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsKKyAgICB2b2lkIHJlY2Vp
dmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYpIGNvbnN0OworCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBIVFRQU2VydmVyOworICAgIENvbm5lY3Rpb24obndf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rp
b24pIHsgfQorCisgICAgUmV0YWluUHRyPG53X2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOwor
fTsKIAogc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgZW51bSBjbGFzcyBU
ZXJtaW5hdGVDb25uZWN0aW9uIHsgTm8sIFllcyB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcg
QEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKICAgICBzdGFydExpc3RlbmluZyhtX2xpc3Rl
bmVyLmdldCgpKTsKIH0KIAotSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKG53
X2Nvbm5lY3Rpb25fdCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIFByb3RvY29sIHByb3RvY29sKQor
SFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmIGNvbm5l
Y3Rpb25IYW5kbGVyLCBQcm90b2NvbCBwcm90b2NvbCkKICAgICA6IG1fbGlzdGVuZXIoYWRvcHRO
Uyhud19saXN0ZW5lcl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBudWxscHRy
KS5nZXQoKSkpKQogICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKIHsKQEAgLTEwOCw3ICsxMDgs
NyBAQCAgICAgLCBtX3Byb3RvY29sKHByb3RvY29sKQogICAgIG53X2xpc3RlbmVyX3NldF9uZXdf
Y29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbY29ubmVj
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVyKV0gKG53X2Nvbm5lY3Rpb25f
dCBjb25uZWN0aW9uKSB7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0X3F1ZXVlKGNvbm5lY3Rp
b24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBud19jb25uZWN0aW9uX3N0
YXJ0KGNvbm5lY3Rpb24pOwotICAgICAgICBjb25uZWN0aW9uSGFuZGxlcihjb25uZWN0aW9uKTsK
KyAgICAgICAgY29ubmVjdGlvbkhhbmRsZXIoQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAg
fSkuZ2V0KCkpOwogICAgIHN0YXJ0TGlzdGVuaW5nKG1fbGlzdGVuZXIuZ2V0KCkpOwogfQpAQCAt
MTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25lZCBzdGF0dXMK
ICAgICByZXR1cm4geyB9OwogfQogCi1SZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJv
bVN0cmluZyhTdHJpbmcmJiBzKQorc3RhdGljIFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRh
dGFGcm9tU3RyaW5nKFN0cmluZyYmIHMpCiB7CiAgICAgYXV0byBpbXBsID0gcy5yZWxlYXNlSW1w
bCgpOwogICAgIEFTU0VSVChpbXBsLT5pczhCaXQoKSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgUmV0
YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbgogICAgIH0pKTsKIH0KIAotVmVj
dG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3QgY29udGVudCkK
K3N0YXRpYyBWZWN0b3I8Y2hhcj4gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGRpc3BhdGNoX2RhdGFf
dCBjb250ZW50KQogewogICAgIF9fYmxvY2sgVmVjdG9yPGNoYXI+IHJlcXVlc3Q7CiAgICAgZGlz
cGF0Y2hfZGF0YV9hcHBseShjb250ZW50LCBeYm9vbChkaXNwYXRjaF9kYXRhX3QsIHNpemVfdCwg
Y29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkgewpAQCAtMjMyLDE5ICsyMzIsMzcgQEAg
dWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIG53X2xpc3RlbmVy
X2dldF9wb3J0KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCi1OU1VSTFJlcXVlc3QgKkhUVFBTZXJ2
ZXI6OnJlcXVlc3QoKSBjb25zdAorTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNv
bnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqZm9ybWF0OwogICAgIHN3
aXRjaCAobV9wcm90b2NvbCkgewogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6Ci0gICAgICAgIGZv
cm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBAImh0dHA6
Ly8xMjcuMC4wLjE6JWQlcyI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvdG9jb2w6Okh0
dHBzOgogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKLSAgICAgICAgZm9y
bWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBAImh0dHBz
Oi8vMTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CisgICAgcmV0dXJuIFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCksIHBhdGgudXRmOCgpLmRhdGEoKV1dXTsKK30KKwor
dm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGNo
YXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIG53X2Nvbm5lY3Rpb25f
cmVjZWl2ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250
ZXh0X3QsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NFUlQo
Y29udGVudCk7CisgICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihudWxsVGVybWluYXRlZFJlcXVlc3QoY29udGVudCkpOworICAgIH0pLmdldCgpKTsKK30K
Kwordm9pZCBDb25uZWN0aW9uOjpzZW5kKFN0cmluZyYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBud19jb25uZWN0
aW9uX3NlbmQobV9jb25uZWN0aW9uLmdldCgpLCBkYXRhRnJvbVN0cmluZyhXVEZNb3ZlKG1lc3Nh
Z2UpKS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZBVUxUX01FU1NBR0VfQ09OVEVYVCwgdHJ1ZSwg
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFlcnJvcik7
CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oCShy
ZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVn
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMgKzMyLDcgQEAKIC0gKE5TU3RyaW5nICopd2Fp
dEZvckFsZXJ0OwogCiBAZW5kCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0VUlEZWxlZ2F0
ZUV4dHJhcykKKy0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0OworQGVuZApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCShyZXZpc2lvbiAy
NjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01OSwzICs1OSwxNyBAQCAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVy
dAogfQogCiBAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRl
RXh0cmFzKQorCistIChOU1N0cmluZyAqKV90ZXN0X3dhaXRGb3JBbGVydAoreworICAgIEVYUEVD
VF9GQUxTRShzZWxmLlVJRGVsZWdhdGUpOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3RVSURlbGVnYXRlIG5ld10pOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IHVpRGVsZWdhdGUu
Z2V0KCk7CisgICAgTlNTdHJpbmcgKmFsZXJ0ID0gW3VpRGVsZWdhdGUgd2FpdEZvckFsZXJ0XTsK
KyAgICBzZWxmLlVJRGVsZWdhdGUgPSBuaWw7CisgICAgcmV0dXJuIGFsZXJ0OworfQorCitAZW5k
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399850</attachid>
            <date>2020-05-20 10:34:20 -0700</date>
            <delta_ts>2020-05-20 11:59:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200520103419.patch</filename>
            <type>text/plain</type>
            <size>99532</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxvd0FsbFRo
aXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0aXZlcyBvbmx5IHNob3du
IGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5zZXJ0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNhbWVTaXRlSW5mby5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIK
QEAgLTQxLDYgKzQyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQor
eworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICByZXR1cm4g
cGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKFJlZjxTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikp
KTsKQEAgLTgwLDcgKzg4LDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llcyhEb2N1bWVudCYg
ZG9jdQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwogICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBy
ZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKGRvY3VtZW50KSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIApAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVzKERv
Y3VtZW50JiBkb2MKICAgICB9CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgc2Vzc2lvbi0+c2V0Q29v
a2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZv
KGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6WWVzLCBjb29r
aWVTdHJpbmcpOworICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZVN0cmluZywgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcoZG9jdW1lbnQpKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtMTMxLDcgKzEzOSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29r
aWVzRW5hYmxlZChjb25zdCBEb2MKIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92
aWRlci0+c3RvcmFnZVNlc3Npb24oKSkgewotICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0
LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1
cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQogCkBAIC0xNjQsNyArMTcyLDcgQEAgYm9v
bCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdQogICAgIH0KIAogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigp
KQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpOworICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGRvY3VtZW50KSwgY29va2llcyk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCiAgICAgLCBtX2xv
YWRzU3VicmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQogICAg
ICwgbV9sb2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsp
CisgICAgLCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0
bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29u
c3QgeyByZXR1cm4gbV9sb2Fkc0Zyb21OZXR3b3JrOyB9CisgICAgYm9vbCBzaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc7IH0KIAogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29u
OjpMb3dQb3dlck1vZGUpOyB9CiAgICAgYm9vbCBjYW5VcGRhdGVUaHJvdHRsaW5nUmVhc29uKFRo
cm90dGxpbmdSZWFzb24gcmVhc29uKSBjb25zdCB7IHJldHVybiAhbV90aHJvdHRsaW5nUmVhc29u
c092ZXJyaWRlbkZvclRlc3RpbmcuY29udGFpbnMocmVhc29uKTsgfQpAQCAtMTA0NSw2ICsxMDQ2
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmlyZUV2ZW50cyB7IHRydWUgfTsKICAg
ICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJv
bU5ldHdvcmsgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2Ny
aXB0cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RE9NV3JhcHBlcldvcmxk
PiwgVW5pcXVlUmVmPFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0
aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGxv
YWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yayB7IHRy
dWUgfTsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsg
dHJ1ZSB9OworICAgIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJv
bAogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVx
dWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDog
SW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CisgICAg
cmV0dXJuIHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVz
dC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJl
Q29va2llczo6Tm8sIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmlyc3Q7CiB9CiAKIHN0YXRp
YyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llSmFyKiBj
b29raWVKYXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE2
ICsxMDQsMTYgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0hhZFVzZXJJbgogICAg
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBpZiAoIW1faXNS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgcmV0dXJuIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCks
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogICAg
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKKyAgICBp
ZiAocmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIGlmICghbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkRXhlbXB0CiAKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCisgICAgaWYg
KG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSkpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3koKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwpAQCAt
MTYwLDExICsxNjAsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGdldEFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBn
ZXRDb29raWVzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzQ29va2ll
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQ
LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0
b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVT
dG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFApIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkm
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGRvbUNvb2tpZXNG
b3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CkBAIC0xNzcsOCArMTc3LDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgYm9vbCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tp
ZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERv
Tm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBD
b29raWVTdG9yYWdlUmVmKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChD
RkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OwotICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JV
UkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNo
b3VsZEFza0lUUCkgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICB2b2lkIHNldEhU
VFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMs
IE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNv
bnN0OwogICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0hUVFBDb29raWUgKikgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW8KICAgICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBib29s
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZQogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTI2Myw3ICsyNjMsNyBA
QCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlCiAKIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxk
UHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUlu
Zm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRl
ckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1l
U2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQs
IGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UpOwogfQogCiBIVFRQQ29va2llQWNjZXB0
UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3QK
QEAgLTI4MCw3ICsyODAsNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdl
U2VzCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCwgYm9vbCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsMTAgKzM0Miwx
MCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJu
IGZpbHRlcmVkQ29va2llczsKIH0KIAotTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApIGNvbnN0CitOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hv
dWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJh
bWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVz
ICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC0zNTUsMTMgKzM1NSwxMyBAQCBOU0Fy
cmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGCiAgICAgcmV0dXJuIGh0dHBDb29r
aWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVI
VFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9
IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVS
TChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBpZiAoIVtjb29raWVz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBh
IG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBj
cmVhdGUgYmVsb3cuCiAKQEAgLTQxMSwyOSArNDExLDI5IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFs
bEhUVFBDb29raWVzKENGSFRUUEMKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29v
a2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBP
bmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7
CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6WWVzLCBmYWxzZSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0ciwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChz
aG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09
IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAg
ICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTQ5MSwxMiAr
NDkxLDEyIEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXMKICAgICBy
ZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7
CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICBy
YXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw3ICs5NSw3IEBAIENvb2tpZUphckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2sK
ICAgICByZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIGNvb2tp
ZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRC
OjpTb3VyY2U6OlNjcmlwdCk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAsIGJvb2wpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRl
ciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1
cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZh
bHNlIH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhh
c0Nvb2tpZXMoYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBTaG91bGRBc2tJVFAsIGJvb2wsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAogewogICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOwogICAgIGlmICghY29va2llcykKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
V2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3Rz
IGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1
cmwsIHRydWUpLCBmYWxzZSB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2UKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVz
KTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQ
cm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmll
bGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5w
YWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UDo6WWVzLCBmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5ncykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBodHRwT25seUNvb2tpZUV4aXN0cygKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKHNob3VsZEFz
a0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQpAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGMKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCwgYm9vbCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAg
cmF3Q29va2llcy5jbGVhcigpOwogCkBAIC01MTUsNyArNTE1LDcgQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBib29sIGZv
ckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9vbCBmb3JIVFRQSGVhZGVyLCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgYm9vbCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlm
IChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRCbG9j
a0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQpAQCAtNTcyLDE1ICs1
NzIsMTUgQEAgc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGbwogICAgIHJl
dHVybiB7IFN0cmluZzo6ZnJvbVVURjgoY29va2llSGVhZGVyLmdldCgpKSwgZGlkQWNjZXNzU2Vj
dXJlQ29va2llcyB9OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRB
c2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywg
ZnJhbWVJRCwgcGFnZUlELCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lU
UCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmws
IHNhbWVTaXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsK
ICAgICAvLyBTZWN1cmUgY29va2llcyB3aWxsIHN0aWxsIG9ubHkgYmUgaW5jbHVkZWQgaWYgdXJs
J3MgcHJvdG9jb2wgaXMgaHR0cHMuCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCB0cnVlLCBp
bmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0Zv
clNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFtZUlELCBw
YWdlSUQsIHRydWUsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA1LTE5ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJs
b2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB2YWx1
ZSBtYWtlcyBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6YmxvY2tDb29raWVzKCkgbm90IGRvIGFueXRo
aW5nIGZvciBjZXJ0YWluIFdLV2ViVmlld3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNy
ZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2Nr
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp1bmJsb2Nr
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjpzZXRBbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKToKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OmFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llc10p
OgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRBbGxvd0FsbFRoaXJkUGFy
dHlDb29raWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmFkZFBhcmFtZXRlcnNTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zKToKKwogMjAyMC0wNS0xOSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRml4IG1lc3NhZ2UgZmlsdGVyIHNhbmRi
b3ggdmlvbGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMywxMiArNjIzLDEyIEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2kKICAgICAgICAgbV9zY2hlbWVS
ZWdpc3RyeS0+cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKFdURk1vdmUoc2NoZW1lKSk7
CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRB
c2tJVFAgc2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVT
dHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNz
aW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCBmYWxzZSk7Ci0gICAg
YXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZXNGb3JET00oZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgcmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5m
b3JtYXRpb24oKSkKQEAgLTYzOCwxMiArNjM4LDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2sKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5m
aXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vz
c2lvbikKICAgICAgICAgcmV0dXJuOwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q29v
a2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkQXNrSVRQLCBjb29raWVTdHJpbmcpOworICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+c2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCBjb29raWVTdHJpbmcsIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KCkpCkBAIC02NTIsMjIgKzY1MiwyMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzZXRDCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAo
IW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgZmFsc2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZp
cnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiByZXN1bHQ7Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdDb29raWVzKGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lU
UCwgcmVzdWx0KTsKKyAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQ
LCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgcmVzdWx0KTsKICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCwxMCAr
MjA4LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0Vu
YWJsZWQoVmVjdG9yPFN0cmluZz4mJiBzY2hlbWVzKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBXZWJDb3JlOjpTaG91bGRBc2tJVFAs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0g
ICAgdm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTaG91
bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOworICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzLCBXZWJDb3JlOjpTaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywg
V2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJl
Q29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpTaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mJik+JiYpOwogICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzUsMTAgKzM1LDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMK
ICAgICBTdGFydERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0
cmluZyBzdWdnZXN0ZWROYW1lKQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIAot
ICAgIENvb2tpZXNGb3JET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJD
b3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywg
Ym9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIFNldENvb2tpZXNG
cm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVT
aXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFAsIFN0cmluZyBjb29raWVTdHJpbmcpCi0gICAgQ29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVu
dW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgR2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworICAgIENvb2tpZXNGb3JE
T00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAo
U3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJv
bm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29s
IFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgQ29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVu
dW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3Q29va2llcyhV
UkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8s
IFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6
OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwog
ICAgIFNldFJhd0Nvb2tpZShzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSkKICAgICBEZWxl
dGVDb29raWUoVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAgICAgRG9tQ29va2llc0Zvckhv
c3QoU3RyaW5nIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25z
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBSZWY8TmV0d29y
a0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNyCiB7CiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJz
LnJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBw
YXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29u
dGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9s
aWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
LCBwYXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik7CisgICAgLy8gRklYTUU6IEp1c3QgcGFzcyBwYXJhbWV0ZXJz
IHRvIHRoZSBOZXR3b3JrRGF0YVRhc2tDb2NvYSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVx
dWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1l
dGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQ
b2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRl
cnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5z
aG91bGRQcmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBh
cmFtZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMu
bmV0d29ya0FjdGl2aXR5VHJhY2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBwYXJhbWV0ZXJzLnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNlbmRp
ZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGUo
c2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBh
cmFtZXRlcnMuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0NlcnRpZmljYXRlSW5mbyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpc01haW5GcmFtZU5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgaXNNYWlu
UmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUgeyBmYWxzZSB9OworICAgIGJvb2wgcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFBy
ZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07
CiAgICAgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJh
Y2tlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjE4ODYp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvCiAgICAgZW5jb2RlciA8PCBuZWVkc0NlcnRpZmlj
YXRlSW5mbzsKICAgICBlbmNvZGVyIDw8IGlzTWFpbkZyYW1lTmF2aWdhdGlvbjsKICAgICBlbmNv
ZGVyIDw8IGlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lOworICAgIGVuY29kZXIg
PDwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8PCBtYXhpbXVt
QnVmZmVyaW5nVGltZTsKIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291cmNl
T3JpZ2luKTsKQEAgLTE5OCw2ICsxOTksOCBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycz4gCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYXhpbXVtQnVmZmVyaW5n
VGltZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyNiw3ICsxMzI2LDcgQEAg
c3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbAogICAgIEFTU0VSVChOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24s
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCiAgICAgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4gY29va2llczsKLSAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5nZXRS
YXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IFNob3VsZEFza0lUUDo6WWVzLCBjb29raWVzKSkKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSwgY29va2llcykpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gZXNjYXBlZFVSTCA9IGVzY2FwZUZvckpTT04odXJsLnN0cmluZygp
KTsKQEAgLTEzODYsNyArMTM4Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmYKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVj
dGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKLSAgICBpZiAobmV0
d29ya1N0b3JhZ2VTZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zaG91bGRCbG9j
a0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGZhbHNlKSkKICAgICAg
ICAgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIGxhYmVsLCBsb2dnZWRP
YmplY3QsIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIHJlZmVycmVyLCBmcmFtZUlELCBwYWdlSUQsIGlkZW50aWZpZXIpOwogICAgIGVsc2UKICAg
ICAgICAgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25uZWN0aW9uLCBsYWJlbCwgbG9n
Z2VkT2JqZWN0LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCByZWZlcnJlciwgZnJhbWVJRCwgcGFnZUlELCBpZGVudGlmaWVyKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsOSArNDIsOSBAQCBzdHJ1Y3QgU2Vzc2lvbldyYXBwZXI7CiAKIGNsYXNzIE5ldHdvcmtEYXRh
VGFza0NvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtEYXRhVGFzayB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9s
aWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5
LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNG
b3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQorICAgIHN0YXRp
YyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hv
dWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9v
bCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlU
cmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgYm9vbCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwg
cGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZp
Z2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBu
ZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24s
IGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHks
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291
cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpOwog
ICAgIH0KIAogICAgIH5OZXR3b3JrRGF0YVRhc2tDb2NvYSgpOwpAQCAtNzMsMTEgKzczLDEyIEBA
IHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUlEOyB9OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9OworICAgIGJvb2wgc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nOyB9CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYs
IE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRh
dGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVz
b3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24m
LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogCiAg
ICAgYm9vbCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAg
IHZvaWQgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVl
ZGVkKF9fc3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9v
bCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC0xMDMsNiArMTA0LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2UgfTsKIH07
CiAKIFdlYkNvcmU6OkNyZWRlbnRpYWwgc2VydmVyVHJ1c3RDcmVkZW50aWFsKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0J
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OSwxMyArMTk5LDE0
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wdXRlSXNBbHdheXNPbkxvZ2cKICAgICByZXR1cm4g
c2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAotTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBX
ZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQ
cmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlv
bkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0
aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAg
ICAsIG1fc2Vzc2lvbldyYXBwZXIobWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Np
b25Db2NvYSY+KHNlc3Npb24pLnNlc3Npb25XcmFwcGVyRm9yVGFzayhyZXF1ZXN0V2l0aENyZWRl
bnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikpKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQp
CiAgICAgLCBtX2lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKGRhdGFUYXNr
SXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCiAgICAgLCBtX2lzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZChjb21wdXRlSXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKHNlc3Npb24p
KQorICAgICwgbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhyZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykKIHsKICAgICBpZiAobV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0Zh
aWx1cmUpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MCw3ICsyNDEsNyBAQCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jCiAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkVwaGVtZXJhbFN0YXRlbGVzczsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gc2Vzc2lvbi5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgewogICAgICAgICBpZiAoIXNob3Vs
ZEJsb2NrQ29va2llcykKLSAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJ
RCk7CisgICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIG1fcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogICAgIH0KICNlbmRpZgogICAgIHJlc3RyaWN0UmVx
dWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0KTsKQEAgLTQwMyw3ICs0MDQsNyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIW1faGFzQmVlblNldFRvVXNlU3RhdGVs
ZXNzQ29va2llU3RvcmFnZSkgewogICAgICAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNz
Ci0gICAgICAgICAgICB8fCAobV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSAmJiBt
X3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVx
dWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCkpKQorICAgICAgICAgICAgfHwgKG1fc2Vzc2lvbi0+
bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgJiYgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Np
b24oKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQsIG1f
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKSkKICAgICAgICAgICAgIGJsb2NrQ29va2ll
cygpOwogICAgIH0gZWxzZSBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzICYmIG5lZWRzRmly
c3RQYXJ0eUNvb2tpZUJsb2NraW5nTGF0Y2hNb2RlUXVpcmsocmVxdWVzdC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCByZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkKICAgICAg
ICAgdW5ibG9ja0Nvb2tpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2
MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM2LDcgKzUzNiw3IEBAIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVI
U1RTID0gZmFsc2U7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAg
ICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IG5ldHdvcmtEYXRhVGFzay0+bmV0d29ya1Nlc3Np
b24oKSkgewotICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1VwZ3JhZGVk
RHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQcm9jZXNz
KCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3VsZEJsb2Nr
Q29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29ya0RhdGFU
YXNrLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBzaG91bGRJZ25vcmVIU1RTID0gc2NoZW1lV2Fz
VXBncmFkZWREdWVUb0R5bmFtaWNIU1RTKHJlcXVlc3QpICYmIHNlc3Npb25Db2NvYS0+bmV0d29y
a1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uQ29jb2EtPnNlc3Npb25JRCgpKS0+c2hv
dWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG5ldHdvcmtEYXRhVGFzay0+ZnJhbWVJRCgpLCBuZXR3
b3JrRGF0YVRhc2stPnBhZ2VJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKCkpOwogICAgICAgICAgICAgaWYgKHNob3VsZElnbm9yZUhTVFMp
IHsKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gZG93bmdyYWRlUmVxdWVzdChyZXF1ZXN0KTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoW3JlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJp
bmc6QCJodHRwIl0pOwpAQCAtNTcyLDcgKzU3Miw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVIU1RTID0gZmFsc2U7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYgKGF1dG8q
IHNlc3Npb25Db2NvYSA9IG5ldHdvcmtEYXRhVGFzay0+bmV0d29ya1Nlc3Npb24oKSkgewotICAg
ICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWlj
SFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNl
c3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1
ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQo
KSk7CisgICAgICAgICAgICBzaG91bGRJZ25vcmVIU1RTID0gc2NoZW1lV2FzVXBncmFkZWREdWVU
b0R5bmFtaWNIU1RTKHJlcXVlc3QpICYmIHNlc3Npb25Db2NvYS0+bmV0d29ya1Byb2Nlc3MoKS5z
dG9yYWdlU2Vzc2lvbihzZXNzaW9uQ29jb2EtPnNlc3Npb25JRCgpKS0+c2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIG5ldHdvcmtEYXRhVGFzay0+ZnJhbWVJRCgpLCBuZXR3b3JrRGF0YVRhc2st
PnBhZ2VJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKCkpOwogICAgICAgICAgICAgaWYgKHNob3VsZElnbm9yZUhTVFMpIHsKICAgICAgICAg
ICAgICAgICByZXF1ZXN0ID0gZG93bmdyYWRlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoW3JlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0p
OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4
LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29k
ZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgbmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOwogICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBlbmNvZGVyIDw8IHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGVuY29kZXIgPDwgdGhlbWVO
YW1lOwpAQCAtNDc3LDYgKzQ3OCw5IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICNpZiBQ
TEFURk9STShHVEspCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRoZW1lTmFt
ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjE4ODYp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyB7CiAgICAgYm9vbCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsK
ICAgICBib29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9OwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIFN0cmluZyB0aGVtZU5hbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4NTIs
NiArNzg1Miw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2Vz
KCkucmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hv
dWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5j
b25maWd1cmF0aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwogICAgIHBh
cmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBwYXJhbWV0ZXJzLnJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZygpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHBhcmFtZXRlcnMudGhl
bWVOYW1lID0gcGFnZUNsaWVudCgpLnRoZW1lTmFtZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIFJlZjxQYWdlQ29uZmln
dXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb24KICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCiAgICAgY29weS0+bV9hcHBsaWNhdGlvbk1hbmlmZXN0ID0gdGhpcy0+bV9hcHBsaWNhdGlv
bk1hbmlmZXN0OwogI2VuZGlmCisgICAgY29weS0+bV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyA9IHRoaXMtPm1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZm9yIChh
dXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVycykKICAgICAgICAgY29weS0+bV91
cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUuY29weVJlZigpKTsKICAg
ICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTks
NiArMTU5LDkgQEAgcHVibGljOgogICAgIGJvb2wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5k
RG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWluczsgfQogICAgIHZvaWQgc2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhi
b29sIGxpbWl0cykgeyBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBsaW1p
dHM7IH0KIAorICAgIHZvaWQgc2V0UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoYm9vbCB2
YWx1ZSkgeyBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gdmFsdWU7IH0KKyAgICBi
b29sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4g
bV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQorICAgIAogcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMjAyLDYg
KzIwNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9
OwogICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxNiBAQCAtICh2b2lkKV9zZXRJZ25v
cmVzQXBwQm91bmREb21haW5zOihCT09MCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRJZ25v
cmVzQXBwQm91bmREb21haW5zKGlnbm9yZXNBcHBCb3VuZERvbWFpbnMpOwogfQogCistIChCT09M
KV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZworeworICAgIHJldHVybiBfcGFnZUNvbmZp
Z3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7Cit9CisKKy0g
KHZvaWQpX3NldFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOihCT09MKXJlbGF4Cit7Cisg
ICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhy
ZWxheCk7Cit9CisKIC0gKE5TU3RyaW5nICopX3Byb2Nlc3NEaXNwbGF5TmFtZQogewogICAgIHJl
dHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnByb2Nlc3NEaXNwbGF5TmFtZSgpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTAgKzEyNSw4IEBAIHR5cGVkZWYgTlNfRU5VTShO
U1VJbnRlZ2VyLCBfV0tXZWJWaWV3Q2EKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dEVkaXRhYmxlSW1hZ2VzRW5hYmxlZDopIEJPT0wgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0VW5kb01hbmFnZXJBUElFbmFibGVkOikgQk9PTCBfdW5kb01hbmFn
ZXJBUElFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0V2ViVmlld0NhdGVnb3J5OikgX1dLV2Vi
Vmlld0NhdGVnb3J5IF93ZWJWaWV3Q2F0ZWdvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQotLSAodm9pZClfc2V0SWdub3Jlc0FwcEJvdW5k
RG9tYWluczooQk9PTClpZ25vcmVzQXBwQm91bmREb21haW5zICBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAoQk9PTClfaWdub3Jlc0FwcEJv
dW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwotCitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJZ25vcmVzQXBwQm91
bmREb21haW5zOikgQk9PTCBfaWdub3Jlc0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6KSBCT09MIF9yZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
UHJvY2Vzc0Rpc3BsYXlOYW1lOikgTlNTdHJpbmcgKl9wcm9jZXNzRGlzcGxheU5hbWUgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjgsOCArMjY4LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3QgRnIK
IAogICAgIHBhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZnJhbWUtPnNldHRpbmdz
KCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpOwogCi0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpKQorICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBw
YXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSBwYWdlLT5oYXNSZXNvdXJjZUxv
YWRDbGllbnQoKTsKKyAgICAgICAgcGFyYW1ldGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyA9IHBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CisgICAg
fQogCiAgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVudCA9IGZyYW1lLT5vd25lckVsZW1lbnQoKSkg
ewogICAgICAgICBpZiAoYXV0byogcGFyZW50RnJhbWUgPSBvd25lckVsZW1lbnQtPmRvY3VtZW50
KCkuZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVDYWNoZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsMTQgKzU3LDE0IEBAIFN0cmluZyBXZWJDb29raWVDYWNoZTo6Y29va2llc0ZvckRPTShj
b24KICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAgICAgICAgICAgaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUpOwogICAgIH0KLSAgICByZXR1
cm4gaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2Ft
ZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUDo6Tm8pLmZpcnN0OworICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KCkuY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpObywgZmFsc2UpLmZp
cnN0OwogfQogCi12b2lkIFdlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wgcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgp
LnRvU3RyaW5nKCk7CiAgICAgaWYgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5z
KGhvc3QpKQotICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llc0Zyb21E
T00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxk
QXNrSVRQOjpObywgY29va2llU3RyaW5nKTsKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lv
bigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZywgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpOwogfQogCiB2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRk
ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1N1cHBvcnRlZCgpOwogCiAgICAgU3RyaW5nIGNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyk7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKKyAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wgcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpOwogCiAgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwogICAgIHZvaWQgY29va2llc0Rl
bGV0ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMSArNjksMTgg
QEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKgogICAgIGlmIChmaXJz
dFBhcnR5RG9tYWluID09IHJlc291cmNlRG9tYWluKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChm
cmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmhhc1BhZ2VMZXZlbFN0b3Jh
Z2VBY2Nlc3MoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZnJhbWVMb2Fk
ZXJDbGllbnQoKS0+aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7
CisgICAgICAgICAgICBpZiAocGFnZS0+aGFzUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhmaXJzdFBh
cnR5RG9tYWluLCByZXNvdXJjZURvbWFpbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKGF1dG8qIGNvcmVQYWdlID0gcGFnZS0+Y29yZVBhZ2UoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChjb3JlUGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBk
b2VzIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZWFsIHdpdGggb3RoZXIgcG9saWNp
ZXMgdGhhbiBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgc28gd2UgaGF2ZSB0byBn
byB0byB0aGUgTmV0d29ya1Byb2Nlc3MgZm9yIGFsbAogICAgIC8vIG90aGVyIHBvbGljaWVzIGFu
ZCB0aGUgcmVxdWVzdCBtYXkgZW5kIHVwIGdldHRpbmcgYmxvY2tlZCBvbiBOZXR3b3JrUHJvY2Vz
cyBzaWRlLgpAQCAtMTAzLDYgKzExMCwxOSBAQCBib29sIFdlYkNvb2tpZUphcjo6aXNFbGlnaWJs
ZUZvckNhY2hlKFdlCiAgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFi
bGVEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOwogfQog
CitzdGF0aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhjb25zdCBX
ZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIGNvcmVQYWdlID0gcGFnZS0+Y29yZVBhZ2UoKTsK
KyAgICBpZiAoIWNvcmVQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNv
cmVQYWdlLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpOworfQorCiBTdHJp
bmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFt
ZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0
cjsKQEAgLTEyNSw3ICsxNDUsNyBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNv
cmU6OkRvCiAKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50
LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpS
ZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hv
dWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsK
QEAgLTE0OCw5ICsxNjgsOSBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3Jl
OjpECiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAK
ICAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgdXJsKSkKLSAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworICAgICAgICBtX2NhY2hlLnNldENvb2tpZXNGcm9t
RE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcod2ViRnJhbWUpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9j
ZXNzLCBjb29raWVTdHJpbmcsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdl
YkZyYW1lKSksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0FkZGVkKGNvbnN0
IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCkBA
IC0xOTYsMTUgKzIxNiwxNSBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29u
c3QgCiBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdl
YkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUElu
TmV0d29ya1Byb2Nlc3MgPSBTaG91bGRBc2tJVFA6Ok5vOwotI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMod2Vi
RnJhbWUsIGZpcnN0UGFydHksIHVybCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcykpCiAg
ICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAg
ICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5l
dHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFtZSkpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
OjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpT
ZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBAIC0yMjAsNyArMjQwLDcgQEAgYm9vbCBX
ZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgVwogCiAgICAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPmZy
YW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBtYWtlT3B0aW9uYWwod2ViRnJh
bWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29y
a1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJh
d0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nv
b2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3Vt
ZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3Ms
IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3
Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw2ICs1NTAsNyBAQCBXZWJQYWdlOjpXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRz
U3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlczsKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0gcGFyYW1ldGVycy5sb2Fkc0Zyb21OZXR3b3Jr
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0g
cGFyYW1ldGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsKIAogICAgIGlmICghcGFy
YW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCiAgICAgICAgIENy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4OTIpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0w
NS0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBTUEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3
cyB3aXRoIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYwNTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRvIG1ha2UgdGVzdHMgZWFzaWVyIHRvIHJlYWQgYW5kIHdyaXRlLCBJIG1hZGUg
Q29ubmVjdGlvbjo6c2VuZCBhbmQgQ29ubmVjdGlvbjo6cmVjZWl2ZSwgd2hpY2ggYXNzdW1lIG5v
IG5ldHdvcmsgZXJyb3JzLgorICAgICAgICBUaGlzIGlzIHRydWUgd2hlbiBkb2luZyBsb2NhbCB0
ZXN0aW5nIGluIEFQSSB0ZXN0cy4gIFdlIHdlcmUgYWxyZWFkeSBhc3N1bWluZyBubyBuZXR3b3Jr
IGVycm9ycy4KKyAgICAgICAgSSBhbHNvIGFkZCBfdGVzdF93YWl0Rm9yQWxlcnQgdG8gbWFrZSB0
ZXN0cyBsZXNzIHZlcmJvc2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbToKKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OkNv
bm5lY3Rpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZGF0YUZyb21TdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6bnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OnJlcXVlc3QgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlv
bjo6cmVjZWl2ZSBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpz
ZW5kIGNvbnN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRl
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0pOgorCiAyMDIwLTA1LTE5ICBT
ZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
IFN5bmMgamhidWlsZCB0byBmbGF0cGFrCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTExNzIsNDEgKzExNzIsMzAgQEAgU3RyaW5nIGxvbmdTdHJpbmcoTENoYXIgYykK
IFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSTsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0obndf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewog
ICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAg
ICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJl
dGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQsIG53X2NvbnRlbnRf
Y29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
ZXJyb3IpOwotICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGRhdGFGcm9tU3RyaW5nKG1ha2VT
dHJpbmcoCisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmUoW2Nvbm5lY3Rpb25dKFZlY3Rv
cjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgogICAgICAgICAgICAg
ICAgICAgICAiRVRhZzogdGVzdFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlv
bjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpKTsKLSAgICAgICAgICAgICAg
ICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5nZXQoKSwgY29udGV4
dCwgZmFsc2UsIF4obndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIWVycm9yKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAg
ICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgMjoKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9u
LCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihb
Y29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRl
bnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3Ip
IHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwotCi0gICAgICAgICAgICAgICAgYXV0byByZXF1ZXN0ID0g
bnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpOworICAgICAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlKFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUw
MDAtXHJcbiIpKTsKLQotICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGRhdGFGcm9tU3RyaW5n
KG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIK
ICAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgogICAgICAgICAgICAgICAgICAg
ICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVu
dC1SYW5nZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAwXHJcbiIKLSAgICAgICAgICAgICAgICAgICAg
IlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdiJykpKTsKLSAgICAgICAgICAgICAgICBud19jb25u
ZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5nZXQoKSwgY29udGV4dCwgdHJ1ZSwg
Xihud19lcnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZXJyb3Ip
OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2InKQorICAgICAgICAgICAgICAg
ICkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1t
CShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL05ldHdvcmtQcm9jZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxNyArNTQsMTUgQEAg
VEVTVChXZWJLaXQsIEhUVFBSZWZlcmVyKQogICAgIGF1dG8gY2hlY2tSZWZlcmVyID0gW10gKE5T
VVJMICpiYXNlVVJMLCBjb25zdCBjaGFyKiBleHBlY3RlZFJlZmVyZXIpIHsKICAgICAgICAgdXNp
bmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwot
ICAgICAgICBIVFRQU2VydmVyIHNlcnZlcihbZG9uZSA9ICZkb25lLCBleHBlY3RlZFJlZmVyZXJd
IChud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgewotICAgICAgICAgICAgbndfY29ubmVjdGlv
bl9yZWNlaXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rpb24pLCBk
b25lLCBleHBlY3RlZFJlZmVyZXJdKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50
X2NvbnRleHRfdCwgYm9vbCwgbndfZXJyb3JfdCkgewotICAgICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKGNvbnRlbnQpOwotICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdCA9IG51bGxUZXJtaW5h
dGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoWyZdIChDb25u
ZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZShbY29u
bmVjdGlvbiwgZXhwZWN0ZWRSZWZlcmVyLCAmZG9uZV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Qp
IHsKICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSZWZlcmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZXhwZWN0ZWRIZWFkZXJGaWVsZCA9IG1ha2VTdHJpbmcoIlJlZmVyZXI6ICIs
IGV4cGVjdGVkUmVmZXJlciwgIlxyXG4iKTsKICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RS
VUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCBleHBlY3RlZEhlYWRlckZpZWxkLnV0ZjgoKS5kYXRh
KCkpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgRVhQRUNU
X0ZBTFNFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJlZmVyZXI6IikpOwotICAgICAgICAgICAg
ICAgICpkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgICAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5IG9ubG9hZD0n
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJmb3JtSURcIikuc3VibWl0KCknPjxmb3JtIGlkPSdm
b3JtSUQnIG1ldGhvZD0ncG9zdCcgYWN0aW9uPSdodHRwOi8vMTI3LjAuMC4xOiVkLyc+PC9mb3Jt
PjwvYm9keT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOmJhc2VVUkxdOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCShyZXZpc2lvbiAy
NjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTggQEAKIAogI2lmIEhBVkUoU1NMKQogCisj
aW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lt
cG9ydCAiVENQU2VydmVyLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisj
aW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2lt
cG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogQGludGVy
ZmFjZSBQcm94eURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJ
RGVsZWdhdGU+CiAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVydDsKQEAgLTE3NywzICsxODIsOTcg
QEAgVEVTVChXZWJLaXQsIFNlY3VyZVByb3h5Q29ubmVjdGlvbikKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoU1NMKQorCisjaWYgSEFWRShORVRXT1JLX0ZS
QU1FV09SSykKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdCwgUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCit7CisgICAgYXV0byBydW5UZXN0ID0gW10gKGJv
b2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIHsKKyAgICAgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
XSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICsrY29ubmVj
dGlvbkNvdW50OworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0aW9uLCBj
b25uZWN0aW9uQ291bnQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXSAoVmVjdG9yPGNo
YXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIFN0cmluZyByZXBseTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBib2R5ID0KKyAgICAgICAgICAgICAgICAiPHNjcmlwdD4iCisg
ICAgICAgICAgICAgICAgICAgICJmZXRjaCgiCisgICAgICAgICAgICAgICAgICAgICAgICAiJ2h0
dHA6Ly93ZWJraXQub3JnL3BhdGgzJywiCisgICAgICAgICAgICAgICAgICAgICAgICAie2NyZWRl
bnRpYWxzOidpbmNsdWRlJ30iCisgICAgICAgICAgICAgICAgICAgICIpLnRoZW4oKCk9PnsiCisg
ICAgICAgICAgICAgICAgICAgICAgICAiYWxlcnQoJ2ZldGNoZWQnKSIKKyAgICAgICAgICAgICAg
ICAgICAgIn0pLmNhdGNoKChlKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGVydChl
KSIKKyAgICAgICAgICAgICAgICAgICAgIn0pIgorICAgICAgICAgICAgICAgICI8L3NjcmlwdD4i
OworICAgICAgICAgICAgICAgIHN3aXRjaCAoY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgICAg
ICAgICAgY2FzZSAxOiB7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihy
ZXF1ZXN0LmRhdGEoKSwgIkdFVCBodHRwOi8vd2Via2l0Lm9yZy9wYXRoMSBIVFRQLzEuMVxyXG4i
KSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGx5ID0gbWFrZVN0cmluZygKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCBzdHJsZW4oYm9keSksICJcclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIlNldC1Db29raWU6IGE9YlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4i
LCBib2R5CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIDM6IHsKKyAgICAgICAg
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6
Ly9leGFtcGxlLmNvbS9wYXRoMiBIVFRQLzEuMVxyXG4iKSk7CisgICAgICAgICAgICAgICAgICAg
IHJlcGx5ID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAy
MDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogdGV4dC9o
dG1sXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogIiwgc3Ry
bGVuKGJvZHkpLCAiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBj
bG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGJvZHkKKyAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBjYXNlIDQ6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQ291bnQgPT0gMiB8fCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJcbiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0cnN0
cihyZXF1ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93ZWJraXQu
b3JnL3BhdGgzIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPQor
ICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50
aWFsczogdHJ1ZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbjogY2xv
c2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4iOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKFdURk1vdmUocmVwbHkpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKworICAgICAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRD
b25maWd1cmF0aW9uXSk7CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UHJveHlDb25m
aWd1cmF0aW9uOkB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0eUhU
VFBQcm94eUhvc3Q6IEAiMTI3LjAuMC4xIiwKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDRlN0
cmVhbVByb3BlcnR5SFRUUFByb3h5UG9ydDogQChzZXJ2ZXIucG9ydCgpKQorICAgICAgICB9XTsK
KyAgICAgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Ok5P
XTsKKyAgICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgICAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZ
RVNdOworICAgICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICAgICAgW3ZpZXdDb25maWd1cmF0aW9uIF9zZXRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZzpyZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZ107
CisgICAgICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9y
ZS5nZXQoKV07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlv
bjp2aWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vd2Via2l0Lm9yZy9wYXRoMSJdXV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCIpOworCisgICAgICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vcGF0aDIiXV1dOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQiKTsKKyAgICB9Owor
ICAgIHJ1blRlc3QodHJ1ZSk7CisgICAgcnVuVGVzdChmYWxzZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjYxODg2
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDEyICszMCwxNSBAQAogI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiAKICNp
bXBvcnQgPE5ldHdvcmsvTmV0d29yay5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCitjbGFzcyBDb25uZWN0aW9uOworCiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAg
ICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOwpAQCAtNDQsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICB1
c2luZyBDZXJ0aWZpY2F0ZVZlcmlmaWVyID0gRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0
YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+Owog
CiAgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywg
SFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAsIENlcnRpZmljYXRlVmVy
aWZpZXImJiA9IG51bGxwdHIpOwotICAgIEhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChud19jb25u
ZWN0aW9uX3QpPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKKyAgICBIVFRQU2VydmVy
KEZ1bmN0aW9uPHZvaWQoQ29ubmVjdGlvbik+JiYsIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAp
OwogICAgIH5IVFRQU2VydmVyKCk7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OwotICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0OworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdChj
b25zdCBTdHJpbmcmIHBhdGggPSAiLyIpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVlc3Rz
KCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC01OSw4ICs2MiwyMyBAQCBwcml2YXRlOgogICAgIFBy
b3RvY29sIG1fcHJvdG9jb2wgeyBQcm90b2NvbDo6SHR0cCB9OwogfTsKIAotUmV0YWluUHRyPGRp
c3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYpOwotVmVjdG9yPGNoYXI+IG51
bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3QpOworY2xhc3MgQ29ubmVjdGlvbiB7
CitwdWJsaWM6CisgICAgQ29ubmVjdGlvbihjb25zdCBDb25uZWN0aW9uJikgPSBkZWZhdWx0Owor
ICAgIENvbm5lY3Rpb24oQ29ubmVjdGlvbiYmKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYg
b3BlcmF0b3I9KGNvbnN0IENvbm5lY3Rpb24mKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYg
b3BlcmF0b3I9KENvbm5lY3Rpb24mJikgPSBkZWZhdWx0OworCisgICAgdm9pZCBzZW5kKFN0cmlu
ZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsKKyAgICB2
b2lkIHJlY2VpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYpIGNv
bnN0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBIVFRQU2VydmVyOworICAgIENvbm5l
Y3Rpb24obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pIHsgfQorCisgICAgUmV0YWluUHRyPG53X2Nvbm5lY3Rpb25fdD4gbV9jb25u
ZWN0aW9uOworfTsKIAogc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgZW51
bSBjbGFzcyBUZXJtaW5hdGVDb25uZWN0aW9uIHsgTm8sIFllcyB9OwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NyArMTAwLDcgQEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKICAgICBzdGFydExpc3Rlbmlu
ZyhtX2xpc3RlbmVyLmdldCgpKTsKIH0KIAotSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlv
bjx2b2lkKG53X2Nvbm5lY3Rpb25fdCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIFByb3RvY29sIHBy
b3RvY29sKQorSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24p
PiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBQcm90b2NvbCBwcm90b2NvbCkKICAgICA6IG1fbGlzdGVu
ZXIoYWRvcHROUyhud19saXN0ZW5lcl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29s
LCBudWxscHRyKS5nZXQoKSkpKQogICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKIHsKQEAgLTEw
OCw3ICsxMDgsNyBAQCAgICAgLCBtX3Byb3RvY29sKHByb3RvY29sKQogICAgIG53X2xpc3RlbmVy
X3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0
cihbY29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVyKV0gKG53X2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0X3F1ZXVl
KGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBud19jb25u
ZWN0aW9uX3N0YXJ0KGNvbm5lY3Rpb24pOwotICAgICAgICBjb25uZWN0aW9uSGFuZGxlcihjb25u
ZWN0aW9uKTsKKyAgICAgICAgY29ubmVjdGlvbkhhbmRsZXIoQ29ubmVjdGlvbihjb25uZWN0aW9u
KSk7CiAgICAgfSkuZ2V0KCkpOwogICAgIHN0YXJ0TGlzdGVuaW5nKG1fbGlzdGVuZXIuZ2V0KCkp
OwogfQpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25l
ZCBzdGF0dXMKICAgICByZXR1cm4geyB9OwogfQogCi1SZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90
PiBkYXRhRnJvbVN0cmluZyhTdHJpbmcmJiBzKQorc3RhdGljIFJldGFpblB0cjxkaXNwYXRjaF9k
YXRhX3Q+IGRhdGFGcm9tU3RyaW5nKFN0cmluZyYmIHMpCiB7CiAgICAgYXV0byBpbXBsID0gcy5y
ZWxlYXNlSW1wbCgpOwogICAgIEFTU0VSVChpbXBsLT5pczhCaXQoKSk7CkBAIC0xNDUsNyArMTQ1
LDcgQEAgUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbgogICAgIH0pKTsK
IH0KIAotVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3Qg
Y29udGVudCkKK3N0YXRpYyBWZWN0b3I8Y2hhcj4gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGRpc3Bh
dGNoX2RhdGFfdCBjb250ZW50KQogewogICAgIF9fYmxvY2sgVmVjdG9yPGNoYXI+IHJlcXVlc3Q7
CiAgICAgZGlzcGF0Y2hfZGF0YV9hcHBseShjb250ZW50LCBeYm9vbChkaXNwYXRjaF9kYXRhX3Qs
IHNpemVfdCwgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkgewpAQCAtMjMyLDE5ICsy
MzIsMzcgQEAgdWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIG53
X2xpc3RlbmVyX2dldF9wb3J0KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCi1OU1VSTFJlcXVlc3Qg
KkhUVFBTZXJ2ZXI6OnJlcXVlc3QoKSBjb25zdAorTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpy
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqZm9ybWF0
OwogICAgIHN3aXRjaCAobV9wcm90b2NvbCkgewogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6Ci0g
ICAgICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQg
PSBAImh0dHA6Ly8xMjcuMC4wLjE6JWQlcyI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJv
dG9jb2w6Okh0dHBzOgogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKLSAg
ICAgICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQg
PSBAImh0dHBzOi8vMTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
cmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CisgICAgcmV0dXJu
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCksIHBhdGgudXRmOCgpLmRhdGEoKV1d
XTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPGNoYXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIG53X2Nv
bm5lY3Rpb25fcmVjZWl2ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIDEsIHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29u
dGVudF9jb250ZXh0X3QsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlQoY29udGVudCk7CisgICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxsVGVybWluYXRlZFJlcXVlc3QoY29udGVudCkpOworICAgIH0pLmdl
dCgpKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kKFN0cmluZyYmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBu
d19jb25uZWN0aW9uX3NlbmQobV9jb25uZWN0aW9uLmdldCgpLCBkYXRhRnJvbVN0cmluZyhXVEZN
b3ZlKG1lc3NhZ2UpKS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZBVUxUX01FU1NBR0VfQ09OVEVY
VCwgdHJ1ZSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJU
KCFlcnJvcik7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVn
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxl
Z2F0ZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RVSURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMgKzMyLDcgQEAKIC0gKE5TU3Ry
aW5nICopd2FpdEZvckFsZXJ0OwogCiBAZW5kCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0
VUlEZWxlZ2F0ZUV4dHJhcykKKy0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0OworQGVu
ZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCShy
ZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVn
YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSwzICs1OSwxNyBAQCAtIChOU1N0cmluZyAqKXdh
aXRGb3JBbGVydAogfQogCiBAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RV
SURlbGVnYXRlRXh0cmFzKQorCistIChOU1N0cmluZyAqKV90ZXN0X3dhaXRGb3JBbGVydAorewor
ICAgIEVYUEVDVF9GQUxTRShzZWxmLlVJRGVsZWdhdGUpOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3RVSURlbGVnYXRlIG5ld10pOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IHVp
RGVsZWdhdGUuZ2V0KCk7CisgICAgTlNTdHJpbmcgKmFsZXJ0ID0gW3VpRGVsZWdhdGUgd2FpdEZv
ckFsZXJ0XTsKKyAgICBzZWxmLlVJRGVsZWdhdGUgPSBuaWw7CisgICAgcmV0dXJuIGFsZXJ0Owor
fQorCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399868</attachid>
            <date>2020-05-20 11:59:34 -0700</date>
            <delta_ts>2020-05-20 12:32:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200520115932.patch</filename>
            <type>text/plain</type>
            <size>101692</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxvd0FsbFRo
aXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0aXZlcyBvbmx5IHNob3du
IGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5zZXJ0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNhbWVTaXRlSW5mby5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIK
QEAgLTQxLDYgKzQyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQor
eworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICByZXR1cm4g
cGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKFJlZjxTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikp
KTsKQEAgLTgwLDcgKzg4LDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llcyhEb2N1bWVudCYg
ZG9jdQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwogICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBy
ZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKGRvY3VtZW50KSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIApAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVzKERv
Y3VtZW50JiBkb2MKICAgICB9CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgc2Vzc2lvbi0+c2V0Q29v
a2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZv
KGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6WWVzLCBjb29r
aWVTdHJpbmcpOworICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZVN0cmluZywgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcoZG9jdW1lbnQpKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtMTMxLDcgKzEzOSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29r
aWVzRW5hYmxlZChjb25zdCBEb2MKIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92
aWRlci0+c3RvcmFnZVNlc3Npb24oKSkgewotICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0
LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1
cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQogCkBAIC0xNjQsNyArMTcyLDcgQEAgYm9v
bCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdQogICAgIH0KIAogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigp
KQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpOworICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGRvY3VtZW50KSwgY29va2llcyk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCiAgICAgLCBtX2xv
YWRzU3VicmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQogICAg
ICwgbV9sb2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsp
CisgICAgLCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0
bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29u
c3QgeyByZXR1cm4gbV9sb2Fkc0Zyb21OZXR3b3JrOyB9CisgICAgYm9vbCBzaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc7IH0KIAogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29u
OjpMb3dQb3dlck1vZGUpOyB9CiAgICAgYm9vbCBjYW5VcGRhdGVUaHJvdHRsaW5nUmVhc29uKFRo
cm90dGxpbmdSZWFzb24gcmVhc29uKSBjb25zdCB7IHJldHVybiAhbV90aHJvdHRsaW5nUmVhc29u
c092ZXJyaWRlbkZvclRlc3RpbmcuY29udGFpbnMocmVhc29uKTsgfQpAQCAtMTA0NSw2ICsxMDQ2
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmlyZUV2ZW50cyB7IHRydWUgfTsKICAg
ICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJv
bU5ldHdvcmsgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2Ny
aXB0cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RE9NV3JhcHBlcldvcmxk
PiwgVW5pcXVlUmVmPFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0
aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGxv
YWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yayB7IHRy
dWUgfTsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsg
dHJ1ZSB9OworICAgIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJv
bAogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVx
dWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDog
SW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CisgICAg
cmV0dXJuIHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVz
dC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJl
Q29va2llczo6Tm8sIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmlyc3Q7CiB9CiAKIHN0YXRp
YyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llSmFyKiBj
b29raWVKYXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE2
ICsxMDQsMTYgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0hhZFVzZXJJbgogICAg
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBpZiAoIW1faXNS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgcmV0dXJuIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCks
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogICAg
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKKyAgICBp
ZiAocmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIGlmICghbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkRXhlbXB0CiAKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCisgICAgaWYg
KG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSkpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3koKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwpAQCAt
MTYwLDExICsxNjAsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGdldEFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBn
ZXRDb29raWVzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzQ29va2ll
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQ
LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0
b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVT
dG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFApIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkm
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGRvbUNvb2tpZXNG
b3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CkBAIC0xNzcsOCArMTc3LDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgYm9vbCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tp
ZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERv
Tm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBD
b29raWVTdG9yYWdlUmVmKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChD
RkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OwotICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JV
UkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNo
b3VsZEFza0lUUCkgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICB2b2lkIHNldEhU
VFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMs
IE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNv
bnN0OwogICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0hUVFBDb29raWUgKikgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW8KICAgICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZQogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTI2Myw3ICsyNjMsNyBA
QCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlCiAKIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxk
UHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUlu
Zm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRl
ckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1l
U2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQs
IGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UpOwogfQogCiBIVFRQQ29va2llQWNjZXB0
UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3QK
QEAgLTI4MCw3ICsyODAsNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdl
U2VzCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCwgYm9vbCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsMTAgKzM0Miwx
MCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJu
IGZpbHRlcmVkQ29va2llczsKIH0KIAotTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApIGNvbnN0CitOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hv
dWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJh
bWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVz
ICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC0zNTUsMTMgKzM1NSwxMyBAQCBOU0Fy
cmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGCiAgICAgcmV0dXJuIGh0dHBDb29r
aWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVI
VFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9
IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVS
TChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBpZiAoIVtjb29raWVz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBh
IG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBj
cmVhdGUgYmVsb3cuCiAKQEAgLTQxMSwyOSArNDExLDI5IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFs
bEhUVFBDb29raWVzKENGSFRUUEMKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29v
a2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBP
bmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7
CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6WWVzLCBmYWxzZSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0ciwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChz
aG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09
IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAg
ICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTQ5MSwxMiAr
NDkxLDEyIEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXMKICAgICBy
ZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7
CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICBy
YXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw3ICs5NSw3IEBAIENvb2tpZUphckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2sK
ICAgICByZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIGNvb2tp
ZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRC
OjpTb3VyY2U6OlNjcmlwdCk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAsIGJvb2wpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRl
ciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1
cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZh
bHNlIH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhh
c0Nvb2tpZXMoYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBTaG91bGRBc2tJVFAsIGJvb2wsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAogewogICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOwogICAgIGlmICghY29va2llcykKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
V2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3Rz
IGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1
cmwsIHRydWUpLCBmYWxzZSB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2UKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVz
KTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQ
cm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmll
bGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5w
YWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UDo6WWVzLCBmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5ncykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUMKICAgICAgICAgYWRkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycyhyZXF1ZXN0KTsKIAogICAgICAg
ICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVz
OjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1
ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUDo6WWVzKS5maXJzdDsKKyAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRl
ckZpZWxkID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmly
c3Q7CiAgICAgICAgIGlmICghY29va2llSGVhZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29v
a2llSGVhZGVyRmllbGQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhp
c3RzKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBp
ZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lU
UCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAg
ICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC00NzMs
NyArNDczLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoYwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAKQEAgLTUxNSwxMCAr
NTE1LDEwIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWUKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNG
b3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgYm9vbCBmb3JIVFRQSGVhZGVyLCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK3N0YXRp
YyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGJvb2wg
Zm9ySFRUUEhlYWRlciwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAo
c2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNlc3Npb24uc2hvdWxkQmxvY2tD
b29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxk
QXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVz
KGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykpCiAgICAgICAgIHJldHVybiB7IHsgfSwgZmFsc2UgfTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTcyLDIwICs1NzIsMjAgQEAgc3RhdGljIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGbwogICAgIHJldHVybiB7IFN0cmluZzo6ZnJvbVVURjgo
Y29va2llSGVhZGVyLmdldCgpKSwgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCBmYWxzZSwg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNG
b3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywgZnJhbWVJRCwg
cGFnZUlELCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICAvLyBTZWN1cmUgY29va2llcyB3
aWxsIHN0aWxsIG9ubHkgYmUgaW5jbHVkZWQgaWYgdXJsJ3MgcHJvdG9jb2wgaXMgaHR0cHMuCi0g
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVT
aXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCB0cnVlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hv
dWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFy
dHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQsIHRydWUsIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsK
IH0KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVs
ZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJv
eHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzKTsKKyAgICByZXR1cm4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFk
ZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZp
ZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJv
eHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSk7CiB9CiAK
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmbHVzaENvb2tpZVN0b3JlKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA1LTIwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJsb2NrIHRo
aXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB2YWx1ZSBtYWtl
cyBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6YmxvY2tDb29raWVzKCkgbm90IGRvIGFueXRoaW5nIGZv
ciBjZXJ0YWluIFdLV2ViVmlld3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2NrQ29va2ll
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp1bmJsb2NrQ29va2ll
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6
OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9u
OjpzZXRBbGxvd0FsbFRoaXJkUGFydHlDb29raWVzKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OmFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfYWxsb3dBbGxUaGlyZFBhcnR5Q29va2llc10pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRBbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmFkZFBhcmFtZXRlcnNTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zKToKKwogMjAyMC0wNS0xOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRml4IG1lc3NhZ2UgZmlsdGVyIHNhbmRib3ggdmlv
bGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxODg2
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMywxMiArNjIzLDEyIEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2kKICAgICAgICAgbV9zY2hlbWVSZWdpc3Ry
eS0+cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKFdURk1vdmUoc2NoZW1lKSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2Vk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCBmYWxzZSk7Ci0gICAgYXV0byBy
ZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IHNob3VsZEFza0lUUCk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b24oKSkKQEAgLTYzOCwxMiArNjM4LDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNvb2sKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCks
IHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wgcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikK
ICAgICAgICAgcmV0dXJuOwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llc0Zy
b21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hv
dWxkQXNrSVRQLCBjb29raWVTdHJpbmcpOworICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0
Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQLCBjb29raWVTdHJpbmcsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkp
IHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBA
IC02NTIsMjIgKzY1MiwyMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
ZXRDCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdv
cmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
ZmFsc2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwg
cmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBy
ZXN1bHQ7Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdDb29raWVzKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgcmVz
dWx0KTsKKyAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCByZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgcmVzdWx0KTsKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShy
ZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCwxMCArMjA4LDEw
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQo
VmVjdG9yPFN0cmluZz4mJiBzY2hlbWVzKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBXZWJDb3JlOjpTaG91bGRBc2tJVFAsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9p
ZCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTaG91bGRBc2tJ
VFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYp
OworICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
LCBXZWJDb3JlOjpTaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1
cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29y
ZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBXZWJDb3JlOjpTaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+
JiYpOwogICAgIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAg
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAg
KzM1LDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICAgICBT
dGFydERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0cmluZyBz
dWdnZXN0ZWROYW1lKQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlLCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIAotICAgIENv
b2tpZXNGb3JET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8g
c2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBk
aWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIFNldENvb2tpZXNGcm9tRE9N
KFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5m
bywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFAsIFN0cmluZyBjb29raWVTdHJpbmcpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9v
bCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51
bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChTdHJpbmcgY29v
a2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAg
R2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworICAgIENvb2tpZXNGb3JET00oVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwor
ICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9v
bCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51
bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFj
Y2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3Q29va2llcyhVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIFNl
dFJhd0Nvb2tpZShzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSkKICAgICBEZWxldGVDb29r
aWUoVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAgICAgRG9tQ29va2llc0Zvckhvc3QoU3Ry
aW5nIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHJldmlz
aW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBSZWY8TmV0d29ya0RhdGFU
YXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNyCiB7CiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0
dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0
ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQs
IHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNu
aWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBw
YXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFt
ZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0
aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJh
bWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik7CisgICAgLy8gRklYTUU6IEp1c3QgcGFzcyBwYXJhbWV0ZXJzIHRvIHRo
ZSBOZXR3b3JrRGF0YVRhc2tDb2NvYSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwg
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ks
IHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQ
cmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRl
cnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29y
a0FjdGl2aXR5VHJhY2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBwYXJhbWV0ZXJzLnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNlbmRpZgogI2lm
IFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGUoc2Vzc2lv
biwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFy
YW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBh
cmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBuZWVkc0NlcnRpZmljYXRlSW5mbyB7IGZhbHNlIH07CiAgICAgYm9v
bCBpc01haW5GcmFtZU5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgaXNNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUgeyBmYWxzZSB9OworICAgIGJvb2wgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFByZWNvbm5l
Y3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07CiAgICAg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjplbmNvCiAgICAgZW5jb2RlciA8PCBuZWVkc0NlcnRpZmljYXRlSW5m
bzsKICAgICBlbmNvZGVyIDw8IGlzTWFpbkZyYW1lTmF2aWdhdGlvbjsKICAgICBlbmNvZGVyIDw8
IGlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lOworICAgIGVuY29kZXIgPDwgcmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8PCBtYXhpbXVtQnVmZmVy
aW5nVGltZTsKIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291cmNlT3JpZ2lu
KTsKQEAgLTE5OCw2ICsxOTksOCBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycz4gCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYXhpbXVtQnVmZmVyaW5nVGltZSkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlz
aW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbAogICAgIEFTU0VSVChOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llczsKLSAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5nZXRSYXdDb29r
aWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3Vs
ZEFza0lUUDo6WWVzLCBjb29raWVzKSkKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5n
ZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSwgY29va2llcykpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8gZXNjYXBlZFVSTCA9IGVzY2FwZUZvckpTT04odXJsLnN0cmluZygpKTsKQEAg
LTEzODYsNyArMTM4Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJ
bmYKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKLSAgICBpZiAobmV0d29ya1N0
b3JhZ2VTZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCkpCisgICAgaWYgKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGZhbHNlKSkKICAgICAgICAgbG9n
QmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIGxhYmVsLCBsb2dnZWRPYmplY3Qs
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIHJl
ZmVycmVyLCBmcmFtZUlELCBwYWdlSUQsIGlkZW50aWZpZXIpOwogICAgIGVsc2UKICAgICAgICAg
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25uZWN0aW9uLCBsYWJlbCwgbG9nZ2VkT2Jq
ZWN0LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCByZWZlcnJlciwgZnJhbWVJRCwgcGFnZUlELCBpZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSAr
NDIsOSBAQCBzdHJ1Y3QgU2Vzc2lvbldyYXBwZXI7CiAKIGNsYXNzIE5ldHdvcmtEYXRhVGFza0Nv
Y29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtEYXRhVGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0
d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29s
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
UmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQorICAgIHN0YXRpYyBSZWY8
TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291
cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
PiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgYm9vbCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVu
dCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hv
dWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2
aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpOwogICAgIH0K
IAogICAgIH5OZXR3b3JrRGF0YVRhc2tDb2NvYSgpOwpAQCAtNzMsMTEgKzczLDEyIEBAIHB1Ymxp
YzoKIAogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZUlEOyB9OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9OworICAgIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOyB9CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdv
cmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VO
YXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3
b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBX
ZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFz
a0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNl
TmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogCiAgICAgYm9v
bCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQg
YXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9f
c3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC0xMDMsNiArMTA0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2UgfTsKIH07CiAKIFdl
YkNvcmU6OkNyZWRlbnRpYWwgc2VydmVyVHJ1c3RDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHJldmlz
aW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OSwxMyArMTk5LDE0IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBjb21wdXRlSXNBbHdheXNPbkxvZ2cKICAgICByZXR1cm4gc2Vzc2lv
bi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAotTmV0d29ya0Rh
dGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9u
LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxk
UHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9u
YWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBX
ZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3Jl
OjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
ZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25u
ZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlU
cmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKICAg
ICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlh
bHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1f
c2Vzc2lvbldyYXBwZXIobWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2Nv
YSY+KHNlc3Npb24pLnNlc3Npb25XcmFwcGVyRm9yVGFzayhyZXF1ZXN0V2l0aENyZWRlbnRpYWxz
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikp
KQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAg
LCBtX2lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKGRhdGFUYXNrSXNGb3JN
YWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCiAgICAgLCBtX2lzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZChjb21wdXRlSXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKHNlc3Npb24pKQorICAg
ICwgbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhyZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykKIHsKICAgICBpZiAobV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUp
CiAgICAgICAgIHJldHVybjsKQEAgLTI0MCw3ICsyNDEsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6TmV0d29ya0RhdGFUYXNrQ29jCiAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVt
ZXJhbFN0YXRlbGVzczsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc2Vz
c2lvbi5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgewogICAgICAgICBpZiAoIXNob3VsZEJsb2Nr
Q29va2llcykKLSAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCk7Cisg
ICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIG1fcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpOwogICAgIH0KICNlbmRpZgogICAgIHJlc3RyaWN0UmVxdWVzdFJl
ZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0KTsKQEAgLTQwMyw3ICs0MDQsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIW1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29v
a2llU3RvcmFnZSkgewogICAgICAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzCi0gICAg
ICAgICAgICB8fCAobV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSAmJiBtX3Nlc3Np
b24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwg
bV9mcmFtZUlELCBtX3BhZ2VJRCkpKQorICAgICAgICAgICAgfHwgKG1fc2Vzc2lvbi0+bmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkgJiYgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+
c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQsIG1fcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKSkKICAgICAgICAgICAgIGJsb2NrQ29va2llcygpOwog
ICAgIH0gZWxzZSBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzICYmIG5lZWRzRmlyc3RQYXJ0
eUNvb2tpZUJsb2NraW5nTGF0Y2hNb2RlUXVpcmsocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCByZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkKICAgICAgICAgdW5i
bG9ja0Nvb2tpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM2LDcgKzUzNiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lv
bjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVIU1RTID0g
ZmFsc2U7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYg
KGF1dG8qIHNlc3Npb25Db2NvYSA9IG5ldHdvcmtEYXRhVGFzay0+bmV0d29ya1Nlc3Npb24oKSkg
ewotICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9E
eW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3VsZEJsb2NrQ29va2ll
cyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5w
YWdlSUQoKSk7CisgICAgICAgICAgICBzaG91bGRJZ25vcmVIU1RTID0gc2NoZW1lV2FzVXBncmFk
ZWREdWVUb0R5bmFtaWNIU1RTKHJlcXVlc3QpICYmIHNlc3Npb25Db2NvYS0+bmV0d29ya1Byb2Nl
c3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uQ29jb2EtPnNlc3Npb25JRCgpKS0+c2hvdWxkQmxv
Y2tDb29raWVzKHJlcXVlc3QsIG5ldHdvcmtEYXRhVGFzay0+ZnJhbWVJRCgpLCBuZXR3b3JrRGF0
YVRhc2stPnBhZ2VJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKCkpOwogICAgICAgICAgICAgaWYgKHNob3VsZElnbm9yZUhTVFMpIHsKICAg
ICAgICAgICAgICAgICByZXF1ZXN0ID0gZG93bmdyYWRlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoW3JlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJo
dHRwIl0pOwpAQCAtNTcyLDcgKzU3Miw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNz
aW9uICopc2Vzc2kKICAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVIU1RTID0gZmFsc2U7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYgKGF1dG8qIHNlc3Np
b25Db2NvYSA9IG5ldHdvcmtEYXRhVGFzay0+bmV0d29ya1Nlc3Npb24oKSkgewotICAgICAgICAg
ICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhy
ZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBu
ZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQoKSk7Cisg
ICAgICAgICAgICBzaG91bGRJZ25vcmVIU1RTID0gc2NoZW1lV2FzVXBncmFkZWREdWVUb0R5bmFt
aWNIU1RTKHJlcXVlc3QpICYmIHNlc3Npb25Db2NvYS0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uQ29jb2EtPnNlc3Npb25JRCgpKS0+c2hvdWxkQmxvY2tDb29raWVzKHJl
cXVlc3QsIG5ldHdvcmtEYXRhVGFzay0+ZnJhbWVJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnBhZ2VJ
RCgpLCBuZXR3b3JrRGF0YVRhc2stPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KCkpOwogICAgICAgICAgICAgaWYgKHNob3VsZElnbm9yZUhTVFMpIHsKICAgICAgICAgICAgICAg
ICByZXF1ZXN0ID0gZG93bmdyYWRlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoW3JlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0pOwpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAg
dm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29kZXIgPDwg
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzOwogICAgIGVuY29kZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWluczsKKyAgICBlbmNvZGVyIDw8IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGVuY29kZXIgPDwgdGhlbWVOYW1lOwpA
QCAtNDc3LDYgKzQ3OCw5IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWlucykpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICNpZiBQTEFURk9S
TShHVEspCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRoZW1lTmFtZSkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyMCw2ICsyMjAsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgYm9vbCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsKICAgICBi
b29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJv
b2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIFN0cmluZyB0aGVtZU5hbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4NTIsNiArNzg1
Miw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJh
bWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkucmVu
ZGVyQ2FudmFzSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2Fw
dHVyZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1
cmF0aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwogICAgIHBhcmFtZXRl
cnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBwYXJhbWV0ZXJzLnJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZygpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHBhcmFtZXRlcnMudGhlbWVOYW1l
ID0gcGFnZUNsaWVudCgpLnRoZW1lTmFtZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNjE4
ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlv
bj4gUGFnZUNvbmZpZ3VyYXRpb24KICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAg
ICAgY29weS0+bV9hcHBsaWNhdGlvbk1hbmlmZXN0ID0gdGhpcy0+bV9hcHBsaWNhdGlvbk1hbmlm
ZXN0OwogI2VuZGlmCisgICAgY29weS0+bV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9
IHRoaXMtPm1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZm9yIChhdXRvJiBw
YWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVycykKICAgICAgICAgY29weS0+bV91cmxTY2hl
bWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUuY29weVJlZigpKTsKICAgICBjb3B5
LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5z
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5
LDkgQEAgcHVibGljOgogICAgIGJvb2wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlu
cygpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsg
fQogICAgIHZvaWQgc2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhib29sIGxp
bWl0cykgeyBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBsaW1pdHM7IH0K
IAorICAgIHZvaWQgc2V0UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoYm9vbCB2YWx1ZSkg
eyBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gdmFsdWU7IH0KKyAgICBib29sIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQorICAgIAogcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMjAyLDYgKzIwNSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJ
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxNiBAQCAtICh2b2lkKV9zZXRJZ25vcmVzQXBw
Qm91bmREb21haW5zOihCT09MCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRJZ25vcmVzQXBw
Qm91bmREb21haW5zKGlnbm9yZXNBcHBCb3VuZERvbWFpbnMpOwogfQogCistIChCT09MKV9yZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZworeworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRp
b24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7Cit9CisKKy0gKHZvaWQp
X3NldFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOihCT09MKXJlbGF4Cit7CisgICAgX3Bh
Z2VDb25maWd1cmF0aW9uLT5zZXRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhyZWxheCk7
Cit9CisKIC0gKE5TU3RyaW5nICopX3Byb2Nlc3NEaXNwbGF5TmFtZQogewogICAgIHJldHVybiBf
cGFnZUNvbmZpZ3VyYXRpb24tPnByb2Nlc3NEaXNwbGF5TmFtZSgpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUsMTAgKzEyNSw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRl
Z2VyLCBfV0tXZWJWaWV3Q2EKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEVkaXRh
YmxlSW1hZ2VzRW5hYmxlZDopIEJPT0wgX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0VW5kb01hbmFnZXJBUElFbmFibGVkOikgQk9PTCBfdW5kb01hbmFnZXJBUElF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0V2ViVmlld0NhdGVnb3J5OikgX1dLV2ViVmlld0Nh
dGVnb3J5IF93ZWJWaWV3Q2F0ZWdvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKLQotLSAodm9pZClfc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWlu
czooQk9PTClpZ25vcmVzQXBwQm91bmREb21haW5zICBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAoQk9PTClfaWdub3Jlc0FwcEJvdW5kRG9t
YWlucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwotCitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJZ25vcmVzQXBwQm91bmREb21h
aW5zOikgQk9PTCBfaWdub3Jlc0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNl
dHRlcj1fc2V0UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6KSBCT09MIF9yZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UHJvY2Vz
c0Rpc3BsYXlOYW1lOikgTlNTdHJpbmcgKl9wcm9jZXNzRGlzcGxheU5hbWUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsOCAr
MjY4LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3QgRnIKIAogICAg
IHBhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZnJhbWUtPnNldHRpbmdzKCkuSFRU
UFNVcGdyYWRlRW5hYmxlZCgpOwogCi0gICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
KQorICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBwYXJhbWV0
ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSBwYWdlLT5oYXNSZXNvdXJjZUxvYWRDbGll
bnQoKTsKKyAgICAgICAgcGFyYW1ldGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9
IHBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CisgICAgfQogCiAg
ICAgaWYgKGF1dG8qIG93bmVyRWxlbWVudCA9IGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewogICAg
ICAgICBpZiAoYXV0byogcGFyZW50RnJhbWUgPSBvd25lckVsZW1lbnQtPmRvY3VtZW50KCkuZnJh
bWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVDYWNoZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcs
MTQgKzU3LDE0IEBAIFN0cmluZyBXZWJDb29raWVDYWNoZTo6Y29va2llc0ZvckRPTShjb24KICAg
ICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAgICAgICAgICAgaW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUpOwogICAgIH0KLSAgICByZXR1cm4gaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6Tm8pLmZpcnN0OworICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpObywgZmFsc2UpLmZpcnN0Owog
fQogCi12b2lkIFdlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpLnRvU3Ry
aW5nKCk7CiAgICAgaWYgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3Qp
KQotICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llc0Zyb21ET00oZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
OjpObywgY29va2llU3RyaW5nKTsKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNl
dENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZywgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpOwogfQogCiB2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQoY29u
c3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaAko
cmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1N1cHBvcnRlZCgpOwogCiAgICAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyk7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpOwogCiAgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwogICAgIHZvaWQgY29va2llc0RlbGV0ZWQo
Y29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMSArNjksMTggQEAgc3Rh
dGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKgogICAgIGlmIChmaXJzdFBhcnR5
RG9tYWluID09IHJlc291cmNlRG9tYWluKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoZnJhbWUgJiYgZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nl
c3MoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZnJhbWVMb2FkZXJDbGll
bnQoKS0+aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisgICAg
ICAgICAgICBpZiAocGFnZS0+aGFzUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9t
YWluLCByZXNvdXJjZURvbWFpbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKGF1dG8qIGNvcmVQYWdlID0gcGFnZS0+Y29yZVBhZ2UoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChjb3JlUGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBkb2VzIG5v
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZWFsIHdpdGggb3RoZXIgcG9saWNpZXMgdGhh
biBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgc28gd2UgaGF2ZSB0byBnbyB0byB0
aGUgTmV0d29ya1Byb2Nlc3MgZm9yIGFsbAogICAgIC8vIG90aGVyIHBvbGljaWVzIGFuZCB0aGUg
cmVxdWVzdCBtYXkgZW5kIHVwIGdldHRpbmcgYmxvY2tlZCBvbiBOZXR3b3JrUHJvY2VzcyBzaWRl
LgpAQCAtMTAzLDYgKzExMCwxOSBAQCBib29sIFdlYkNvb2tpZUphcjo6aXNFbGlnaWJsZUZvckNh
Y2hlKFdlCiAgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVEb21h
aW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOwogfQogCitzdGF0
aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhjb25zdCBXZWJGcmFt
ZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8qIGNvcmVQYWdlID0gcGFnZS0+Y29yZVBhZ2UoKTsKKyAgICBp
ZiAoIWNvcmVQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvcmVQYWdl
LT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpOworfQorCiBTdHJpbmcgV2Vi
Q29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8g
V2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAg
LTEyNSw3ICsxNDUsNyBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRv
CiAKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0
UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShj
b29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNr
SVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmco
d2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDAp
KQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTE0
OCw5ICsxNjgsOSBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpECiAg
ICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKICAgICBp
ZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKSkKLSAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBjb29raWVTdHJpbmcpOworICAgICAgICBtX2NhY2hlLnNldENvb2tpZXNGcm9tRE9NKGRv
Y3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcod2ViRnJhbWUpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hv
dWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRD
b29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBj
b29raWVTdHJpbmcsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1l
KSksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCkBAIC0xOTYs
MTUgKzIxNiwxNSBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgCiBz
dGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tp
ZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUEluTmV0d29y
a1Byb2Nlc3MgPSBTaG91bGRBc2tJVFA6Ok5vOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMod2ViRnJhbWUs
IGZpcnN0UGFydHksIHVybCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcykpCiAgICAgICAg
IHJldHVybiB7IH07CiAjZW5kaWYKIAogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQ
cm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBzaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFtZSkpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBs
eShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1
cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2Vk
ID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVD
b29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBAIC0yMjAsNyArMjQwLDcgQEAgYm9vbCBXZWJDb29r
aWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgVwogCiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQo
KSkgOiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9
IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPnBh
Z2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJh
d0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRv
Y3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nl
c3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tp
ZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMo
ZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2ll
cyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw2ICs1NTAsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNT
aG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVz
b3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlczsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0gcGFyYW1ldGVycy5sb2Fkc0Zyb21OZXR3b3JrOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gcGFyYW1l
dGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsKIAogICAgIGlmICghcGFyYW1ldGVy
cy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCiAgICAgICAgIENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4OTIpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0wNS0yMCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBTUEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3cyB3aXRo
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwNTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIG1ha2UgdGVzdHMgZWFzaWVyIHRvIHJlYWQgYW5kIHdyaXRlLCBJIG1hZGUgQ29ubmVj
dGlvbjo6c2VuZCBhbmQgQ29ubmVjdGlvbjo6cmVjZWl2ZSwgd2hpY2ggYXNzdW1lIG5vIG5ldHdv
cmsgZXJyb3JzLgorICAgICAgICBUaGlzIGlzIHRydWUgd2hlbiBkb2luZyBsb2NhbCB0ZXN0aW5n
IGluIEFQSSB0ZXN0cy4gIFdlIHdlcmUgYWxyZWFkeSBhc3N1bWluZyBubyBuZXR3b3JrIGVycm9y
cy4KKyAgICAgICAgSSBhbHNvIGFkZCBfdGVzdF93YWl0Rm9yQWxlcnQgdG8gbWFrZSB0ZXN0cyBs
ZXNzIHZlcmJvc2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OkNvbm5lY3Rp
b24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6ZGF0YUZyb21TdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bnVs
bFRlcm1pbmF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OnJlcXVlc3QgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6cmVj
ZWl2ZSBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpzZW5kIGNv
bnN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0pOgorCiAyMDIwLTA1LTE5ICBTZXJnaW8g
VmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFN5bmMg
amhidWlsZCB0byBmbGF0cGFrCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTExNzIsNDEgKzExNzIsMzAgQEAgU3RyaW5nIGxvbmdTdHJpbmcoTENoYXIgYykKIFRFU1Qo
X1dLRG93bmxvYWQsIFJlc3VtZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
STsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0obndfY29ubmVj
dGlvbl90IGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25u
ZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewogICAgICAg
ICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAg
ICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJldGFpblB0
cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4
dF90IGNvbnRleHQsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZXJyb3Ip
OwotICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGRhdGFGcm9tU3RyaW5nKG1ha2VTdHJpbmco
CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmUoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFy
PiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCiAgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgogICAgICAgICAgICAgICAgICAg
ICAiRVRhZzogdGVzdFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDog
MTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0
YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpKTsKLSAgICAgICAgICAgICAgICBud19j
b25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5nZXQoKSwgY29udGV4dCwgZmFs
c2UsIF4obndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWVy
cm9yKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAg
ICAgICApKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgMjoKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAxLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29ubmVj
dGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQsIG53
X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIHsKLSAg
ICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAgICAgICBFWFBF
Q1RfRkFMU0UoZXJyb3IpOwotCi0gICAgICAgICAgICAgICAgYXV0byByZXF1ZXN0ID0gbnVsbFRl
cm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpOworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZl
KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAg
RVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJc
biIpKTsKLQotICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGRhdGFGcm9tU3RyaW5nKG1ha2VT
dHJpbmcoCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCiAgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIKICAgICAg
ICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6IDUwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1SYW5n
ZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAwXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIlxyXG4i
LCBsb25nU3RyaW5nPDUwMDA+KCdiJykpKTsKLSAgICAgICAgICAgICAgICBud19jb25uZWN0aW9u
X3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5nZXQoKSwgY29udGV4dCwgdHJ1ZSwgXihud19l
cnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZXJyb3IpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2InKQorICAgICAgICAgICAgICAgICkpOwor
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCShyZXZp
c2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05l
dHdvcmtQcm9jZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxNyArNTQsMTUgQEAgVEVTVChX
ZWJLaXQsIEhUVFBSZWZlcmVyKQogICAgIGF1dG8gY2hlY2tSZWZlcmVyID0gW10gKE5TVVJMICpi
YXNlVVJMLCBjb25zdCBjaGFyKiBleHBlY3RlZFJlZmVyZXIpIHsKICAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgICAg
ICBIVFRQU2VydmVyIHNlcnZlcihbZG9uZSA9ICZkb25lLCBleHBlY3RlZFJlZmVyZXJdIChud19j
b25uZWN0aW9uX3QgY29ubmVjdGlvbikgewotICAgICAgICAgICAgbndfY29ubmVjdGlvbl9yZWNl
aXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwg
bWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rpb24pLCBkb25lLCBl
eHBlY3RlZFJlZmVyZXJdKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRl
eHRfdCwgYm9vbCwgbndfZXJyb3JfdCkgewotICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNv
bnRlbnQpOwotICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdCA9IG51bGxUZXJtaW5hdGVkUmVx
dWVzdChjb250ZW50KTsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoWyZdIChDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZShbY29ubmVjdGlv
biwgZXhwZWN0ZWRSZWZlcmVyLCAmZG9uZV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKICAg
ICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSZWZlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gZXhwZWN0ZWRIZWFkZXJGaWVsZCA9IG1ha2VTdHJpbmcoIlJlZmVyZXI6ICIsIGV4cGVj
dGVkUmVmZXJlciwgIlxyXG4iKTsKICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ry
c3RyKHJlcXVlc3QuZGF0YSgpLCBleHBlY3RlZEhlYWRlckZpZWxkLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJlZmVyZXI6IikpOwotICAgICAgICAgICAgICAgICpk
b25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pLmdldCgpKTsKKyAgICAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgICAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5IG9ubG9hZD0nZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoXCJmb3JtSURcIikuc3VibWl0KCknPjxmb3JtIGlkPSdmb3JtSUQn
IG1ldGhvZD0ncG9zdCcgYWN0aW9uPSdodHRwOi8vMTI3LjAuMC4xOiVkLyc+PC9mb3JtPjwvYm9k
eT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOmJhc2VVUkxdOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCShyZXZpc2lvbiAyNjE4ODYp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTggQEAKIAogI2lmIEhBVkUoU1NMKQogCisjaW1wb3J0
ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VENQU2VydmVyLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0
ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAi
VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogQGludGVyZmFjZSBQ
cm94eURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdh
dGU+CiAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVydDsKQEAgLTE3NywzICsxODIsOTcgQEAgVEVT
VChXZWJLaXQsIFNlY3VyZVByb3h5Q29ubmVjdGlvbikKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoU1NMKQorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09S
SykKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdCwgUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcpCit7CisgICAgYXV0byBydW5UZXN0ID0gW10gKGJvb2wgcmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIHsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
W2Nvbm5lY3Rpb25Db3VudCA9IDAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXSAoQ29u
bmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICsrY29ubmVjdGlvbkNv
dW50OworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0aW9uLCBjb25uZWN0
aW9uQ291bnQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXSAoVmVjdG9yPGNoYXI+JiYg
cmVxdWVzdCkgeworICAgICAgICAgICAgICAgIFN0cmluZyByZXBseTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBib2R5ID0KKyAgICAgICAgICAgICAgICAiPHNjcmlwdD4iCisgICAgICAg
ICAgICAgICAgICAgICJmZXRjaCgiCisgICAgICAgICAgICAgICAgICAgICAgICAiJ2h0dHA6Ly93
ZWJraXQub3JnL3BhdGgzJywiCisgICAgICAgICAgICAgICAgICAgICAgICAie2NyZWRlbnRpYWxz
OidpbmNsdWRlJ30iCisgICAgICAgICAgICAgICAgICAgICIpLnRoZW4oKCk9PnsiCisgICAgICAg
ICAgICAgICAgICAgICAgICAiYWxlcnQoJ2ZldGNoZWQnKSIKKyAgICAgICAgICAgICAgICAgICAg
In0pLmNhdGNoKChlKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGVydChlKSIKKyAg
ICAgICAgICAgICAgICAgICAgIn0pIgorICAgICAgICAgICAgICAgICI8L3NjcmlwdD4iOworICAg
ICAgICAgICAgICAgIHN3aXRjaCAoY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgICAgICAgICAg
Y2FzZSAxOiB7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0
LmRhdGEoKSwgIkdFVCBodHRwOi8vd2Via2l0Lm9yZy9wYXRoMSBIVFRQLzEuMVxyXG4iKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcGx5ID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRlbnQtTGVuZ3RoOiAiLCBzdHJsZW4oYm9keSksICJcclxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIlNldC1Db29raWU6IGE9YlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29u
bmVjdGlvbjogY2xvc2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBib2R5
CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIDM6IHsKKyAgICAgICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly9leGFt
cGxlLmNvbS9wYXRoMiBIVFRQLzEuMVxyXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGx5
ID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tc
clxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogIiwgc3RybGVuKGJv
ZHkpLCAiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9zZVxy
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGJvZHkKKyAgICAgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQ291bnQgPT0gMiB8fCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0
cihyZXF1ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0cnN0cihyZXF1
ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93ZWJraXQub3JnL3Bh
dGgzIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPQorICAgICAg
ICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
IkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsczog
dHJ1ZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbjogY2xvc2Vcclxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4iOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29u
bmVjdGlvbi5zZW5kKFdURk1vdmUocmVwbHkpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1
cmF0aW9uXSk7CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0UHJveHlDb25maWd1cmF0
aW9uOkB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0eUhUVFBQcm94
eUhvc3Q6IEAiMTI3LjAuMC4xIiwKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDRlN0cmVhbVBy
b3BlcnR5SFRUUFByb3h5UG9ydDogQChzZXJ2ZXIucG9ydCgpKQorICAgICAgICB9XTsKKyAgICAg
ICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Ok5PXTsKKyAg
ICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
ICAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwor
ICAgICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBuZXddKTsKKyAgICAgICAgW3ZpZXdDb25maWd1cmF0aW9uIF9zZXRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZzpyZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZ107CisgICAg
ICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQo
KV07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjp2aWV3
Q29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
d2Via2l0Lm9yZy9wYXRoMSJdXV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBf
dGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCIpOworCisgICAgICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vZXhhbXBsZS5jb20vcGF0aDIiXV1dOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQiKTsKKyAgICB9OworICAgIHJ1
blRlc3QodHJ1ZSk7CisgICAgcnVuVGVzdChmYWxzZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjYxODg2KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEyICszMCwxNSBAQAogI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiAKICNpbXBvcnQg
PE5ldHdvcmsvTmV0d29yay5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW1wb3J0IDx3dGYvRm9yd2FyZC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCitj
bGFzcyBDb25uZWN0aW9uOworCiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgSFRUUFJlc3BvbnNlOwpAQCAtNDQsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBD
ZXJ0aWZpY2F0ZVZlcmlmaWVyID0gRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFf
dCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+OwogCiAgICAg
SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJl
c3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAsIENlcnRpZmljYXRlVmVyaWZpZXIm
JiA9IG51bGxwdHIpOwotICAgIEhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChud19jb25uZWN0aW9u
X3QpPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKKyAgICBIVFRQU2VydmVyKEZ1bmN0
aW9uPHZvaWQoQ29ubmVjdGlvbik+JiYsIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOwogICAg
IH5IVFRQU2VydmVyKCk7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OwotICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCgpIGNvbnN0OworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdChjb25zdCBT
dHJpbmcmIHBhdGggPSAiLyIpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVlc3RzKCkgY29u
c3Q7CiAKIHByaXZhdGU6CkBAIC01OSw4ICs2MiwyMyBAQCBwcml2YXRlOgogICAgIFByb3RvY29s
IG1fcHJvdG9jb2wgeyBQcm90b2NvbDo6SHR0cCB9OwogfTsKIAotUmV0YWluUHRyPGRpc3BhdGNo
X2RhdGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYpOwotVmVjdG9yPGNoYXI+IG51bGxUZXJt
aW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3QpOworY2xhc3MgQ29ubmVjdGlvbiB7CitwdWJs
aWM6CisgICAgQ29ubmVjdGlvbihjb25zdCBDb25uZWN0aW9uJikgPSBkZWZhdWx0OworICAgIENv
bm5lY3Rpb24oQ29ubmVjdGlvbiYmKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0
b3I9KGNvbnN0IENvbm5lY3Rpb24mKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0
b3I9KENvbm5lY3Rpb24mJikgPSBkZWZhdWx0OworCisgICAgdm9pZCBzZW5kKFN0cmluZyYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsKKyAgICB2b2lkIHJl
Y2VpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBIVFRQU2VydmVyOworICAgIENvbm5lY3Rpb24o
bndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5l
Y3Rpb24pIHsgfQorCisgICAgUmV0YWluUHRyPG53X2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9u
OworfTsKIAogc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgZW51bSBjbGFz
cyBUZXJtaW5hdGVDb25uZWN0aW9uIHsgTm8sIFllcyB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAw
LDcgQEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKICAgICBzdGFydExpc3RlbmluZyhtX2xp
c3RlbmVyLmdldCgpKTsKIH0KIAotSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lk
KG53X2Nvbm5lY3Rpb25fdCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIFByb3RvY29sIHByb3RvY29s
KQorSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmIGNv
bm5lY3Rpb25IYW5kbGVyLCBQcm90b2NvbCBwcm90b2NvbCkKICAgICA6IG1fbGlzdGVuZXIoYWRv
cHROUyhud19saXN0ZW5lcl9jcmVhdGUobGlzdGVuZXJQYXJhbWV0ZXJzKHByb3RvY29sLCBudWxs
cHRyKS5nZXQoKSkpKQogICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKIHsKQEAgLTEwOCw3ICsx
MDgsNyBAQCAgICAgLCBtX3Byb3RvY29sKHByb3RvY29sKQogICAgIG53X2xpc3RlbmVyX3NldF9u
ZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbY29u
bmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVyKV0gKG53X2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uKSB7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0X3F1ZXVlKGNvbm5l
Y3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBud19jb25uZWN0aW9u
X3N0YXJ0KGNvbm5lY3Rpb24pOwotICAgICAgICBjb25uZWN0aW9uSGFuZGxlcihjb25uZWN0aW9u
KTsKKyAgICAgICAgY29ubmVjdGlvbkhhbmRsZXIoQ29ubmVjdGlvbihjb25uZWN0aW9uKSk7CiAg
ICAgfSkuZ2V0KCkpOwogICAgIHN0YXJ0TGlzdGVuaW5nKG1fbGlzdGVuZXIuZ2V0KCkpOwogfQpA
QCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25lZCBzdGF0
dXMKICAgICByZXR1cm4geyB9OwogfQogCi1SZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRh
RnJvbVN0cmluZyhTdHJpbmcmJiBzKQorc3RhdGljIFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+
IGRhdGFGcm9tU3RyaW5nKFN0cmluZyYmIHMpCiB7CiAgICAgYXV0byBpbXBsID0gcy5yZWxlYXNl
SW1wbCgpOwogICAgIEFTU0VSVChpbXBsLT5pczhCaXQoKSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAg
UmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbgogICAgIH0pKTsKIH0KIAot
VmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3QgY29udGVu
dCkKK3N0YXRpYyBWZWN0b3I8Y2hhcj4gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGRpc3BhdGNoX2Rh
dGFfdCBjb250ZW50KQogewogICAgIF9fYmxvY2sgVmVjdG9yPGNoYXI+IHJlcXVlc3Q7CiAgICAg
ZGlzcGF0Y2hfZGF0YV9hcHBseShjb250ZW50LCBeYm9vbChkaXNwYXRjaF9kYXRhX3QsIHNpemVf
dCwgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkgewpAQCAtMjMyLDE5ICsyMzIsMzcg
QEAgdWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIG53X2xpc3Rl
bmVyX2dldF9wb3J0KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCi1OU1VSTFJlcXVlc3QgKkhUVFBT
ZXJ2ZXI6OnJlcXVlc3QoKSBjb25zdAorTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0
KGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqZm9ybWF0OwogICAg
IHN3aXRjaCAobV9wcm90b2NvbCkgewogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6Ci0gICAgICAg
IGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBAImh0
dHA6Ly8xMjcuMC4wLjE6JWQlcyI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvdG9jb2w6
Okh0dHBzOgogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKLSAgICAgICAg
Zm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBAImh0
dHBzOi8vMTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CisgICAgcmV0dXJuIFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCksIHBhdGgudXRmOCgpLmRhdGEoKV1dXTsKK30K
Kwordm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PGNoYXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIG53X2Nvbm5lY3Rp
b25fcmVjZWl2ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9j
b250ZXh0X3QsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoY29udGVudCk7CisgICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxsVGVybWluYXRlZFJlcXVlc3QoY29udGVudCkpOworICAgIH0pLmdldCgpKTsK
K30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kKFN0cmluZyYmIG1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBud19jb25u
ZWN0aW9uX3NlbmQobV9jb25uZWN0aW9uLmdldCgpLCBkYXRhRnJvbVN0cmluZyhXVEZNb3ZlKG1l
c3NhZ2UpKS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZBVUxUX01FU1NBR0VfQ09OVEVYVCwgdHJ1
ZSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKCFlcnJv
cik7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5o
CShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURl
bGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMgKzMyLDcgQEAKIC0gKE5TU3RyaW5nICop
d2FpdEZvckFsZXJ0OwogCiBAZW5kCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0VUlEZWxl
Z2F0ZUV4dHJhcykKKy0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0OworQGVuZApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01OSwzICs1OSwxNyBAQCAtIChOU1N0cmluZyAqKXdhaXRGb3JB
bGVydAogfQogCiBAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RVSURlbGVn
YXRlRXh0cmFzKQorCistIChOU1N0cmluZyAqKV90ZXN0X3dhaXRGb3JBbGVydAoreworICAgIEVY
UEVDVF9GQUxTRShzZWxmLlVJRGVsZWdhdGUpOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3RVSURlbGVnYXRlIG5ld10pOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IHVpRGVsZWdh
dGUuZ2V0KCk7CisgICAgTlNTdHJpbmcgKmFsZXJ0ID0gW3VpRGVsZWdhdGUgd2FpdEZvckFsZXJ0
XTsKKyAgICBzZWxmLlVJRGVsZWdhdGUgPSBuaWw7CisgICAgcmV0dXJuIGFsZXJ0OworfQorCitA
ZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399873</attachid>
            <date>2020-05-20 12:32:20 -0700</date>
            <delta_ts>2020-05-20 12:51:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200520123218.patch</filename>
            <type>text/plain</type>
            <size>102050</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxvd0FsbFRo
aXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0aXZlcyBvbmx5IHNob3du
IGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5zZXJ0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNhbWVTaXRlSW5mby5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIK
QEAgLTQxLDYgKzQyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQor
eworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICByZXR1cm4g
cGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKFJlZjxTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikp
KTsKQEAgLTgwLDcgKzg4LDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llcyhEb2N1bWVudCYg
ZG9jdQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwogICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBy
ZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKGRvY3VtZW50KSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIApAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVzKERv
Y3VtZW50JiBkb2MKICAgICB9CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgc2Vzc2lvbi0+c2V0Q29v
a2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZv
KGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6WWVzLCBjb29r
aWVTdHJpbmcpOworICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZVN0cmluZywgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcoZG9jdW1lbnQpKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtMTMxLDcgKzEzOSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29r
aWVzRW5hYmxlZChjb25zdCBEb2MKIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92
aWRlci0+c3RvcmFnZVNlc3Npb24oKSkgewotICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0
LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1
cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQogCkBAIC0xNjQsNyArMTcyLDcgQEAgYm9v
bCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdQogICAgIH0KIAogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigp
KQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpOworICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGRvY3VtZW50KSwgY29va2llcyk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCiAgICAgLCBtX2xv
YWRzU3VicmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQogICAg
ICwgbV9sb2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsp
CisgICAgLCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0
bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29u
c3QgeyByZXR1cm4gbV9sb2Fkc0Zyb21OZXR3b3JrOyB9CisgICAgYm9vbCBzaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc7IH0KIAogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29u
OjpMb3dQb3dlck1vZGUpOyB9CiAgICAgYm9vbCBjYW5VcGRhdGVUaHJvdHRsaW5nUmVhc29uKFRo
cm90dGxpbmdSZWFzb24gcmVhc29uKSBjb25zdCB7IHJldHVybiAhbV90aHJvdHRsaW5nUmVhc29u
c092ZXJyaWRlbkZvclRlc3RpbmcuY29udGFpbnMocmVhc29uKTsgfQpAQCAtMTA0NSw2ICsxMDQ2
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmlyZUV2ZW50cyB7IHRydWUgfTsKICAg
ICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJv
bU5ldHdvcmsgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2Ny
aXB0cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RE9NV3JhcHBlcldvcmxk
PiwgVW5pcXVlUmVmPFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0
aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGxv
YWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yayB7IHRy
dWUgfTsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsg
dHJ1ZSB9OworICAgIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJv
bAogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVx
dWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDog
SW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CisgICAg
cmV0dXJuIHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVz
dC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJl
Q29va2llczo6Tm8sIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmlyc3Q7CiB9CiAKIHN0YXRp
YyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llSmFyKiBj
b29raWVKYXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE2
ICsxMDQsMTYgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0hhZFVzZXJJbgogICAg
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBpZiAoIW1faXNS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgcmV0dXJuIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCks
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogICAg
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKKyAgICBp
ZiAocmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIGlmICghbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkRXhlbXB0CiAKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCisgICAgaWYg
KG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSkpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3koKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwpAQCAt
MTYwLDExICsxNjAsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGdldEFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBn
ZXRDb29raWVzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzQ29va2ll
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQ
LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0
b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVT
dG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFApIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkm
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGRvbUNvb2tpZXNG
b3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CkBAIC0xNzcsOCArMTc3LDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgYm9vbCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tp
ZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERv
Tm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBD
b29raWVTdG9yYWdlUmVmKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChD
RkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OwotICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JV
UkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNo
b3VsZEFza0lUUCkgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICB2b2lkIHNldEhU
VFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMs
IE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNv
bnN0OwogICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0hUVFBDb29raWUgKikgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW8KICAgICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZQogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTI2Myw3ICsyNjMsNyBA
QCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlCiAKIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxk
UHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUlu
Zm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRl
ckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1l
U2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQs
IGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UpOwogfQogCiBIVFRQQ29va2llQWNjZXB0
UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3QK
QEAgLTI4MCw3ICsyODAsNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdl
U2VzCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCwgYm9vbCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsMTAgKzM0Miwx
MCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJu
IGZpbHRlcmVkQ29va2llczsKIH0KIAotTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApIGNvbnN0CitOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hv
dWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJh
bWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVz
ICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC0zNTUsMTMgKzM1NSwxMyBAQCBOU0Fy
cmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGCiAgICAgcmV0dXJuIGh0dHBDb29r
aWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVI
VFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9
IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVS
TChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBpZiAoIVtjb29raWVz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBh
IG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBj
cmVhdGUgYmVsb3cuCiAKQEAgLTQxMSwyOSArNDExLDI5IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFs
bEhUVFBDb29raWVzKENGSFRUUEMKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29v
a2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBP
bmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7
CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6WWVzLCBmYWxzZSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0ciwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChz
aG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09
IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAg
ICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTQ5MSwxMiAr
NDkxLDEyIEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXMKICAgICBy
ZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7
CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICBy
YXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw3ICs5NSw3IEBAIENvb2tpZUphckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2sK
ICAgICByZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIGNvb2tp
ZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRC
OjpTb3VyY2U6OlNjcmlwdCk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAsIGJvb2wpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRl
ciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1
cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZh
bHNlIH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhh
c0Nvb2tpZXMoYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBTaG91bGRBc2tJVFAsIGJvb2wsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAogewogICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOwogICAgIGlmICghY29va2llcykKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
V2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3Rz
IGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1
cmwsIHRydWUpLCBmYWxzZSB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2UKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVz
KTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQ
cm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmll
bGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5w
YWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UDo6WWVzLCBmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5ncykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUMKICAgICAgICAgYWRkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycyhyZXF1ZXN0KTsKIAogICAgICAg
ICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVz
OjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1
ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUDo6WWVzKS5maXJzdDsKKyAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRl
ckZpZWxkID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmly
c3Q7CiAgICAgICAgIGlmICghY29va2llSGVhZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29v
a2llSGVhZGVyRmllbGQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhp
c3RzKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBp
ZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lU
UCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAg
ICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC00NzMs
MTIgKzQ3MywxMiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9j
a0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91
bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0
UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CkBAIC01MTUsMTAgKzUxNSwxMCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
UmF3Q29va2llCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGJvb2wgZm9ySFRUUEhlYWRlciwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Np
b24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNz
aW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkp
CisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNo
b3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4geyB7IH0sIGZhbHNlIH07
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTU3MiwyMCArNTcyLDIwIEBA
IHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm8KICAgICByZXR1cm4geyBT
dHJpbmc6OmZyb21VVEY4KGNvb2tpZUhlYWRlci5nZXQoKSksIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVz
Rm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQs
IHBhZ2VJRCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0
ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91
bGRBc2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAotc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8g
U2VjdXJlIGNvb2tpZXMgd2lsbCBzdGlsbCBvbmx5IGJlIGluY2x1ZGVkIGlmIHVybCdzIHByb3Rv
Y29sIGlzIGh0dHBzLgotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQ
YXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgdHJ1ZSwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCB0
cnVlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQ
YXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJs
LCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFk
ZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7Cisg
ICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHku
Zmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJv
eHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlE
LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olll
cywgZmFsc2UpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVT
dG9yZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAyMC0wNS0yMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3cyB3aXRoIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYw
NTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgdmFsdWUgbWFrZXMgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2NrQ29va2llcygpIG5v
dCBkbyBhbnl0aGluZyBmb3IgY2VydGFpbiBXS1dlYlZpZXdzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6dW5ibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0QWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjphbGxvd0FsbFRoaXJkUGFydHlDb29raWVzIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FsbG93QWxsVGhpcmRQYXJ0
eUNvb2tpZXNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0QWxsb3dB
bGxUaGlyZFBhcnR5Q29va2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjphZGRQYXJhbWV0ZXJzU2hhcmVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisKIDIwMjAtMDUtMTkgIFBlciBBcm5lIFZv
bGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEZpeCBtZXNzYWdlIGZp
bHRlciBzYW5kYm94IHZpb2xhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsMTIgKzYy
MywxMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpCiAgICAgICAg
IG1fc2NoZW1lUmVnaXN0cnktPnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChXVEZNb3Zl
KHNjaGVtZSkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtT
dG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFs
c2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9y
RE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIGF1dG8gcmVzdWx0ID0gbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC02MzgsMTIgKzYzOCwxMiBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29rCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3Jr
U3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKLSAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgY29va2llU3RyaW5nKTsKKyAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgY29va2llU3RyaW5nLCByZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQpAQCAtNjUyLDIyICs2NTIsMjIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2V0QwogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywg
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7
CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIGZhbHNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3Vs
ZEFza0lUUCk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lv
bikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gcmVzdWx0OwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0UmF3
Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFAsIHJlc3VsdCk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdD
b29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNo
b3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIHJlc3VsdCk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDgsMTAgKzIwOCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbmc+JiYgc2NoZW1lcyk7CiAKLSAgICB2b2lkIGNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVT
dHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiwgYm9vbCBy
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIHNldFJhd0Nvb2tpZShjb25zdCBXZWJDb3Jl
OjpDb29raWUmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDEwICszNSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzCiAgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25hbDxX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgZW51bTpib29sIE9wdGlvbmFsPFdl
YktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiAKLSAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29s
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nKQotICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBD
b29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29v
a2llU3RyaW5nLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIEdldFJh
d0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9v
bCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3lu
Y2hyb25vdXMKICAgICBTZXRSYXdDb29raWUoc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUp
CiAgICAgRGVsZXRlQ29va2llKFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogICAgIERvbUNv
b2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAg
UmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcgogewogICAgIEFTU0VSVCgh
cGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24s
IGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFt
ZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJzLmlz
TWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25G
b3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIC8vIEZJWE1FOiBKdXN0IHBhc3Mg
cGFyYW1ldGVycyB0byB0aGUgTmV0d29ya0RhdGFUYXNrQ29jb2EgY29uc3RydWN0b3IuCisgICAg
cmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJh
bWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdl
SUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVu
dFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBh
cmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZp
Z2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBw
YXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgcGFyYW1ldGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zyk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVy
cy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdh
dGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm8geyBm
YWxzZSB9OwogICAgIGJvb2wgaXNNYWluRnJhbWVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAgICBi
b29sIGlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lIHsgZmFsc2UgfTsKKyAgICBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGJsb2JGaWxlUmVmZXJlbmNl
czsKICAgICBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSB7IFByZWNvbm5lY3RP
bmx5OjpObyB9OwogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwogICAgIGVuY29kZXIgPDwgbmVl
ZHNDZXJ0aWZpY2F0ZUluZm87CiAgICAgZW5jb2RlciA8PCBpc01haW5GcmFtZU5hdmlnYXRpb247
CiAgICAgZW5jb2RlciA8PCBpc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZTsKKyAg
ICBlbmNvZGVyIDw8IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogICAgIGVuY29kZXIg
PDwgbWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJv
b2w+KHNvdXJjZU9yaWdpbik7CkBAIC0xOTgsNiArMTk5LDggQEAgT3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM+IAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11
bUJ1ZmZlcmluZ1RpbWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyAr
MTMyNiw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwKICAgICBB
U1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihj
b25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXM7Ci0gICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNl
c3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBTaG91bGRBc2tJVFA6OlllcywgY29va2llcykpCisgICAgaWYgKCFuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UsIGNvb2tpZXMpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGVzY2FwZWRVUkwgPSBlc2NhcGVGb3JKU09OKHVy
bC5zdHJpbmcoKSk7CkBAIC0xMzg2LDcgKzEzODYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0
aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCi0g
ICAgaWYgKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChuZXR3b3JrU3RvcmFnZVNlc3Npb24u
c2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBmYWxz
ZSkpCiAgICAgICAgIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBsYWJl
bCwgbG9nZ2VkT2JqZWN0LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCByZWZlcnJlciwgZnJhbWVJRCwgcGFnZUlELCBpZGVudGlmaWVyKTsKICAg
ICBlbHNlCiAgICAgICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoY29ubmVjdGlvbiwg
bGFiZWwsIGxvZ2dlZE9iamVjdCwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgcmVmZXJyZXIsIGZyYW1lSUQsIHBhZ2VJRCwgaWRlbnRpZmllcik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBO
ZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25p
ZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikK
KyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5n
UG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3Qs
IGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRT
bmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JB
bnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2Nv
YShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNv
bm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zv
ck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tl
ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpKTsKICAgICB9CiAKICAgICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsKQEAgLTczLDEx
ICs3MywxMiBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKKyAgICBib29sIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzsgfQogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29y
a1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdv
cmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRT
bmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZl
cmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwpAQCAtMTAzLDYgKzEwNCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IGZh
bHNlIH07CiB9OwogCiBXZWJDb3JlOjpDcmVkZW50aWFsIHNlcnZlclRydXN0Q3JlZGVudGlhbChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTks
MTMgKzE5OSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0ZUlzQWx3YXlzT25Mb2dnCiAg
ICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7
CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNv
cmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNv
bm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKQorTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNs
aWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRp
YWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJj
ZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4g
bmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1
ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmln
YXRpb24pCiAgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVz
dFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdl
SUQocGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFt
ZShkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQogICAgICwg
bV9pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoY29tcHV0ZUlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZChzZXNzaW9uKSkKKyAgICAsIG1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcocmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgaWYgKG1fc2NoZWR1bGVkRmFpbHVyZVR5
cGUgIT0gTm9GYWlsdXJlKQogICAgICAgICByZXR1cm47CkBAIC0yNDAsNyArMjQxLDcgQEAgTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvYwogICAgIHNob3VsZEJsb2NrQ29v
a2llcyA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAg
aWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpCi0gICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMg
PSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFt
ZUlELCBwYWdlSUQpOworICAgICAgICAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICB9CiAjZW5kaWYKICAgICBy
ZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CkBAIC00MDMs
NyArNDA0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFtX2hhc0JlZW5TZXRU
b1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UpIHsKICAgICAgICAgaWYgKG1fc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJh
bFN0YXRlbGVzcwotICAgICAgICAgICAgfHwgKG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkgJiYgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2hvdWxkQmxvY2tD
b29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQpKSkKKyAgICAgICAgICAgIHx8ICht
X3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1f
cGFnZUlELCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkpCiAgICAgICAgICAgICBi
bG9ja0Nvb2tpZXMoKTsKICAgICB9IGVsc2UgaWYgKG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
IT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcyAm
JiBuZWVkc0ZpcnN0UGFydHlDb29raWVCbG9ja2luZ0xhdGNoTW9kZVF1aXJrKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS51cmwo
KSkpCiAgICAgICAgIHVuYmxvY2tDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShy
ZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNiw3ICs1MzYsNyBAQCAt
ICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wgc2hv
dWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5l
dHdvcmtTZXNzaW9uKCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVX
YXNVcGdyYWRlZER1ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3
b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5z
aG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5l
dHdvcmtEYXRhVGFzay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9
IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29j
b2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9u
SUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1l
SUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRJ
Z25vcmVIU1RTKSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVlc3Qo
cmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUgaXNF
cXVhbFRvU3RyaW5nOkAiaHR0cCJdKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNU
UyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9u
KCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVXYXNVcGdyYWRlZER1
ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3b3JrUHJvY2Vzcygp
LnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5zaG91bGRCbG9ja0Nv
b2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5ldHdvcmtEYXRhVGFz
ay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1Vw
Z3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQ
cm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3Vs
ZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29y
a0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVIU1RTKSB7
CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5n
OkAiaHR0cCJdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ4LDYgKzE0OCw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkK
ICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzczsKICAgICBlbmNv
ZGVyIDw8IG5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczsKICAgICBlbmNvZGVyIDw8IGxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CisgICAgZW5jb2RlciA8PCByZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVy
IDw8IHRoZW1lTmFtZTsKQEAgLTQ3Nyw2ICs0NzgsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBXZWJQCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5yZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy50aGVtZU5hbWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNiArMjIwLDcgQEAgc3RydWN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9j
ZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsg
ZmFsc2UgfTsKKyAgICBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2Ug
fTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgdGhlbWVOYW1lOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03ODUyLDYgKzc4NTIsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQ
cm94eTo6CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBw
cmVmZXJlbmNlcygpLnJlbmRlckNhbnZhc0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKICAgICBwYXJh
bWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3Mo
KTsKICAgICBwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBt
X2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CisgICAgcGFyYW1ldGVycy5yZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IG1fY29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBwYXJh
bWV0ZXJzLnRoZW1lTmFtZSA9IHBhZ2VDbGllbnQoKS50aGVtZU5hbWUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBSZWY8
UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uCiAjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQogICAgIGNvcHktPm1fYXBwbGljYXRpb25NYW5pZmVzdCA9IHRoaXMtPm1f
YXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgorICAgIGNvcHktPm1fcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgPSB0aGlzLT5tX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwog
ICAgIGZvciAoYXV0byYgcGFpciA6IHRoaXMtPm1fdXJsU2NoZW1lSGFuZGxlcnMpCiAgICAgICAg
IGNvcHktPm1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHBhaXIua2V5LCBwYWlyLnZhbHVlLmNvcHlS
ZWYoKSk7CiAgICAgY29weS0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSB0aGlzLT5tX2NvcnNE
aXNhYmxpbmdQYXR0ZXJuczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTU5LDYgKzE1OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGxpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0c05hdmlnYXRpb25zVG9B
cHBCb3VuZERvbWFpbnM7IH0KICAgICB2b2lkIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMoYm9vbCBsaW1pdHMpIHsgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21h
aW5zID0gbGltaXRzOyB9CiAKKyAgICB2b2lkIHNldFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKGJvb2wgdmFsdWUpIHsgbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9IHZhbHVl
OyB9CisgICAgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7IH0KKyAgICAKIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsK
QEAgLTIwMiw2ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNl
cyB7IHRydWUgfTsKICAgICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKICAgICBi
b29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI2
MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU0LDYgKzEyNTQsMTYgQEAgLSAodm9p
ZClfc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczooQk9PTAogICAgIF9wYWdlQ29uZmlndXJhdGlv
bi0+c2V0SWdub3Jlc0FwcEJvdW5kRG9tYWlucyhpZ25vcmVzQXBwQm91bmREb21haW5zKTsKIH0K
IAorLSAoQk9PTClfcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcKK3sKKyAgICByZXR1cm4g
X3BhZ2VDb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygp
OworfQorCistICh2b2lkKV9zZXRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzooQk9PTCly
ZWxheAoreworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcocmVsYXgpOworfQorCiAtIChOU1N0cmluZyAqKV9wcm9jZXNzRGlzcGxheU5hbWUK
IHsKICAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5wcm9jZXNzRGlzcGxheU5hbWUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjE4ODYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDEwICsxMjUsOCBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRFZGl0YWJsZUltYWdlc0VuYWJsZWQ6KSBCT09MIF9lZGl0YWJsZUltYWdlc0Vu
YWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFVuZG9NYW5hZ2VyQVBJRW5hYmxlZDopIEJPT0wg
X3VuZG9NYW5hZ2VyQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYlZpZXdDYXRlZ29y
eTopIF9XS1dlYlZpZXdDYXRlZ29yeSBfd2ViVmlld0NhdGVnb3J5IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KLS0gKHZvaWQpX3NldElnbm9y
ZXNBcHBCb3VuZERvbWFpbnM6KEJPT0wpaWdub3Jlc0FwcEJvdW5kRG9tYWlucyAgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKEJPT0wpX2ln
bm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKLQorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0SWdu
b3Jlc0FwcEJvdW5kRG9tYWluczopIEJPT0wgX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOikg
Qk9PTCBfcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldFByb2Nlc3NEaXNwbGF5TmFtZTopIE5TU3RyaW5nICpfcHJvY2Vzc0Rpc3BsYXlO
YW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjY4LDggKzI2OCwxMCBAQCBzdGF0aWMgdm9pZCBhZGRQYXJhbWV0ZXJzU2hhcmVk
KGNvbnN0IEZyCiAKICAgICBwYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZyYW1l
LT5zZXR0aW5ncygpLkhUVFBTVXBncmFkZUVuYWJsZWQoKTsKIAotICAgIGlmIChhdXRvKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKKyAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsK
ICAgICAgICAgcGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gcGFnZS0+aGFz
UmVzb3VyY2VMb2FkQ2xpZW50KCk7CisgICAgICAgIHBhcmFtZXRlcnMucmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgPSBwYWdlLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZygpOworICAgIH0KIAogICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQgPSBmcmFtZS0+b3duZXJF
bGVtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHBhcmVudEZyYW1lID0gb3duZXJFbGVtZW50
LT5kb2N1bWVudCgpLmZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDE0ICs1NywxNCBAQCBTdHJpbmcgV2ViQ29va2llQ2FjaGU6OmNvb2tp
ZXNGb3JET00oY29uCiAgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKICAgICAg
ICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKICAgICB9
Ci0gICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKKyAgICByZXR1cm4gaW5NZW1vcnlTdG9y
YWdlU2Vzc2lvbigpLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6Tm8s
IGZhbHNlKS5maXJzdDsKIH0KIAotdm9pZCBXZWJDb29raWVDYWNoZTo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJDb29raWVDYWNo
ZTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nLCBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIFN0cmluZyBob3N0ID0g
dXJsLmhvc3QoKS50b1N0cmluZygpOwogICAgIGlmIChtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFn
ZS5jb250YWlucyhob3N0KSkKLSAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENv
b2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7CisgICAgICAgIGluTWVtb3J5U3Rv
cmFnZVNlc3Npb24oKS5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6Ok5vLCBjb29raWVTdHJpbmcsIHJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogdm9pZCBXZWJDb29raWVDYWNoZTo6
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUNhY2hlLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTdXBwb3J0ZWQoKTsKIAogICAgIFN0cmluZyBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpOwotICAgIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CisgICAgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nLCBib29sIHJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIAogICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0
IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKICAgICB2b2lk
IGNvb2tpZXNEZWxldGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjks
MTEgKzY5LDE4IEBAIHN0YXRpYyBib29sIHNob3VsZEJsb2NrQ29va2llcyhXZWJGcmFtZSoKICAg
ICBpZiAoZmlyc3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKGZyYW1lICYmIGZyYW1lLT5mcmFtZUxvYWRlckNsaWVudCgpLT5o
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5oYXNQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChmcmFtZSkgeworICAgICAgICBpZiAoZnJhbWUt
PmZyYW1lTG9hZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UtPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nl
c3MoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb3JlUGFnZSA9IHBhZ2UtPmNvcmVQ
YWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29yZVBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIC8vIFRoZSBXZWJDb250ZW50
IHByb2Nlc3MgZG9lcyBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGVhbCB3aXRoIG90
aGVyIHBvbGljaWVzIHRoYW4gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHNvIHdl
IGhhdmUgdG8gZ28gdG8gdGhlIE5ldHdvcmtQcm9jZXNzIGZvciBhbGwKICAgICAvLyBvdGhlciBw
b2xpY2llcyBhbmQgdGhlIHJlcXVlc3QgbWF5IGVuZCB1cCBnZXR0aW5nIGJsb2NrZWQgb24gTmV0
d29ya1Byb2Nlc3Mgc2lkZS4KQEAgLTEwMyw2ICsxMTAsMTkgQEAgYm9vbCBXZWJDb29raWVKYXI6
OmlzRWxpZ2libGVGb3JDYWNoZShXZQogICAgIHJldHVybiBmcmFtZS5pc01haW5GcmFtZSgpIHx8
IFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eUZvckNvb2tpZXMgfSA9PSByZXNvdXJjZURv
bWFpbjsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoY29uc3QgV2ViRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBjb3JlUGFnZSA9IHBhZ2UtPmNv
cmVQYWdlKCk7CisgICAgaWYgKCFjb3JlUGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBjb3JlUGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsK
K30KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGF1dG8qIHdlYkZyYW1lID0gZG9j
dW1lbnQuZnJhbWUoKSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpkb2N1bWVudC5mcmFtZSgp
KSA6IG51bGxwdHI7CkBAIC0xMjUsNyArMTQ1LDcgQEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29v
a2llcyhXZWJDb3JlOjpEbwogCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRP
TShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3Jr
UHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkK
KyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29r
aWVTdHJpbmc7CkBAIC0xNDgsOSArMTY4LDkgQEAgdm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tp
ZXMoV2ViQ29yZTo6RAogICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRp
ZmllcigpOwogCiAgICAgaWYgKGlzRWxpZ2libGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50
LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkpCi0gICAgICAgIG1fY2FjaGUuc2V0Q29va2ll
c0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKKyAgICAgICAgbV9jYWNoZS5zZXRD
b29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcsIHNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9N
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNvb2tpZVN0cmluZyks
IDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5O
ZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyh3ZWJGcmFtZSkpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNB
ZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBj
b29raWVzKQpAQCAtMTk2LDE1ICsyMTYsMTUgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IAogc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0Fj
Y2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzID0gU2hvdWxkQXNrSVRQOjpObzsKLSNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGF1dG8qIHdlYkZyYW1lID0gZnJhbWVJRCA/
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6IG51bGxwdHI7Cisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoc2hvdWxkQmxvY2tD
b29raWVzKHdlYkZyYW1lLCBmaXJzdFBhcnR5LCB1cmwsIHNob3VsZEFza0lUUEluTmV0d29ya1By
b2Nlc3MpKQogICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKICAgICBTdHJpbmcgY29va2ll
U3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxk
QXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KGNvb2tpZVN0cmlu
Zywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJv
Y2Vzcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAw
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCA/IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZDo6WWVzIDog
V2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpObyB9OwogfQpAQCAtMjIwLDcgKzI0MCw3
IEBAIGJvb2wgV2ViQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IFcKIAogICAgIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCA9IHdlYkZyYW1lID8gbWFrZU9wdGlvbmFsKHdl
YkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogICAgIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQgPSB3ZWJGcmFtZSAmJiB3ZWJGcmFtZS0+cGFnZSgpID8gbWFrZU9wdGlv
bmFsKHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJ
VFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpHZXRSYXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdv
cmtQcm9jZXNzLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFtZSkp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6
OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsNiArNTUwLDcgQEAgV2Vi
UGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIAogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gcGFyYW1ldGVycy51
c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5sb2Fkc1N1YnJlc291cmNlcyA9IHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXM7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNGcm9tTmV0d29yayA9IHBhcmFtZXRlcnMubG9hZHNG
cm9tTmV0d29yazsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5yZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyA9IHBhcmFtZXRlcnMucmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAKICAg
ICBpZiAoIXBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQog
ICAgICAgICBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24o
KS5zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZmFsc2UpOwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjYxODkyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMjAtMDUtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBBZGQgU1BJIHRvIHVuYmxvY2sgdGhpcmQgcGFydHkgY29va2llcyBmcm9t
IFdLV2ViVmlld3Mgd2l0aCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR1cm5lZCBvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMDU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MDU5NTUzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUbyBtYWtlIHRlc3RzIGVhc2llciB0byByZWFkIGFuZCB3cml0
ZSwgSSBtYWRlIENvbm5lY3Rpb246OnNlbmQgYW5kIENvbm5lY3Rpb246OnJlY2VpdmUsIHdoaWNo
IGFzc3VtZSBubyBuZXR3b3JrIGVycm9ycy4KKyAgICAgICAgVGhpcyBpcyB0cnVlIHdoZW4gZG9p
bmcgbG9jYWwgdGVzdGluZyBpbiBBUEkgdGVzdHMuICBXZSB3ZXJlIGFscmVhZHkgYXNzdW1pbmcg
bm8gbmV0d29yayBlcnJvcnMuCisgICAgICAgIEkgYWxzbyBhZGQgX3Rlc3Rfd2FpdEZvckFsZXJ0
IHRvIG1ha2UgdGVzdHMgbGVzcyB2ZXJib3NlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b3h5Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQU2VydmVy
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRhdGFGcm9tU3RyaW5nKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Om51bGxUZXJtaW5hdGVkUmVxdWVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkNvbm5lY3Rpb246OnJlY2VpdmUgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbjo6c2VuZCBjb25zdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
VUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdh
dGUubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdKToKKwogMjAy
MC0wNS0xOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSBTeW5jIGpoYnVpbGQgdG8gZmxhdHBhawpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCShyZXZpc2lvbiAyNjE4
ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcyLDQxICsxMTcyLDMwIEBAIFN0cmluZyBsb25nU3RyaW5n
KExDaGFyIGMpCiBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiB7CiAgICAgdXNpbmcgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEk7Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3Vu
dCA9IDBdKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICBIVFRQU2Vy
dmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBj
YXNlIDE6Ci0gICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5l
Y3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbildKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBu
d19jb250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sLCBud19lcnJvcl90IGVycm9yKSB7Ci0g
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGVudCk7Ci0gICAgICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGVycm9yKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBkYXRhRnJvbVN0
cmluZyhtYWtlU3RyaW5nKAorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0
aW9uXShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZCht
YWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKICAg
ICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgogICAgICAgICAgICAgICAgICAgICAi
Q29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQt
RGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCi0g
ICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7Ci0gICAg
ICAgICAgICAgICAgbndfY29ubmVjdGlvbl9zZW5kKGNvbm5lY3Rpb24uZ2V0KCksIGRhdGEuZ2V0
KCksIGNvbnRleHQsIGZhbHNlLCBeKG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFlcnJvcik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9
KS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPign
YScpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUo
Y29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtl
QmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbildKGRpc3BhdGNoX2Rh
dGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sLCBud19lcnJv
cl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGVudCk7Ci0gICAg
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGVycm9yKTsKLQotICAgICAgICAgICAgICAgIGF1dG8g
cmVxdWVzdCA9IG51bGxUZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAgICAgICAgIGNv
bm5lY3Rpb24ucmVjZWl2ZShbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewog
ICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdl
OiBieXRlcz01MDAwLVxyXG4iKSk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBkYXRh
RnJvbVN0cmluZyhtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZCht
YWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29u
dGVudFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKICAgICAgICAg
ICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiA1MDAwXHJcbiIKICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCi0gICAgICAgICAg
ICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYicpKSk7Ci0gICAgICAgICAgICAg
ICAgbndfY29ubmVjdGlvbl9zZW5kKGNvbm5lY3Rpb24uZ2V0KCksIGRhdGEuZ2V0KCksIGNvbnRl
eHQsIHRydWUsIF4obndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIWVycm9yKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pLmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdiJykKKyAgICAg
ICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3Jr
UHJvY2Vzcy5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQsMTcg
KzU0LDE1IEBAIFRFU1QoV2ViS2l0LCBIVFRQUmVmZXJlcikKICAgICBhdXRvIGNoZWNrUmVmZXJl
ciA9IFtdIChOU1VSTCAqYmFzZVVSTCwgY29uc3QgY2hhciogZXhwZWN0ZWRSZWZlcmVyKSB7CiAg
ICAgICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogICAgICAgICBib29sIGRvbmUg
PSBmYWxzZTsKLSAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2RvbmUgPSAmZG9uZSwgZXhwZWN0
ZWRSZWZlcmVyXSAobndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIG53
X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25u
ZWN0aW9uKSwgZG9uZSwgZXhwZWN0ZWRSZWZlcmVyXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwg
bndfY29udGVudF9jb250ZXh0X3QsIGJvb2wsIG53X2Vycm9yX3QpIHsKLSAgICAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAgICAgICBhdXRvIHJlcXVlc3QgPSBu
dWxsVGVybWluYXRlZFJlcXVlc3QoY29udGVudCk7CisgICAgICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KFsmXSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJl
Y2VpdmUoW2Nvbm5lY3Rpb24sIGV4cGVjdGVkUmVmZXJlciwgJmRvbmVdIChWZWN0b3I8Y2hhcj4m
JiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUmVmZXJlcikgewogICAg
ICAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkSGVhZGVyRmllbGQgPSBtYWtlU3RyaW5nKCJS
ZWZlcmVyOiAiLCBleHBlY3RlZFJlZmVyZXIsICJcclxuIik7CiAgICAgICAgICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgZXhwZWN0ZWRIZWFkZXJGaWVsZC51
dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJSZWZlcmVyOiIpKTsKLSAg
ICAgICAgICAgICAgICAqZG9uZSA9IHRydWU7Ci0gICAgICAgICAgICB9KS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAg
ICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAgICAgICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8Ym9k
eSBvbmxvYWQ9J2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZm9ybUlEXCIpLnN1Ym1pdCgpJz48
Zm9ybSBpZD0nZm9ybUlEJyBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0naHR0cDovLzEyNy4wLjAuMTol
ZC8nPjwvZm9ybT48L2JvZHk+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpiYXNlVVJMXTsKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQko
cmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDE4IEBACiAKICNpZiBIQVZF
KFNTTCkKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgorI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZp
ZXcuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKIEBpbnRlcmZhY2UgUHJveHlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxl
Z2F0ZSwgV0tVSURlbGVnYXRlPgogLSAoTlNTdHJpbmcgKil3YWl0Rm9yQWxlcnQ7CkBAIC0xNzcs
MyArMTgyLDk3IEBAIFRFU1QoV2ViS2l0LCBTZWN1cmVQcm94eUNvbm5lY3Rpb24pCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKFNTTCkKKworI2lmIEhBVkUo
TkVUV09SS19GUkFNRVdPUkspCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChX
ZWJLaXQsIFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQoreworICAgIGF1dG8gcnVuVGVz
dCA9IFtdIChib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSB7CisgICAgICAgIEhU
VFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCByZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ10gKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAg
ICArK2Nvbm5lY3Rpb25Db3VudDsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZShbY29u
bmVjdGlvbiwgY29ubmVjdGlvbkNvdW50LCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZ10g
KFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVwbHk7
CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYm9keSA9CisgICAgICAgICAgICAgICAgIjxz
Y3JpcHQ+IgorICAgICAgICAgICAgICAgICAgICAiZmV0Y2goIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIidodHRwOi8vd2Via2l0Lm9yZy9wYXRoMycsIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIntjcmVkZW50aWFsczonaW5jbHVkZSd9IgorICAgICAgICAgICAgICAgICAgICAiKS50aGVu
KCgpPT57IgorICAgICAgICAgICAgICAgICAgICAgICAgImFsZXJ0KCdmZXRjaGVkJykiCisgICAg
ICAgICAgICAgICAgICAgICJ9KS5jYXRjaCgoZSk9PnsiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiYWxlcnQoZSkiCisgICAgICAgICAgICAgICAgICAgICJ9KSIKKyAgICAgICAgICAgICAgICAi
PC9zY3JpcHQ+IjsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbm5lY3Rpb25Db3VudCkgewor
ICAgICAgICAgICAgICAgIGNhc2UgMTogeworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDovL3dlYmtpdC5vcmcvcGF0aDEgSFRU
UC8xLjFcclxuIikpOworICAgICAgICAgICAgICAgICAgICByZXBseSA9IG1ha2VTdHJpbmcoCisg
ICAgICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogIiwgc3RybGVuKGJvZHkpLCAiXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJTZXQtQ29va2llOiBhPWJcclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJcclxuIiwgYm9keQorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAzOiB7
CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwg
IkdFVCBodHRwOi8vZXhhbXBsZS5jb20vcGF0aDIgSFRUUC8xLjFcclxuIikpOworICAgICAgICAg
ICAgICAgICAgICByZXBseSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAi
SFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LVR5
cGU6IHRleHQvaHRtbFxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5n
dGg6ICIsIHN0cmxlbihib2R5KSwgIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29u
bmVjdGlvbjogY2xvc2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBib2R5
CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAg
Y2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvbkNvdW50ID09IDIgfHwg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJDb29raWU6IGE9YlxyXG4iKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9G
QUxTRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJDb29raWU6IGE9YlxyXG4iKSk7CisgICAgICAg
ICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkdFVCBodHRw
Oi8vd2Via2l0Lm9yZy9wYXRoMyBIVFRQLzEuMVxyXG4iKSk7CisgICAgICAgICAgICAgICAgICAg
IHJlcGx5ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46IGh0dHA6Ly9leGFt
cGxlLmNvbVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctQ3JlZGVudGlhbHM6IHRydWVcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5l
Y3Rpb246IGNsb3NlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJcclxuIjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlcGx5KSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXROb25Q
ZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0pOworICAgICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNl
dFByb3h5Q29uZmlndXJhdGlvbjpAeworICAgICAgICAgICAgKE5TU3RyaW5nICopa0NGU3RyZWFt
UHJvcGVydHlIVFRQUHJveHlIb3N0OiBAIjEyNy4wLjAuMSIsCisgICAgICAgICAgICAoTlNTdHJp
bmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0eUhUVFBQcm94eVBvcnQ6IEAoc2VydmVyLnBvcnQoKSkKKyAg
ICAgICAgfV07CisgICAgICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0QWxsb3dzU2VydmVyUHJl
Y29ubmVjdDpOT107CisgICAgICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICAgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQ6WUVTXTsKKyAgICAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgICAgIFt2aWV3Q29uZmlndXJhdGlv
biBfc2V0UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6cmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmddOworICAgICAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTpkYXRhU3RvcmUuZ2V0KCldOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNv
bmZpZ3VyYXRpb246dmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvcGF0aDEiXV1dOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQiKTsKKworICAgICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgyIl1dXTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIik7
CisgICAgfTsKKyAgICBydW5UZXN0KHRydWUpOworICAgIHJ1blRlc3QoZmFsc2UpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJB
TUVXT1JLKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlz
aW9uIDI2MTg4NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTUgQEAKICNpZiBIQVZFKE5FVFdPUktfRlJBTUVX
T1JLKQogCiAjaW1wb3J0IDxOZXR3b3JrL05ldHdvcmsuaD4KKyNpbXBvcnQgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
TWFwLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAorY2xhc3MgQ29ubmVjdGlvbjsKKwogY2xhc3MgSFRUUFNlcnZlciB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IEhUVFBSZXNwb25zZTsKQEAgLTQ0LDEwICs0NywxMCBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQ2VydGlmaWNhdGVWZXJpZmllciA9IEZ1bmN0aW9uPHZvaWQoc2VjX3By
b3RvY29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBs
ZXRlX3QpPjsKIAogICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFp
cjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwLCBDZXJ0
aWZpY2F0ZVZlcmlmaWVyJiYgPSBudWxscHRyKTsKLSAgICBIVFRQU2VydmVyKEZ1bmN0aW9uPHZv
aWQobndfY29ubmVjdGlvbl90KT4mJiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CisgICAg
SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQcm90b2NvbCA9IFByb3Rv
Y29sOjpIdHRwKTsKICAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBjb25z
dDsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25zdDsKKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QoY29uc3QgU3RyaW5nJiBwYXRoID0gIi8iKSBjb25zdDsKICAgICBzaXplX3QgdG90
YWxSZXF1ZXN0cygpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNTksOCArNjIsMjMgQEAgcHJpdmF0
ZToKICAgICBQcm90b2NvbCBtX3Byb3RvY29sIHsgUHJvdG9jb2w6Okh0dHAgfTsKIH07CiAKLVJl
dGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRhdGFGcm9tU3RyaW5nKFN0cmluZyYmKTsKLVZlY3Rv
cjxjaGFyPiBudWxsVGVybWluYXRlZFJlcXVlc3QoZGlzcGF0Y2hfZGF0YV90KTsKK2NsYXNzIENv
bm5lY3Rpb24geworcHVibGljOgorICAgIENvbm5lY3Rpb24oY29uc3QgQ29ubmVjdGlvbiYpID0g
ZGVmYXVsdDsKKyAgICBDb25uZWN0aW9uKENvbm5lY3Rpb24mJikgPSBkZWZhdWx0OworICAgIENv
bm5lY3Rpb24mIG9wZXJhdG9yPShjb25zdCBDb25uZWN0aW9uJikgPSBkZWZhdWx0OworICAgIENv
bm5lY3Rpb24mIG9wZXJhdG9yPShDb25uZWN0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHZvaWQg
c2VuZChTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikgY29u
c3Q7CisgICAgdm9pZCByZWNlaXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGNoYXI+
JiYpPiYmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgSFRUUFNlcnZlcjsK
KyAgICBDb25uZWN0aW9uKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQorICAgICAgICA6IG1f
Y29ubmVjdGlvbihjb25uZWN0aW9uKSB7IH0KKworICAgIFJldGFpblB0cjxud19jb25uZWN0aW9u
X3Q+IG1fY29ubmVjdGlvbjsKK307CiAKIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2Ug
ewogICAgIGVudW0gY2xhc3MgVGVybWluYXRlQ29ubmVjdGlvbiB7IE5vLCBZZXMgfTsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI2MTg4NikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTAwLDcgKzEwMCw3IEBAICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCiAgICAgc3Rh
cnRMaXN0ZW5pbmcobV9saXN0ZW5lci5nZXQoKSk7CiB9CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2
ZXIoRnVuY3Rpb248dm9pZChud19jb25uZWN0aW9uX3QpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBQ
cm90b2NvbCBwcm90b2NvbCkKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChD
b25uZWN0aW9uKT4mJiBjb25uZWN0aW9uSGFuZGxlciwgUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAg
OiBtX2xpc3RlbmVyKGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKGxpc3RlbmVyUGFyYW1ldGVy
cyhwcm90b2NvbCwgbnVsbHB0cikuZ2V0KCkpKSkKICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wp
CiB7CkBAIC0xMDgsNyArMTA4LDcgQEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKICAgICBu
d19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBt
YWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShjb25uZWN0aW9uSGFuZGxl
cildIChud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgewogICAgICAgICBud19jb25uZWN0aW9u
X3NldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAg
ICAgbndfY29ubmVjdGlvbl9zdGFydChjb25uZWN0aW9uKTsKLSAgICAgICAgY29ubmVjdGlvbkhh
bmRsZXIoY29ubmVjdGlvbik7CisgICAgICAgIGNvbm5lY3Rpb25IYW5kbGVyKENvbm5lY3Rpb24o
Y29ubmVjdGlvbikpOwogICAgIH0pLmdldCgpKTsKICAgICBzdGFydExpc3RlbmluZyhtX2xpc3Rl
bmVyLmdldCgpKTsKIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgU3RyaW5nIHN0YXR1c1Rl
eHQodW5zaWduZWQgc3RhdHVzCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmV0YWluUHRyPGRpc3Bh
dGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYgcykKK3N0YXRpYyBSZXRhaW5QdHI8
ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVN0cmluZyhTdHJpbmcmJiBzKQogewogICAgIGF1dG8g
aW1wbCA9IHMucmVsZWFzZUltcGwoKTsKICAgICBBU1NFUlQoaW1wbC0+aXM4Qml0KCkpOwpAQCAt
MTQ1LDcgKzE0NSw3IEBAIFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRhdGFGcm9tU3RyaW4K
ICAgICB9KSk7CiB9CiAKLVZlY3RvcjxjaGFyPiBudWxsVGVybWluYXRlZFJlcXVlc3QoZGlzcGF0
Y2hfZGF0YV90IGNvbnRlbnQpCitzdGF0aWMgVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVx
dWVzdChkaXNwYXRjaF9kYXRhX3QgY29udGVudCkKIHsKICAgICBfX2Jsb2NrIFZlY3RvcjxjaGFy
PiByZXF1ZXN0OwogICAgIGRpc3BhdGNoX2RhdGFfYXBwbHkoY29udGVudCwgXmJvb2woZGlzcGF0
Y2hfZGF0YV90LCBzaXplX3QsIGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpIHsKQEAg
LTIzMiwxOSArMjMyLDM3IEBAIHVpbnQxNl90IEhUVFBTZXJ2ZXI6OnBvcnQoKSBjb25zdAogICAg
IHJldHVybiBud19saXN0ZW5lcl9nZXRfcG9ydChtX2xpc3RlbmVyLmdldCgpKTsKIH0KIAotTlNV
UkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KCkgY29uc3QKK05TVVJMUmVxdWVzdCAqSFRU
UFNlcnZlcjo6cmVxdWVzdChjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7CiAgICAgTlNTdHJp
bmcgKmZvcm1hdDsKICAgICBzd2l0Y2ggKG1fcHJvdG9jb2wpIHsKICAgICBjYXNlIFByb3RvY29s
OjpIdHRwOgotICAgICAgICBmb3JtYXQgPSBAImh0dHA6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICAg
ICAgZm9ybWF0ID0gQCJodHRwOi8vMTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFByb3RvY29sOjpIdHRwczoKICAgICBjYXNlIFByb3RvY29sOjpIdHRwc1dpdGhMZWdh
Y3lUTFM6Ci0gICAgICAgIGZvcm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIjsKKyAgICAg
ICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZCVzIjsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgcG9ydCgpXV1dOwor
ICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgcG9ydCgpLCBwYXRoLnV0Zjgo
KS5kYXRhKCldXV07Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxjaGFyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sK
KyAgICBud19jb25uZWN0aW9uX3JlY2VpdmUobV9jb25uZWN0aW9uLmdldCgpLCAxLCBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRl
bnQsIG53X2NvbnRlbnRfY29udGV4dF90LCBib29sLCBud19lcnJvcl90IGVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgQVNTRVJUKGNvbnRlbnQpOworICAgICAgICBBU1NFUlQoIWVycm9yKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpKTsK
KyAgICB9KS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChTdHJpbmcmJiBtZXNz
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
Cit7CisgICAgbndfY29ubmVjdGlvbl9zZW5kKG1fY29ubmVjdGlvbi5nZXQoKSwgZGF0YUZyb21T
dHJpbmcoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCksIE5XX0NPTk5FQ1RJT05fREVGQVVMVF9NRVNT
QUdFX0NPTlRFWFQsIHRydWUsIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0obndfZXJyb3JfdCBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pLmdldCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0VUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFVJRGVsZWdhdGUuaAkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzICszMiw3IEBA
CiAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVydDsKIAogQGVuZAorCitAaW50ZXJmYWNlIFdLV2Vi
VmlldyAoVGVzdFVJRGVsZWdhdGVFeHRyYXMpCistIChOU1N0cmluZyAqKV90ZXN0X3dhaXRGb3JB
bGVydDsKK0BlbmQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdh
dGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxl
Z2F0ZS5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0VUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksMyArNTksMTcgQEAgLSAoTlNT
dHJpbmcgKil3YWl0Rm9yQWxlcnQKIH0KIAogQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJW
aWV3IChUZXN0VUlEZWxlZ2F0ZUV4dHJhcykKKworLSAoTlNTdHJpbmcgKilfdGVzdF93YWl0Rm9y
QWxlcnQKK3sKKyAgICBFWFBFQ1RfRkFMU0Uoc2VsZi5VSURlbGVnYXRlKTsKKyAgICBhdXRvIHVp
RGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBzZWxmLlVJRGVs
ZWdhdGUgPSB1aURlbGVnYXRlLmdldCgpOworICAgIE5TU3RyaW5nICphbGVydCA9IFt1aURlbGVn
YXRlIHdhaXRGb3JBbGVydF07CisgICAgc2VsZi5VSURlbGVnYXRlID0gbmlsOworICAgIHJldHVy
biBhbGVydDsKK30KKworQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399877</attachid>
            <date>2020-05-20 12:51:47 -0700</date>
            <delta_ts>2020-05-20 15:38:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200520125146.patch</filename>
            <type>text/plain</type>
            <size>103027</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxvd0FsbFRo
aXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0aXZlcyBvbmx5IHNob3du
IGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5zZXJ0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNhbWVTaXRlSW5mby5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIK
QEAgLTQxLDYgKzQyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQor
eworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICByZXR1cm4g
cGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKFJlZjxTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikp
KTsKQEAgLTgwLDcgKzg4LDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llcyhEb2N1bWVudCYg
ZG9jdQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwogICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBy
ZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKGRvY3VtZW50KSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIApAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVzKERv
Y3VtZW50JiBkb2MKICAgICB9CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgc2Vzc2lvbi0+c2V0Q29v
a2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZv
KGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6WWVzLCBjb29r
aWVTdHJpbmcpOworICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZVN0cmluZywgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcoZG9jdW1lbnQpKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtMTMxLDcgKzEzOSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29r
aWVzRW5hYmxlZChjb25zdCBEb2MKIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92
aWRlci0+c3RvcmFnZVNlc3Npb24oKSkgewotICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0
LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1
cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQogCkBAIC0xNjQsNyArMTcyLDcgQEAgYm9v
bCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdQogICAgIH0KIAogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigp
KQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpOworICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGRvY3VtZW50KSwgY29va2llcyk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCiAgICAgLCBtX2xv
YWRzU3VicmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQogICAg
ICwgbV9sb2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsp
CisgICAgLCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0
bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29u
c3QgeyByZXR1cm4gbV9sb2Fkc0Zyb21OZXR3b3JrOyB9CisgICAgYm9vbCBzaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc7IH0KIAogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29u
OjpMb3dQb3dlck1vZGUpOyB9CiAgICAgYm9vbCBjYW5VcGRhdGVUaHJvdHRsaW5nUmVhc29uKFRo
cm90dGxpbmdSZWFzb24gcmVhc29uKSBjb25zdCB7IHJldHVybiAhbV90aHJvdHRsaW5nUmVhc29u
c092ZXJyaWRlbkZvclRlc3RpbmcuY29udGFpbnMocmVhc29uKTsgfQpAQCAtMTA0NSw2ICsxMDQ2
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmlyZUV2ZW50cyB7IHRydWUgfTsKICAg
ICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJv
bU5ldHdvcmsgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2Ny
aXB0cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RE9NV3JhcHBlcldvcmxk
PiwgVW5pcXVlUmVmPFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0
aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGxv
YWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yayB7IHRy
dWUgfTsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsg
dHJ1ZSB9OworICAgIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJv
bAogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVx
dWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDog
SW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CisgICAg
cmV0dXJuIHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVz
dC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJl
Q29va2llczo6Tm8sIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmlyc3Q7CiB9CiAKIHN0YXRp
YyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llSmFyKiBj
b29raWVKYXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE2
ICsxMDQsMTYgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0hhZFVzZXJJbgogICAg
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBpZiAoIW1faXNS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgcmV0dXJuIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCks
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogICAg
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKKyAgICBp
ZiAocmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIGlmICghbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkRXhlbXB0CiAKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCisgICAgaWYg
KG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSkpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3koKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwpAQCAt
MTYwLDExICsxNjAsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGdldEFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBn
ZXRDb29raWVzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzQ29va2ll
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQ
LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0
b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVT
dG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFApIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkm
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGRvbUNvb2tpZXNG
b3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CkBAIC0xNzcsOCArMTc3LDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgYm9vbCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tp
ZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERv
Tm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBD
b29raWVTdG9yYWdlUmVmKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChD
RkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OwotICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JV
UkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNo
b3VsZEFza0lUUCkgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICB2b2lkIHNldEhU
VFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMs
IE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNv
bnN0OwogICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0hUVFBDb29raWUgKikgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW8KICAgICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZQogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTI2Myw3ICsyNjMsNyBA
QCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlCiAKIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxk
UHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUlu
Zm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRl
ckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1l
U2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQs
IGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UpOwogfQogCiBIVFRQQ29va2llQWNjZXB0
UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3QK
QEAgLTI4MCw3ICsyODAsNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdl
U2VzCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCwgYm9vbCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsMTAgKzM0Miwx
MCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJu
IGZpbHRlcmVkQ29va2llczsKIH0KIAotTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApIGNvbnN0CitOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hv
dWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJh
bWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVz
ICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC0zNTUsMTMgKzM1NSwxMyBAQCBOU0Fy
cmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGCiAgICAgcmV0dXJuIGh0dHBDb29r
aWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVI
VFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9
IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVS
TChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBpZiAoIVtjb29raWVz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBh
IG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBj
cmVhdGUgYmVsb3cuCiAKQEAgLTQxMSwyOSArNDExLDI5IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFs
bEhUVFBDb29raWVzKENGSFRUUEMKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29v
a2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBP
bmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7
CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6WWVzLCBmYWxzZSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0ciwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChz
aG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09
IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAg
ICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTQ5MSwxMiAr
NDkxLDEyIEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXMKICAgICBy
ZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7
CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICBy
YXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw3ICs5NSw3IEBAIENvb2tpZUphckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2sK
ICAgICByZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIGNvb2tp
ZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRC
OjpTb3VyY2U6OlNjcmlwdCk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAsIGJvb2wpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRl
ciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1
cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZh
bHNlIH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhh
c0Nvb2tpZXMoYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBTaG91bGRBc2tJVFAsIGJvb2wsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAogewogICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOwogICAgIGlmICghY29va2llcykKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
V2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3Rz
IGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1
cmwsIHRydWUpLCBmYWxzZSB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2UKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVz
KTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQ
cm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmll
bGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5w
YWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UDo6WWVzLCBmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5ncykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUMKICAgICAgICAgYWRkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycyhyZXF1ZXN0KTsKIAogICAgICAg
ICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVz
OjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1
ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUDo6WWVzKS5maXJzdDsKKyAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRl
ckZpZWxkID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmly
c3Q7CiAgICAgICAgIGlmICghY29va2llSGVhZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29v
a2llSGVhZGVyRmllbGQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhp
c3RzKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBp
ZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lU
UCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAg
ICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC00NzMs
MTIgKzQ3MywxMiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9j
a0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91
bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0
UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CkBAIC01MTUsMTAgKzUxNSwxMCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
UmF3Q29va2llCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGJvb2wgZm9ySFRUUEhlYWRlciwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Np
b24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNz
aW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkp
CisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNo
b3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4geyB7IH0sIGZhbHNlIH07
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTU3MiwyMCArNTcyLDIwIEBA
IHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm8KICAgICByZXR1cm4geyBT
dHJpbmc6OmZyb21VVEY4KGNvb2tpZUhlYWRlci5nZXQoKSksIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVz
Rm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQs
IHBhZ2VJRCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0
ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91
bGRBc2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAotc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8g
U2VjdXJlIGNvb2tpZXMgd2lsbCBzdGlsbCBvbmx5IGJlIGluY2x1ZGVkIGlmIHVybCdzIHByb3Rv
Y29sIGlzIGh0dHBzLgotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQ
YXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgdHJ1ZSwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCB0
cnVlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQ
YXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJs
LCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFk
ZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7Cisg
ICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHku
Zmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJv
eHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlE
LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olll
cywgZmFsc2UpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVT
dG9yZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAyMC0wNS0yMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3cyB3aXRoIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYw
NTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgdmFsdWUgbWFrZXMgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2NrQ29va2llcygpIG5v
dCBkbyBhbnl0aGluZyBmb3IgY2VydGFpbiBXS1dlYlZpZXdzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6dW5ibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0QWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjphbGxvd0FsbFRoaXJkUGFydHlDb29raWVzIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FsbG93QWxsVGhpcmRQYXJ0
eUNvb2tpZXNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0QWxsb3dB
bGxUaGlyZFBhcnR5Q29va2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjphZGRQYXJhbWV0ZXJzU2hhcmVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisKIDIwMjAtMDUtMTkgIFBlciBBcm5lIFZv
bGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEZpeCBtZXNzYWdlIGZp
bHRlciBzYW5kYm94IHZpb2xhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsMTIgKzYy
MywxMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpCiAgICAgICAg
IG1fc2NoZW1lUmVnaXN0cnktPnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChXVEZNb3Zl
KHNjaGVtZSkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtT
dG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFs
c2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9y
RE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIGF1dG8gcmVzdWx0ID0gbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC02MzgsMTIgKzYzOCwxMiBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29rCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3Jr
U3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKLSAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgY29va2llU3RyaW5nKTsKKyAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgY29va2llU3RyaW5nLCByZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQpAQCAtNjUyLDIyICs2NTIsMjIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2V0QwogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywg
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7
CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIGZhbHNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3Vs
ZEFza0lUUCk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lv
bikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gcmVzdWx0OwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0UmF3
Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFAsIHJlc3VsdCk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdD
b29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNo
b3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIHJlc3VsdCk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDgsMTAgKzIwOCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbmc+JiYgc2NoZW1lcyk7CiAKLSAgICB2b2lkIGNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVT
dHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiwgYm9vbCBy
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIHNldFJhd0Nvb2tpZShjb25zdCBXZWJDb3Jl
OjpDb29raWUmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDEwICszNSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzCiAgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25hbDxX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgZW51bTpib29sIE9wdGlvbmFsPFdl
YktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiAKLSAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29s
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nKQotICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBD
b29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29v
a2llU3RyaW5nLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIEdldFJh
d0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9v
bCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3lu
Y2hyb25vdXMKICAgICBTZXRSYXdDb29raWUoc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUp
CiAgICAgRGVsZXRlQ29va2llKFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogICAgIERvbUNv
b2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAg
UmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcgogewogICAgIEFTU0VSVCgh
cGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24s
IGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFt
ZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJzLmlz
TWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25G
b3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIC8vIEZJWE1FOiBKdXN0IHBhc3Mg
cGFyYW1ldGVycyB0byB0aGUgTmV0d29ya0RhdGFUYXNrQ29jb2EgY29uc3RydWN0b3IuCisgICAg
cmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJh
bWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdl
SUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVu
dFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBh
cmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZp
Z2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBw
YXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgcGFyYW1ldGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zyk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVy
cy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdh
dGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm8geyBm
YWxzZSB9OwogICAgIGJvb2wgaXNNYWluRnJhbWVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAgICBi
b29sIGlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lIHsgZmFsc2UgfTsKKyAgICBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGJsb2JGaWxlUmVmZXJlbmNl
czsKICAgICBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSB7IFByZWNvbm5lY3RP
bmx5OjpObyB9OwogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwogICAgIGVuY29kZXIgPDwgbmVl
ZHNDZXJ0aWZpY2F0ZUluZm87CiAgICAgZW5jb2RlciA8PCBpc01haW5GcmFtZU5hdmlnYXRpb247
CiAgICAgZW5jb2RlciA8PCBpc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZTsKKyAg
ICBlbmNvZGVyIDw8IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogICAgIGVuY29kZXIg
PDwgbWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJv
b2w+KHNvdXJjZU9yaWdpbik7CkBAIC0xOTgsNiArMTk5LDggQEAgT3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM+IAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11
bUJ1ZmZlcmluZ1RpbWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyAr
MTMyNiw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwKICAgICBB
U1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihj
b25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXM7Ci0gICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNl
c3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBTaG91bGRBc2tJVFA6OlllcywgY29va2llcykpCisgICAgaWYgKCFuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UsIGNvb2tpZXMpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGVzY2FwZWRVUkwgPSBlc2NhcGVGb3JKU09OKHVy
bC5zdHJpbmcoKSk7CkBAIC0xMzg2LDcgKzEzODYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0
aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCi0g
ICAgaWYgKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChuZXR3b3JrU3RvcmFnZVNlc3Npb24u
c2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBmYWxz
ZSkpCiAgICAgICAgIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBsYWJl
bCwgbG9nZ2VkT2JqZWN0LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCByZWZlcnJlciwgZnJhbWVJRCwgcGFnZUlELCBpZGVudGlmaWVyKTsKICAg
ICBlbHNlCiAgICAgICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoY29ubmVjdGlvbiwg
bGFiZWwsIGxvZ2dlZE9iamVjdCwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgcmVmZXJyZXIsIGZyYW1lSUQsIHBhZ2VJRCwgaWRlbnRpZmllcik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBO
ZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25p
ZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikK
KyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5n
UG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3Qs
IGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRT
bmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JB
bnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2Nv
YShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNv
bm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zv
ck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tl
ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpKTsKICAgICB9CiAKICAgICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsKQEAgLTczLDEx
ICs3MywxMiBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKKyAgICBib29sIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzsgfQogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29y
a1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdv
cmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRT
bmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZl
cmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwpAQCAtMTAzLDYgKzEwNCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IGZh
bHNlIH07CiB9OwogCiBXZWJDb3JlOjpDcmVkZW50aWFsIHNlcnZlclRydXN0Q3JlZGVudGlhbChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTks
MTMgKzE5OSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0ZUlzQWx3YXlzT25Mb2dnCiAg
ICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7
CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNv
cmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNv
bm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKQorTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNs
aWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRp
YWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJj
ZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4g
bmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1
ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmln
YXRpb24pCiAgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVz
dFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdl
SUQocGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFt
ZShkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQogICAgICwg
bV9pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoY29tcHV0ZUlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZChzZXNzaW9uKSkKKyAgICAsIG1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcocmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgaWYgKG1fc2NoZWR1bGVkRmFpbHVyZVR5
cGUgIT0gTm9GYWlsdXJlKQogICAgICAgICByZXR1cm47CkBAIC0yNDAsNyArMjQxLDcgQEAgTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvYwogICAgIHNob3VsZEJsb2NrQ29v
a2llcyA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAg
aWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpCi0gICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMg
PSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFt
ZUlELCBwYWdlSUQpOworICAgICAgICAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICB9CiAjZW5kaWYKICAgICBy
ZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CkBAIC00MDMs
NyArNDA0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFtX2hhc0JlZW5TZXRU
b1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UpIHsKICAgICAgICAgaWYgKG1fc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJh
bFN0YXRlbGVzcwotICAgICAgICAgICAgfHwgKG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkgJiYgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2hvdWxkQmxvY2tD
b29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQpKSkKKyAgICAgICAgICAgIHx8ICht
X3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1f
cGFnZUlELCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkpCiAgICAgICAgICAgICBi
bG9ja0Nvb2tpZXMoKTsKICAgICB9IGVsc2UgaWYgKG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
IT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcyAm
JiBuZWVkc0ZpcnN0UGFydHlDb29raWVCbG9ja2luZ0xhdGNoTW9kZVF1aXJrKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS51cmwo
KSkpCiAgICAgICAgIHVuYmxvY2tDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShy
ZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNiw3ICs1MzYsNyBAQCAt
ICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wgc2hv
dWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5l
dHdvcmtTZXNzaW9uKCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVX
YXNVcGdyYWRlZER1ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3
b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5z
aG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5l
dHdvcmtEYXRhVGFzay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9
IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29j
b2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9u
SUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1l
SUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRJ
Z25vcmVIU1RTKSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVlc3Qo
cmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUgaXNF
cXVhbFRvU3RyaW5nOkAiaHR0cCJdKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNU
UyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9u
KCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVXYXNVcGdyYWRlZER1
ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3b3JrUHJvY2Vzcygp
LnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5zaG91bGRCbG9ja0Nv
b2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5ldHdvcmtEYXRhVGFz
ay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1Vw
Z3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQ
cm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3Vs
ZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29y
a0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVIU1RTKSB7
CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5n
OkAiaHR0cCJdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
U291cDo6Y3JlYXRlUmVxdWVzdCgKICAgICBib29sIHNob3VsZEJsb2NrQ29va2llcyA9IHdhc0Js
b2NraW5nQ29va2llcyA9PSBXYXNCbG9ja2luZ0Nvb2tpZXM6OlllcyA/IHRydWUgOiBtX3N0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5ID09IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxT
dGF0ZWxlc3M7CiAgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkpCi0gICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPnNob3VsZEJsb2NrQ29va2llcyhtX2N1cnJlbnRSZXF1ZXN0LCBtX2ZyYW1lSUQsIG1f
cGFnZUlEKTsKKyAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKG1fY3VycmVudFJlcXVlc3QsIG1fZnJhbWVJRCwg
bV9wYWdlSUQsIGZhbHNlKTsKICAgICB9CiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykKICAg
ICAgICAgc291cF9tZXNzYWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2FnZS5nZXQoKSwgU09V
UF9UWVBFX0NPT0tJRV9KQVIpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSQogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwog
ICAgIGVuY29kZXIgPDwgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOwogICAgIGVuY29k
ZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBlbmNvZGVyIDw8
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGVuY29kZXIgPDwgdGhlbWVOYW1lOwpAQCAtNDc3LDYgKzQ3OCw5IEBAIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnRoZW1lTmFtZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsNyBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91bGRSZW5kZXJDYW52YXNJ
bkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzIHsgZmFsc2UgfTsKICAgICBib29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
eyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyB0aGVtZU5hbWU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2
MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc4NTIsNiArNzg1Miw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
V2ViUGFnZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2VzcyA9IHByZWZlcmVuY2VzKCkucmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJ
UHJvY2VzcygpOwogICAgIHBhcmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWlucyA9IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBwYXJhbWV0
ZXJzLnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpOwogCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIHBhcmFtZXRlcnMudGhlbWVOYW1lID0gcGFnZUNsaWVudCgpLnRoZW1lTmFtZSgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3
IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb24KICNpZiBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgY29weS0+bV9hcHBsaWNhdGlvbk1hbmlmZXN0ID0g
dGhpcy0+bV9hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCisgICAgY29weS0+bV9yZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyA9IHRoaXMtPm1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmc7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVycykK
ICAgICAgICAgY29weS0+bV91cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFs
dWUuY29weVJlZigpKTsKICAgICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MTg4NikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDkgQEAgcHVibGljOgogICAgIGJvb2wgbGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWluczsgfQogICAgIHZvaWQgc2V0TGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWlucyhib29sIGxpbWl0cykgeyBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBC
b3VuZERvbWFpbnMgPSBsaW1pdHM7IH0KIAorICAgIHZvaWQgc2V0UmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcoYm9vbCB2YWx1ZSkgeyBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
ID0gdmFsdWU7IH0KKyAgICBib29sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KCkgY29uc3QgeyByZXR1cm4gbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQorICAg
IAogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nl
c3NQb29sOwpAQCAtMjAyLDYgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRzU3Vi
cmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9
OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2
aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxNiBA
QCAtICh2b2lkKV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOihCT09MCiAgICAgX3BhZ2VDb25m
aWd1cmF0aW9uLT5zZXRJZ25vcmVzQXBwQm91bmREb21haW5zKGlnbm9yZXNBcHBCb3VuZERvbWFp
bnMpOwogfQogCistIChCT09MKV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZworeworICAg
IHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKCk7Cit9CisKKy0gKHZvaWQpX3NldFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
OihCT09MKXJlbGF4Cit7CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyhyZWxheCk7Cit9CisKIC0gKE5TU3RyaW5nICopX3Byb2Nlc3NEaXNw
bGF5TmFtZQogewogICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnByb2Nlc3NEaXNwbGF5
TmFtZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9u
IDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTAgKzEyNSw4IEBA
IHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tXZWJWaWV3Q2EKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldEVkaXRhYmxlSW1hZ2VzRW5hYmxlZDopIEJPT0wgX2VkaXRhYmxl
SW1hZ2VzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikp
OwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VW5kb01hbmFnZXJBUElFbmFibGVk
OikgQk9PTCBfdW5kb01hbmFnZXJBUElFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0V2ViVmll
d0NhdGVnb3J5OikgX1dLV2ViVmlld0NhdGVnb3J5IF93ZWJWaWV3Q2F0ZWdvcnkgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQotLSAodm9pZClf
c2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczooQk9PTClpZ25vcmVzQXBwQm91bmREb21haW5zICBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAo
Qk9PTClfaWdub3Jlc0FwcEJvdW5kRG9tYWlucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOikgQk9PTCBfaWdub3Jlc0FwcEJvdW5kRG9tYWlu
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmc6KSBCT09MIF9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0UHJvY2Vzc0Rpc3BsYXlOYW1lOikgTlNTdHJpbmcgKl9wcm9jZXNz
RGlzcGxheU5hbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjYxODg2KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjgsOCArMjY4LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFBhcmFtZXRl
cnNTaGFyZWQoY29uc3QgRnIKIAogICAgIHBhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVk
ID0gZnJhbWUtPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpOwogCi0gICAgaWYgKGF1
dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBh
Z2UoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSBw
YWdlLT5oYXNSZXNvdXJjZUxvYWRDbGllbnQoKTsKKyAgICAgICAgcGFyYW1ldGVycy5yZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyA9IHBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKCk7CisgICAgfQogCiAgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVudCA9IGZyYW1l
LT5vd25lckVsZW1lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogcGFyZW50RnJhbWUgPSBvd25l
ckVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAJKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTQgKzU3LDE0IEBAIFN0cmluZyBXZWJDb29raWVDYWNo
ZTo6Y29va2llc0ZvckRPTShjb24KICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVz
KQogICAgICAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUp
OwogICAgIH0KLSAgICByZXR1cm4gaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZXNGb3JE
T00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6Tm8pLmZpcnN0OworICAgIHJldHVybiBpbk1l
bW9yeVN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNr
SVRQOjpObywgZmFsc2UpLmZpcnN0OwogfQogCi12b2lkIFdlYkNvb2tpZUNhY2hlOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYkNv
b2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgU3RyaW5n
IGhvc3QgPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKG1faG9zdHNXaXRoSW5NZW1v
cnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKQotICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KCkuc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpObywgY29va2llU3RyaW5nKTsKKyAgICAgICAgaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0
cmluZywgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogCiB2b2lkIFdlYkNvb2tp
ZUNhY2hlOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29v
a2llPiYgY29va2llcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llQ2FjaGUuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N1cHBvcnRlZCgpOwogCiAgICAgU3Ry
aW5nIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyk7Ci0gICAg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKKyAg
ICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJv
b2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogCiAgICAgdm9pZCBjb29raWVzQWRk
ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwog
ICAgIHZvaWQgY29va2llc0RlbGV0ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSwxMSArNjksMTggQEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZy
YW1lKgogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluID09IHJlc291cmNlRG9tYWluKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmZyYW1lTG9hZGVyQ2xp
ZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCkt
Pmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21h
aW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGlm
IChmcmFtZS0+ZnJhbWVMb2FkZXJDbGllbnQoKS0+aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nl
c3MoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+aGFzUGFnZUxldmVsU3Rv
cmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGF1dG8qIGNvcmVQYWdlID0gcGFn
ZS0+Y29yZVBhZ2UoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb3JlUGFnZS0+c2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhlIFdl
YkNvbnRlbnQgcHJvY2VzcyBkb2VzIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZWFs
IHdpdGggb3RoZXIgcG9saWNpZXMgdGhhbiBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpB
bGwgc28gd2UgaGF2ZSB0byBnbyB0byB0aGUgTmV0d29ya1Byb2Nlc3MgZm9yIGFsbAogICAgIC8v
IG90aGVyIHBvbGljaWVzIGFuZCB0aGUgcmVxdWVzdCBtYXkgZW5kIHVwIGdldHRpbmcgYmxvY2tl
ZCBvbiBOZXR3b3JrUHJvY2VzcyBzaWRlLgpAQCAtMTAzLDYgKzExMCwxOSBAQCBib29sIFdlYkNv
b2tpZUphcjo6aXNFbGlnaWJsZUZvckNhY2hlKFdlCiAgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZy
YW1lKCkgfHwgUmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJl
c291cmNlRG9tYWluOwogfQogCitzdGF0aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyhjb25zdCBXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIGNvcmVQYWdlID0g
cGFnZS0+Y29yZVBhZ2UoKTsKKyAgICBpZiAoIWNvcmVQYWdlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGNvcmVQYWdlLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZygpOworfQorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50
LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEyNSw3ICsxNDUsNyBAQCBTdHJpbmcgV2ViQ29va2ll
SmFyOjpjb29raWVzKFdlYkNvcmU6OkRvCiAKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAg
IGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJ
bk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRl
U2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0
dXJuIGNvb2tpZVN0cmluZzsKQEAgLTE0OCw5ICsxNjgsOSBAQCB2b2lkIFdlYkNvb2tpZUphcjo6
c2V0Q29va2llcyhXZWJDb3JlOjpECiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgp
LT5pZGVudGlmaWVyKCk7CiAKICAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwg
ZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKLSAgICAgICAgbV9jYWNoZS5z
ZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworICAgICAgICBtX2Nh
Y2hlLnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZywgc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKTsKIAotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2ll
c0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2ll
U3RyaW5nKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcsIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZUphcjo6
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXMpCkBAIC0xOTYsMTUgKzIxNiwxNSBAQCBib29sIFdlYkNvb2tpZUphcjo6
Y29va2llc0VuYWJsZWQoY29uc3QgCiBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVD
b29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MgPSBTaG91bGRBc2tJVFA6Ok5vOwotI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYXV0byogd2ViRnJhbWUgPSBm
cmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogbnVs
bHB0cjsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzaG91
bGRCbG9ja0Nvb2tpZXMod2ViRnJhbWUsIGZpcnN0UGFydHksIHVybCwgc2hvdWxkQXNrSVRQSW5O
ZXR3b3JrUHJvY2VzcykpCiAgICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAogICAgIFN0cmlu
ZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29v
a2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5l
dHdvcmtQcm9jZXNzLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFt
ZSkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nl
c3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmlu
Zywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2Vk
OjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBAIC0yMjAs
NyArMjQwLDcgQEAgYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgVwogCiAg
ICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBtYWtlT3B0
aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBt
YWtlT3B0aW9uYWwod2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9w
dDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNo
b3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
c2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lU
UEluTmV0d29ya1Byb2Nlc3MsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdl
YkZyYW1lKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw2ICs1NTAs
NyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBwYXJh
bWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291
cmNlczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0gcGFyYW1ldGVy
cy5sb2Fkc0Zyb21OZXR3b3JrOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nID0gcGFyYW1ldGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZzsKIAogICAgIGlmICghcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCiAgICAgICAgIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNp
bmdsZXRvbigpLnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjE4OTIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzNCBAQAorMjAyMC0wNS0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29r
aWVzIGZyb20gV0tXZWJWaWV3cyB3aXRoIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIG1ha2UgdGVzdHMgZWFzaWVyIHRvIHJlYWQg
YW5kIHdyaXRlLCBJIG1hZGUgQ29ubmVjdGlvbjo6c2VuZCBhbmQgQ29ubmVjdGlvbjo6cmVjZWl2
ZSwgd2hpY2ggYXNzdW1lIG5vIG5ldHdvcmsgZXJyb3JzLgorICAgICAgICBUaGlzIGlzIHRydWUg
d2hlbiBkb2luZyBsb2NhbCB0ZXN0aW5nIGluIEFQSSB0ZXN0cy4gIFdlIHdlcmUgYWxyZWFkeSBh
c3N1bWluZyBubyBuZXR3b3JrIGVycm9ycy4KKyAgICAgICAgSSBhbHNvIGFkZCBfdGVzdF93YWl0
Rm9yQWxlcnQgdG8gbWFrZSB0ZXN0cyBsZXNzIHZlcmJvc2UuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5t
bToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJveHkubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhU
VFBTZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGF0YUZyb21TdHJpbmcpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6bnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlcXVlc3QgY29uc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Q29ubmVjdGlvbjo6cmVjZWl2ZSBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RVSURlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0p
OgorCiAyMDIwLTA1LTE5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXUEVdIFN5bmMgamhidWlsZCB0byBmbGF0cGFrCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0JKHJldmlz
aW9uIDI2MTg4NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExNzIsNDEgKzExNzIsMzAgQEAgU3RyaW5nIGxv
bmdTdHJpbmcoTENoYXIgYykKIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKIHsKICAgICB1c2lu
ZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVj
dGlvbkNvdW50ID0gMF0obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIG11dGFibGUgeworICAg
IEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNvbm5l
Y3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAg
ICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0
aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0
cihbY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hfZGF0YV90IGNv
bnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vycm9yX3QgZXJy
b3IpIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAgICAgICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwotICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IGRh
dGFGcm9tU3RyaW5nKG1ha2VTdHJpbmcoCisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmUo
W2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlv
bi5zZW5kKG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tc
clxuIgogICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCiAgICAgICAgICAgICAg
ICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAi
Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwi
XHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykp
KTsKLSAgICAgICAgICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwg
ZGF0YS5nZXQoKSwgY29udGV4dCwgZmFsc2UsIF4obndfZXJyb3JfdCBlcnJvcikgewotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWVycm9yKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIH0pLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5n
PDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25f
cmVjZWl2ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlz
cGF0Y2hfZGF0YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2ws
IG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50
KTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwotCi0gICAgICAgICAgICAg
ICAgYXV0byByZXF1ZXN0ID0gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpOworICAgICAg
ICAgICAgY29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1
ZXN0KSB7CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgp
LCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIpKTsKLQotICAgICAgICAgICAgICAgIGF1dG8gZGF0
YSA9IGRhdGFGcm9tU3RyaW5nKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgY29ubmVjdGlv
bi5zZW5kKG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFy
dGlhbCBDb250ZW50XHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgog
ICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgogICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1SYW5nZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAwXHJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdiJykpKTsKLSAgICAg
ICAgICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5nZXQo
KSwgY29udGV4dCwgdHJ1ZSwgXihud19lcnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghZXJyb3IpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSku
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2In
KQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vz
cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L05ldHdvcmtQcm9jZXNzLm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01NCwxNyArNTQsMTUgQEAgVEVTVChXZWJLaXQsIEhUVFBSZWZlcmVyKQogICAgIGF1dG8gY2hl
Y2tSZWZlcmVyID0gW10gKE5TVVJMICpiYXNlVVJMLCBjb25zdCBjaGFyKiBleHBlY3RlZFJlZmVy
ZXIpIHsKICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgICAgIGJv
b2wgZG9uZSA9IGZhbHNlOwotICAgICAgICBIVFRQU2VydmVyIHNlcnZlcihbZG9uZSA9ICZkb25l
LCBleHBlY3RlZFJlZmVyZXJdIChud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgewotICAgICAg
ICAgICAgbndfY29ubmVjdGlvbl9yZWNlaXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDMyX3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWlu
UHRyKGNvbm5lY3Rpb24pLCBkb25lLCBleHBlY3RlZFJlZmVyZXJdKGRpc3BhdGNoX2RhdGFfdCBj
b250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCwgYm9vbCwgbndfZXJyb3JfdCkgewotICAgICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRlbnQpOwotICAgICAgICAgICAgICAgIGF1dG8gcmVx
dWVzdCA9IG51bGxUZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoWyZdIChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24ucmVjZWl2ZShbY29ubmVjdGlvbiwgZXhwZWN0ZWRSZWZlcmVyLCAmZG9uZV0gKFZlY3Rv
cjxjaGFyPiYmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRSZWZlcmVy
KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRIZWFkZXJGaWVsZCA9IG1ha2VT
dHJpbmcoIlJlZmVyZXI6ICIsIGV4cGVjdGVkUmVmZXJlciwgIlxyXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCBleHBlY3RlZEhlYWRl
ckZpZWxkLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJlZmVyZXI6
IikpOwotICAgICAgICAgICAgICAgICpkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwog
ICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIjxib2R5IG9ubG9hZD0nZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJmb3JtSURcIikuc3Vi
bWl0KCknPjxmb3JtIGlkPSdmb3JtSUQnIG1ldGhvZD0ncG9zdCcgYWN0aW9uPSdodHRwOi8vMTI3
LjAuMC4xOiVkLyc+PC9mb3JtPjwvYm9keT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOmJhc2VV
UkxdOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b3h5Lm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTggQEAKIAog
I2lmIEhBVkUoU1NMKQogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51
bWJlcnMuaD4KIAogQGludGVyZmFjZSBQcm94eURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGU+CiAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVydDsK
QEAgLTE3NywzICsxODIsOTcgQEAgVEVTVChXZWJLaXQsIFNlY3VyZVByb3h5Q29ubmVjdGlvbikK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoU1NMKQorCisj
aWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitURVNUKFdlYktpdCwgUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCit7CisgICAgYXV0
byBydW5UZXN0ID0gW10gKGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIHsKKyAg
ICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nXSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICsrY29ubmVjdGlvbkNvdW50OworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNl
aXZlKFtjb25uZWN0aW9uLCBjb25uZWN0aW9uQ291bnQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIFN0cmlu
ZyByZXBseTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBib2R5ID0KKyAgICAgICAgICAg
ICAgICAiPHNjcmlwdD4iCisgICAgICAgICAgICAgICAgICAgICJmZXRjaCgiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiJ2h0dHA6Ly93ZWJraXQub3JnL3BhdGgzJywiCisgICAgICAgICAgICAg
ICAgICAgICAgICAie2NyZWRlbnRpYWxzOidpbmNsdWRlJ30iCisgICAgICAgICAgICAgICAgICAg
ICIpLnRoZW4oKCk9PnsiCisgICAgICAgICAgICAgICAgICAgICAgICAiYWxlcnQoJ2ZldGNoZWQn
KSIKKyAgICAgICAgICAgICAgICAgICAgIn0pLmNhdGNoKChlKT0+eyIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJhbGVydChlKSIKKyAgICAgICAgICAgICAgICAgICAgIn0pIgorICAgICAgICAg
ICAgICAgICI8L3NjcmlwdD4iOworICAgICAgICAgICAgICAgIHN3aXRjaCAoY29ubmVjdGlvbkNv
dW50KSB7CisgICAgICAgICAgICAgICAgY2FzZSAxOiB7CisgICAgICAgICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkdFVCBodHRwOi8vd2Via2l0Lm9yZy9w
YXRoMSBIVFRQLzEuMVxyXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGx5ID0gbWFrZVN0
cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCBzdHJsZW4oYm9keSksICJc
clxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlNldC1Db29raWU6IGE9YlxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIlxyXG4iLCBib2R5CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIDM6IHsKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3Qu
ZGF0YSgpLCAiR0VUIGh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoMiBIVFRQLzEuMVxyXG4iKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcGx5ID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRlbnQtVHlwZTogdGV4dC9odG1sXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LUxlbmd0aDogIiwgc3RybGVuKGJvZHkpLCAiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJc
biIsIGJvZHkKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uQ291bnQg
PT0gMiB8fCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJc
biIpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIkNvb2tpZTogYT1iXHJcbiIpKTsK
KyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAi
R0VUIGh0dHA6Ly93ZWJraXQub3JnL3BhdGgzIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVwbHkgPQorICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBP
S1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogaHR0
cDovL2V4YW1wbGUuY29tXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1DcmVkZW50aWFsczogdHJ1ZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxyXG4i
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKFdURk1vdmUocmVwbHkpKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIHN0b3JlQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSk7CisgICAgICAgIFtzdG9yZUNvbmZpZ3Vy
YXRpb24gc2V0UHJveHlDb25maWd1cmF0aW9uOkB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilr
Q0ZTdHJlYW1Qcm9wZXJ0eUhUVFBQcm94eUhvc3Q6IEAiMTI3LjAuMC4xIiwKKyAgICAgICAgICAg
IChOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFByb3h5UG9ydDogQChzZXJ2ZXIucG9y
dCgpKQorICAgICAgICB9XTsKKyAgICAgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRBbGxvd3NT
ZXJ2ZXJQcmVjb25uZWN0Ok5PXTsKKyAgICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZDpZRVNdOworICAgICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICAgICAgW3ZpZXdDb25m
aWd1cmF0aW9uIF9zZXRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzpyZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ107CisgICAgICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRl
RGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAs
IDEwMCkgY29uZmlndXJhdGlvbjp2aWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy9wYXRoMSJdXV07CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCIpOwor
CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vcGF0aDIiXV1dOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZl
dGNoZWQiKTsKKyAgICB9OworICAgIHJ1blRlc3QodHJ1ZSk7CisgICAgcnVuVGVzdChmYWxzZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUoTkVU
V09SS19GUkFNRVdPUkspCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIu
aAkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxNSBAQAogI2lmIEhBVkUoTkVUV09S
S19GUkFNRVdPUkspCiAKICNpbXBvcnQgPE5ldHdvcmsvTmV0d29yay5oPgorI2ltcG9ydCA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgogI2ltcG9ydCA8
d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCitjbGFzcyBDb25uZWN0aW9uOworCiBjbGFzcyBIVFRQU2Vy
dmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOwpAQCAtNDQsMTAgKzQ3LDEw
IEBAIHB1YmxpYzoKICAgICB1c2luZyBDZXJ0aWZpY2F0ZVZlcmlmaWVyID0gRnVuY3Rpb248dm9p
ZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJp
ZnlfY29tcGxldGVfdCk+OwogCiAgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0
dHAsIENlcnRpZmljYXRlVmVyaWZpZXImJiA9IG51bGxwdHIpOwotICAgIEhUVFBTZXJ2ZXIoRnVu
Y3Rpb248dm9pZChud19jb25uZWN0aW9uX3QpPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRw
KTsKKyAgICBIVFRQU2VydmVyKEZ1bmN0aW9uPHZvaWQoQ29ubmVjdGlvbik+JiYsIFByb3RvY29s
ID0gUHJvdG9jb2w6Okh0dHApOwogICAgIH5IVFRQU2VydmVyKCk7CiAgICAgdWludDE2X3QgcG9y
dCgpIGNvbnN0OwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0OworICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdChjb25zdCBTdHJpbmcmIHBhdGggPSAiLyIpIGNvbnN0OwogICAgIHNp
emVfdCB0b3RhbFJlcXVlc3RzKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC01OSw4ICs2MiwyMyBA
QCBwcml2YXRlOgogICAgIFByb3RvY29sIG1fcHJvdG9jb2wgeyBQcm90b2NvbDo6SHR0cCB9Owog
fTsKIAotUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYp
OwotVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3QpOwor
Y2xhc3MgQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgQ29ubmVjdGlvbihjb25zdCBDb25uZWN0
aW9uJikgPSBkZWZhdWx0OworICAgIENvbm5lY3Rpb24oQ29ubmVjdGlvbiYmKSA9IGRlZmF1bHQ7
CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0b3I9KGNvbnN0IENvbm5lY3Rpb24mKSA9IGRlZmF1bHQ7
CisgICAgQ29ubmVjdGlvbiYgb3BlcmF0b3I9KENvbm5lY3Rpb24mJikgPSBkZWZhdWx0OworCisg
ICAgdm9pZCBzZW5kKFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBudWxs
cHRyKSBjb25zdDsKKyAgICB2b2lkIHJlY2VpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8Y2hhcj4mJik+JiYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBIVFRQ
U2VydmVyOworICAgIENvbm5lY3Rpb24obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCisgICAg
ICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pIHsgfQorCisgICAgUmV0YWluUHRyPG53X2Nv
bm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOworfTsKIAogc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBS
ZXNwb25zZSB7CiAgICAgZW51bSBjbGFzcyBUZXJtaW5hdGVDb25uZWN0aW9uIHsgTm8sIFllcyB9
OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24g
MjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkK
ICAgICBzdGFydExpc3RlbmluZyhtX2xpc3RlbmVyLmdldCgpKTsKIH0KIAotSFRUUFNlcnZlcjo6
SFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKG53X2Nvbm5lY3Rpb25fdCk+JiYgY29ubmVjdGlvbkhh
bmRsZXIsIFByb3RvY29sIHByb3RvY29sKQorSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihGdW5jdGlv
bjx2b2lkKENvbm5lY3Rpb24pPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBQcm90b2NvbCBwcm90b2Nv
bCkKICAgICA6IG1fbGlzdGVuZXIoYWRvcHROUyhud19saXN0ZW5lcl9jcmVhdGUobGlzdGVuZXJQ
YXJhbWV0ZXJzKHByb3RvY29sLCBudWxscHRyKS5nZXQoKSkpKQogICAgICwgbV9wcm90b2NvbChw
cm90b2NvbCkKIHsKQEAgLTEwOCw3ICsxMDgsNyBAQCAgICAgLCBtX3Byb3RvY29sKHByb3RvY29s
KQogICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIu
Z2V0KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbm5lY3Rp
b25IYW5kbGVyKV0gKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CiAgICAgICAgIG53X2Nv
bm5lY3Rpb25fc2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkp
OwogICAgICAgICBud19jb25uZWN0aW9uX3N0YXJ0KGNvbm5lY3Rpb24pOwotICAgICAgICBjb25u
ZWN0aW9uSGFuZGxlcihjb25uZWN0aW9uKTsKKyAgICAgICAgY29ubmVjdGlvbkhhbmRsZXIoQ29u
bmVjdGlvbihjb25uZWN0aW9uKSk7CiAgICAgfSkuZ2V0KCkpOwogICAgIHN0YXJ0TGlzdGVuaW5n
KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBTdHJpbmcg
c3RhdHVzVGV4dCh1bnNpZ25lZCBzdGF0dXMKICAgICByZXR1cm4geyB9OwogfQogCi1SZXRhaW5Q
dHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVN0cmluZyhTdHJpbmcmJiBzKQorc3RhdGljIFJl
dGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRhdGFGcm9tU3RyaW5nKFN0cmluZyYmIHMpCiB7CiAg
ICAgYXV0byBpbXBsID0gcy5yZWxlYXNlSW1wbCgpOwogICAgIEFTU0VSVChpbXBsLT5pczhCaXQo
KSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZy
b21TdHJpbgogICAgIH0pKTsKIH0KIAotVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVz
dChkaXNwYXRjaF9kYXRhX3QgY29udGVudCkKK3N0YXRpYyBWZWN0b3I8Y2hhcj4gbnVsbFRlcm1p
bmF0ZWRSZXF1ZXN0KGRpc3BhdGNoX2RhdGFfdCBjb250ZW50KQogewogICAgIF9fYmxvY2sgVmVj
dG9yPGNoYXI+IHJlcXVlc3Q7CiAgICAgZGlzcGF0Y2hfZGF0YV9hcHBseShjb250ZW50LCBeYm9v
bChkaXNwYXRjaF9kYXRhX3QsIHNpemVfdCwgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6
ZSkgewpAQCAtMjMyLDE5ICsyMzIsMzcgQEAgdWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNv
bnN0CiAgICAgcmV0dXJuIG53X2xpc3RlbmVyX2dldF9wb3J0KG1fbGlzdGVuZXIuZ2V0KCkpOwog
fQogCi1OU1VSTFJlcXVlc3QgKkhUVFBTZXJ2ZXI6OnJlcXVlc3QoKSBjb25zdAorTlNVUkxSZXF1
ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAg
ICBOU1N0cmluZyAqZm9ybWF0OwogICAgIHN3aXRjaCAobV9wcm90b2NvbCkgewogICAgIGNhc2Ug
UHJvdG9jb2w6Okh0dHA6Ci0gICAgICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8i
OworICAgICAgICBmb3JtYXQgPSBAImh0dHA6Ly8xMjcuMC4wLjE6JWQlcyI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzOgogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBz
V2l0aExlZ2FjeVRMUzoKLSAgICAgICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8i
OworICAgICAgICBmb3JtYXQgPSBAImh0dHBzOi8vMTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0
KCldXV07CisgICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCksIHBh
dGgudXRmOCgpLmRhdGEoKV1dXTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGNoYXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdAoreworICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIDEs
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShkaXNwYXRjaF9kYXRh
X3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0X3QsIGJvb2wsIG53X2Vycm9yX3QgZXJyb3Ip
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGVudCk7CisgICAgICAgIEFTU0VSVCghZXJy
b3IpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxsVGVybWluYXRlZFJlcXVlc3QoY29u
dGVudCkpOworICAgIH0pLmdldCgpKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kKFN0cmlu
ZyYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgY29uc3QKK3sKKyAgICBud19jb25uZWN0aW9uX3NlbmQobV9jb25uZWN0aW9uLmdldCgpLCBk
YXRhRnJvbVN0cmluZyhXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZB
VUxUX01FU1NBR0VfQ09OVEVYVCwgdHJ1ZSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShud19lcnJvcl90IGVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgQVNTRVJUKCFlcnJvcik7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxl
cikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSkuZ2V0KCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RVSURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMg
KzMyLDcgQEAKIC0gKE5TU3RyaW5nICopd2FpdEZvckFsZXJ0OwogCiBAZW5kCisKK0BpbnRlcmZh
Y2UgV0tXZWJWaWV3IChUZXN0VUlEZWxlZ2F0ZUV4dHJhcykKKy0gKE5TU3RyaW5nICopX3Rlc3Rf
d2FpdEZvckFsZXJ0OworQGVuZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
VUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RVSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSwzICs1OSwxNyBA
QCAtIChOU1N0cmluZyAqKXdhaXRGb3JBbGVydAogfQogCiBAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQorCistIChOU1N0cmluZyAqKV90ZXN0
X3dhaXRGb3JBbGVydAoreworICAgIEVYUEVDVF9GQUxTRShzZWxmLlVJRGVsZWdhdGUpOworICAg
IGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RVSURlbGVnYXRlIG5ld10pOworICAgIHNl
bGYuVUlEZWxlZ2F0ZSA9IHVpRGVsZWdhdGUuZ2V0KCk7CisgICAgTlNTdHJpbmcgKmFsZXJ0ID0g
W3VpRGVsZWdhdGUgd2FpdEZvckFsZXJ0XTsKKyAgICBzZWxmLlVJRGVsZWdhdGUgPSBuaWw7Cisg
ICAgcmV0dXJuIGFsZXJ0OworfQorCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399901</attachid>
            <date>2020-05-20 15:38:13 -0700</date>
            <delta_ts>2020-05-21 15:17:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200520153812.patch</filename>
            <type>text/plain</type>
            <size>104232</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxvd0FsbFRo
aXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0aXZlcyBvbmx5IHNob3du
IGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5zZXJ0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNhbWVTaXRlSW5mby5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIK
QEAgLTQxLDYgKzQyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQor
eworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICByZXR1cm4g
cGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKFJlZjxTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikp
KTsKQEAgLTgwLDcgKzg4LDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llcyhEb2N1bWVudCYg
ZG9jdQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwogICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBy
ZXN1bHQgPSBzZXNzaW9uLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIHJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKGRvY3VtZW50KSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIApAQCAtMTE0LDcgKzEyMiw3IEBAIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVzKERv
Y3VtZW50JiBkb2MKICAgICB9CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgc2Vzc2lvbi0+c2V0Q29v
a2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZv
KGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6WWVzLCBjb29r
aWVTdHJpbmcpOworICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZVN0cmluZywgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcoZG9jdW1lbnQpKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpAQCAtMTMxLDcgKzEzOSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29r
aWVzRW5hYmxlZChjb25zdCBEb2MKIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92
aWRlci0+c3RvcmFnZVNlc3Npb24oKSkgewotICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0
LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1
cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQogCkBAIC0xNjQsNyArMTcyLDcgQEAgYm9v
bCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdQogICAgIH0KIAogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigp
KQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpOworICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGRvY3VtZW50KSwgY29va2llcyk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCiAgICAgLCBtX2xv
YWRzU3VicmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQogICAg
ICwgbV9sb2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsp
CisgICAgLCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0
bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29u
c3QgeyByZXR1cm4gbV9sb2Fkc0Zyb21OZXR3b3JrOyB9CisgICAgYm9vbCBzaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc7IH0KIAogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29u
OjpMb3dQb3dlck1vZGUpOyB9CiAgICAgYm9vbCBjYW5VcGRhdGVUaHJvdHRsaW5nUmVhc29uKFRo
cm90dGxpbmdSZWFzb24gcmVhc29uKSBjb25zdCB7IHJldHVybiAhbV90aHJvdHRsaW5nUmVhc29u
c092ZXJyaWRlbkZvclRlc3RpbmcuY29udGFpbnMocmVhc29uKTsgfQpAQCAtMTA0NSw2ICsxMDQ2
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmlyZUV2ZW50cyB7IHRydWUgfTsKICAg
ICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJv
bU5ldHdvcmsgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2Ny
aXB0cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RE9NV3JhcHBlcldvcmxk
PiwgVW5pcXVlUmVmPFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0
aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGxv
YWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yayB7IHRy
dWUgfTsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsg
dHJ1ZSB9OworICAgIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBmYWxzZSB9
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJv
bAogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVx
dWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDog
SW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CisgICAg
cmV0dXJuIHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVz
dC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJl
Q29va2llczo6Tm8sIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmlyc3Q7CiB9CiAKIHN0YXRp
YyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llSmFyKiBj
b29raWVKYXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE2
ICsxMDQsMTYgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0hhZFVzZXJJbgogICAg
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBpZiAoIW1faXNS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgcmV0dXJuIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCks
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogICAg
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKKyAgICBp
ZiAocmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIGlmICghbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2hvdWxkRXhlbXB0CiAKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCisgICAgaWYg
KG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSkpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzOwogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3koKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwpAQCAt
MTYwLDExICsxNjAsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGdldEFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBn
ZXRDb29raWVzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzQ29va2ll
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQ
LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0
b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVT
dG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFApIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkm
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGRvbUNvb2tpZXNG
b3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CkBAIC0xNzcsOCArMTc3LDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgYm9vbCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tp
ZXNUb1NhbWVTaXRlU3RyaWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERv
Tm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBD
b29raWVTdG9yYWdlUmVmKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChD
RkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OwotICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JV
UkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNo
b3VsZEFza0lUUCkgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICB2b2lkIHNldEhU
VFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMs
IE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNv
bnN0OwogICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBO
U0hUVFBDb29raWUgKikgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW8KICAgICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZQogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTI2Myw3ICsyNjMsNyBA
QCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlCiAKIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxk
UHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUlu
Zm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRl
ckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1l
U2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQs
IGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UpOwogfQogCiBIVFRQQ29va2llQWNjZXB0
UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3QK
QEAgLTI4MCw3ICsyODAsNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdl
U2VzCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCwgYm9vbCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsMTAgKzM0Miwx
MCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJu
IGZpbHRlcmVkQ29va2llczsKIH0KIAotTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApIGNvbnN0CitOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hv
dWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJh
bWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVz
ICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC0zNTUsMTMgKzM1NSwxMyBAQCBOU0Fy
cmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGCiAgICAgcmV0dXJuIGh0dHBDb29r
aWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVI
VFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9
IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVS
TChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBpZiAoIVtjb29raWVz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBh
IG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBj
cmVhdGUgYmVsb3cuCiAKQEAgLTQxMSwyOSArNDExLDI5IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFs
bEhUVFBDb29raWVzKENGSFRUUEMKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29v
a2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBP
bmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7
CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6WWVzLCBmYWxzZSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0ciwgYm9v
bCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChz
aG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09
IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAg
ICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTQ5MSwxMiAr
NDkxLDEyIEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXMKICAgICBy
ZXR1cm4gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6TmV2ZXI7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7
CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICBy
YXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw3ICs5NSw3IEBAIENvb2tpZUphckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2sK
ICAgICByZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIGNvb2tp
ZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRC
OjpTb3VyY2U6OlNjcmlwdCk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAsIGJvb2wpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRl
ciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1
cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZh
bHNlIH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhh
c0Nvb2tpZXMoYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBTaG91bGRBc2tJVFAsIGJvb2wsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAogewogICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOwogICAgIGlmICghY29va2llcykKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
V2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3Rz
IGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1
cmwsIHRydWUpLCBmYWxzZSB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2UKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5m
aXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94
eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQs
IGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVz
KTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQ
cm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmll
bGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5w
YWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UDo6WWVzLCBmYWxzZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5ncykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUMKICAgICAgICAgYWRkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycyhyZXF1ZXN0KTsKIAogICAgICAg
ICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVz
OjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1
ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUDo6WWVzKS5maXJzdDsKKyAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRl
ckZpZWxkID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBmYWxzZSkuZmly
c3Q7CiAgICAgICAgIGlmICghY29va2llSGVhZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29v
a2llSGVhZGVyRmllbGQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhp
c3RzKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBp
ZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2ll
cyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lU
UCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAg
ICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC00NzMs
MTIgKzQ3MywxMiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9j
a0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91
bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0
UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CkBAIC01MTUsMTAgKzUxNSwxMCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
UmF3Q29va2llCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGJvb2wgZm9ySFRUUEhlYWRlciwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFApCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Np
b24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNz
aW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkp
CisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNo
b3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4geyB7IH0sIGZhbHNlIH07
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTU3MiwyMCArNTcyLDIwIEBA
IHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm8KICAgICByZXR1cm4geyBT
dHJpbmc6OmZyb21VVEY4KGNvb2tpZUhlYWRlci5nZXQoKSksIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVz
Rm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQs
IHBhZ2VJRCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0
ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91
bGRBc2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAotc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8g
U2VjdXJlIGNvb2tpZXMgd2lsbCBzdGlsbCBvbmx5IGJlIGluY2x1ZGVkIGlmIHVybCdzIHByb3Rv
Y29sIGlzIGh0dHBzLgotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQ
YXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgdHJ1ZSwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCB0
cnVlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQ
YXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJs
LCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFk
ZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7Cisg
ICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHku
Zmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJv
eHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlE
LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olll
cywgZmFsc2UpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVT
dG9yZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAyMC0wNS0yMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3cyB3aXRoIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYw
NTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgdmFsdWUgbWFrZXMgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2NrQ29va2llcygpIG5v
dCBkbyBhbnl0aGluZyBmb3IgY2VydGFpbiBXS1dlYlZpZXdzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6dW5ibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
OgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0QWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjphbGxvd0FsbFRoaXJkUGFydHlDb29raWVzIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FsbG93QWxsVGhpcmRQYXJ0
eUNvb2tpZXNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0QWxsb3dB
bGxUaGlyZFBhcnR5Q29va2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjphZGRQYXJhbWV0ZXJzU2hhcmVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisKIDIwMjAtMDUtMTkgIFBlciBBcm5lIFZv
bGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEZpeCBtZXNzYWdlIGZp
bHRlciBzYW5kYm94IHZpb2xhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsMTIgKzYy
MywxMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpCiAgICAgICAg
IG1fc2NoZW1lUmVnaXN0cnktPnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChXVEZNb3Zl
KHNjaGVtZSkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtT
dG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFs
c2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9y
RE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIGF1dG8gcmVzdWx0ID0gbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAs
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC02MzgsMTIgKzYzOCwxMiBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29rCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3Jr
U3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKLSAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgY29va2llU3RyaW5nKTsKKyAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgY29va2llU3RyaW5nLCByZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQpAQCAtNjUyLDIyICs2NTIsMjIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2V0QwogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywg
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7
CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIGZhbHNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3Vs
ZEFza0lUUCk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lv
bikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gcmVzdWx0OwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0UmF3
Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFAsIHJlc3VsdCk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdD
b29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNo
b3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIHJlc3VsdCk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDgsMTAgKzIwOCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbmc+JiYgc2NoZW1lcyk7CiAKLSAgICB2b2lkIGNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVT
dHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiwgYm9vbCBy
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIHNldFJhd0Nvb2tpZShjb25zdCBXZWJDb3Jl
OjpDb29raWUmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDEwICszNSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzCiAgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25hbDxX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgZW51bTpib29sIE9wdGlvbmFsPFdl
YktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiAKLSAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29s
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nKQotICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBD
b29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29v
a2llU3RyaW5nLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIEdldFJh
d0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9v
bCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBib29sIHJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3lu
Y2hyb25vdXMKICAgICBTZXRSYXdDb29raWUoc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUp
CiAgICAgRGVsZXRlQ29va2llKFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogICAgIERvbUNv
b2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAg
UmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcgogewogICAgIEFTU0VSVCgh
cGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24s
IGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFt
ZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJzLmlz
TWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25G
b3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIC8vIEZJWE1FOiBKdXN0IHBhc3Mg
cGFyYW1ldGVycyB0byB0aGUgTmV0d29ya0RhdGFUYXNrQ29jb2EgY29uc3RydWN0b3IuCisgICAg
cmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJh
bWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdl
SUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVu
dFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBh
cmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZp
Z2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBw
YXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgcGFyYW1ldGVycy5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zyk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVy
cy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdh
dGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm8geyBm
YWxzZSB9OwogICAgIGJvb2wgaXNNYWluRnJhbWVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAgICBi
b29sIGlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lIHsgZmFsc2UgfTsKKyAgICBi
b29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGJsb2JGaWxlUmVmZXJlbmNl
czsKICAgICBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSB7IFByZWNvbm5lY3RP
bmx5OjpObyB9OwogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwogICAgIGVuY29kZXIgPDwgbmVl
ZHNDZXJ0aWZpY2F0ZUluZm87CiAgICAgZW5jb2RlciA8PCBpc01haW5GcmFtZU5hdmlnYXRpb247
CiAgICAgZW5jb2RlciA8PCBpc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZTsKKyAg
ICBlbmNvZGVyIDw8IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogICAgIGVuY29kZXIg
PDwgbWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJv
b2w+KHNvdXJjZU9yaWdpbik7CkBAIC0xOTgsNiArMTk5LDggQEAgT3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM+IAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11
bUJ1ZmZlcmluZ1RpbWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyAr
MTMyNiw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwKICAgICBB
U1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihj
b25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXM7Ci0gICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNl
c3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBTaG91bGRBc2tJVFA6OlllcywgY29va2llcykpCisgICAgaWYgKCFuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6OlllcywgZmFsc2UsIGNvb2tpZXMpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGVzY2FwZWRVUkwgPSBlc2NhcGVGb3JKU09OKHVy
bC5zdHJpbmcoKSk7CkBAIC0xMzg2LDcgKzEzODYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0
aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCi0g
ICAgaWYgKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChuZXR3b3JrU3RvcmFnZVNlc3Npb24u
c2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBmYWxz
ZSkpCiAgICAgICAgIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBsYWJl
bCwgbG9nZ2VkT2JqZWN0LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCByZWZlcnJlciwgZnJhbWVJRCwgcGFnZUlELCBpZGVudGlmaWVyKTsKICAg
ICBlbHNlCiAgICAgICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoY29ubmVjdGlvbiwg
bGFiZWwsIGxvZ2dlZE9iamVjdCwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgcmVmZXJyZXIsIGZyYW1lSUQsIHBhZ2VJRCwgaWRlbnRpZmllcik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBO
ZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25p
ZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikK
KyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5n
UG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGJvb2wg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3Qs
IGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRT
bmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JB
bnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2Nv
YShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNv
bm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zv
ck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tl
ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpKTsKICAgICB9CiAKICAgICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsKQEAgLTczLDEx
ICs3MywxMiBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKKyAgICBib29sIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzsgfQogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29y
a1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdv
cmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRT
bmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBib29sIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZl
cmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwpAQCAtMTAzLDYgKzEwNCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IGZh
bHNlIH07CiB9OwogCiBXZWJDb3JlOjpDcmVkZW50aWFsIHNlcnZlclRydXN0Q3JlZGVudGlhbChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTks
MTMgKzE5OSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0ZUlzQWx3YXlzT25Mb2dnCiAg
ICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7
CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNv
cmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNv
bm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKQorTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNs
aWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRp
YWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJj
ZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4g
bmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGJvb2wgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1
ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmln
YXRpb24pCiAgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVz
dFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdl
SUQocGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFt
ZShkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQogICAgICwg
bV9pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoY29tcHV0ZUlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZChzZXNzaW9uKSkKKyAgICAsIG1fcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcocmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgaWYgKG1fc2NoZWR1bGVkRmFpbHVyZVR5
cGUgIT0gTm9GYWlsdXJlKQogICAgICAgICByZXR1cm47CkBAIC0yNDAsNyArMjQxLDcgQEAgTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvYwogICAgIHNob3VsZEJsb2NrQ29v
a2llcyA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAg
aWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpCi0gICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMg
PSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFt
ZUlELCBwYWdlSUQpOworICAgICAgICAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICB9CiAjZW5kaWYKICAgICBy
ZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CkBAIC00MDMs
NyArNDA0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFtX2hhc0JlZW5TZXRU
b1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UpIHsKICAgICAgICAgaWYgKG1fc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJh
bFN0YXRlbGVzcwotICAgICAgICAgICAgfHwgKG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkgJiYgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2hvdWxkQmxvY2tD
b29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQpKSkKKyAgICAgICAgICAgIHx8ICht
X3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1f
cGFnZUlELCBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkpCiAgICAgICAgICAgICBi
bG9ja0Nvb2tpZXMoKTsKICAgICB9IGVsc2UgaWYgKG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
IT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcyAm
JiBuZWVkc0ZpcnN0UGFydHlDb29raWVCbG9ja2luZ0xhdGNoTW9kZVF1aXJrKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS51cmwo
KSkpCiAgICAgICAgIHVuYmxvY2tDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShy
ZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNiw3ICs1MzYsNyBAQCAt
ICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wgc2hv
dWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5l
dHdvcmtTZXNzaW9uKCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVX
YXNVcGdyYWRlZER1ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3
b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5z
aG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5l
dHdvcmtEYXRhVGFzay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9
IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29j
b2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9u
SUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1l
SUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRJ
Z25vcmVIU1RTKSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVlc3Qo
cmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUgaXNF
cXVhbFRvU3RyaW5nOkAiaHR0cCJdKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNU
UyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9u
KCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVXYXNVcGdyYWRlZER1
ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3b3JrUHJvY2Vzcygp
LnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5zaG91bGRCbG9ja0Nv
b2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5ldHdvcmtEYXRhVGFz
ay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1Vw
Z3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQ
cm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3Vs
ZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29y
a0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVIU1RTKSB7
CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5n
OkAiaHR0cCJdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q3VybDo6cmVzdGFydFdpdGhDcmUKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6YXBwZW5kQ29v
a2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBhdXRv
IGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIp
ID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsK
LSAgICBhdXRvIGNvb2tpZUhlYWRlckZpZWxkID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBXZWJDb3JlOjpTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVx
dWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CisgICAgYXV0byBjb29raWVIZWFkZXJGaWVs
ZCA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIGZh
bHNlKS5maXJzdDsKICAgICBpZiAoIWNvb2tpZUhlYWRlckZpZWxkLmlzRW1wdHkoKSkKICAgICAg
ICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29v
a2llSGVhZGVyRmllbGQpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkocmV2aXNpb24gMjYx
ODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KAogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVz
ID0gd2FzQmxvY2tpbmdDb29raWVzID09IFdhc0Jsb2NraW5nQ29va2llczo6WWVzID8gdHJ1ZSA6
IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVw
aGVtZXJhbFN0YXRlbGVzczsKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2llcykgewogICAgICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9zZXNzaW9uLT5uZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSkKLSAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKG1fY3VycmVudFJlcXVlc3QsIG1fZnJh
bWVJRCwgbV9wYWdlSUQpOworICAgICAgICAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja0Nvb2tpZXMobV9jdXJyZW50UmVxdWVzdCwgbV9m
cmFtZUlELCBtX3BhZ2VJRCwgZmFsc2UpOwogICAgIH0KICAgICBpZiAoc2hvdWxkQmxvY2tDb29r
aWVzKQogICAgICAgICBzb3VwX21lc3NhZ2VfZGlzYWJsZV9mZWF0dXJlKHNvdXBNZXNzYWdlLmdl
dCgpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjYxODg2KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShJCiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52YXNJbkdQVVBy
b2Nlc3M7CiAgICAgZW5jb2RlciA8PCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7CiAg
ICAgZW5jb2RlciA8PCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworICAgIGVu
Y29kZXIgPDwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgZW5jb2RlciA8PCB0aGVtZU5hbWU7CkBAIC00NzcsNiArNDc4LDkgQEAgT3B0aW9u
YWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMucmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMudGhlbWVOYW1lKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw3IEBA
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBuZWVkc0luQXBwQnJvd3Nl
clByaXZhY3lRdWlya3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIHRoZW1l
TmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzg1Miw2ICs3ODUyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFz
SW5HUFVQcm9jZXNzID0gcHJlZmVyZW5jZXMoKS5yZW5kZXJDYW52YXNJbkdQVVByb2Nlc3NFbmFi
bGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzID0g
bV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zaG91bGRDYXB0dXJlRGlz
cGxheUluVUlQcm9jZXNzKCk7CiAgICAgcGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworICAg
IHBhcmFtZXRlcnMucmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBtX2NvbmZpZ3VyYXRp
b24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CiAKICNpZiBQTEFURk9S
TShHVEspCiAgICAgcGFyYW1ldGVycy50aGVtZU5hbWUgPSBwYWdlQ2xpZW50KCkudGhlbWVOYW1l
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDYgKzg1LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbgogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uTWFu
aWZlc3QgPSB0aGlzLT5tX2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKKyAgICBjb3B5LT5t
X3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gdGhpcy0+bV9yZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZzsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0aGlzLT5tX3VybFNjaGVtZUhh
bmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVtZUhhbmRsZXJzLnNldChwYWlyLmtleSwg
cGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHktPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5z
ID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYx
ODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBs
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOyB9CiAgICAgdm9pZCBzZXRMaW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKGJvb2wgbGltaXRzKSB7IG1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucyA9IGxpbWl0czsgfQogCisgICAgdm9pZCBzZXRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyhib29sIHZhbHVlKSB7IG1fcmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgPSB2YWx1ZTsgfQorICAgIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
OyB9CisgICAgCiBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w+
IG1fcHJvY2Vzc1Bvb2w7CkBAIC0yMDIsNiArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
bG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsg
eyB0cnVlIH07CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9yZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI1NCw2ICsx
MjU0LDE2IEBAIC0gKHZvaWQpX3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KEJPT0wKICAgICBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldElnbm9yZXNBcHBCb3VuZERvbWFpbnMoaWdub3Jlc0FwcEJv
dW5kRG9tYWlucyk7CiB9CiAKKy0gKEJPT0wpX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
Cit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcoKTsKK30KKworLSAodm9pZClfc2V0UmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmc6KEJPT0wpcmVsYXgKK3sKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHJlbGF4KTsKK30KKwogLSAoTlNTdHJpbmcgKilfcHJv
Y2Vzc0Rpc3BsYXlOYW1lCiB7CiAgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+cHJvY2Vz
c0Rpc3BsYXlOYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAko
cmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMCAr
MTI1LDggQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZpZXdDYQogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RWRpdGFibGVJbWFnZXNFbmFibGVkOikgQk9PTCBf
ZWRpdGFibGVJbWFnZXNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlv
cygxMi4yKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRVbmRvTWFuYWdlckFQ
SUVuYWJsZWQ6KSBCT09MIF91bmRvTWFuYWdlckFQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRXZWJWaWV3Q2F0ZWdvcnk6KSBfV0tXZWJWaWV3Q2F0ZWdvcnkgX3dlYlZpZXdDYXRlZ29yeSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCi0t
ICh2b2lkKV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOihCT09MKWlnbm9yZXNBcHBCb3VuZERv
bWFpbnMgIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7Ci0tIChCT09MKV9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KSBCT09MIF9pZ25vcmVzQXBwQm91
bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZzopIEJPT0wgX3JlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQcm9jZXNzRGlzcGxheU5hbWU6KSBOU1N0cmluZyAq
X3Byb2Nlc3NEaXNwbGF5TmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAyNjE4
ODYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw4ICsyNjgsMTAgQEAgc3RhdGljIHZvaWQgYWRk
UGFyYW1ldGVyc1NoYXJlZChjb25zdCBGcgogCiAgICAgcGFyYW1ldGVycy5pc0hUVFBTVXBncmFk
ZUVuYWJsZWQgPSBmcmFtZS0+c2V0dGluZ3MoKS5IVFRQU1VwZ3JhZGVFbmFibGVkKCk7CiAKLSAg
ICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIHBhcmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENs
aWVudCA9IHBhZ2UtPmhhc1Jlc291cmNlTG9hZENsaWVudCgpOworICAgICAgICBwYXJhbWV0ZXJz
LnJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gcGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcoKTsKKyAgICB9CiAKICAgICBpZiAoYXV0byogb3duZXJFbGVtZW50
ID0gZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwYXJlbnRGcmFt
ZSA9IG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNCArNTcsMTQgQEAgU3RyaW5nIFdlYkNv
b2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNvbgogICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6
IGNvb2tpZXMpCiAgICAgICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2ll
KGNvb2tpZSk7CiAgICAgfQotICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpObykuZmlyc3Q7CisgICAgcmV0
dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFA6Ok5vLCBmYWxzZSkuZmlyc3Q7CiB9CiAKLXZvaWQgV2ViQ29va2llQ2FjaGU6
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3Zv
aWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZywgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICAg
ICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKICAgICBpZiAobV9ob3N0c1dp
dGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCi0gICAgICAgIGluTWVtb3J5U3RvcmFn
ZVNlc3Npb24oKS5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6Ok5vLCBjb29raWVTdHJpbmcpOworICAg
ICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpObywg
Y29va2llU3RyaW5nLCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiB9CiAKIHZvaWQg
V2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxDb29raWU+JiBjb29raWVzKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3VwcG9ydGVkKCk7CiAK
ICAgICBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
KTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZywgYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAKICAgICB2b2lkIGNv
b2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik7CiAgICAgdm9pZCBjb29raWVzRGVsZXRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDExICs2OSwxOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nvb2tp
ZXMoV2ViRnJhbWUqCiAgICAgaWYgKGZpcnN0UGFydHlEb21haW4gPT0gcmVzb3VyY2VEb21haW4p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZnJhbWVM
b2FkZXJDbGllbnQoKS0+aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUt
PnBhZ2UoKS0+aGFzUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCByZXNv
dXJjZURvbWFpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZnJhbWUpIHsKKyAg
ICAgICAgaWYgKGZyYW1lLT5mcmFtZUxvYWRlckNsaWVudCgpLT5oYXNGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2VzcygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoYXV0
byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5oYXNQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoYXV0byogY29yZVBh
Z2UgPSBwYWdlLT5jb3JlUGFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvcmVQYWdlLT5z
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKICAgICAv
LyBUaGUgV2ViQ29udGVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IHRvIGRlYWwgd2l0aCBvdGhlciBwb2xpY2llcyB0aGFuIFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbCBzbyB3ZSBoYXZlIHRvIGdvIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyBmb3IgYWxs
CiAgICAgLy8gb3RoZXIgcG9saWNpZXMgYW5kIHRoZSByZXF1ZXN0IG1heSBlbmQgdXAgZ2V0dGlu
ZyBibG9ja2VkIG9uIE5ldHdvcmtQcm9jZXNzIHNpZGUuCkBAIC0xMDMsNiArMTEwLDE5IEBAIGJv
b2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUoV2UKICAgICByZXR1cm4gZnJhbWUu
aXNNYWluRnJhbWUoKSB8fCBSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVz
IH0gPT0gcmVzb3VyY2VEb21haW47CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKGNvbnN0IFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogcGFnZSA9IGZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogY29y
ZVBhZ2UgPSBwYWdlLT5jb3JlUGFnZSgpOworICAgIGlmICghY29yZVBhZ2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29yZVBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKCk7Cit9CisKIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBhdXRv
KiB3ZWJGcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgq
ZG9jdW1lbnQuZnJhbWUoKSkgOiBudWxscHRyOwpAQCAtMTI1LDcgKzE0NSw3IEBAIFN0cmluZyBX
ZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG8KIAogICAgIFN0cmluZyBjb29raWVTdHJp
bmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3Vs
ZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFtZSkpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0
cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICByZXR1cm4gY29va2llU3RyaW5nOwpAQCAtMTQ4LDkgKzE2OCw5IEBAIHZvaWQgV2ViQ29v
a2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkQKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1l
LT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAogICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndl
YkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQotICAgICAgICBt
X2NhY2hlLnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CisgICAg
ICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nLCBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFtZSkpOwogCi0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpT
ZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNz
LCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llSmFyOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYgY29va2llcykKQEAgLTE5NiwxNSArMjE2LDE1IEBAIGJvb2wgV2ViQ29v
a2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCAKIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6
OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyA9IFNob3VsZEFza0lUUDo6
Tm87Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBhdXRvKiB3ZWJG
cmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJ
RCkgOiBudWxscHRyOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
aWYgKHNob3VsZEJsb2NrQ29va2llcyh3ZWJGcmFtZSwgZmlyc3RQYXJ0eSwgdXJsLCBzaG91bGRB
c2tJVFBJbk5ldHdvcmtQcm9jZXNzKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCiAg
ICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9
IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpS
ZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFz
a0lUUEluTmV0d29ya1Byb2Nlc3MsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KHdlYkZyYW1lKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIHsgY29v
a2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPyBXZWJDb3JlOjpTZWN1cmVDb29raWVz
QWNjZXNzZWQ6OlllcyA6IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZDo6Tm8gfTsKIH0K
QEAgLTIyMCw3ICsyNDAsNyBAQCBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25z
dCBXCiAKICAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFtZSA/
IG1ha2VPcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKICAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBh
Z2UoKSA/IG1ha2VPcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkpIDogV1RG
OjpudWxsb3B0OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDAp
KQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29v
a2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hv
dWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUw
LDYgKzU1MCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
biA9IHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMgPSBwYXJhbWV0ZXJzLmxvYWRz
U3VicmVzb3VyY2VzOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsgPSBw
YXJhbWV0ZXJzLmxvYWRzRnJvbU5ldHdvcms7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ucmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBwYXJhbWV0ZXJzLnJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCkKICAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNh
Ymxlcjo6c2luZ2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
KGZhbHNlKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MTg5MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA1LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJsb2NrIHRoaXJkIHBh
cnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0
dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gbWFrZSB0ZXN0cyBlYXNpZXIg
dG8gcmVhZCBhbmQgd3JpdGUsIEkgbWFkZSBDb25uZWN0aW9uOjpzZW5kIGFuZCBDb25uZWN0aW9u
OjpyZWNlaXZlLCB3aGljaCBhc3N1bWUgbm8gbmV0d29yayBlcnJvcnMuCisgICAgICAgIFRoaXMg
aXMgdHJ1ZSB3aGVuIGRvaW5nIGxvY2FsIHRlc3RpbmcgaW4gQVBJIHRlc3RzLiAgV2Ugd2VyZSBh
bHJlYWR5IGFzc3VtaW5nIG5vIG5ldHdvcmsgZXJyb3JzLgorICAgICAgICBJIGFsc28gYWRkIF90
ZXN0X3dhaXRGb3JBbGVydCB0byBtYWtlIHRlc3RzIGxlc3MgdmVyYm9zZS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgIChU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQ
cm9jZXNzLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm94eS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6SFRUUFNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkYXRhRnJvbVN0cmlu
Zyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpudWxsVGVybWluYXRlZFJlcXVlc3QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpyZWNlaXZlIGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnNlbmQgY29uc3QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RVSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rlc3Rfd2FpdEZv
ckFsZXJ0XSk6CisKIDIwMjAtMDUtMTkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gU3luYyBqaGJ1aWxkIHRvIGZsYXRwYWsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE3Miw0MSArMTE3MiwzMCBAQCBT
dHJpbmcgbG9uZ1N0cmluZyhMQ2hhciBjKQogVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogewog
ICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwotICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KFtjb25uZWN0aW9uQ291bnQgPSAwXShud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgbXV0YWJs
ZSB7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKENvbm5lY3Rp
b24gY29ubmVjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291
bnQpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgbndfY29ubmVjdGlvbl9yZWNlaXZl
KGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgbWFr
ZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rpb24pXShkaXNwYXRjaF9k
YXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0X3QgY29udGV4dCwgYm9vbCwgbndfZXJy
b3JfdCBlcnJvcikgewotICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRlbnQpOwotICAg
ICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShlcnJvcik7Ci0gICAgICAgICAgICAgICAgYXV0byBk
YXRhID0gZGF0YUZyb21TdHJpbmcobWFrZVN0cmluZygKKyAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZShbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBj
b25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4x
IDIwMCBPS1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKICAgICAg
ICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAg
ICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1w
bGUudHh0XCJcclxuIgotICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAw
MD4oJ2EnKSkpOwotICAgICAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2VuZChjb25uZWN0aW9u
LmdldCgpLCBkYXRhLmdldCgpLCBjb250ZXh0LCBmYWxzZSwgXihud19lcnJvcl90IGVycm9yKSB7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZXJyb3IpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfSkuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxv
bmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgbndfY29u
bmVjdGlvbl9yZWNlaXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rp
b24pXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0X3QgY29udGV4
dCwgYm9vbCwgbndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGNvbnRlbnQpOwotICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShlcnJvcik7Ci0KLSAgICAg
ICAgICAgICAgICBhdXRvIHJlcXVlc3QgPSBudWxsVGVybWluYXRlZFJlcXVlc3QoY29udGVudCk7
CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmUoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFy
PiYmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVz
dC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIikpOwotCi0gICAgICAgICAgICAgICAg
YXV0byBkYXRhID0gZGF0YUZyb21TdHJpbmcobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICBj
b25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4x
IDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgogICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVz
dFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCiAg
ICAgICAgICAgICAgICAgICAgICJDb250ZW50LVJhbmdlOiBieXRlcyA1MDAwLTk5OTkvMTAwMDBc
clxuIgotICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2InKSkp
OwotICAgICAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2VuZChjb25uZWN0aW9uLmdldCgpLCBk
YXRhLmdldCgpLCBjb250ZXh0LCB0cnVlLCBeKG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFlcnJvcik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9KS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1
MDAwPignYicpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdv
cmtQcm9jZXNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDE3ICs1NCwxNSBAQCBURVNUKFdlYktpdCwgSFRUUFJlZmVyZXIpCiAgICAg
YXV0byBjaGVja1JlZmVyZXIgPSBbXSAoTlNVUkwgKmJhc2VVUkwsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkUmVmZXJlcikgewogICAgICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICAg
ICAgICAgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtkb25l
ID0gJmRvbmUsIGV4cGVjdGVkUmVmZXJlcl0gKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7
Ci0gICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24g
PSByZXRhaW5QdHIoY29ubmVjdGlvbiksIGRvbmUsIGV4cGVjdGVkUmVmZXJlcl0oZGlzcGF0Y2hf
ZGF0YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90LCBib29sLCBud19lcnJvcl90KSB7
Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGVudCk7Ci0gICAgICAgICAgICAgICAg
YXV0byByZXF1ZXN0ID0gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpOworICAgICAgICBI
VFRQU2VydmVyIHNlcnZlcihbJl0gKENvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICAg
ICAgY29ubmVjdGlvbi5yZWNlaXZlKFtjb25uZWN0aW9uLCBleHBlY3RlZFJlZmVyZXIsICZkb25l
XSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGlmIChleHBlY3Rl
ZFJlZmVyZXIpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBleHBlY3RlZEhlYWRlckZpZWxk
ID0gbWFrZVN0cmluZygiUmVmZXJlcjogIiwgZXhwZWN0ZWRSZWZlcmVyLCAiXHJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksIGV4cGVj
dGVkSGVhZGVyRmllbGQudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAi
UmVmZXJlcjoiKSk7Ci0gICAgICAgICAgICAgICAgKmRvbmUgPSB0cnVlOwotICAgICAgICAgICAg
fSkuZ2V0KCkpOworICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiPGJvZHkgb25sb2FkPSdkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImZvcm1J
RFwiKS5zdWJtaXQoKSc+PGZvcm0gaWQ9J2Zvcm1JRCcgbWV0aG9kPSdwb3N0JyBhY3Rpb249J2h0
dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2Zvcm0+PC9ib2R5PiIsIHNlcnZlci5wb3J0KCldIGJhc2VV
Ukw6YmFzZVVSTF07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJveHkubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywx
OCBAQAogCiAjaWYgSEFWRShTU0wpCiAKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKKyNpbXBvcnQgIlRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCisjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlTnVtYmVycy5oPgogCiBAaW50ZXJmYWNlIFByb3h5RGVsZWdhdGUgOiBOU09iamVjdCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZT4KIC0gKE5TU3RyaW5nICopd2FpdEZv
ckFsZXJ0OwpAQCAtMTc3LDMgKzE4Miw5NyBAQCBURVNUKFdlYktpdCwgU2VjdXJlUHJveHlDb25u
ZWN0aW9uKQogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShT
U0wpCisKKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK1RFU1QoV2ViS2l0LCBSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKK3sK
KyAgICBhdXRvIHJ1blRlc3QgPSBbXSAoYm9vbCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykgeworICAgICAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgcmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmddIChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFi
bGUgeworICAgICAgICAgICAgKytjb25uZWN0aW9uQ291bnQ7CisgICAgICAgICAgICBjb25uZWN0
aW9uLnJlY2VpdmUoW2Nvbm5lY3Rpb24sIGNvbm5lY3Rpb25Db3VudCwgcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmddIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAg
ICAgU3RyaW5nIHJlcGx5OworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJvZHkgPQorICAg
ICAgICAgICAgICAgICI8c2NyaXB0PiIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICInaHR0cDovL3dlYmtpdC5vcmcvcGF0aDMnLCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ7Y3JlZGVudGlhbHM6J2luY2x1ZGUnfSIKKyAgICAgICAgICAg
ICAgICAgICAgIikudGhlbigoKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGVydCgn
ZmV0Y2hlZCcpIgorICAgICAgICAgICAgICAgICAgICAifSkuY2F0Y2goKGUpPT57IgorICAgICAg
ICAgICAgICAgICAgICAgICAgImFsZXJ0KGUpIgorICAgICAgICAgICAgICAgICAgICAifSkiCisg
ICAgICAgICAgICAgICAgIjwvc2NyaXB0PiI7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjb25u
ZWN0aW9uQ291bnQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93ZWJr
aXQub3JnL3BhdGgxIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkg
PSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xy
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6ICIsIHN0cmxlbihi
b2R5KSwgIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiU2V0LUNvb2tpZTogYT1iXHJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGJvZHkKKyAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGNhc2UgMzogeworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIo
cmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDovL2V4YW1wbGUuY29tL3BhdGgyIEhUVFAvMS4xXHJc
biIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPSBtYWtlU3RyaW5nKAorICAgICAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCBzdHJsZW4oYm9keSksICJcclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJcclxuIiwgYm9keQorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rp
b25Db3VudCA9PSAyIHx8IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgICAgICAg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2ll
OiBhPWJcclxuIikpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2llOiBhPWJc
clxuIikpOworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5k
YXRhKCksICJHRVQgaHR0cDovL3dlYmtpdC5vcmcvcGF0aDMgSFRUUC8xLjFcclxuIikpOworICAg
ICAgICAgICAgICAgICAgICByZXBseSA9CisgICAgICAgICAgICAgICAgICAgICAgICAiSFRUUC8x
LjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDog
MFxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3Jp
Z2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkFj
Y2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOiB0cnVlXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiXHJcbiI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXBs
eSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8gc3RvcmVD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3N0b3Jl
Q29uZmlndXJhdGlvbiBzZXRQcm94eUNvbmZpZ3VyYXRpb246QHsKKyAgICAgICAgICAgIChOU1N0
cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFByb3h5SG9zdDogQCIxMjcuMC4wLjEiLAorICAg
ICAgICAgICAgKE5TU3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlQb3J0OiBAKHNl
cnZlci5wb3J0KCkpCisgICAgICAgIH1dOworICAgICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNl
dEFsbG93c1NlcnZlclByZWNvbm5lY3Q6Tk9dOworICAgICAgICBhdXRvIGRhdGFTdG9yZSA9IGFk
b3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgICAgIFtkYXRhU3RvcmUgX3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisgICAgICAgIGF1dG8gdmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAgICBb
dmlld0NvbmZpZ3VyYXRpb24gX3NldFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOnJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXTsKKyAgICAgICAgW3ZpZXdDb25maWd1cmF0aW9uIHNl
dFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisK
KyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnL3BhdGgxIl1dXTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRj
aGVkIik7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
MiJdXV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxl
cnRdLCAiZmV0Y2hlZCIpOworICAgIH07CisgICAgcnVuVGVzdCh0cnVlKTsKKyAgICBydW5UZXN0
KGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8g
SEFWRShORVRXT1JLX0ZSQU1FV09SSykKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
SFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDE1IEBACiAjaWYgSEFW
RShORVRXT1JLX0ZSQU1FV09SSykKIAogI2ltcG9ydCA8TmV0d29yay9OZXR3b3JrLmg+CisjaW1w
b3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKK2NsYXNzIENvbm5lY3Rpb247CisKIGNsYXNz
IEhUVFBTZXJ2ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBIVFRQUmVzcG9uc2U7CkBAIC00NCwx
MCArNDcsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIENlcnRpZmljYXRlVmVyaWZpZXIgPSBGdW5j
dGlvbjx2b2lkKHNlY19wcm90b2NvbF9tZXRhZGF0YV90LCBzZWNfdHJ1c3RfdCwgc2VjX3Byb3Rv
Y29sX3ZlcmlmeV9jb21wbGV0ZV90KT47CiAKICAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90
b2NvbDo6SHR0cCwgQ2VydGlmaWNhdGVWZXJpZmllciYmID0gbnVsbHB0cik7Ci0gICAgSFRUUFNl
cnZlcihGdW5jdGlvbjx2b2lkKG53X2Nvbm5lY3Rpb25fdCk+JiYsIFByb3RvY29sID0gUHJvdG9j
b2w6Okh0dHApOworICAgIEhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChDb25uZWN0aW9uKT4mJiwg
UHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CiAgICAgfkhUVFBTZXJ2ZXIoKTsKICAgICB1aW50
MTZfdCBwb3J0KCkgY29uc3Q7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7Cisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCA9ICIvIikgY29uc3Q7
CiAgICAgc2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTU5LDgg
KzYyLDIzIEBAIHByaXZhdGU6CiAgICAgUHJvdG9jb2wgbV9wcm90b2NvbCB7IFByb3RvY29sOjpI
dHRwIH07CiB9OwogCi1SZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVN0cmluZyhT
dHJpbmcmJik7Ci1WZWN0b3I8Y2hhcj4gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGRpc3BhdGNoX2Rh
dGFfdCk7CitjbGFzcyBDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBDb25uZWN0aW9uKGNvbnN0
IENvbm5lY3Rpb24mKSA9IGRlZmF1bHQ7CisgICAgQ29ubmVjdGlvbihDb25uZWN0aW9uJiYpID0g
ZGVmYXVsdDsKKyAgICBDb25uZWN0aW9uJiBvcGVyYXRvcj0oY29uc3QgQ29ubmVjdGlvbiYpID0g
ZGVmYXVsdDsKKyAgICBDb25uZWN0aW9uJiBvcGVyYXRvcj0oQ29ubmVjdGlvbiYmKSA9IGRlZmF1
bHQ7CisKKyAgICB2b2lkIHNlbmQoU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiA9IG51bGxwdHIpIGNvbnN0OworICAgIHZvaWQgcmVjZWl2ZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxjaGFyPiYmKT4mJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIEhUVFBTZXJ2ZXI7CisgICAgQ29ubmVjdGlvbihud19jb25uZWN0aW9uX3QgY29ubmVjdGlv
bikKKyAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikgeyB9CisKKyAgICBSZXRhaW5Q
dHI8bndfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247Cit9OwogCiBzdHJ1Y3QgSFRUUFNlcnZl
cjo6SFRUUFJlc3BvbnNlIHsKICAgICBlbnVtIGNsYXNzIFRlcm1pbmF0ZUNvbm5lY3Rpb24geyBO
bywgWWVzIH07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShy
ZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCAgICAgLCBtX3Byb3RvY29sKHBy
b3RvY29sKQogICAgIHN0YXJ0TGlzdGVuaW5nKG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCi1IVFRQ
U2VydmVyOjpIVFRQU2VydmVyKEZ1bmN0aW9uPHZvaWQobndfY29ubmVjdGlvbl90KT4mJiBjb25u
ZWN0aW9uSGFuZGxlciwgUHJvdG9jb2wgcHJvdG9jb2wpCitIVFRQU2VydmVyOjpIVFRQU2VydmVy
KEZ1bmN0aW9uPHZvaWQoQ29ubmVjdGlvbik+JiYgY29ubmVjdGlvbkhhbmRsZXIsIFByb3RvY29s
IHByb3RvY29sKQogICAgIDogbV9saXN0ZW5lcihhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShs
aXN0ZW5lclBhcmFtZXRlcnMocHJvdG9jb2wsIG51bGxwdHIpLmdldCgpKSkpCiAgICAgLCBtX3By
b3RvY29sKHByb3RvY29sKQogewpAQCAtMTA4LDcgKzEwOCw3IEBAICAgICAsIG1fcHJvdG9jb2wo
cHJvdG9jb2wpCiAgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIobV9s
aXN0ZW5lci5nZXQoKSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29ubmVjdGlvbkhhbmRsZXIpXSAobndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKICAgICAg
ICAgbndfY29ubmVjdGlvbl9zZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSk7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc3RhcnQoY29ubmVjdGlvbik7Ci0gICAg
ICAgIGNvbm5lY3Rpb25IYW5kbGVyKGNvbm5lY3Rpb24pOworICAgICAgICBjb25uZWN0aW9uSGFu
ZGxlcihDb25uZWN0aW9uKGNvbm5lY3Rpb24pKTsKICAgICB9KS5nZXQoKSk7CiAgICAgc3RhcnRM
aXN0ZW5pbmcobV9saXN0ZW5lci5nZXQoKSk7CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGlj
IFN0cmluZyBzdGF0dXNUZXh0KHVuc2lnbmVkIHN0YXR1cwogICAgIHJldHVybiB7IH07CiB9CiAK
LVJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRhdGFGcm9tU3RyaW5nKFN0cmluZyYmIHMpCitz
dGF0aWMgUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYg
cykKIHsKICAgICBhdXRvIGltcGwgPSBzLnJlbGVhc2VJbXBsKCk7CiAgICAgQVNTRVJUKGltcGwt
PmlzOEJpdCgpKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90
PiBkYXRhRnJvbVN0cmluCiAgICAgfSkpOwogfQogCi1WZWN0b3I8Y2hhcj4gbnVsbFRlcm1pbmF0
ZWRSZXF1ZXN0KGRpc3BhdGNoX2RhdGFfdCBjb250ZW50KQorc3RhdGljIFZlY3RvcjxjaGFyPiBu
dWxsVGVybWluYXRlZFJlcXVlc3QoZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQpCiB7CiAgICAgX19i
bG9jayBWZWN0b3I8Y2hhcj4gcmVxdWVzdDsKICAgICBkaXNwYXRjaF9kYXRhX2FwcGx5KGNvbnRl
bnQsIF5ib29sKGRpc3BhdGNoX2RhdGFfdCwgc2l6ZV90LCBjb25zdCB2b2lkKiBidWZmZXIsIHNp
emVfdCBzaXplKSB7CkBAIC0yMzIsMTkgKzIzMiwzNyBAQCB1aW50MTZfdCBIVFRQU2VydmVyOjpw
b3J0KCkgY29uc3QKICAgICByZXR1cm4gbndfbGlzdGVuZXJfZ2V0X3BvcnQobV9saXN0ZW5lci5n
ZXQoKSk7CiB9CiAKLU5TVVJMUmVxdWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdCgpIGNvbnN0CitO
U1VSTFJlcXVlc3QgKkhUVFBTZXJ2ZXI6OnJlcXVlc3QoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25z
dAogewogICAgIE5TU3RyaW5nICpmb3JtYXQ7CiAgICAgc3dpdGNoIChtX3Byb3RvY29sKSB7CiAg
ICAgY2FzZSBQcm90b2NvbDo6SHR0cDoKLSAgICAgICAgZm9ybWF0ID0gQCJodHRwOi8vMTI3LjAu
MC4xOiVkLyI7CisgICAgICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZCVzIjsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcm90b2NvbDo6SHR0cHM6CiAgICAgY2FzZSBQcm90b2Nv
bDo6SHR0cHNXaXRoTGVnYWN5VExTOgotICAgICAgICBmb3JtYXQgPSBAImh0dHBzOi8vMTI3LjAu
MC4xOiVkLyI7CisgICAgICAgIGZvcm1hdCA9IEAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQlcyI7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3Jt
YXQsIHBvcnQoKV1dXTsKKyAgICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIHBv
cnQoKSwgcGF0aC51dGY4KCkuZGF0YSgpXV1dOworfQorCit2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0Cit7CisgICAgbndfY29ubmVjdGlvbl9yZWNlaXZlKG1fY29ubmVjdGlvbi5n
ZXQoKSwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGRpc3Bh
dGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCwgYm9vbCwgbndfZXJyb3Jf
dCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb250ZW50KTsKKyAgICAgICAgQVNT
RVJUKCFlcnJvcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxUZXJtaW5hdGVkUmVx
dWVzdChjb250ZW50KSk7CisgICAgfSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNl
bmQoU3RyaW5nJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdAoreworICAgIG53X2Nvbm5lY3Rpb25fc2VuZChtX2Nvbm5lY3Rpb24u
Z2V0KCksIGRhdGFGcm9tU3RyaW5nKFdURk1vdmUobWVzc2FnZSkpLmdldCgpLCBOV19DT05ORUNU
SU9OX0RFRkFVTFRfTUVTU0FHRV9DT05URVhULCB0cnVlLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKG53X2Vycm9yX3QgZXJyb3Ip
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoIWVycm9yKTsKKyAgICAgICAgaWYgKGNvbXBsZXRp
b25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KS5nZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMyArMzIsNyBAQAogLSAoTlNTdHJpbmcgKil3YWl0Rm9yQWxlcnQ7CiAKIEBlbmQKKwor
QGludGVyZmFjZSBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQorLSAoTlNTdHJpbmcg
KilfdGVzdF93YWl0Rm9yQWxlcnQ7CitAZW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RVSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFVJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDMg
KzU5LDE3IEBAIC0gKE5TU3RyaW5nICopd2FpdEZvckFsZXJ0CiB9CiAKIEBlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLV2ViVmlldyAoVGVzdFVJRGVsZWdhdGVFeHRyYXMpCisKKy0gKE5TU3RyaW5n
ICopX3Rlc3Rfd2FpdEZvckFsZXJ0Cit7CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYuVUlEZWxlZ2F0
ZSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7
CisgICAgc2VsZi5VSURlbGVnYXRlID0gdWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICBOU1N0cmluZyAq
YWxlcnQgPSBbdWlEZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9
IG5pbDsKKyAgICByZXR1cm4gYWxlcnQ7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399983</attachid>
            <date>2020-05-21 15:17:52 -0700</date>
            <delta_ts>2020-05-21 15:39:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200521151749.patch</filename>
            <type>text/plain</type>
            <size>104616</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9hbGxvd0FsbFRoaXJkUGFydHlDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbG9hZHNGcm9tTmV0d29yayk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxvd0FsbFRo
aXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDUtMjAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBIaWRlIHBhc3N3b3JkIGVjaG8gd2hlbiBzY3JlZW4gaXMgYmVpbmcgY2Fw
dHVyZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3NDQsNiArNDc0
NCw3IEBACiAJCURFQ0E4MDZCMUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjk4LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFQ0E3RkNE
MUY5RkU5OTUwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjk4LmNwcCAqLzsgfTsKIAkJREVDQTgw
NkMxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyOTkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREVDQTdGREExRjlGRTlBMjAwRTNCNjYx
IC8qIFVuaWZpZWRTb3VyY2UyOTkuY3BwICovOyB9OwogCQlERUNBODA2RDFGOUZFRDZBMDBFM0I2
NjEgLyogVW5pZmllZFNvdXJjZTMwMC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBERUNBN0ZCQjFGOUZFOTgzMDBFM0I2NjEgLyogVW5pZmllZFNvdXJj
ZTMwMC5jcHAgKi87IH07CisJCURGMTlFMkFDMjQ3NzJCQzEwMDdCREFDQiAvKiBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREYxOUUyQUEyNDc3MjlBNjAwN0JEQUNCIC8qIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY5QUZENzIxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGOUFGRDcwMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggKi87IH07CiAJCURGOUFGRDczMTNGQzMxRDgwMDE1
RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY5QUZENzExM0ZDMzFEODAwMTVG
RUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gKi87IH07CiAJCUUw
RkVGMzcyQjE3QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTBGRUYzNzFCMTdDNTNFQUMxQzFGQkVFIC8q
IEV2ZW50U291cmNlLmggKi87IH07CkBAIC0xNTA4NCw2ICsxNTA4NSw3IEBACiAJCURFQ0E3RkYz
MUY5RkU5QjgwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjg5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UyODkuY3BwOyBwYXRoID0gIkRlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyODkuY3BwIjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJREVDQTdGRjQxRjlGRTlCOTAw
RTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNTUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTI1NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTI1NS5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlERUNBN0ZGNTFGOUZFOUJBMDBFM0I2NjEgLyog
VW5pZmllZFNvdXJjZTI1Ni5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBVbmlmaWVkU291cmNlMjU2LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJDb3JlL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMjU2LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCURGMTlFMkFBMjQ3NzI5QTYwMDdCREFDQiAvKiBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlERjdFOUEyOTRDN0FBQ0UwQUQ4OUIzREQgLyogTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjlBRkQ3
MDEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGOUFGRDcxMTNG
QzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzgw
LDYgKzIwNzgyLDcgQEAKIAkJCQk1MTRDNzY2QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCAqLywKIAkJCQlDRTdBNkMyNzIwODUzN0UyMDBGQTJCNDYgLyogU2FtZVNp
dGVJbmZvLmNwcCAqLywKIAkJCQlDRTdBNkMyNjIwODUzN0UyMDBGQTJCNDYgLyogU2FtZVNpdGVJ
bmZvLmggKi8sCisJCQkJREYxOUUyQUEyNDc3MjlBNjAwN0JEQUNCIC8qIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggKi8sCiAJCQkJNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi8sCiAJCQkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5jcHAgKi8sCiAJCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovLApAQCAtMzI5MjQsNiArMzI5MjcsNyBAQAog
CQkJCTFBNEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMyNzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGlt
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMTlFMkFDMjQ3NzJCQzEwMDdCREFDQiAvKiBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM2
MkU4QzEyMENFRjlDQjAwMjQ1ODg2IC8qIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVM
YXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTExRTA2N0VFMUU2MjQ2RTUwMDE2MkQxNiAvKiBT
aW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNhbWVT
aXRlSW5mby5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKQEAgLTQxLDYg
KzQyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50LnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKCk7CisgICAgcmV0dXJuIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOjpObzsKK30KKwogUmVmPENvb2tpZUphcj4gQ29va2llSmFyOjpjcmVhdGUoUmVmPFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXI+JiYgc3RvcmFnZVNlc3Npb25Qcm92aWRlcikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVKYXIoV1RGTW92ZShzdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyKSkpOwpAQCAtODAsNyArODgsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3Vt
ZW50JiBkb2N1CiAKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQ7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9u
KCkpCi0gICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAg
ICAgIHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcywgc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcoZG9jdW1lbnQpKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0xMTQsNyArMTIyLDcgQEAgdm9pZCBDb29raWVKYXI6OnNl
dENvb2tpZXMoRG9jdW1lbnQmIGRvYwogICAgIH0KIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICBzZXNz
aW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBz
YW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
OjpZZXMsIGNvb2tpZVN0cmluZyk7CisgICAgICAgIHNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9N
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCks
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6OlllcywgY29va2llU3RyaW5nLCBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhkb2N1bWVudCkpOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xMzEsNyArMTM5LDcgQEAgYm9v
bCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvYwogc3RkOjpwYWlyPFN0cmluZywg
U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9z
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7Ci0gICAgICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZpcnN0
LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVDb29r
aWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQogCkBAIC0xNjQsNyArMTcyLDcgQEAgYm9vbCBDb29r
aWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdQogICAgIH0KIAogICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQotICAg
ICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
U2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpOworICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0
UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8o
ZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGRvY3VtZW50KSwgY29va2llcyk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCiAgICAgLCBtX2xv
YWRzU3VicmVzb3VyY2VzKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQogICAg
ICwgbV9sb2Fkc0Zyb21OZXR3b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmsp
CisgICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1
cmF0aW9uLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIHVwZGF0
ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAy
NjE5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSAi
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNp
bmNsdWRlICJTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oIgogI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCkBAIC03MjEsNiArNzIyLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNTdWJyZXNv
dXJjZXM7IH0KICAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2xv
YWRzRnJvbU5ldHdvcms7IH0KKyAgICBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7IH0KIAogICAgIGJvb2wgaXNMb3dQ
b3dlck1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvdHRsaW5nUmVhc29ucy5jb250
YWlucyhUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUpOyB9CiAgICAgYm9vbCBjYW5VcGRh
dGVUaHJvdHRsaW5nUmVhc29uKFRocm90dGxpbmdSZWFzb24gcmVhc29uKSBjb25zdCB7IHJldHVy
biAhbV90aHJvdHRsaW5nUmVhc29uc092ZXJyaWRlbkZvclRlc3RpbmcuY29udGFpbnMocmVhc29u
KTsgfQpAQCAtMTA0Nyw2ICsxMDQ5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmly
ZUV2ZW50cyB7IHRydWUgfTsKICAgICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07
CiAgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyB7IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIGJv
b2wgbV9oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBW
ZWN0b3I8c3RkOjpwYWlyPFJlZjxET01XcmFwcGVyV29ybGQ+LCBVbmlxdWVSZWY8VXNlclNjcmlw
dD4+PiBtX3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb247CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYxOTY2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzEsNiArMTMxLDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVl
IH07CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgdXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CisgICAgU2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgeyBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hl
VmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDcg
KzM0MCw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2wKIAogc3Rh
dGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0
LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCBy
ZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVT
ZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXNrSVRQOjpZZXMpLmZpcnN0OworICAgIHJldHVybiBz
ZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCks
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6
Ok5vLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc6Ok5vKS5maXJzdDsKIH0KIAogc3RhdGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAkocmV2aXNpb24gMjYxOTY2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTYgKzEwNCwxNiBAQCBib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6aGFzSGFkVXNlckluCiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eS5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7
CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBpZiAo
IW1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgcmV0dXJuIHNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3Qu
dXJsKCksIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpOwogfQogICAgIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNl
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxv
Y2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVz
b3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CisgICAgaWYgKHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID09IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nOjpZZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghbV9p
c1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhl
bXB0CiAKIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2Fj
aGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtX2NhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29va2llcyhyZXF1
ZXN0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpCisgICAgaWYgKG1fY2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZzo6Tm8pKQogICAgICAgICByZXR1cm4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJl
c291cmNlczsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgorI2luY2x1ZGUgIlNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgpAQCAtMTUwLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBIVFRQQ29v
a2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiwgU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwpAQCAtMTYwLDExICsxNjEsMTEg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldEFsbENvb2tp
ZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBnZXRDb29raWVzKGNvbnN0
IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFzQ29va2llcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2ll
PiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQ
LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5n
PiYgaG9zdG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNr
SVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0
IFN0cmluZyYgaG9zdCk7CkBAIC0xNzcsOCArMTc4LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nv
b2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25z
dCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tD
b29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVz
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0Zvcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxsQ29va2llc1RvU2FtZVNp
dGVTdHJpY3QoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwpAQCAtMjA2LDEwICsyMDcsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBlbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRl
SFRUUE9ubHksIEluY2x1ZGVIVFRQT25seSB9OwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBJbmNsdWRlSFRUUE9ubHlPck5vdCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9y
YWdlUmVmKSBjb25zdDsKICAgICBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29r
aWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJ
bmZvPiYsIE5TVVJMICopIGNvbnN0OwotICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lU
UCkgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgdm9pZCBzZXRIVFRQQ29va2ll
c0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAq
LCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mKSBjb25zdDsKICAg
ICB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNIVFRQQ29v
a2llICopIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFz
cyBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA6IGJvb2wgeyBObywgWWVzIH07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXRXaW4uY3BwCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tp
ZXMoQ0ZEaWN0aW8KICAgICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsK
ICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgYm9v
bCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JE
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBA
IC0yNDgsNyArMjQ4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZQogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9Owog
fQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgU2hvdWxkQXNrSVRQLCBib29sKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShm
cmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlCiAKIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxkUHJv
eHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhl
YWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8s
IGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZp
ZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0
ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhl
YWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc6Ok5vKTsKIH0KIAogSFRUUENvb2tpZUFjY2VwdFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZUFjY2VwdFBvbGljeSgpIGNvbnN0CkBAIC0yODAsNyArMjgwLDcgQEAgSFRUUENv
b2tpZUFjY2VwdFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIH0KIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJ
VFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAsIGJvb2ws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShm
cmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzQyLDEwICszNDIsMTAgQEAgc3RhdGljIFJldGFpblB0cjxOU0Fy
cmF5PiBmaWx0ZXJDb29raWVzKAogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLU5T
QXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAorTlNBcnJheSAq
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFz
a0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxk
QXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCiAgICAgICAg
IHJldHVybiBuaWw7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTM1NSwx
MyArMzU1LDEzIEBAIE5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0YKICAg
ICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBP
bmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9IGNv
b2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJ
VFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBpZiAoIVtjb29r
aWVzIGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVy
biBhIG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3Vs
ZCBjcmVhdGUgYmVsb3cuCiAKQEAgLTQxMSwyOSArNDExLDI5IEBAIHN0YXRpYyB2b2lkIGRlbGV0
ZUFsbEhUVFBDb29raWVzKENGSFRUUEMKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxs
Q29va2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0Zv
clNlc3Npb24oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
RG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAp
OworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3Vs
ZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJv
eHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5m
cmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJG
aWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVT
aXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwg
aGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94
eS5pbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRB
c2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0ciwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVt
b3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAoc2hvdWxkQXNrSVRQ
ID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJ
VFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAgICAgICAgcmV0
dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC00OTEsMTIgKzQ5MSwx
MiBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2VzCiAgICAgcmV0dXJu
IEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok5ldmVyOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRB
c2tJVFAgc2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2ll
cyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0Zv
clVSTChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91
bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNh
cGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCShyZXZpc2lvbiAy
NjE5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgQ29v
a2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29vawogICAgIHJldHVybiBtX2Nvb2tp
ZURhdGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIGJvb2wpIGNvbnN0CiB7CiAgICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29r
aWUoZmlyc3RQYXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsK
IH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9y
YWdlU2VzCiAgICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgYm9vbCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91
dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNz
aW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKQEAgLTE5Niw3ICsx
OTYsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lU
UCwgYm9vbCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgYXV0byBj
b29raWVzID0gY29va2llRGF0YWJhc2UoKS5zZWFyY2hDb29raWVzKGZpcnN0UGFydHksIHVybCwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAgICAgaWYgKCFjb29r
aWVzKQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmbHVz
aENvb2tpZVMKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8gdXNlLgogfQog
Ci1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkg
Y29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNr
SVRQLCBib29sKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmaWx0ZXIgc2Vj
dXJlIGNvb2tpZXMgb3V0IGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCiAgICAgcmV0dXJuIHsg
Y29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgdHJ1ZSksIGZhbHNlIH07
CkBAIC0yMTksNyArMjE5LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZp
ZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQ
cm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVhZGVyRmllbGRQcm94eS5p
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAgIHJldHVybiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhl
YWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVy
RmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVhZGVyRmllbGRQ
cm94eS5pbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRQcm94eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5n
cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUMKICAgICAgICAgYWRkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycyhyZXF1
ZXN0KTsKIAogICAgICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1
ZGVTZWN1cmVDb29raWVzOjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0g
ZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRl
KHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzKS5maXJzdDsKKyAgICAgICAgU3Ry
aW5nIGNvb2tpZUhlYWRlckZpZWxkID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6
WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pLmZpcnN0OwogICAg
ICAgICBpZiAoIWNvb2tpZUhlYWRlckZpZWxkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVl
c3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZUhlYWRl
ckZpZWxkKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCwx
MCArMjY4LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cygKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyByZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZ
ZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlE
KSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJs
b2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKQEAgLTQ3MywxMiArNDczLDEyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpoYXNDb29raWVzKGMKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAK
LWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJhd0Nv
b2tpZXMuY2xlYXIoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91bGRB
c2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFy
dHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykp
CiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CkBAIC01MTUsMTAgKzUxNSwxMCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3
Q29va2llCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGJvb2wgZm9ySFRUUEhlYWRlciwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRB
c2tJVFApCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBib29sIGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAg
PT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQ
YXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hv
dWxkQXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAg
ICAgICAgcmV0dXJuIHsgeyB9LCBmYWxzZSB9OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CkBAIC01NzIsMjAgKzU3MiwyMCBAQCBzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llc0ZvCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIu
Z2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
cmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tp
ZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5mbywgZnJhbWVJ
RCwgcGFnZUlELCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7Cisg
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVT
aXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNo
b3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25z
dAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8gU2VjdXJlIGNvb2tpZXMgd2lsbCBzdGls
bCBvbmx5IGJlIGluY2x1ZGVkIGlmIHVybCdzIHByb3RvY29sIGlzIGh0dHBzLgotICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8s
IGZyYW1lSUQsIHBhZ2VJRCwgdHJ1ZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lU
UCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmws
IHNhbWVTaXRlSW5mbywgZnJhbWVJRCwgcGFnZUlELCB0cnVlLCBpbmNsdWRlU2VjdXJlQ29va2ll
cywgc2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiB9CiAKIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhl
YWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5z
YW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1l
SUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQ
cm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5
LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc6Ok5vKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZs
dXNoQ29va2llU3RvcmUoKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjAyNikKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjAt
MDUtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBBZGQgU1BJIHRvIHVuYmxvY2sgdGhpcmQgcGFydHkgY29va2llcyBmcm9tIFdLV2ViVmll
d3Mgd2l0aCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR1cm5lZCBvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMDU4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDU5NTUzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHZhbHVlIG1ha2VzIE5ldHdvcmtEYXRhVGFza0NvY29hOjpibG9ja0Nv
b2tpZXMoKSBub3QgZG8gYW55dGhpbmcgZm9yIGNlcnRhaW4gV0tXZWJWaWV3cy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6YmxvY2tDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrQ29jb2E6OnVuYmxvY2tDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldEFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXMp
OgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWxsb3dBbGxUaGlyZFBhcnR5Q29v
a2llcyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9hbGxvd0Fs
bFRoaXJkUGFydHlDb29raWVzXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3NldEFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNy
ZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWRkUGFyYW1ldGVyc1NoYXJlZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorCiAyMDIwLTA1LTIxICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNj
ZXNzIEFQSTogQWxsb3cgY29uZmlndXJhYmxlIHN0b3JhZ2UgYWNjZXNzIHNjb3BlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyMywxMiArNjIzLDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlZ2kKICAgICAgICAgbV9zY2hlbWVSZWdpc3RyeS0+cmVnaXN0ZXJVUkxT
Y2hlbWVBc0NPUlNFbmFibGVkKFdURk1vdmUoc2NoZW1lKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5l
dHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSwgZmFsc2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29r
aWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIGF1dG8gcmVzdWx0ID0g
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRB
c2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Np
b24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC02MzgsMTIgKzYzOCwxMiBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29rCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICAgICBhdXRvKiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRD
b29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBzaG91bGRBc2tJVFAsIGNvb2tpZVN0cmluZyk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFAsIGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5m
b3JtYXRpb24oKSkKQEAgLTY1MiwyMiArNjUyLDIyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldEMKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9y
YWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFsc2Up
OwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwg
cmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAo
IW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gcmVzdWx0OwotICAgIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFAsIHJlc3VsdCk7CisgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIHJlc3VsdCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1
bHQpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYxOTY2
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsMTAgKzIwOCwxMCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbmc+
JiYgc2NoZW1lcyk7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7
Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6
OlNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5n
LCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywg
V2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBXZWJDb3JlOjpTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CiAgICAgdm9pZCBzZXRSYXdDb29raWUoY29u
c3QgV2ViQ29yZTo6Q29va2llJik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wg
T3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGVudW06Ym9vbCBP
cHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKQogCi0gICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9u
b3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wg
V2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU3RyaW5nIGNvb2tpZVN0cmluZykK
LSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJl
Q29va2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCisgICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29s
IFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2Vj
dXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmws
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBT
dHJpbmcgY29va2llU3RyaW5nLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCisg
ICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFN0cmluZyBj
b29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAg
ICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBl
bnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgZW51bTpib29sIFdl
YkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cykgU3luY2hyb25vdXMKICAgICBTZXRSYXdDb29raWUoc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBj
b29raWUpCiAgICAgRGVsZXRlQ29va2llKFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogICAg
IERvbUNvb2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hh
bmdlTm90aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5
bmNocm9ub3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDggQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcgogewogICAgIEFT
U0VSVCghcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNl
c3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0
ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmln
YXRpb25Gb3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJh
bWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIC8vIEZJWE1FOiBKdXN0
IHBhc3MgcGFyYW1ldGVycyB0byB0aGUgTmV0d29ya0RhdGFUYXNrQ29jb2EgY29uc3RydWN0b3Iu
CisgICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50
LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53
ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMu
Y29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5n
UG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJh
bWVOYXZpZ2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZy
YW1lLCBwYXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29y
a0RhdGFUYXNrU291cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0
LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGlj
eSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MTk2NikKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9h
ZGVyT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lE
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBuZWVkc0NlcnRpZmljYXRlSW5mbyB7IGZhbHNlIH07CiAgICAgYm9vbCBpc01haW5GcmFt
ZU5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9u
Rm9yQW55RnJhbWUgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgZmFs
c2UgfTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IGJsb2JGaWxlUmVmZXJlbmNlczsKICAgICBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0
T25seSB7IFByZWNvbm5lY3RPbmx5OjpObyB9OwogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0
eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDYgKzg2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwog
ICAgIGVuY29kZXIgPDwgbmVlZHNDZXJ0aWZpY2F0ZUluZm87CiAgICAgZW5jb2RlciA8PCBpc01h
aW5GcmFtZU5hdmlnYXRpb247CiAgICAgZW5jb2RlciA8PCBpc01haW5SZXNvdXJjZU5hdmlnYXRp
b25Gb3JBbnlGcmFtZTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nOwogICAgIGVuY29kZXIgPDwgbWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHNvdXJjZU9yaWdpbik7CkBAIC0xOTgsNiArMTk5
LDggQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IAogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11bUJ1ZmZlcmluZ1RpbWUpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE5NjYp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyArMTMyNiw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nv
b2tpZUluZm9ybWF0aW9uSW50ZXJuYWwKICAgICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNl
c3Npb24uc2Vzc2lvbklEKCkpKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXM7Ci0gICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6Olll
cywgY29va2llcykpCisgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24uZ2V0UmF3Q29va2ll
cyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRB
c2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vLCBjb29r
aWVzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBlc2NhcGVkVVJMID0gZXNjYXBlRm9y
SlNPTih1cmwuc3RyaW5nKCkpOwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZgogewogICAgIEFTU0VSVChzaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkp
KTsKIAotICAgIGlmIChuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAobmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKSkKICAgICAgICAgbG9n
QmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIGxhYmVsLCBsb2dnZWRPYmplY3Qs
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIHJl
ZmVycmVyLCBmcmFtZUlELCBwYWdlSUQsIGlkZW50aWZpZXIpOwogICAgIGVsc2UKICAgICAgICAg
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25uZWN0aW9uLCBsYWJlbCwgbG9nZ2VkT2Jq
ZWN0LCBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCByZWZlcnJlciwgZnJhbWVJRCwgcGFnZUlELCBpZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgJKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSAr
NDIsOSBAQCBzdHJ1Y3QgU2Vzc2lvbldyYXBwZXI7CiAKIGNsYXNzIE5ldHdvcmtEYXRhVGFza0Nv
Y29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtEYXRhVGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0
d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29s
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
UmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQorICAgIHN0YXRpYyBSZWY8
TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291
cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
PiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tD
b2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5n
U25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFBy
ZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJh
Y2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3Qs
IGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRT
bmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JB
bnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKTsKICAgICB9CiAKICAg
ICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsKQEAgLTczLDExICs3MywxMiBAQCBwdWJsaWM6CiAK
ICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVJRDsgfTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VJRDsgfTsKKyAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7IH0KIAogICAg
IFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5l
dHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVu
Y29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlG
cmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBO
ZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVO
YXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55
RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29y
ZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogCiAgICAgYm9vbCB0cnlQ
YXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlT
bmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25n
IE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZik7CkBAIC0xMDMsNiArMTA0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCB7IGZhbHNlIH07CisgICAgV2ViQ29y
ZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nOjpObyB9OwogfTsKIAogV2ViQ29yZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENy
ZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTk5LDEzICsxOTksMTQgQEAgc3RhdGljIGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5
c09uTG9nZwogICAgIHJldHVybiBzZXNzaW9uLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpOwogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNu
aWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2
aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK05ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNr
Q2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdp
dGhDcmVkZW50aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JN
YWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0
eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVl
c3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdh
dGlvbikKICAgICAsIG1fc2Vzc2lvbldyYXBwZXIobWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8TmV0
d29ya1Nlc3Npb25Db2NvYSY+KHNlc3Npb24pLnNlc3Npb25XcmFwcGVyRm9yVGFzayhyZXF1ZXN0
V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikpKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJ
RChwYWdlSUQpCiAgICAgLCBtX2lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
KGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCiAgICAgLCBt
X2lzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZChjb21wdXRlSXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KHNlc3Npb24pKQorICAgICwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICAgICBpZiAobV9zY2hlZHVs
ZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MCw3ICsy
NDEsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jCiAgICAgc2hv
dWxkQmxvY2tDb29raWVzID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzczsKICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc2Vzc2lvbi5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkg
ewogICAgICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2llcykKLSAgICAgICAgICAgIHNob3VsZEJs
b2NrQ29va2llcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKHJl
cXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMg
PSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFt
ZUlELCBwYWdlSUQsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogICAg
IH0KICNlbmRpZgogICAgIHJlc3RyaWN0UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChy
ZXF1ZXN0KTsKQEAgLTQwMyw3ICs0MDQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBp
ZiAoIW1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSkgewogICAgICAgICBp
ZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzCi0gICAgICAgICAgICB8fCAobV9zZXNzaW9uLT5u
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKSAmJiBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCkpKQor
ICAgICAgICAgICAgfHwgKG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgJiYgbV9z
ZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVl
c3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpKSkKICAgICAgICAgICAgIGJsb2NrQ29va2llcygpOwogICAgIH0gZWxzZSBpZiAobV9z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSAhPSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTo6RXBoZW1lcmFsU3RhdGVsZXNzICYmIG5lZWRzRmlyc3RQYXJ0eUNvb2tpZUJsb2NraW5nTGF0
Y2hNb2RlUXVpcmsocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXF1ZXN0LnVybCgp
LCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkKICAgICAgICAgdW5ibG9ja0Nvb2tpZXMoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTM2LDcgKzUzNiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c2Vzc2kKICAgICAgICAgYm9vbCBzaG91bGRJZ25vcmVIU1RTID0gZmFsc2U7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2Nv
YSA9IG5ldHdvcmtEYXRhVGFzay0+bmV0d29ya1Nlc3Npb24oKSkgewotICAgICAgICAgICAgc2hv
dWxkSWdub3JlSFNUUyA9IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0
KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bkNvY29hLT5zZXNzaW9uSUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3Jr
RGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQoKSk7CisgICAgICAg
ICAgICBzaG91bGRJZ25vcmVIU1RTID0gc2NoZW1lV2FzVXBncmFkZWREdWVUb0R5bmFtaWNIU1RT
KHJlcXVlc3QpICYmIHNlc3Npb25Db2NvYS0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lv
bihzZXNzaW9uQ29jb2EtPnNlc3Npb25JRCgpKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3Qs
IG5ldHdvcmtEYXRhVGFzay0+ZnJhbWVJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnBhZ2VJRCgpLCBu
ZXR3b3JrRGF0YVRhc2stPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkpOwog
ICAgICAgICAgICAgaWYgKHNob3VsZElnbm9yZUhTVFMpIHsKICAgICAgICAgICAgICAgICByZXF1
ZXN0ID0gZG93bmdyYWRlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
W3JlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0pOwpAQCAtNTcyLDcg
KzU3Miw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAg
ICAgYm9vbCBzaG91bGRJZ25vcmVIU1RTID0gZmFsc2U7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IG5ldHdvcmtE
YXRhVGFzay0+bmV0d29ya1Nlc3Npb24oKSkgewotICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNU
UyA9IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9u
Q29jb2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNz
aW9uSUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZy
YW1lSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBzaG91bGRJ
Z25vcmVIU1RTID0gc2NoZW1lV2FzVXBncmFkZWREdWVUb0R5bmFtaWNIU1RTKHJlcXVlc3QpICYm
IHNlc3Npb25Db2NvYS0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uQ29j
b2EtPnNlc3Npb25JRCgpKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG5ldHdvcmtEYXRh
VGFzay0+ZnJhbWVJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnBhZ2VJRCgpLCBuZXR3b3JrRGF0YVRh
c2stPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkpOwogICAgICAgICAgICAg
aWYgKHNob3VsZElnbm9yZUhTVFMpIHsKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gZG93bmdy
YWRlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoW3JlcXVlc3QuVVJM
LnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0pOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtZVNpdGVJbmZvLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00NDUsNyArNDQ2LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpyZXN0
YXJ0V2l0aENyZQogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjphcHBlbmRDb29raWVIZWFkZXIo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGF1dG8gaW5jbHVkZVNl
Y3VyZUNvb2tpZXMgPSByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRl
U2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwotICAgIGF1dG8g
Y29va2llSGVhZGVyRmllbGQgPSBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5j
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIFdlYkNvcmU6OlNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgp
LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUDo6WWVzKS5maXJzdDsKKyAgICBhdXRvIGNvb2tpZUhlYWRlckZpZWxkID0gbV9zZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpTYW1lU2l0ZUluZm86
OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKS5maXJzdDsKICAgICBpZiAoIWNv
b2tpZUhlYWRlckZpZWxkLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29va2llSGVhZGVyRmllbGQpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgpAQCAtMTU2LDcgKzE1Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
Y3JlYXRlUmVxdWVzdCgKICAgICBib29sIHNob3VsZEJsb2NrQ29va2llcyA9IHdhc0Jsb2NraW5n
Q29va2llcyA9PSBXYXNCbG9ja2luZ0Nvb2tpZXM6OlllcyA/IHRydWUgOiBtX3N0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID09IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxl
c3M7CiAgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICAgICAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkp
Ci0gICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PnNob3VsZEJsb2NrQ29va2llcyhtX2N1cnJlbnRSZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlE
KTsKKyAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+c2hvdWxkQmxvY2tDb29raWVzKG1fY3VycmVudFJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdl
SUQsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyk7CiAg
ICAgfQogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMpCiAgICAgICAgIHNvdXBfbWVzc2FnZV9k
aXNhYmxlX2ZlYXR1cmUoc291cE1lc3NhZ2UuZ2V0KCksIFNPVVBfVFlQRV9DT09LSUVfSkFSKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3
IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICAgICBlbmNvZGVy
IDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzczsKICAgICBlbmNvZGVyIDw8IG5lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczsKICAgICBlbmNvZGVyIDw8IGxpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnM7CisgICAgZW5jb2RlciA8PCBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZzsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBlbmNvZGVyIDw8IHRo
ZW1lTmFtZTsKQEAgLTQ4MCw2ICs0ODEsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy50aGVtZU5hbWUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNp
b24gMjYxOTY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnaW5hdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3Vt
ZW50cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0yMjEsNiArMjIyLDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkUmVuZGVyQ2Fu
dmFzSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJp
dmFjeVF1aXJrcyB7IGZhbHNlIH07CiAgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFdlYkNv
cmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIFN0cmluZyB0aGVtZU5hbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4NTIsNiAr
Nzg1Miw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBw
YXJhbWV0ZXJzLnNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCku
cmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxk
Q2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25m
aWd1cmF0aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwogICAgIHBhcmFt
ZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IG1fbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZygpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHBhcmFtZXRlcnMu
dGhlbWVOYW1lID0gcGFnZUNsaWVudCgpLnRoZW1lTmFtZSgpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZp
c2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIFJlZjxQYWdlQ29u
ZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb24KICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCiAgICAgY29weS0+bV9hcHBsaWNhdGlvbk1hbmlmZXN0ID0gdGhpcy0+bV9hcHBsaWNh
dGlvbk1hbmlmZXN0OwogI2VuZGlmCisgICAgY29weS0+bV9zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyA9IHRoaXMtPm1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVycykKICAg
ICAgICAgY29weS0+bV91cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUu
Y29weVJlZigpKTsKICAgICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1f
Y29yc0Rpc2FibGluZ1BhdHRlcm5zOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MTk2NikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJXZWJWaWV3Q2F0ZWdvcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTE1OSw2ICsx
NjAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21h
aW5zKCkgY29uc3QgeyByZXR1cm4gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
OyB9CiAgICAgdm9pZCBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKGJvb2wg
bGltaXRzKSB7IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IGxpbWl0czsg
fQogCisgICAgdm9pZCBzZXRTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhXZWJD
b3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB2YWx1ZSkgeyBtX3Nob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gdmFsdWU7IH0KKyAgICBXZWJDb3JlOjpT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmc7IH0KKyAgICAKIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKQEAgLTIwMiw2ICsyMDYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fbG9hZHNG
cm9tTmV0d29yayB7IHRydWUgfTsKICAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJv
dW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFdl
YkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24g
MjYxOTY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwyMyBAQCAtICh2
b2lkKV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOihCT09MCiAgICAgX3BhZ2VDb25maWd1cmF0
aW9uLT5zZXRJZ25vcmVzQXBwQm91bmREb21haW5zKGlnbm9yZXNBcHBCb3VuZERvbWFpbnMpOwog
fQogCistIChCT09MKV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZworeworICAg
IHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKCkgPT0gV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6
OlllczsKK30KKworLSAodm9pZClfc2V0U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc6KEJPT0wpcmVsYXgKK3sKKyAgICBib29sIGFsbG93ZWQgPSBXZWJDb3JlOjphcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoKSA9PSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIjsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgYWxsb3dlZCA9IGFsbG93ZWQgfHwgV2ViQ29yZTo6TWFj
QXBwbGljYXRpb246OmlzU2FmYXJpKCk7CisjZW5kaWYKKyAgICBpZiAoIWFsbG93ZWQpCisgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU09iamVjdE5vdEF2YWlsYWJsZUV4Y2VwdGlvbiBmb3Jt
YXQ6QCJfc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbWF5IG9ubHkgYmUgdXNl
ZCBieSBNYWMgU2FmYXJpLiJdOworCisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhyZWxheCA/IFdlYkNvcmU6OlNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpZZXMgOiBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZzo6Tm8pOworfQorCiAtIChOU1N0cmluZyAqKV9wcm9jZXNzRGlz
cGxheU5hbWUKIHsKICAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5wcm9jZXNzRGlzcGxh
eU5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lv
biAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDEwICsxMjUsOCBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRFZGl0YWJsZUltYWdlc0VuYWJsZWQ6KSBCT09MIF9lZGl0YWJs
ZUltYWdlc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFVuZG9NYW5hZ2VyQVBJRW5hYmxl
ZDopIEJPT0wgX3VuZG9NYW5hZ2VyQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjE1KSwgaW9zKDEzLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYlZp
ZXdDYXRlZ29yeTopIF9XS1dlYlZpZXdDYXRlZ29yeSBfd2ViVmlld0NhdGVnb3J5IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KLS0gKHZvaWQp
X3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KEJPT0wpaWdub3Jlc0FwcEJvdW5kRG9tYWlucyAg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0g
KEJPT0wpX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0SWdub3Jlc0FwcEJvdW5kRG9tYWluczopIEJPT0wgX2lnbm9yZXNBcHBCb3VuZERvbWFp
bnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nOikgQk9PTCBfc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByb2Nlc3NEaXNwbGF5TmFtZTopIE5TU3Ry
aW5nICpfcHJvY2Vzc0Rpc3BsYXlOYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9u
IDI2MTk2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDggKzI2OCwxMCBAQCBzdGF0aWMgdm9p
ZCBhZGRQYXJhbWV0ZXJzU2hhcmVkKGNvbnN0IEZyCiAKICAgICBwYXJhbWV0ZXJzLmlzSFRUUFNV
cGdyYWRlRW5hYmxlZCA9IGZyYW1lLT5zZXR0aW5ncygpLkhUVFBTVXBncmFkZUVuYWJsZWQoKTsK
IAotICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICBpZiAoYXV0byogcGFn
ZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgcGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VM
b2FkQ2xpZW50ID0gcGFnZS0+aGFzUmVzb3VyY2VMb2FkQ2xpZW50KCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBwYWdlLT5zaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpOworICAgIH0KIAogICAgIGlmIChhdXRvKiBv
d25lckVsZW1lbnQgPSBmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHBhcmVudEZyYW1lID0gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUu
Y3BwCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb29raWVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE0ICs1NywxNCBAQCBT
dHJpbmcgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNGb3JET00oY29uCiAgICAgICAgIGZvciAoYXV0
byYgY29va2llIDogY29va2llcykKICAgICAgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24o
KS5zZXRDb29raWUoY29va2llKTsKICAgICB9Ci0gICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNl
c3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJz
dDsKKyAgICByZXR1cm4gaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZXNGb3JET00oZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6Tm8sIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOjpObykuZmlyc3Q7CiB9CiAKLXZvaWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViQ29va2ll
Q2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpLnRvU3Ry
aW5nKCk7CiAgICAgaWYgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3Qp
KQotICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llc0Zyb21ET00oZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
OjpObywgY29va2llU3RyaW5nKTsKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNl
dENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpOwogfQogCiB2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRk
ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuaAkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CitlbnVtIGNs
YXNzIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIDogYm9vbDsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC00Miw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3Vw
cG9ydGVkKCk7CiAKICAgICBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZywgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpOwogCiAgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwogICAgIHZvaWQgY29va2llc0RlbGV0ZWQoY29u
c3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3Bw
CShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMSArNjksMTggQEAgc3RhdGlj
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKgogICAgIGlmIChmaXJzdFBhcnR5RG9t
YWluID09IHJlc291cmNlRG9tYWluKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9y
YWdlQWNjZXNzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChmcmFtZSAmJiBm
cmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3Mo
Zmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZnJhbWVMb2FkZXJDbGllbnQo
KS0+aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAg
ICAgICBpZiAocGFnZS0+aGFzUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWlu
LCByZXNvdXJjZURvbWFpbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKGF1dG8qIGNvcmVQYWdlID0gcGFnZS0+Y29yZVBhZ2UoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb3JlUGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmco
KSA9PSBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6WWVzKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CiAKICAgICAvLyBUaGUgV2ViQ29udGVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUg
ZW5vdWdoIGluZm9ybWF0aW9uIHRvIGRlYWwgd2l0aCBvdGhlciBwb2xpY2llcyB0aGFuIFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCBzbyB3ZSBoYXZlIHRvIGdvIHRvIHRoZSBOZXR3
b3JrUHJvY2VzcyBmb3IgYWxsCiAgICAgLy8gb3RoZXIgcG9saWNpZXMgYW5kIHRoZSByZXF1ZXN0
IG1heSBlbmQgdXAgZ2V0dGluZyBibG9ja2VkIG9uIE5ldHdvcmtQcm9jZXNzIHNpZGUuCkBAIC0x
MDMsNiArMTEwLDE5IEBAIGJvb2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUoV2UK
ICAgICByZXR1cm4gZnJhbWUuaXNNYWluRnJhbWUoKSB8fCBSZWdpc3RyYWJsZURvbWFpbiB7IGZp
cnN0UGFydHlGb3JDb29raWVzIH0gPT0gcmVzb3VyY2VEb21haW47CiB9CiAKK3N0YXRpYyBXZWJD
b3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyhjb25zdCBXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nOjpObzsKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZzo6Tm87CisgICAgYXV0byogY29yZVBhZ2UgPSBwYWdlLT5jb3JlUGFnZSgpOwor
ICAgIGlmICghY29yZVBhZ2UpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm87CisgICAgcmV0dXJuIGNvcmVQYWdlLT5zaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpOworfQorCiBTdHJpbmcgV2ViQ29va2llSmFy
Ojpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6
OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEyNSw3ICsx
NDUsNyBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvCiAKICAgICBT
dHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFs
c2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJp
bmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3
b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUp
KSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
OjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTE0OCw5ICsxNjgs
OSBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpECiAgICAgYXV0byBw
YWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKICAgICBpZiAoaXNFbGln
aWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
dXJsKSkKLSAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29r
aWVTdHJpbmcpOworICAgICAgICBtX2NhY2hlLnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJh
bWUpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQ
SW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJv
bURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJp
bmcsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSksIDApOwog
fQogCiB2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCkBAIC0xOTYsMTUgKzIxNiwx
NSBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgCiBzdGQ6OnBhaXI8
U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CiB7CiAgICAgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3Mg
PSBTaG91bGRBc2tJVFA6Ok5vOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMod2ViRnJhbWUsIGZpcnN0UGFy
dHksIHVybCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcykpCiAgICAgICAgIHJldHVybiB7
IH07CiAjZW5kaWYKIAogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVD
b29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQp
LCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyh3ZWJGcmFtZSkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVT
dHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9Owog
ICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8gV2ViQ29y
ZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNj
ZXNzZWQ6Ok5vIH07CiB9CkBAIC0yMjAsNyArMjQwLDcgQEAgYm9vbCBXZWJDb29raWVKYXI6Omdl
dFJhd0Nvb2tpZXMoY29uc3QgVwogCiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEID0gd2ViRnJhbWUgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6
Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHdlYkZyYW1l
ICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPnBhZ2UoKS0+aWRl
bnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMo
ZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5
KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIHNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjYxOTY2
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1MCw2ICs1NTAsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0
VW50aWxOb3RpZmljYXRpb24gPSBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGls
Tm90aWZpY2F0aW9uOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzID0g
cGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fk
c0Zyb21OZXR3b3JrID0gcGFyYW1ldGVycy5sb2Fkc0Zyb21OZXR3b3JrOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gcGFyYW1ldGVy
cy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsKIAogICAgIGlmICghcGFyYW1l
dGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCiAgICAgICAgIENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIwMTgpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0y
MSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBTUEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3cyB3
aXRoIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYwNTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEkgYWxzbyBhZGQgX3Rlc3Rfd2FpdEZvckFsZXJ0IHRvIG1ha2UgdGVzdHMgbGVzcyB2
ZXJib3NlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmRhdGFGcm9tU3RyaW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om51bGxUZXJt
aW5hdGVkUmVxdWVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXF1
ZXN0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnJlY2VpdmUg
Y29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6c2VuZCBjb25zdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdKToKKwogMjAyMC0wNS0yMSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFttYWNPU10gVGVzdFdl
YktpdEFQSS5XZWJLaXQuSFRUUFJlZmVyZXIgaXMgYSBmbGFreSBmYWlsdXJlCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHJldmlzaW9u
IDI2MjAxOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHku
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MiwzICsxODIsOTcgQEAgVEVTVChXZWJLaXQsIFNlY3Vy
ZVByb3h5Q29ubmVjdGlvbikKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlm
IC8vIEhBVkUoU1NMKQorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdCwgUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpCit7CisgICAgYXV0byBydW5UZXN0ID0gW10gKGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpIHsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rp
b25Db3VudCA9IDAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXSAoQ29ubmVj
dGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICsrY29ubmVjdGlvbkNvdW50
OworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb24s
IGNvbm5lY3Rpb25Db3VudCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmddIChW
ZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJlcGx5Owor
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJvZHkgPQorICAgICAgICAgICAgICAgICI8c2Ny
aXB0PiIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICInaHR0cDovL3dlYmtpdC5vcmcvcGF0aDMnLCIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ7Y3JlZGVudGlhbHM6J2luY2x1ZGUnfSIKKyAgICAgICAgICAgICAgICAgICAgIikudGhlbigo
KT0+eyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGVydCgnZmV0Y2hlZCcpIgorICAgICAg
ICAgICAgICAgICAgICAifSkuY2F0Y2goKGUpPT57IgorICAgICAgICAgICAgICAgICAgICAgICAg
ImFsZXJ0KGUpIgorICAgICAgICAgICAgICAgICAgICAifSkiCisgICAgICAgICAgICAgICAgIjwv
c2NyaXB0PiI7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uQ291bnQpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUo
c3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93ZWJraXQub3JnL3BhdGgxIEhUVFAv
MS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPSBtYWtlU3RyaW5nKAorICAg
ICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6ICIsIHN0cmxlbihib2R5KSwgIlxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiU2V0LUNvb2tpZTogYT1iXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiXHJcbiIsIGJvZHkKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMzogewor
ICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJH
RVQgaHR0cDovL2V4YW1wbGUuY29tL3BhdGgyIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVwbHkgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgIkhU
VFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBl
OiB0ZXh0L2h0bWxcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3Ro
OiAiLCBzdHJsZW4oYm9keSksICJcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5l
Y3Rpb246IGNsb3NlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJcclxuIiwgYm9keQor
ICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGNh
c2UgNDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Db3VudCA9PSAyIHx8IHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgICAgICAgICAgICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2llOiBhPWJcclxuIikp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2llOiBhPWJcclxuIikpOworICAg
ICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJHRVQg
aHR0cDovL3dlYmtpdC5vcmcvcGF0aDMgSFRUUC8xLjFcclxuIikpOworICAgICAgICAgICAgICAg
ICAgICByZXBseSA9CisgICAgICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8v
ZXhhbXBsZS5jb21cclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkFjY2Vzcy1Db250cm9s
LUFsbG93LUNyZWRlbnRpYWxzOiB0cnVlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJD
b25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiI7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXBseSkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8gc3RvcmVDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3N0b3JlQ29uZmlndXJhdGlv
biBzZXRQcm94eUNvbmZpZ3VyYXRpb246QHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDRlN0
cmVhbVByb3BlcnR5SFRUUFByb3h5SG9zdDogQCIxMjcuMC4wLjEiLAorICAgICAgICAgICAgKE5T
U3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlQb3J0OiBAKHNlcnZlci5wb3J0KCkp
CisgICAgICAgIH1dOworICAgICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldEFsbG93c1NlcnZl
clByZWNvbm5lY3Q6Tk9dOworICAgICAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOllFU107CisgICAgICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAgICBbdmlld0NvbmZpZ3Vy
YXRpb24gX3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOnNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXTsKKyAgICAgICAgW3ZpZXdDb25maWd1cmF0aW9uIHNl
dFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisK
KyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnL3BhdGgxIl1dXTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRj
aGVkIik7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
MiJdXV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxl
cnRdLCAiZmV0Y2hlZCIpOworICAgIH07CisgICAgcnVuVGVzdCh0cnVlKTsKKyAgICBydW5UZXN0
KGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8g
SEFWRShORVRXT1JLX0ZSQU1FV09SSykKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFVJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RVSURlbGVnYXRlLmgJKHJldmlzaW9uIDI2MTk2NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMyArMzIsNyBA
QAogLSAoTlNTdHJpbmcgKil3YWl0Rm9yQWxlcnQ7CiAKIEBlbmQKKworQGludGVyZmFjZSBXS1dl
YlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQorLSAoTlNTdHJpbmcgKilfdGVzdF93YWl0Rm9y
QWxlcnQ7CitAZW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVs
ZWdhdGUubW0JKHJldmlzaW9uIDI2MTk2NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFVJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDMgKzU5LDE3IEBAIC0gKE5T
U3RyaW5nICopd2FpdEZvckFsZXJ0CiB9CiAKIEBlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2Vi
VmlldyAoVGVzdFVJRGVsZWdhdGVFeHRyYXMpCisKKy0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZv
ckFsZXJ0Cit7CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYuVUlEZWxlZ2F0ZSk7CisgICAgYXV0byB1
aURlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgc2VsZi5VSURl
bGVnYXRlID0gdWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICBOU1N0cmluZyAqYWxlcnQgPSBbdWlEZWxl
Z2F0ZSB3YWl0Rm9yQWxlcnRdOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IG5pbDsKKyAgICByZXR1
cm4gYWxlcnQ7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399989</attachid>
            <date>2020-05-21 15:39:37 -0700</date>
            <delta_ts>2020-05-21 16:14:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200521153936.patch</filename>
            <type>text/plain</type>
            <size>107286</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0Nvb2tp
ZUphci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZXMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpnZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9zaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyk6CisgICAgICAgIChXZWJDb3JlOjptX2xvYWRzRnJvbU5ldHdvcmsp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91
bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjptYXhBZ2VDYWNoZUNhcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Nob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
RnJvbURPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpnZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUN1cmxSZXF1ZXN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzRm9yU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisKIDIwMjAtMDUtMjEgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHJhcmUgY3Jhc2ggaW4g
VGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcigpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3NDUsNiArNDc0NSw3IEBACiAJCURFQ0E4MDZC
MUY5RkVENkEwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjk4LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFQ0E3RkNEMUY5RkU5OTUwMEUzQjY2MSAv
KiBVbmlmaWVkU291cmNlMjk4LmNwcCAqLzsgfTsKIAkJREVDQTgwNkMxRjlGRUQ2QTAwRTNCNjYx
IC8qIFVuaWZpZWRTb3VyY2UyOTkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREVDQTdGREExRjlGRTlBMjAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2Uy
OTkuY3BwICovOyB9OwogCQlERUNBODA2RDFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJj
ZTMwMC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
RUNBN0ZCQjFGOUZFOTgzMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTMwMC5jcHAgKi87IH07CisJ
CURGMTlFMkFDMjQ3NzJCQzEwMDdCREFDQiAvKiBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REYxOUUyQUEyNDc3MjlBNjAwN0JEQUNCIC8qIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJREY5QUZENzIxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERGOUFGRDcwMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmggKi87IH07CiAJCURGOUFGRDczMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREY5QUZENzExM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gKi87IH07CiAJCUUwRkVGMzcyQjE3QzUzRUFDMUMx
RkJFRSAvKiBFdmVudFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTBGRUYzNzFCMTdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmggKi87
IH07CkBAIC0xNTA4NSw2ICsxNTA4Niw3IEBACiAJCURFQ0E3RkYzMUY5RkU5QjgwMEUzQjY2MSAv
KiBVbmlmaWVkU291cmNlMjg5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2UyODkuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyODkuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJREVDQTdGRjQxRjlGRTlCOTAwRTNCNjYxIC8qIFVuaWZpZWRT
b3VyY2UyNTUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmll
ZFNvdXJjZTI1NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS91bmlmaWVkLXNv
dXJjZXMvVW5pZmllZFNvdXJjZTI1NS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQlERUNBN0ZGNTFGOUZFOUJBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1Ni5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMjU2
LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJDb3JlL3VuaWZpZWQtc291cmNlcy9Vbmlm
aWVkU291cmNlMjU2LmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CURGMTlFMkFBMjQ3NzI5QTYwMDdCREFDQiAvKiBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
RjdFOUEyOTRDN0FBQ0UwQUQ4OUIzREQgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjlBRkQ3MDEzRkMzMUQ4MDAxNUZFQjcg
LyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGOUFGRDcxMTNGQzMxRDgwMDE1RkVCNyAvKiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzgxLDYgKzIwNzgzLDcgQEAKIAkJ
CQk1MTRDNzY2QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuaCAqLywK
IAkJCQlDRTdBNkMyNzIwODUzN0UyMDBGQTJCNDYgLyogU2FtZVNpdGVJbmZvLmNwcCAqLywKIAkJ
CQlDRTdBNkMyNjIwODUzN0UyMDBGQTJCNDYgLyogU2FtZVNpdGVJbmZvLmggKi8sCisJCQkJREYx
OUUyQUEyNDc3MjlBNjAwN0JEQUNCIC8qIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nLmggKi8sCiAJCQkJNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yLmggKi8sCiAJCQkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5jcHAgKi8sCiAJCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZS5oICovLApAQCAtMzI5MjYsNiArMzI5MjksNyBAQAogCQkJCTFBNEE5NTRFMEI0RURD
Q0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNERGQUQw
MUY3REFFNUQwMEMyNzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOUVBMzA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCURGMTlFMkFDMjQ3NzJCQzEwMDdCREFDQiAvKiBTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM2MkU4QzEyMENFRjlDQjAwMjQ1
ODg2IC8qIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTExRTA2N0VFMUU2MjQ2RTUwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tp
ZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5j
cHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSFRUUENvb2tp
ZUFjY2VwdFBvbGljeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKQEAgLTQxLDYgKzQyLDEzIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkKK3sKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIHBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7Cisg
ICAgcmV0dXJuIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObzsKK30KKwog
UmVmPENvb2tpZUphcj4gQ29va2llSmFyOjpjcmVhdGUoUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI+JiYgc3RvcmFnZVNlc3Npb25Qcm92aWRlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb29raWVKYXIoV1RGTW92ZShzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSkpOwpAQCAtODAsNyAr
ODgsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1CiAKICAgICBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQ7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBt
X3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJlc3Vs
dCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgICAgIHJlc3VsdCA9IHNlc3Np
b24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFA6Olllcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoZG9jdW1lbnQpKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
CkBAIC0xMTQsNyArMTIyLDcgQEAgdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9jdW1lbnQm
IGRvYwogICAgIH0KIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJv
bURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1l
bnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZVN0cmlu
Zyk7CisgICAgICAgIHNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBTaG91bGRBc2tJVFA6OlllcywgY29va2llU3RyaW5nLCBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyhkb2N1bWVudCkpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CkBAIC0xMzEsNyArMTM5LDcgQEAgYm9vbCBDb29raWVKYXI6OmNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvYwogc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vz
c2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7Ci0gICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc6Ok5vKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZpcnN0LCByZXN1bHQuc2Vjb25kID8g
U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07
CiAgICAgfQogCkBAIC0xNjQsNyArMTcyLDcgQEAgYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tp
ZXMoY29uc3QgRG9jdQogICAgIH0KIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gc2Vzc2lv
bi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMs
IGNvb2tpZXMpOworICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKGRvY3VtZW50KSwgY29va2llcyk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9u
IDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5OCw2ICsyOTgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCiAgICAgLCBtX2xvYWRzU3VicmVzb3VyY2VzKHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzKQogICAgICwgbV9sb2Fkc0Zyb21OZXR3
b3JrKHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJvbU5ldHdvcmspCisgICAgLCBtX3Nob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9uLnNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0
YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRlICJTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uLmgiCkBAIC03MjEsNiArNzIyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBsb2Fkc1N1YnJl
c291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNTdWJyZXNvdXJjZXM7IH0KICAgICBib29s
IGxvYWRzRnJvbU5ldHdvcmsoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7IH0K
KyAgICBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmc7IH0KIAogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVh
c29uOjpMb3dQb3dlck1vZGUpOyB9CiAgICAgYm9vbCBjYW5VcGRhdGVUaHJvdHRsaW5nUmVhc29u
KFRocm90dGxpbmdSZWFzb24gcmVhc29uKSBjb25zdCB7IHJldHVybiAhbV90aHJvdHRsaW5nUmVh
c29uc092ZXJyaWRlbkZvclRlc3RpbmcuY29udGFpbnMocmVhc29uKTsgfQpAQCAtMTA0Nyw2ICsx
MDQ5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmlyZUV2ZW50cyB7IHRydWUgfTsK
ICAgICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRz
RnJvbU5ldHdvcmsgeyB0cnVlIH07CisgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogICAgIGJvb2wgbV9oYXNCZWVuTm90aWZp
ZWRUb0luamVjdFVzZXJTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxET01XcmFwcGVyV29ybGQ+LCBVbmlxdWVSZWY8VXNlclNjcmlwdD4+PiBtX3VzZXJTY3JpcHRz
QXdhaXRpbmdOb3RpZmljYXRpb247CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBsb2Fk
c0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24geyB0cnVlIH07CisgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAJKHJl
dmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVW
YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDcgKzM0MCw3IEBAIENhY2hlQ29u
dHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2wKIAogc3RhdGljIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc2Vzc2lv
bi5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIp
ID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObywg
U2hvdWxkQXNrSVRQOjpZZXMpLmZpcnN0OworICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNp
dGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2Vj
dXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6
OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKS5maXJzdDsKIH0K
IAogc3RhdGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVKYXIqIGNvb2tpZUphciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsMTYgKzEwNCwxNiBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzSGFkVXNl
ckluCiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFz
Rmlyc3RQYXJ0eS5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBpZiAoIW1faXNSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3Qu
dXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgcmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhy
ZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogfQogICAgIAotYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CisgICAgaWYgKHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nID09IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpZZXMp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghbV9pc1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1OCw3ICsxNTgsNyBA
QCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0CiAKIE9wdGlvbmFsPFNl
Y29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFs
ZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCkpCisgICAgaWYgKG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pKQogICAgICAg
ICByZXR1cm4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlczsKICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyNjIwMzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRnJhbWVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3Ry
YWJsZURvbWFpbi5oIgorI2luY2x1ZGUgIlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMTUwLDcgKzE1MSw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBIVFRQQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50
VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAs
IGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGVsZXRlQWxsQ29va2llcygpOwpAQCAtMTYwLDExICsxNjEsMTEgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldEFsbENvb2tpZXMoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8Q29va2llPiBnZXRDb29raWVzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFzQ29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRl
U2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3RvcjxDb29raWU+IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CkBA
IC0xNzcsOCArMTc4LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0J1dEtlZXBGaXJz
dFBhcnR5Q29va2llc0Zvcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxsQ29va2llc1RvU2FtZVNpdGVTdHJpY3QoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA2LDEw
ICsyMDcsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBl
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9OwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNs
dWRlSFRUUE9ubHlPck5vdCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCA9IFNo
b3VsZEFza0lUUDo6WWVzKSBjb25zdDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAg
ICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmKSBjb25zdDsKICAg
ICBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VS
TCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNv
bnN0OwotICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCkgY29uc3Q7CisgICAgTlNB
cnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykgY29uc3Q7CiAgICAgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDb29r
aWVTdG9yYWdlUmVmLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqLCBOU1VSTCAqbWFpbkRvY3Vt
ZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZUhUVFBD
b29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICopIGNvbnN0OwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Nob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyA6IGJvb2wgeyBObywgWWVzIH07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCShy
ZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcg
KzE5Nyw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW8KICAgICBy
ZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yMzMsNyArMjMzLDcg
QEAgc3RhdGljIGJvb2wgY29udGFpbnNTZWN1cmVDb29raWVzKENGQXJyYQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTI0OCw3ICsyNDgs
NyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlCiAgICAgcmV0dXJu
IHsgY29va2llU3RyaW5nLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewog
ICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAg
LTI2Myw3ICsyNjMsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNl
CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJv
eHkmIGhlYWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQ
cm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5
LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVy
RmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVs
ZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5
LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsKIH0KIAogSFRUUENvb2tpZUFjY2VwdFBvbGljeSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZUFjY2VwdFBvbGljeSgpIGNvbnN0CkBAIC0yODAs
NyArMjgwLDcgQEAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAg
IH0KIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAor
Ym9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBT
aG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM0MiwxMCArMzQyLDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmls
dGVyQ29va2llcygKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi1OU0FycmF5ICpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKK05TQXJyYXkgKk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0g
U2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwg
ZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6
WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4g
bmlsOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC0zNTUsMTMgKzM1NSwx
MyBAQCBOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGCiAgICAgcmV0dXJu
IGh0dHBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2Ft
ZVNpdGVJbmZvLCB1cmwpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90
IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewog
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9y
VVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3Vs
ZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAgICAgaWYgKCFbY29va2llcyBjb3Vu
dF0pCiAgICAgICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OyAvLyBSZXR1cm4gYSBudWxs
IHN0cmluZywgbm90IGFuIGVtcHR5IG9uZSB0aGF0IFN0cmluZ0J1aWxkZXIgd291bGQgY3JlYXRl
IGJlbG93LgogCkBAIC00MTEsMjkgKzQxMSwyOSBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxIVFRQ
Q29va2llcyhDRkhUVFBDCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMo
Y29va2llU3RvcmFnZSk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lU
UCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5j
bHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICBy
ZXR1cm4gY29va2llc0ZvclNlc3Npb24oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBzaG91bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0K
IAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAp
OworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBzaG91bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsK
IH0KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVT
aXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwg
aGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94
eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhl
YWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8s
IGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZp
ZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZzo6Tm8pOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0Cit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91
bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMg
JiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCiAgICAgICAgIHJldHVybjsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNDkxLDEyICs0OTEsMTIgQEAgSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiBIVFRQQ29v
a2llQWNjZXB0UG9saWN5OjpOZXZlcjsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29r
aWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQ
LCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAgICAgTlNVSW50ZWdlciBj
b3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShj
b3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAkocmV2aXNpb24gMjYyMDMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIENvb2tpZUphckRC
JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2sKICAgICByZXR1cm4gbV9jb29raWVEYXRhYmFz
ZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICBj
b29raWVEYXRhYmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVK
YXJEQjo6U291cmNlOjpTY3JpcHQpOwogfQpAQCAtMTI3LDcgKzEyNyw3IEBAIEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgTmV0d29ya1N0b3JhZ2VTZXMKICAgICByZXR1cm4gSFRUUENvb2tpZUFjY2Vw
dFBvbGljeTo6T25seUZyb21NYWluRG9jdW1lbnREb21haW47CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QK
IHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBp
ZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKQEAgLTE5Niw3ICsxOTYs
NyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4sIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAogewogICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2Vh
cmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQpOwogICAgIGlmICghY29va2llcykKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3IgV2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBz
ZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KICAgICByZXR1cm4g
eyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCB0cnVlKSwgZmFsc2Ug
fTsKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlCiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHkmIGhlYWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVy
RmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVs
ZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5
LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CisgICAgcmV0dXJuIGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwg
aGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFk
ZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVs
ZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldFByb3h5U2V0dGluZ3MoQ3VybFByb3h5U2V0dGluZ3MmJiBwcm94eVNldHRp
bmdzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlQwogICAgICAgICBhZGRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKHJl
cXVlc3QpOwogCiAgICAgICAgIGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSByZXF1ZXN0LnVy
bCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5j
bHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwotICAgICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQg
PSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVh
dGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBp
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpLmZpcnN0OworICAgICAgICBT
dHJpbmcgY29va2llSGVhZGVyRmllbGQgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkt
PmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
OjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CiAg
ICAgICAgIGlmICghY29va2llSGVhZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVx
dWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29va2llSGVh
ZGVyRmllbGQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4
LDEwICsyNjgsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6
OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdl
SUQpKQorICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxk
QmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykpCiAgICAgICAgIHJldHVybjsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGZyYW1lSUQpOwpAQCAtNDczLDEyICs0NzMsMTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246Omhhc0Nvb2tpZXMoYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0K
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyByZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmF3
Q29va2llcy5jbGVhcigpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2Nr
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3Vs
ZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQ
YXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKQEAgLTUxNSwxMCArNTE1LDEwIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRS
YXdDb29raWUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9vbCBmb3JIVFRQSGVhZGVyLCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCkKK3N0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lv
bihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIGJvb2wgZm9ySFRUUEhlYWRlciwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lU
UCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJz
dFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBT
aG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQog
ICAgICAgICByZXR1cm4geyB7IH0sIGZhbHNlIH07CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShm
cmFtZUlEKTsKQEAgLTU3MiwyMCArNTcyLDIwIEBAIHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBjb29raWVzRm8KICAgICByZXR1cm4geyBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUhlYWRl
ci5nZXQoKSksIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFt
ZUlELCBwYWdlSUQsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsK
KyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgc2Ft
ZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcywg
c2hvdWxkQXNrSVRQLCByZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiB9CiAKLXN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICAvLyBTZWN1cmUgY29va2llcyB3aWxsIHN0
aWxsIG9ubHkgYmUgaW5jbHVkZWQgaWYgdXJsJ3MgcHJvdG9jb2wgaXMgaHR0cHMuCi0gICAgcmV0
dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCB1cmwsIHNhbWVTaXRlSW5m
bywgZnJhbWVJRCwgcGFnZUlELCB0cnVlLCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNr
SVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVy
bCwgc2FtZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQsIHRydWUsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAog
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYg
aGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5
LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJh
bWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzKTsKKyAgICByZXR1cm4gY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVs
ZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJv
eHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZzo6Tm8pOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Zmx1c2hDb29raWVTdG9yZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMDMyKQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAy
MC0wNS0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIEFkZCBTUEkgdG8gdW5ibG9jayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJW
aWV3cyB3aXRoIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYwNTk1NTM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgdmFsdWUgbWFrZXMgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2Nr
Q29va2llcygpIG5vdCBkbyBhbnl0aGluZyBmb3IgY2VydGFpbiBXS1dlYlZpZXdzLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0NvY29hOjpibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6dW5ibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0QWxsb3dBbGxUaGlyZFBhcnR5Q29va2ll
cyk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjphbGxvd0FsbFRoaXJkUGFydHlD
b29raWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FsbG93
QWxsVGhpcmRQYXJ0eUNvb2tpZXNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBfc2V0QWxsb3dBbGxUaGlyZFBhcnR5Q29va2llczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjphZGRQYXJhbWV0ZXJzU2hhcmVkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisKIDIwMjAtMDUtMjEg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBV
c2UgYW4gT3B0aW9uU2V0IGluc3RlYWQgb2YgdWludDhfdCBmb3IgTWVzc2FnZUZsYWdzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyMywxMiArNjIzLDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2kKICAgICAgICAgbV9zY2hlbWVSZWdpc3RyeS0+cmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKFdURk1vdmUoc2NoZW1lKSk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJl
Q29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAo
IW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgZmFsc2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIGF1dG8gcmVzdWx0
ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91
bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNl
c3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC02MzgsMTIgKzYzOCwxMiBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29rCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0
cmluZyYgY29va2llU3RyaW5nLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICAgICBhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5z
ZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBzaG91bGRBc2tJVFAsIGNvb2tpZVN0cmluZyk7CisgICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFAsIGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24oKSkKQEAgLTY1MiwyMiArNjUyLDIyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldEMKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcs
IGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtT
dG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFs
c2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0
KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBp
ZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gcmVzdWx0OwotICAgIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFAsIHJlc3VsdCk7CisgICAgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcsIHJlc3VsdCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXN1bHQpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYy
MDMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsMTAgKzIwOCwxMCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJp
bmc+JiYgc2NoZW1lcyk7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4m
Jik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwg
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNv
cmU6OlNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lk
IGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6
U2hvdWxkQXNrSVRQLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5n
LCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBXZWJDb3JlOjpT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CiAgICAgdm9pZCBzZXRSYXdDb29raWUo
Y29uc3QgV2ViQ29yZTo6Q29va2llJik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJv
b2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGVudW06Ym9v
bCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKQogCi0gICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU3RyaW5nIGNvb2tpZVN0cmlu
ZykKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2Vj
dXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5
LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNz
U2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBTdHJpbmcgY29va2llU3RyaW5nLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
CisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVj
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMK
KyAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgZW51bTpib29s
IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcykgU3luY2hyb25vdXMKICAgICBTZXRSYXdDb29raWUoc3RydWN0IFdlYkNvcmU6OkNvb2tp
ZSBjb29raWUpCiAgICAgRGVsZXRlQ29va2llKFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQog
ICAgIERvbUNvb2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMp
IFN5bmNocm9ub3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suY3BwCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDggQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcgogewogICAg
IEFTU0VSVCghcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRl
KHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJh
bWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5h
dmlnYXRpb25Gb3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBw
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIC8vIEZJWE1FOiBK
dXN0IHBhc3MgcGFyYW1ldGVycyB0byB0aGUgTmV0d29ya0RhdGFUYXNrQ29jb2EgY29uc3RydWN0
b3IuCisgICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xp
ZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRl
cnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lLCBwYXJhbWV0ZXJzLm5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0
d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1
ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0
ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1Bv
bGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVy
cy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlz
TWFpbkZyYW1lTmF2aWdhdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MjAzMikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c0lELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBuZWVkc0NlcnRpZmljYXRlSW5mbyB7IGZhbHNlIH07CiAgICAgYm9vbCBpc01haW5G
cmFtZU5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgaXNNYWluUmVzb3VyY2VOYXZpZ2F0
aW9uRm9yQW55RnJhbWUgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmlsZVJlZmVyZW5jZXM7
CiAgICAgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25s
eTo6Tm8gfTsKICAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0
aXZpdHlUcmFja2VyOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY28KICAgICBlbmNvZGVyIDw8IG5lZWRz
Q2VydGlmaWNhdGVJbmZvOwogICAgIGVuY29kZXIgPDwgaXNNYWluRnJhbWVOYXZpZ2F0aW9uOwog
ICAgIGVuY29kZXIgPDwgaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWU7CisgICAg
ZW5jb2RlciA8PCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsKICAgICBlbmNv
ZGVyIDw8IG1heGltdW1CdWZmZXJpbmdUaW1lOwogCiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDxib29sPihzb3VyY2VPcmlnaW4pOwpAQCAtMTk4LDYgKzE5OSw4IEBAIE9wdGlvbmFsPE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiAKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25G
b3JBbnlGcmFtZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1heGltdW1CdWZmZXJpbmdUaW1lKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzI2LDcgKzEzMjYsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVy
bmFsCiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5m
b3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7
CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzOwotICAgIGlmICghbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpKQorICAgIGlm
ICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObywgY29va2llcykpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gZXNjYXBlZFVSTCA9IGVzY2FwZUZvckpTT04odXJsLnN0cmluZygpKTsK
QEAgLTEzODYsNyArMTM4Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29r
aWVJbmYKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlv
biwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKLSAgICBpZiAobmV0d29y
a1N0b3JhZ2VTZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCkpCisgICAgaWYgKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zaG91bGRCbG9ja0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nOjpObykpCiAgICAgICAgIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1h
dGlvbihjb25uZWN0aW9uLCBsYWJlbCwgbG9nZ2VkT2JqZWN0LCBuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCByZWZlcnJlciwgZnJhbWVJRCwgcGFn
ZUlELCBpZGVudGlmaWVyKTsKICAgICBlbHNlCiAgICAgICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9u
SW50ZXJuYWwoY29ubmVjdGlvbiwgbGFiZWwsIGxvZ2dlZE9iamVjdCwgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgcmVmZXJyZXIsIGZyYW1lSUQs
IHBhZ2VJRCwgaWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAy
NjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IFNlc3Np
b25XcmFwcGVyOwogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBO
ZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNr
PiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYg
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVj
b25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZv
ckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZp
dHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3Jl
YXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVu
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYs
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVj
dE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlG
cmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJh
Y2tlciwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50
LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91
bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZp
Z2F0aW9uRm9yQW55RnJhbWUsIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Rh
dGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRF
bmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBz
aG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGRh
dGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIG5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKSk7CiAgICAgfQogCiAgICAgfk5ldHdvcmtEYXRhVGFza0Nv
Y29hKCk7CkBAIC03MywxMSArNzMsMTIgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH07CiAgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07
CisgICAgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOyB9CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24o
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShO
ZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5l
Y3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFU
YXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdv
cmtBY3Rpdml0eVRyYWNrZXI+LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29u
dGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25u
ZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJp
bmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9v
bCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwpA
QCAtMTAzLDYgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
eyBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKIH07
CiAKIFdlYkNvcmU6OkNyZWRlbnRpYWwgc2VydmVyVHJ1c3RDcmVkZW50aWFsKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0J
KHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OSwxMyArMTk5LDE0
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wdXRlSXNBbHdheXNPbkxvZ2cKICAgICByZXR1cm4g
c2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAotTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBX
ZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQ
cmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlv
bkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0
aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiAgICAgOiBO
ZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgLCBtX3Nlc3Np
b25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihz
ZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKSkKICAg
ICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9p
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQogICAgICwgbV9pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoY29tcHV0ZUlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZChzZXNzaW9uKSkKKyAgICAsIG1f
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpCiB7CiAgICAgaWYgKG1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9G
YWlsdXJlKQogICAgICAgICByZXR1cm47CkBAIC0yNDAsNyArMjQxLDcgQEAgTmV0d29ya0RhdGFU
YXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvYwogICAgIHNob3VsZEJsb2NrQ29va2llcyA9IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpFcGhlbWVyYWxTdGF0ZWxlc3M7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKCFzaG91
bGRCbG9ja0Nvb2tpZXMpCi0gICAgICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdl
SUQpOworICAgICAgICAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBtX3Nob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICB9CiAjZW5kaWYKICAgICByZXN0
cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CkBAIC00MDMsNyAr
NDA0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFtX2hhc0JlZW5TZXRUb1Vz
ZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UpIHsKICAgICAgICAgaWYgKG1fc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0
YXRlbGVzcwotICAgICAgICAgICAgfHwgKG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkgJiYgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQpKSkKKyAgICAgICAgICAgIHx8IChtX3Nl
c3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFn
ZUlELCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkpCiAgICAgICAgICAg
ICBibG9ja0Nvb2tpZXMoKTsKICAgICB9IGVsc2UgaWYgKG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgIT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVz
cyAmJiBuZWVkc0ZpcnN0UGFydHlDb29raWVCbG9ja2luZ0xhdGNoTW9kZVF1aXJrKHJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS51
cmwoKSkpCiAgICAgICAgIHVuYmxvY2tDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNiw3ICs1MzYsNyBA
QCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wg
c2hvdWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2st
Pm5ldHdvcmtTZXNzaW9uKCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hl
bWVXYXNVcGdyYWRlZER1ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5u
ZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkp
LT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCks
IG5ldHdvcmtEYXRhVGFzay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNU
UyA9IHNjaGVtZVdhc1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9u
Q29jb2EtPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNz
aW9uSUQoKSktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZy
YW1lSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91
bGRJZ25vcmVIU1RTKSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVl
c3QocmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUg
aXNFcXVhbFRvU3RyaW5nOkAiaHR0cCJdKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCAtICh2b2lkKVVS
TFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3Jl
SFNUUyA9IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
ICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNz
aW9uKCkpIHsKLSAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVXYXNVcGdyYWRl
ZER1ZVRvRHluYW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3b3JrUHJvY2Vz
cygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5zaG91bGRCbG9j
a0Nvb2tpZXMocmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5ldHdvcmtEYXRh
VGFzay0+cGFnZUlEKCkpOworICAgICAgICAgICAgc2hvdWxkSWdub3JlSFNUUyA9IHNjaGVtZVdh
c1VwZ3JhZGVkRHVlVG9EeW5hbWljSFNUUyhyZXF1ZXN0KSAmJiBzZXNzaW9uQ29jb2EtPm5ldHdv
cmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbkNvY29hLT5zZXNzaW9uSUQoKSktPnNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBuZXR3b3JrRGF0YVRhc2stPmZyYW1lSUQoKSwgbmV0
d29ya0RhdGFUYXNrLT5wYWdlSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZygpKTsKICAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVIU1RT
KSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGRvd25ncmFkZVJlcXVlc3QocmVxdWVzdCk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKFtyZXF1ZXN0LlVSTC5zY2hlbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiaHR0cCJdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJldmlzaW9uIDI2MjAzMikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQ1LDcgKzQ0
Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6cmVzdGFydFdpdGhDcmUKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6YXBwZW5kQ29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVz
dC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6
IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsKLSAgICBhdXRvIGNvb2tpZUhlYWRlckZpZWxkID0g
bV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7
CisgICAgYXV0byBjb29raWVIZWFkZXJGaWVsZCA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgV2ViQ29yZTo6U2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJl
cXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CiAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb29raWUsIGNvb2tpZUhlYWRlckZpZWxkKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJ
KHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QdWJsaWNTdWZmaXguaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTE1Niw3
ICsxNTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZVJlcXVlc3QoCiAgICAg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMgPSB3YXNCbG9ja2luZ0Nvb2tpZXMgPT0gV2FzQmxvY2tp
bmdDb29raWVzOjpZZXMgPyB0cnVlIDogbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzOwogICAgIGlmICghc2hvdWxk
QmxvY2tDb29raWVzKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICAgICAgc2hvdWxk
QmxvY2tDb29raWVzID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja0Nvb2tpZXMo
bV9jdXJyZW50UmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzaG91
bGRCbG9ja0Nvb2tpZXMgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29va2ll
cyhtX2N1cnJlbnRSZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlELCBXZWJDb3JlOjpTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pOwogICAgIH0KICAgICBpZiAoc2hvdWxk
QmxvY2tDb29raWVzKQogICAgICAgICBzb3VwX21lc3NhZ2VfZGlzYWJsZV9mZWF0dXJlKHNvdXBN
ZXNzYWdlLmdldCgpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjYyMDMyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw2ICsxNDksNyBAQCB2b2lkIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAgZW5jb2RlciA8PCBzaG91bGRSZW5kZXJDYW52
YXNJbkdQVVByb2Nlc3M7CiAgICAgZW5jb2RlciA8PCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lR
dWlya3M7CiAgICAgZW5jb2RlciA8PCBsaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
OworICAgIGVuY29kZXIgPDwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAK
ICNpZiBQTEFURk9STShHVEspCiAgICAgZW5jb2RlciA8PCB0aGVtZU5hbWU7CkBAIC00ODAsNiAr
NDgxLDkgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmRE
b21haW5zKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudGhlbWVOYW1lKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpAQCAtMjIxLDYgKzIyMiw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcyB7IGZh
bHNlIH07CiAgICAgYm9vbCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgeyBmYWxzZSB9
OwogICAgIGJvb2wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07
CisgICAgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJp
bmcgdGhlbWVOYW1lOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODUyLDYgKzc4NTIsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZW5k
ZXJDYW52YXNJbkdQVVByb2Nlc3MgPSBwcmVmZXJlbmNlcygpLnJlbmRlckNhbnZhc0luR1BVUHJv
Y2Vzc0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVBy
b2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNob3VsZENh
cHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoKTsKICAgICBwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMgPSBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnM7CisgICAgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9
IG1fY29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBwYXJhbWV0ZXJzLnRoZW1lTmFtZSA9IHBhZ2VDbGll
bnQoKS50aGVtZU5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25m
aWd1cmF0aW9uCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIGNvcHktPm1f
YXBwbGljYXRpb25NYW5pZmVzdCA9IHRoaXMtPm1fYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRp
ZgorICAgIGNvcHktPm1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSB0aGlz
LT5tX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogICAgIGZvciAoYXV0byYg
cGFpciA6IHRoaXMtPm1fdXJsU2NoZW1lSGFuZGxlcnMpCiAgICAgICAgIGNvcHktPm1fdXJsU2No
ZW1lSGFuZGxlcnMuc2V0KHBhaXIua2V5LCBwYWlyLnZhbHVlLmNvcHlSZWYoKSk7CiAgICAgY29w
eS0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSB0aGlzLT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViVmlld0NhdGVnb3J5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xNTksNiArMTYwLDkgQEAgcHVibGljOgogICAg
IGJvb2wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucygpIGNvbnN0IHsgcmV0dXJu
IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsgfQogICAgIHZvaWQgc2V0TGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhib29sIGxpbWl0cykgeyBtX2xpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBsaW1pdHM7IH0KIAorICAgIHZvaWQgc2V0U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcgdmFsdWUpIHsgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyA9IHZhbHVlOyB9CisgICAgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSBjb25z
dCB7IHJldHVybiBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOyB9CisgICAg
CiBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vz
c1Bvb2w7CkBAIC0yMDIsNiArMjA2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbG9hZHNTdWJy
ZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07
CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9
OworICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIG1fc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBXZWJDb3JlOjpTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjU0LDYgKzEyNTQsMjMgQEAgLSAodm9pZClfc2V0SWdub3Jlc0FwcEJv
dW5kRG9tYWluczooQk9PTAogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0SWdub3Jlc0FwcEJv
dW5kRG9tYWlucyhpZ25vcmVzQXBwQm91bmREb21haW5zKTsKIH0KIAorLSAoQk9PTClfc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcKK3sKKyAgICByZXR1cm4gX3BhZ2VDb25maWd1
cmF0aW9uLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZygpID09IFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpZZXM7Cit9CisKKy0gKHZvaWQp
X3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOihCT09MKXJlbGF4Cit7Cisg
ICAgYm9vbCBhbGxvd2VkID0gV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
PT0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgYWxsb3dlZCA9IGFsbG93ZWQgfHwgV2ViQ29yZTo6TWFjQXBwbGljYXRpb246OmlzU2Fm
YXJpKCk7CisjZW5kaWYKKyAgICBpZiAoIWFsbG93ZWQpCisgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU09iamVjdE5vdEF2YWlsYWJsZUV4Y2VwdGlvbiBmb3JtYXQ6QCJfc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbWF5IG9ubHkgYmUgdXNlZCBieSBNYWMgU2FmYXJpLiJd
OworCisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyhyZWxheCA/IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOjpZZXMgOiBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zzo6Tm8pOworfQorCiAtIChOU1N0cmluZyAqKV9wcm9jZXNzRGlzcGxheU5hbWUKIHsKICAgICBy
ZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5wcm9jZXNzRGlzcGxheU5hbWUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDEwICsxMjUsOCBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNVSW50ZWdlciwgX1dLV2ViVmlld0NhCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRFZGl0YWJsZUltYWdlc0VuYWJsZWQ6KSBCT09MIF9lZGl0YWJsZUltYWdlc0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldFVuZG9NYW5hZ2VyQVBJRW5hYmxlZDopIEJPT0wgX3VuZG9NYW5h
Z2VyQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYlZpZXdDYXRlZ29yeTopIF9XS1dl
YlZpZXdDYXRlZ29yeSBfd2ViVmlld0NhdGVnb3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KLS0gKHZvaWQpX3NldElnbm9yZXNBcHBCb3Vu
ZERvbWFpbnM6KEJPT0wpaWdub3Jlc0FwcEJvdW5kRG9tYWlucyAgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKEJPT0wpX2lnbm9yZXNBcHBC
b3VuZERvbWFpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKLQorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0SWdub3Jlc0FwcEJv
dW5kRG9tYWluczopIEJPT0wgX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOikgQk9P
TCBfc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFByb2Nlc3NEaXNwbGF5TmFtZTopIE5TU3RyaW5nICpfcHJvY2Vzc0Rpc3Bs
YXlOYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY4LDggKzI2OCwxMCBAQCBzdGF0aWMgdm9pZCBhZGRQYXJhbWV0ZXJzU2hh
cmVkKGNvbnN0IEZyCiAKICAgICBwYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZy
YW1lLT5zZXR0aW5ncygpLkhUVFBTVXBncmFkZUVuYWJsZWQoKTsKIAotICAgIGlmIChhdXRvKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
IHsKICAgICAgICAgcGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gcGFnZS0+
aGFzUmVzb3VyY2VMb2FkQ2xpZW50KCk7CisgICAgICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBwYWdlLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZygpOworICAgIH0KIAogICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQgPSBmcmFt
ZS0+b3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHBhcmVudEZyYW1lID0gb3du
ZXJFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCShyZXZpc2lvbiAyNjIw
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE0ICs1NywxNCBAQCBTdHJpbmcgV2ViQ29va2llQ2Fj
aGU6OmNvb2tpZXNGb3JET00oY29uCiAgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2ll
cykKICAgICAgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2ll
KTsKICAgICB9Ci0gICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9y
RE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKKyAgICByZXR1cm4gaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6Tm8sIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7
CiB9CiAKLXZvaWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZywgU2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
CiB7CiAgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKG1f
aG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKQotICAgICAgICBpbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpObywgY29va2llU3RyaW5n
KTsKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lU
UDo6Tm8sIGNvb2tpZVN0cmluZywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
OwogfQogCiB2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaAkocmV2aXNpb24gMjYy
MDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CitlbnVtIGNsYXNzIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIDogYm9vbDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00Miw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3VwcG9ydGVkKCk7CiAKICAgICBT
dHJpbmcgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKTsKLSAg
ICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwor
ICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZywg
V2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogCiAgICAgdm9p
ZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpOwogICAgIHZvaWQgY29va2llc0RlbGV0ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCShyZXZpc2lvbiAyNjIwMzIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OSwxMSArNjksMTggQEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tD
b29raWVzKFdlYkZyYW1lKgogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluID09IHJlc291cmNlRG9t
YWluKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmZy
YW1lTG9hZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZy
YW1lLT5wYWdlKCktPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoZmlyc3RQYXJ0eURvbWFpbiwg
cmVzb3VyY2VEb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZyYW1lKSB7
CisgICAgICAgIGlmIChmcmFtZS0+ZnJhbWVMb2FkZXJDbGllbnQoKS0+aGFzRnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3MoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+aGFz
UGFnZUxldmVsU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGF1dG8qIGNv
cmVQYWdlID0gcGFnZS0+Y29yZVBhZ2UoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb3JlUGFn
ZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSA9PSBXZWJDb3JlOjpTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6WWVzKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKICAgICAv
LyBUaGUgV2ViQ29udGVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IHRvIGRlYWwgd2l0aCBvdGhlciBwb2xpY2llcyB0aGFuIFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbCBzbyB3ZSBoYXZlIHRvIGdvIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyBmb3IgYWxs
CiAgICAgLy8gb3RoZXIgcG9saWNpZXMgYW5kIHRoZSByZXF1ZXN0IG1heSBlbmQgdXAgZ2V0dGlu
ZyBibG9ja2VkIG9uIE5ldHdvcmtQcm9jZXNzIHNpZGUuCkBAIC0xMDMsNiArMTEwLDE5IEBAIGJv
b2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUoV2UKICAgICByZXR1cm4gZnJhbWUu
aXNNYWluRnJhbWUoKSB8fCBSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVz
IH0gPT0gcmVzb3VyY2VEb21haW47CiB9CiAKK3N0YXRpYyBXZWJDb3JlOjpTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zyhjb25zdCBXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObzsKKyAg
ICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm87Cisg
ICAgYXV0byogY29yZVBhZ2UgPSBwYWdlLT5jb3JlUGFnZSgpOworICAgIGlmICghY29yZVBhZ2Up
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZzo6Tm87CisgICAgcmV0dXJuIGNvcmVQYWdlLT5zaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZygpOworfQorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6
OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byog
d2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRv
Y3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEyNSw3ICsxNDUsNyBAQCBTdHJpbmcgV2Vi
Q29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvCiAKICAgICBTdHJpbmcgY29va2llU3RyaW5n
OwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRB
c2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBp
bmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJp
bmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTE0OCw5ICsxNjgsOSBAQCB2b2lkIFdlYkNvb2tp
ZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpECiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+
cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKICAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJG
cmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKLSAgICAgICAgbV9j
YWNoZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBz
YW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworICAgICAg
ICBtX2NhY2hlLnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZywgc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKTsKIAotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywg
Y29va2llU3RyaW5nKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcsIHNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZyYW1lKSksIDApOwogfQogCiB2b2lkIFdlYkNvb2tp
ZUphcjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIGNvb2tpZXMpCkBAIC0xOTYsMTUgKzIxNiwxNSBAQCBib29sIFdlYkNvb2tp
ZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgCiBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpT
ZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MgPSBTaG91bGRBc2tJVFA6Ok5v
OwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYXV0byogd2ViRnJh
bWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQp
IDogbnVsbHB0cjsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlm
IChzaG91bGRCbG9ja0Nvb2tpZXMod2ViRnJhbWUsIGZpcnN0UGFydHksIHVybCwgc2hvdWxkQXNr
SVRQSW5OZXR3b3JrUHJvY2VzcykpCiAgICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAogICAg
IFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBm
YWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVw
bHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJ
VFBJbk5ldHdvcmtQcm9jZXNzLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3
ZWJGcmFtZSkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tp
ZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0Fj
Y2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CkBA
IC0yMjAsNyArMjQwLDcgQEAgYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3Qg
VwogCiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBt
YWtlT3B0aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CiAgICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdl
KCkgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6
bnVsbG9wdDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkK
KyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3Vs
ZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKHdlYkZyYW1lKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw2
ICs1NTAsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24g
PSBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1
YnJlc291cmNlczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0gcGFy
YW1ldGVycy5sb2Fkc0Zyb21OZXR3b3JrOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZzsKIAogICAgIGlmICghcGFyYW1ldGVycy5jcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCiAgICAgICAgIENyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZChmYWxzZSk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIwMzIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0yMSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gdW5ibG9j
ayB0aGlyZCBwYXJ0eSBjb29raWVzIGZyb20gV0tXZWJWaWV3cyB3aXRoIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MgdHVybmVkIG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTIwNTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNTk1NTM5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgYWxzbyBhZGQg
X3Rlc3Rfd2FpdEZvckFsZXJ0IHRvIG1ha2UgdGVzdHMgbGVzcyB2ZXJib3NlLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29y
a1Byb2Nlc3MubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb3h5Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpIVFRQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRhdGFGcm9tU3Ry
aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om51bGxUZXJtaW5hdGVkUmVxdWVzdCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnJlY2VpdmUgY29uc3QpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6c2VuZCBjb25zdCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0
Rm9yQWxlcnRdKToKKwogMjAyMC0wNS0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIG1vcmUgQml0bWFwIG1ldGhvZHMuCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHJldmlzaW9uIDI2MjAzMikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE4MiwzICsxODIsOTcgQEAgVEVTVChXZWJLaXQsIFNlY3VyZVByb3h5Q29u
bmVjdGlvbikKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUo
U1NMKQorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitURVNUKFdlYktpdCwgUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCit7
CisgICAgYXV0byBydW5UZXN0ID0gW10gKGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpIHsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9
IDAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXSAoQ29ubmVjdGlvbiBjb25u
ZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICsrY29ubmVjdGlvbkNvdW50OworICAgICAg
ICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb24sIGNvbm5lY3Rp
b25Db3VudCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmddIChWZWN0b3I8Y2hh
cj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJlcGx5OworICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGJvZHkgPQorICAgICAgICAgICAgICAgICI8c2NyaXB0PiIKKyAg
ICAgICAgICAgICAgICAgICAgImZldGNoKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICInaHR0
cDovL3dlYmtpdC5vcmcvcGF0aDMnLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ7Y3JlZGVu
dGlhbHM6J2luY2x1ZGUnfSIKKyAgICAgICAgICAgICAgICAgICAgIikudGhlbigoKT0+eyIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJhbGVydCgnZmV0Y2hlZCcpIgorICAgICAgICAgICAgICAg
ICAgICAifSkuY2F0Y2goKGUpPT57IgorICAgICAgICAgICAgICAgICAgICAgICAgImFsZXJ0KGUp
IgorICAgICAgICAgICAgICAgICAgICAifSkiCisgICAgICAgICAgICAgICAgIjwvc2NyaXB0PiI7
CisgICAgICAgICAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJl
cXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93ZWJraXQub3JnL3BhdGgxIEhUVFAvMS4xXHJcbiIp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAg
ICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29udGVudC1MZW5ndGg6ICIsIHN0cmxlbihib2R5KSwgIlxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiU2V0LUNvb2tpZTogYT1iXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiIs
IGJvZHkKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMzogeworICAgICAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDov
L2V4YW1wbGUuY29tL3BhdGgyIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmVwbHkgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIw
MCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0
bWxcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCBzdHJs
ZW4oYm9keSksICJcclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNs
b3NlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJcclxuIiwgYm9keQorICAgICAgICAg
ICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Db3VudCA9PSAyIHx8IHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNU
X1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2llOiBhPWJcclxuIikpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2llOiBhPWJcclxuIikpOworICAgICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDovL3dl
YmtpdC5vcmcvcGF0aDMgSFRUUC8xLjFcclxuIikpOworICAgICAgICAgICAgICAgICAgICByZXBs
eSA9CisgICAgICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5j
b21cclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNy
ZWRlbnRpYWxzOiB0cnVlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9u
OiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiI7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXBseSkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8gc3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lz
dGVudENvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQcm94
eUNvbmZpZ3VyYXRpb246QHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDRlN0cmVhbVByb3Bl
cnR5SFRUUFByb3h5SG9zdDogQCIxMjcuMC4wLjEiLAorICAgICAgICAgICAgKE5TU3RyaW5nICop
a0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlQb3J0OiBAKHNlcnZlci5wb3J0KCkpCisgICAgICAg
IH1dOworICAgICAgICBbc3RvcmVDb25maWd1cmF0aW9uIHNldEFsbG93c1NlcnZlclByZWNvbm5l
Y3Q6Tk9dOworICAgICAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOllFU107CisgICAgICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgICAgICBbdmlld0NvbmZpZ3VyYXRpb24gX3Nl
dFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOnNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nXTsKKyAgICAgICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVE
YXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwg
MTAwKSBjb25maWd1cmF0aW9uOnZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnL3BhdGgxIl1dXTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIik7CisK
KyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoMiJdXV07Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0
Y2hlZCIpOworICAgIH07CisgICAgcnVuVGVzdCh0cnVlKTsKKyAgICBydW5UZXN0KGZhbHNlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gSEFWRShORVRX
T1JLX0ZSQU1FV09SSykKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVs
ZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURl
bGVnYXRlLmgJKHJldmlzaW9uIDI2MjAzMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMyArMzIsNyBAQAogLSAoTlNT
dHJpbmcgKil3YWl0Rm9yQWxlcnQ7CiAKIEBlbmQKKworQGludGVyZmFjZSBXS1dlYlZpZXcgKFRl
c3RVSURlbGVnYXRlRXh0cmFzKQorLSAoTlNTdHJpbmcgKilfdGVzdF93YWl0Rm9yQWxlcnQ7CitA
ZW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW0J
KHJldmlzaW9uIDI2MjAzMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVs
ZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDMgKzU5LDE3IEBAIC0gKE5TU3RyaW5nICop
d2FpdEZvckFsZXJ0CiB9CiAKIEBlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoVGVz
dFVJRGVsZWdhdGVFeHRyYXMpCisKKy0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0Cit7
CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYuVUlEZWxlZ2F0ZSk7CisgICAgYXV0byB1aURlbGVnYXRl
ID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgc2VsZi5VSURlbGVnYXRlID0g
dWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICBOU1N0cmluZyAqYWxlcnQgPSBbdWlEZWxlZ2F0ZSB3YWl0
Rm9yQWxlcnRdOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IG5pbDsKKyAgICByZXR1cm4gYWxlcnQ7
Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399994</attachid>
            <date>2020-05-21 16:14:14 -0700</date>
            <delta_ts>2020-05-22 11:27:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212058-20200521161413.patch</filename>
            <type>text/plain</type>
            <size>107826</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA1LTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byB1bmJsb2NrIHRoaXJkIHBhcnR5IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyB0dXJuZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1
Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBXaWxhbmRlci4KKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvQ29va2ll
SmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptX3Nob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9DYWNoZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9T
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yVVJMIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclNl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDdXJsUmVxdWVzdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29r
aWVzRnJvbURPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclNl
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorCiAyMDIwLTA1LTIxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCByYXJlIGNy
YXNoIGluIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAzLDYgKzEzMDMsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NhbWVTaXRlSW5mby5oCisgICAgcGxhdGZvcm0v
bmV0d29yay9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oCiAgICAgcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvci5oCiAgICAgcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaAogICAgIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDc0NSw2ICs0
NzQ1LDcgQEAKIAkJREVDQTgwNkIxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyOTgu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREVDQTdG
Q0QxRjlGRTk5NTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyOTguY3BwICovOyB9OwogCQlERUNB
ODA2QzFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI5OS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERUNBN0ZEQTFGOUZFOUEyMDBFM0I2
NjEgLyogVW5pZmllZFNvdXJjZTI5OS5jcHAgKi87IH07CiAJCURFQ0E4MDZEMUY5RkVENkEwMEUz
QjY2MSAvKiBVbmlmaWVkU291cmNlMzAwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERFQ0E3RkJCMUY5RkU5ODMwMEUzQjY2MSAvKiBVbmlmaWVkU291
cmNlMzAwLmNwcCAqLzsgfTsKKwkJREYxOUUyQUMyNDc3MkJDMTAwN0JEQUNCIC8qIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBERjE5RTJBQTI0NzcyOUE2MDA3QkRBQ0IgLyogU2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREY5QUZENzAxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCAqLzsgfTsKIAkJREY5QUZENzMxM0ZDMzFEODAw
MTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjlBRkQ3MTEzRkMzMUQ4MDAx
NUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSAqLzsgfTsKIAkJ
RTBGRUYzNzJCMTdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMEZFRjM3MUIxN0M1M0VBQzFDMUZCRUUg
LyogRXZlbnRTb3VyY2UuaCAqLzsgfTsKQEAgLTE1MDg1LDYgKzE1MDg2LDcgQEAKIAkJREVDQTdG
RjMxRjlGRTlCODAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyODkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTI4OS5jcHA7IHBhdGggPSAiRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTI4OS5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlERUNBN0ZGNDFGOUZFOUI5
MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1NS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMjU1LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9XZWJDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMjU1LmNwcCI7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCURFQ0E3RkY1MUY5RkU5QkEwMEUzQjY2MSAv
KiBVbmlmaWVkU291cmNlMjU2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2UyNTYuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyNTYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJREYxOUUyQUEyNDc3MjlBNjAwN0JEQUNCIC8qIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURGN0U5QTI5NEM3QUFDRTBBRDg5QjNERCAvKiBNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1M
T3BlcmF0b3JEaWN0aW9uYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGOUFG
RDcwMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY5QUZENzEx
M0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA3
ODEsNiArMjA3ODMsNyBAQAogCQkJCTUxNEM3NjZBMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oICovLAogCQkJCUNFN0E2QzI3MjA4NTM3RTIwMEZBMkI0NiAvKiBTYW1l
U2l0ZUluZm8uY3BwICovLAogCQkJCUNFN0E2QzI2MjA4NTM3RTIwMEZBMkI0NiAvKiBTYW1lU2l0
ZUluZm8uaCAqLywKKwkJCQlERjE5RTJBQTI0NzcyOUE2MDA3QkRBQ0IgLyogU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaCAqLywKIAkJCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLywKIAkJCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmNwcCAqLywKIAkJCQk1MTBENEEzMTEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi8sCkBAIC0zMjkyNiw2ICszMjkyOSw3IEBA
CiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM0REZBRDAxRjdEQUU1RDAwQzI3MjVCIC8qIFNoYXJlZFN0cmluZ0hhc2gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRU
aW1lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYxOUUyQUMyNDc3MkJDMTAwN0JEQUNCIC8qIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzYyRThDMTIwQ0VGOUNCMDAyNDU4ODYgLyogU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDg5NDRBMzE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGlu
ZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTFFMDY3RUUxRTYyNDZFNTAwMTYyRDE2IC8q
IFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29va2llSmFyLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2Ft
ZVNpdGVJbmZvLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgpAQCAtNDEs
NiArNDIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChhdXRvKiBwYWdlID0gZG9j
dW1lbnQucGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcoKTsKKyAgICByZXR1cm4gU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmc6Ok5vOworfQorCiBSZWY8Q29va2llSmFyPiBDb29raWVKYXI6OmNyZWF0ZShSZWY8
U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJiBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENvb2tpZUphcihXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIpKSk7CkBAIC04MCw3ICs4OCw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9j
dW1lbnQmIGRvY3UKIAogICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdDsKICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Np
b24oKSkKLSAgICAgICAgcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llc0ZvckRPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzKTsKKyAg
ICAgICAgcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBzaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyhkb2N1bWVudCkpOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTExNCw3ICsxMjIsNyBAQCB2b2lkIENvb2tpZUphcjo6
c2V0Q29va2llcyhEb2N1bWVudCYgZG9jCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHNl
c3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJ
VFA6OlllcywgY29va2llU3RyaW5nKTsKKyAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llc0Zyb21E
T00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50
KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6WWVzLCBjb29raWVTdHJpbmcs
IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGRvY3VtZW50KSk7CiAgICAgZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTEzMSw3ICsxMzksNyBAQCBi
b29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgRG9jCiBzdGQ6OnBhaXI8U3RyaW5n
LCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBt
X3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpIHsKLSAgICAgICAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzKTsKKyAgICAgICAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pOwogICAgICAgICByZXR1cm4geyByZXN1bHQuZmly
c3QsIHJlc3VsdC5zZWNvbmQgPyBTZWN1cmVDb29raWVzQWNjZXNzZWQ6OlllcyA6IFNlY3VyZUNv
b2tpZXNBY2Nlc3NlZDo6Tm8gfTsKICAgICB9CiAKQEAgLTE2NCw3ICsxNzIsNyBAQCBib29sIENv
b2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1CiAgICAgfQogCiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0g
ICAgICAgIHJldHVybiBzZXNzaW9uLT5nZXRSYXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBTaG91bGRBc2tJVFA6OlllcywgY29va2llcyk7CisgICAgICAgIHJldHVybiBzZXNzaW9uLT5n
ZXRSYXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5m
byhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6Olllcywgc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoZG9jdW1lbnQpLCBjb29raWVzKTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDYgKzI5OCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNv
bmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5zKSkKICAgICAsIG1f
bG9hZHNTdWJyZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMpCiAg
ICAgLCBtX2xvYWRzRnJvbU5ldHdvcmsocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNGcm9tTmV0d29y
aykKKyAgICAsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcocGFnZUNvbmZp
Z3VyYXRpb24uc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgdXBk
YXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9u
IDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKICNpbmNsdWRl
ICJSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgor
I2luY2x1ZGUgIlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmgiCiAjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKQEAgLTcyMSw2ICs3MjIsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGxvYWRzU3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc1N1YnJl
c291cmNlczsgfQogICAgIGJvb2wgbG9hZHNGcm9tTmV0d29yaygpIGNvbnN0IHsgcmV0dXJuIG1f
bG9hZHNGcm9tTmV0d29yazsgfQorICAgIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsgfQogCiAgICAgYm9vbCBpc0xv
d1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm90dGxpbmdSZWFzb25zLmNv
bnRhaW5zKFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSk7IH0KICAgICBib29sIGNhblVw
ZGF0ZVRocm90dGxpbmdSZWFzb24oVGhyb3R0bGluZ1JlYXNvbiByZWFzb24pIGNvbnN0IHsgcmV0
dXJuICFtX3Rocm90dGxpbmdSZWFzb25zT3ZlcnJpZGVuRm9yVGVzdGluZy5jb250YWlucyhyZWFz
b24pOyB9CkBAIC0xMDQ3LDYgKzEwNDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRG
aXJlRXZlbnRzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9sb2Fkc1N1YnJlc291cmNlcyB7IHRydWUg
fTsKICAgICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKKyAgICBTaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHsgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAgICAg
Ym9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgeyBmYWxzZSB9OwogICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPERPTVdyYXBwZXJXb3JsZD4sIFVuaXF1ZVJlZjxVc2VyU2Ny
aXB0Pj4+IG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlvbjsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNjIwMzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMSw2ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcyB7IHRy
dWUgfTsKICAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CiAgICAgYm9vbCB1c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKKyAgICBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyB7IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogfTsK
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAs
NyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbAogCiBz
dGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVl
c3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCks
IHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgp
LnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6OlllcykuZmlyc3Q7CisgICAgcmV0dXJu
IHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwo
KSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygi
aHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2ll
czo6Tm8sIFNob3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZzo6Tm8pLmZpcnN0OwogfQogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IENvb2tpZUphciogY29va2llSmFyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCShyZXZpc2lvbiAyNjIwMzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxNiArMTA0LDE2IEBAIGJvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpoYXNIYWRVc2VySW4KICAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIGlm
ICghbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKKyAgICByZXR1cm4g
c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVz
dC51cmwoKSwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyk7CiB9CiAgICAgCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3Vy
Y2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKKyAgICBpZiAoc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPT0gU2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc6OlllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFt
X2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRF
eGVtcHQKIAogT3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VD
YWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKG1fY2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJl
cXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KSkKKyAgICBpZiAobV9jYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOjpObykpCiAgICAgICAgIHJldHVybiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzOwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJGcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCisjaW5jbHVkZSAiU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CkBAIC0xNTAsNyArMTUxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDb29raWUoY29uc3QgQ29va2llJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CkBAIC0xNjAsMTEgKzE2MSwx
MSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29v
a2llcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29u
c3QgVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYXNDb29raWVzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29r
aWU+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJ
VFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVTdG9yZSgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJp
bmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRl
U2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRB
c2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZG9tQ29va2llc0Zvckhvc3QoY29u
c3QgU3RyaW5nJiBob3N0KTsKQEAgLTE3Nyw4ICsxNzgsOCBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNv
bnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9j
a0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbGxDb29raWVzVG9TYW1l
U2l0ZVN0cmljdChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CkBAIC0yMDYsMTAgKzIwNywxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1
ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpIGNvbnN0OworICAgIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlSFRUUE9ubHlPck5vdCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpIGNvbnN0OwogICAgIE5TQXJyYXkgKmh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0
b3JhZ2VSZWYpIGNvbnN0OwogICAgIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0
ZUluZm8+JiwgTlNVUkwgKikgY29uc3Q7Ci0gICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNr
SVRQKSBjb25zdDsKKyAgICBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICB2b2lkIHNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJM
ICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNvbnN0Owog
ICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0hUVFBD
b29raWUgKikgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNs
YXNzIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIDogYm9vbCB7IE5vLCBZZXMg
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIENGQXJyYXlSZWYgY3JlYXRlQ29v
a2llcyhDRkRpY3RpbwogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRB
c2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAsIGNvbnN0
IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25z
dAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlE
KTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMo
Q0ZBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2UKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CitzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNF
RF9QQVJBTShwYWdlSUQpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2UKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5maXJz
dFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51
cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhl
YWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzKTsK
KyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94
eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQ
cm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdl
SUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6
WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pOwogfQogCiBIVFRQ
Q29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llQWNjZXB0UG9s
aWN5KCkgY29uc3QKQEAgLTI4MCw3ICsyODAsNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5l
dHdvcmtTdG9yYWdlU2VzCiAgICAgfQogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIFVO
VVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjYyMDMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQyLDEwICszNDIsMTAgQEAgc3RhdGljIFJl
dGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKAogICAgIHJldHVybiBmaWx0ZXJlZENvb2tp
ZXM7CiB9CiAKLU5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25z
dAorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yVVJMKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
aWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91bGRBc2tJ
VFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHks
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZykpCiAgICAgICAgIHJldHVybiBuaWw7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKQEAgLTM1NSwxMyArMzU1LDEzIEBAIE5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0YKICAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdl
dCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclNlc3Npb24oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAq
Y29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29v
a2llc0ZvclVSTChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBzaG91bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAg
ICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNl
IH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5n
QnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cuCiAKQEAgLTQxMSwyOSArNDExLDI5IEBAIHN0YXRp
YyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUEMKICAgICBDRkhUVFBDb29raWVTdG9y
YWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVTdG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBz
aG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25s
eSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcpOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAg
IHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhl
YWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVy
RmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBP
bmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICByZXR1cm4g
Y29va2llc0ZvclNlc3Npb24oaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVs
ZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJv
eHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVh
ZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyk7CiB9CiAKLXZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikg
Y29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0ciwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykg
fHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAo
c2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhm
aXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9
PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkK
ICAgICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC00
OTEsMTIgKzQ5MSwxMiBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vz
CiAgICAgcmV0dXJuIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok5ldmVyOwogfQogCi1ib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29r
aWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVz
ID0gY29va2llc0ZvclVSTChmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBzaG91bGRBc2tJVFAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJhd0Nvb2tp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29vawogICAgIHJl
dHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJ
VFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKSBjb25zdAogewogICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHks
IHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCk7CiB9CkBAIC0xMjcsNyAr
MTI3LDcgQEAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJl
dHVybiBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsK
IH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmaWx0ZXIg
c2VjdXJlIGNvb2tpZXMgb3V0IGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCiAgICAgcmV0dXJu
IHsgY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgZmFsc2UpLCBmYWxz
ZSB9OwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXND
b29raWVzKGMKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLWJvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgYXV0byBjb29raWVzID0g
Y29va2llRGF0YWJhc2UoKS5zZWFyY2hDb29raWVzKGZpcnN0UGFydHksIHVybCwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAgICAgaWYgKCFjb29raWVzKQpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmbHVzaENvb2tpZVMK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8gdXNlLgogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKK3N0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQLCBTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVl
c3RzIGl0LgogICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5
LCB1cmwsIHRydWUpLCBmYWxzZSB9OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2UKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94
eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQ
cm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdl
SUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6
WWVzKTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmll
bGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVy
RmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94
eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pOwogfQog
CiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJveHlTZXR0aW5ncyhDdXJsUHJveHlT
ZXR0aW5ncyYmIHByb3h5U2V0dGluZ3MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2
aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBS
ZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFuZGxlOjpjcmVhdGVDCiAgICAgICAgIGFkZENhY2hl
VmFsaWRhdGlvbkhlYWRlcnMocmVxdWVzdCk7CiAKICAgICAgICAgYXV0byBpbmNsdWRlU2VjdXJl
Q29va2llcyA9IHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1
cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm87Ci0gICAgICAgIFN0cmlu
ZyBjb29raWVIZWFkZXJGaWVsZCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olll
cykuZmlyc3Q7CisgICAgICAgIFN0cmluZyBjb29raWVIZWFkZXJGaWVsZCA9IGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwg
cmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmc6Ok5vKS5maXJzdDsKICAgICAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q29va2llLCBjb29raWVIZWFkZXJGaWVsZCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaHR0
cE9ubHlDb29raWVFeGlzdHMoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgU2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAoc2hvdWxkQXNr
SVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRB
c2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKICAgICAgICAgcmV0dXJu
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC00NzMsMTIgKzQ3MywxMiBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQ
OjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFn
ZUlEKSkKKyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3Vs
ZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE1LDEwICs1MTUsMTAgQEAgYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBib29s
IGZvckhUVFBIZWFkZXIsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgYm9vbCBmb3JIVFRQSGVhZGVyLCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgcmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNlc3Npb24uc2hv
dWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBp
ZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNlc3Npb24uc2hvdWxkQmxv
Y2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykpCiAgICAgICAgIHJldHVybiB7IHsgfSwgZmFsc2UgfTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTcyLDIwICs1NzIsMjAgQEAgc3RhdGlj
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGbwogICAgIHJldHVybiB7IFN0cmluZzo6
ZnJvbVVURjgoY29va2llSGVhZGVyLmdldCgpKSwgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9Owog
fQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0Citz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JE
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25z
dAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJs
LCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywg
Zmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgZmFsc2UsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCkgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nIHJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogICAgIC8vIFNl
Y3VyZSBjb29raWVzIHdpbGwgc3RpbGwgb25seSBiZSBpbmNsdWRlZCBpZiB1cmwncyBwcm90b2Nv
bCBpcyBodHRwcy4KLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFy
dHksIHVybCwgc2FtZVNpdGVJbmZvLCBmcmFtZUlELCBwYWdlSUQsIHRydWUsIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigq
dGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBzYW1lU2l0ZUluZm8sIGZyYW1lSUQsIHBhZ2VJRCwgdHJ1
ZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgcmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVy
biBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFy
dHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwg
aGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVhZGVy
RmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMpOworICAg
IHJldHVybiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5LmZp
cnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5
LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwg
aGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMs
IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyk7CiB9CiAKIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpmbHVzaENvb2tpZVN0b3JlKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQ0IEBACisyMDIwLTA1LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byB1bmJsb2NrIHRoaXJkIHBhcnR5
IGNvb2tpZXMgZnJvbSBXS1dlYlZpZXdzIHdpdGggUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0dXJu
ZWQgb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjA1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1OTU1Mzk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSm9obiBXaWxhbmRlci4KKworICAgICAgICBUaGlzIHZhbHVlIG1ha2VzIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpibG9ja0Nvb2tpZXMoKSBub3QgZG8gYW55dGhpbmcgZm9yIGNlcnRhaW4g
V0tXZWJWaWV3cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6Y3JlYXRlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6YmxvY2tDb29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnVuYmxvY2tDb29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldEFsbG93
QWxsVGhpcmRQYXJ0eUNvb2tpZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
YWxsb3dBbGxUaGlyZFBhcnR5Q29va2llcyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF9hbGxvd0FsbFRoaXJkUGFydHlDb29raWVzXSk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEFsbG93QWxsVGhpcmRQYXJ0eUNvb2tpZXM6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWRk
UGFyYW1ldGVyc1NoYXJlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnMpOgorCiAyMDIwLTA1LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVXNlIGFuIE9wdGlvblNldCBpbnN0ZWFkIG9mIHVpbnQ4X3QgZm9y
IE1lc3NhZ2VGbGFncwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsMTIgKzYyMywxMiBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpCiAgICAgICAgIG1fc2NoZW1l
UmVnaXN0cnktPnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChXVEZNb3ZlKHNjaGVtZSkp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0sIGZhbHNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+Y29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQ
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29va2llc0ZvckRP
TShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRl
U2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigp
KSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQpA
QCAtNjM4LDEyICs2MzgsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29vawogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0
LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZywgU2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7
CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAg
ICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwotICAgIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCBjb29raWVTdHJpbmcpOwor
ICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCBjb29raWVT
dHJpbmcsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Np
b24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC02NTIsMjIgKzY1MiwyMiBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDCiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7
CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIGZhbHNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3Vs
ZEFza0lUUCk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAsIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3Jh
Z2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IHJlc3VsdDsKLSAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCBy
ZXN1bHQpOworICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFAsIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCByZXN1bHQpOwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDEw
ICsyMDgsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JT
RW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVtZXMpOwogCi0gICAgdm9pZCBjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lU
UCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzLCBXZWJDb3JlOjpTaG91bGRBc2tJVFAsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsK
LSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNo
b3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYmKT4mJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CisgICAgdm9pZCBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6OlNob3VsZEFza0lUUCwgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAg
ICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogICAg
IHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAgIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYy
MDMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDEwIEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICAgICBTdGFydERvd25s
b2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWRO
YW1lKQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWlu
UmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlLCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIAotICAgIENvb2tpZXNGb3JE
T00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NT
ZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFN0cmluZyBjb29raWVTdHJpbmcpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZv
LCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdl
YkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChTdHJpbmcgY29va2llU3RyaW5n
LCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgR2V0UmF3Q29v
a2llcyhVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdl
YkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiBjb29raWVzKSBTeW5jaHJvbm91cworICAgIENvb2tpZXNGb3JET00oVVJMIGZpcnN0UGFy
dHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0Q29v
a2llc0Zyb21ET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8g
c2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCwgU3RyaW5nIGNvb2tpZVN0cmluZywgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVS
TCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywg
VVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJD
b3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNv
b2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91
bGRBc2tJVFAsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgU2V0UmF3Q29va2llKHN0
cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llKQogICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBT
dHJpbmcgY29va2llTmFtZSkKICAgICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9v
bCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjYyMDMyKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIFJlZjxOZXR3b3JrRGF0YVRhc2s+IE5ldHdvcmtE
YXRhVGFzazo6Y3IKIHsKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMucmVxdWVzdC51cmwoKS5wcm90
b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwg
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ks
IHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQ
cmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRl
cnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29y
a0FjdGl2aXR5VHJhY2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KTsKKyAgICAvLyBGSVhNRTogSnVzdCBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIE5ldHdvcmtEYXRh
VGFza0NvY29hIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5j
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5
LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNv
dXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFj
a2VyLCBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHBhcmFtZXRlcnMu
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogI2VuZGlmCiAjaWYgVVNFKFNP
VVApCiAgICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZShzZXNzaW9uLCBjbGll
bnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVy
cy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCShy
ZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDYg
KzYwLDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm8geyBmYWxzZSB9
OwogICAgIGJvb2wgaXNNYWluRnJhbWVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIGlz
TWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lIHsgZmFsc2UgfTsKKyAgICBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOjpObyB9OwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFByZWNvbm5lY3RPbmx5IHNob3VsZFBy
ZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07CiAgICAgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjplbmNvCiAgICAgZW5jb2RlciA8PCBuZWVkc0NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVy
IDw8IGlzTWFpbkZyYW1lTmF2aWdhdGlvbjsKICAgICBlbmNvZGVyIDw8IGlzTWFpblJlc291cmNl
TmF2aWdhdGlvbkZvckFueUZyYW1lOworICAgIGVuY29kZXIgPDwgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8PCBtYXhpbXVtQnVmZmVyaW5nVGltZTsK
IAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291cmNlT3JpZ2luKTsKQEAgLTE5
OCw2ICsxOTksOCBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYXhpbXVtQnVmZmVyaW5nVGltZSkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9u
IDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgc3RhdGljIHZv
aWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbAogICAgIEFTU0VSVChOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gY29va2llczsKLSAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5nZXRSYXdDb29raWVz
KGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFz
a0lUUDo6WWVzLCBjb29raWVzKSkKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5nZXRS
YXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IFNob3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6
Tm8sIGNvb2tpZXMpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGVzY2FwZWRVUkwgPSBl
c2NhcGVGb3JKU09OKHVybC5zdHJpbmcoKSk7CkBAIC0xMzg2LDcgKzEzODYsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mCiB7CiAgICAgQVNTRVJUKHNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNz
aW9uSUQoKSkpOwogCi0gICAgaWYgKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zaG91bGRCbG9ja0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pKQogICAg
ICAgICBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbGFiZWwsIGxvZ2dl
ZE9iamVjdCwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgcmVmZXJyZXIsIGZyYW1lSUQsIHBhZ2VJRCwgaWRlbnRpZmllcik7CiAgICAgZWxzZQog
ICAgICAgICBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKGNvbm5lY3Rpb24sIGxhYmVsLCBs
b2dnZWRPYmplY3QsIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIHJlZmVycmVyLCBmcmFtZUlELCBwYWdlSUQsIGlkZW50aWZpZXIpOwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw5ICs0Miw5IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0Rh
dGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCisgICAgc3Rh
dGljIFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JN
YWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0
eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtE
YXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3JrQWN0
aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwg
cmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxk
Q29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdh
dGlvbkZvckFueUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpOwogICAg
IH0KIAogICAgIH5OZXR3b3JrRGF0YVRhc2tDb2NvYSgpOwpAQCAtNzMsMTEgKzczLDEyIEBAIHB1
YmxpYzoKIAogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUlEOyB9OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9OworICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzsg
fQogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRh
c2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlv
bkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
OworICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFU
YXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1h
aW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRp
b25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAKICAgICBi
b29sIHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJik7CiAgICAgdm9p
ZCBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQo
X19zdHJvbmcgTlNVUkxSZXF1ZXN0KiYsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKQEAgLTEwMyw2ICsxMDQsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX2lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIHsgZmFsc2UgfTsKKyAg
ICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiB9OwogCiBXZWJDb3JlOjpDcmVkZW50aWFsIHNlcnZl
clRydXN0Q3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTksMTMgKzE5OSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0
ZUlzQWx3YXlzT25Mb2dnCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0
YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVk
ZW50aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3Vs
ZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRh
dGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVz
b3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQorTmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5n
UG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNv
cmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVu
dCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uKQogICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtlV2Vha1B0cihzdGF0aWNf
Y2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lvbldyYXBwZXJGb3JUYXNr
KHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKSkpCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKICAgICAs
IG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1faXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUoZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSkK
ICAgICAsIG1faXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoc2Vzc2lvbikpCisgICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIGlmICht
X3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQwLDcgKzI0MSw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2MK
ICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzOwogICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzZXNzaW9uLm5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpKSB7CiAgICAgICAgIGlmICghc2hvdWxkQmxvY2tDb29raWVzKQotICAgICAgICAgICAg
c2hvdWxkQmxvY2tDb29raWVzID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja0Nv
b2tpZXMocmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlEKTsKKyAgICAgICAgICAgIHNob3VsZEJsb2Nr
Q29va2llcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVl
c3QsIGZyYW1lSUQsIHBhZ2VJRCwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zyk7CiAgICAgfQogI2VuZGlmCiAgICAgcmVzdHJpY3RSZXF1ZXN0UmVmZXJyZXJUb09yaWdpbklm
TmVlZGVkKHJlcXVlc3QpOwpAQCAtNDAzLDcgKzQwNCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFQKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIGlmICghbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlKSB7CiAg
ICAgICAgIGlmIChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MKLSAgICAgICAgICAgIHx8IChtX3Nl
c3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFn
ZUlEKSkpCisgICAgICAgICAgICB8fCAobV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24o
KSAmJiBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nvb2tp
ZXMocmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykpKQogICAgICAgICAgICAgYmxvY2tDb29raWVzKCk7CiAgICAgfSBlbHNl
IGlmIChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ICE9IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MgJiYgbmVlZHNGaXJzdFBhcnR5Q29va2llQmxv
Y2tpbmdMYXRjaE1vZGVRdWlyayhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVl
c3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpKQogICAgICAgICB1bmJsb2NrQ29va2ll
cygpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzYsNyArNTM2LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNl
c3Npb24gKilzZXNzaQogICAgICAgICBib29sIHNob3VsZElnbm9yZUhTVFMgPSBmYWxzZTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBpZiAoYXV0byogc2Vz
c2lvbkNvY29hID0gbmV0d29ya0RhdGFUYXNrLT5uZXR3b3JrU2Vzc2lvbigpKSB7Ci0gICAgICAg
ICAgICBzaG91bGRJZ25vcmVIU1RTID0gc2NoZW1lV2FzVXBncmFkZWREdWVUb0R5bmFtaWNIU1RT
KHJlcXVlc3QpICYmIHNlc3Npb25Db2NvYS0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lv
bihzZXNzaW9uQ29jb2EtPnNlc3Npb25JRCgpKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3Qs
IG5ldHdvcmtEYXRhVGFzay0+ZnJhbWVJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnBhZ2VJRCgpKTsK
KyAgICAgICAgICAgIHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVXYXNVcGdyYWRlZER1ZVRvRHlu
YW1pY0hTVFMocmVxdWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3b3JrUHJvY2VzcygpLnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5zaG91bGRCbG9ja0Nvb2tpZXMo
cmVxdWVzdCwgbmV0d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5ldHdvcmtEYXRhVGFzay0+cGFn
ZUlEKCksIG5ldHdvcmtEYXRhVGFzay0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoKSk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlSFNUUykgewogICAgICAgICAgICAg
ICAgIHJlcXVlc3QgPSBkb3duZ3JhZGVSZXF1ZXN0KHJlcXVlc3QpOwogICAgICAgICAgICAgICAg
IEFTU0VSVChbcmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSk7CkBA
IC01NzIsNyArNTcyLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNz
aQogICAgICAgICBib29sIHNob3VsZElnbm9yZUhTVFMgPSBmYWxzZTsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbkNvY29hID0g
bmV0d29ya0RhdGFUYXNrLT5uZXR3b3JrU2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICBzaG91bGRJ
Z25vcmVIU1RTID0gc2NoZW1lV2FzVXBncmFkZWREdWVUb0R5bmFtaWNIU1RTKHJlcXVlc3QpICYm
IHNlc3Npb25Db2NvYS0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uQ29j
b2EtPnNlc3Npb25JRCgpKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG5ldHdvcmtEYXRh
VGFzay0+ZnJhbWVJRCgpLCBuZXR3b3JrRGF0YVRhc2stPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
IHNob3VsZElnbm9yZUhTVFMgPSBzY2hlbWVXYXNVcGdyYWRlZER1ZVRvRHluYW1pY0hTVFMocmVx
dWVzdCkgJiYgc2Vzc2lvbkNvY29hLT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25Db2NvYS0+c2Vzc2lvbklEKCkpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbmV0
d29ya0RhdGFUYXNrLT5mcmFtZUlEKCksIG5ldHdvcmtEYXRhVGFzay0+cGFnZUlEKCksIG5ldHdv
cmtEYXRhVGFzay0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKSk7CiAgICAg
ICAgICAgICBpZiAoc2hvdWxkSWdub3JlSFNUUykgewogICAgICAgICAgICAgICAgIHJlcXVlc3Qg
PSBkb3duZ3JhZGVSZXF1ZXN0KHJlcXVlc3QpOwogICAgICAgICAgICAgICAgIEFTU0VSVChbcmVx
dWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1
cmw6OnJlc3RhcnRXaXRoQ3JlCiB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmFwcGVuZENvb2tp
ZUhlYWRlcihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgYXV0byBp
bmNsdWRlU2VjdXJlQ29va2llcyA9IHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/
IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm87Ci0g
ICAgYXV0byBjb29raWVIZWFkZXJGaWVsZCA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgV2ViQ29yZTo6U2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVl
c3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQOjpZZXMpLmZpcnN0OworICAgIGF1dG8gY29va2llSGVhZGVyRmllbGQg
PSBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFdlYkNvcmU6OlNhbWVT
aXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBXZWJD
b3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pLmZpcnN0OwogICAg
IGlmICghY29va2llSGVhZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LmFkZEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29va2llLCBjb29raWVIZWFkZXJGaWVsZCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljU3VmZml4Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29y
a1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpjcmVhdGVSZXF1ZXN0KAogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gd2Fz
QmxvY2tpbmdDb29raWVzID09IFdhc0Jsb2NraW5nQ29va2llczo6WWVzID8gdHJ1ZSA6IG1fc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJh
bFN0YXRlbGVzczsKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2llcykgewogICAgICAgICBpZiAo
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSkKLSAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKG1fY3VycmVudFJlcXVlc3QsIG1fZnJhbWVJRCwg
bV9wYWdlSUQpOworICAgICAgICAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5zaG91bGRCbG9ja0Nvb2tpZXMobV9jdXJyZW50UmVxdWVzdCwgbV9mcmFtZUlE
LCBtX3BhZ2VJRCwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6
Ok5vKTsKICAgICB9CiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykKICAgICAgICAgc291cF9t
ZXNzYWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9UWVBFX0NPT0tJ
RV9KQVIpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDks
NiArMTQ5LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAg
IGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwogICAgIGVuY29kZXIg
PDwgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOwogICAgIGVuY29kZXIgPDwgbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKKyAgICBlbmNvZGVyIDw8IHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGVuY29k
ZXIgPDwgdGhlbWVOYW1lOwpAQCAtNDgwLDYgKzQ4MSw5IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnRoZW1lTmFtZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdpbmF0aW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdw
b3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTIyMSw2ICsyMjIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91bGRS
ZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbmVlZHNJbkFwcEJy
b3dzZXJQcml2YWN5UXVpcmtzIHsgZmFsc2UgfTsKICAgICBib29sIGxpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
IHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07CiAK
ICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIHRoZW1lTmFtZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Nzg1Miw2ICs3ODUyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6
OgogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzID0gcHJlZmVy
ZW5jZXMoKS5yZW5kZXJDYW52YXNJbkdQVVByb2Nlc3NFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVy
cy5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLmNvbmZpZ3VyYXRpb24oKS5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKCk7CiAg
ICAgcGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0gbV9saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOworICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgcGFy
YW1ldGVycy50aGVtZU5hbWUgPSBwYWdlQ2xpZW50KCkudGhlbWVOYW1lKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgUmVm
PFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbgogI2lmIEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uTWFuaWZlc3QgPSB0aGlzLT5t
X2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKKyAgICBjb3B5LT5tX3Nob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gdGhpcy0+bV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZzsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0aGlzLT5tX3VybFNjaGVtZUhhbmRs
ZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVtZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFp
ci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHktPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0g
dGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYyMDMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgIldlYlZpZXdDYXRlZ29yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
MTU5LDYgKzE2MCw5IEBAIHB1YmxpYzoKICAgICBib29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBC
b3VuZERvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnM7IH0KICAgICB2b2lkIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnMoYm9vbCBsaW1pdHMpIHsgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0g
bGltaXRzOyB9CiAKKyAgICB2b2lkIHNldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHZhbHVlKSB7
IG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSB2YWx1ZTsgfQorICAgIFdl
YkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZzsgfQorICAgIAogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMjAyLDYgKzIwNiw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShy
ZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI1NCw2ICsxMjU0LDIz
IEBAIC0gKHZvaWQpX3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KEJPT0wKICAgICBfcGFnZUNv
bmZpZ3VyYXRpb24tPnNldElnbm9yZXNBcHBCb3VuZERvbWFpbnMoaWdub3Jlc0FwcEJvdW5kRG9t
YWlucyk7CiB9CiAKKy0gKEJPT0wpX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
Cit7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcoKSA9PSBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZzo6WWVzOworfQorCistICh2b2lkKV9zZXRTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZzooQk9PTClyZWxheAoreworICAgIGJvb2wgYWxsb3dlZCA9IFdlYkNvcmU6OmFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpID09ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiX3M7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGFsbG93ZWQgPSBhbGxvd2VkIHx8IFdl
YkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc1NhZmFyaSgpOworI2VuZGlmCisgICAgaWYgKCFhbGxv
d2VkKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNPYmplY3ROb3RBdmFpbGFibGVFeGNl
cHRpb24gZm9ybWF0OkAiX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIG1heSBv
bmx5IGJlIHVzZWQgYnkgTWFjIFNhZmFyaS4iXTsKKworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+
c2V0U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcocmVsYXggPyBXZWJDb3JlOjpT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6WWVzIDogV2ViQ29yZTo6U2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKTsKK30KKwogLSAoTlNTdHJpbmcgKilf
cHJvY2Vzc0Rpc3BsYXlOYW1lCiB7CiAgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+cHJv
Y2Vzc0Rpc3BsYXlOYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwx
MCArMTI1LDggQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZpZXdDYQogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RWRpdGFibGVJbWFnZXNFbmFibGVkOikgQk9P
TCBfZWRpdGFibGVJbWFnZXNFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCks
IGlvcygxMi4yKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRVbmRvTWFuYWdl
ckFQSUVuYWJsZWQ6KSBCT09MIF91bmRvTWFuYWdlckFQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRXZWJWaWV3Q2F0ZWdvcnk6KSBfV0tXZWJWaWV3Q2F0ZWdvcnkgX3dlYlZpZXdDYXRlZ29y
eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwot
Ci0tICh2b2lkKV9zZXRJZ25vcmVzQXBwQm91bmREb21haW5zOihCT09MKWlnbm9yZXNBcHBCb3Vu
ZERvbWFpbnMgIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7Ci0tIChCT09MKV9pZ25vcmVzQXBwQm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldElnbm9yZXNBcHBCb3VuZERvbWFpbnM6KSBCT09MIF9pZ25vcmVzQXBw
Qm91bmREb21haW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZzopIEJPT0wgX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQcm9jZXNzRGlzcGxheU5h
bWU6KSBOU1N0cmluZyAqX3Byb2Nlc3NEaXNwbGF5TmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw4ICsyNjgsMTAgQEAg
c3RhdGljIHZvaWQgYWRkUGFyYW1ldGVyc1NoYXJlZChjb25zdCBGcgogCiAgICAgcGFyYW1ldGVy
cy5pc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmcmFtZS0+c2V0dGluZ3MoKS5IVFRQU1VwZ3JhZGVF
bmFibGVkKCk7CiAKLSAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIHBhcmFtZXRlcnMucGFnZUhh
c1Jlc291cmNlTG9hZENsaWVudCA9IHBhZ2UtPmhhc1Jlc291cmNlTG9hZENsaWVudCgpOworICAg
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nID0gcGFn
ZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKKyAgICB9CiAKICAgICBp
ZiAoYXV0byogb3duZXJFbGVtZW50ID0gZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBwYXJlbnRGcmFtZSA9IG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUNhY2hlLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNCAr
NTcsMTQgQEAgU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNvbgogICAgICAg
ICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCiAgICAgICAgICAgICBpbk1lbW9yeVN0b3Jh
Z2VTZXNzaW9uKCkuc2V0Q29va2llKGNvb2tpZSk7CiAgICAgfQotICAgIHJldHVybiBpbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
OjpObykuZmlyc3Q7CisgICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVz
Rm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Ok5vLCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZzo6Tm8pLmZpcnN0OwogfQogCi12b2lkIFdlYkNvb2tpZUNhY2hlOjpz
ZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lk
IFdlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIFN0cmluZyBob3N0ID0gdXJsLmhv
c3QoKS50b1N0cmluZygpOwogICAgIGlmIChtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250
YWlucyhob3N0KSkKLSAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZXNG
cm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNo
b3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7CisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNl
c3Npb24oKS5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6Ok5vLCBjb29raWVTdHJpbmcsIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIH0KIAogdm9pZCBXZWJDb29raWVDYWNoZTo6
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUNhY2hlLmgJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OworZW51bSBjbGFzcyBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA6IGJvb2w7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1N1cHBvcnRlZCgpOwogCiAgICAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyk7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKTsKIAogICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYg
aG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKICAgICB2b2lkIGNvb2tpZXNE
ZWxldGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMTEgKzY5LDE4
IEBAIHN0YXRpYyBib29sIHNob3VsZEJsb2NrQ29va2llcyhXZWJGcmFtZSoKICAgICBpZiAoZmly
c3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKGZyYW1lICYmIGZyYW1lLT5mcmFtZUxvYWRlckNsaWVudCgpLT5oYXNGcmFtZVNw
ZWNpZmljU3RvcmFnZUFjY2VzcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5oYXNQYWdlTGV2ZWxTdG9y
YWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChmcmFtZSkgeworICAgICAgICBpZiAoZnJhbWUtPmZyYW1lTG9h
ZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkg
eworICAgICAgICAgICAgaWYgKHBhZ2UtPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoZmlyc3RQ
YXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb3JlUGFnZSA9IHBhZ2UtPmNvcmVQYWdlKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoY29yZVBhZ2UtPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKCkgPT0gV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc6OlllcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBkb2Vz
IG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZWFsIHdpdGggb3RoZXIgcG9saWNpZXMg
dGhhbiBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgc28gd2UgaGF2ZSB0byBnbyB0
byB0aGUgTmV0d29ya1Byb2Nlc3MgZm9yIGFsbAogICAgIC8vIG90aGVyIHBvbGljaWVzIGFuZCB0
aGUgcmVxdWVzdCBtYXkgZW5kIHVwIGdldHRpbmcgYmxvY2tlZCBvbiBOZXR3b3JrUHJvY2VzcyBz
aWRlLgpAQCAtMTAzLDYgKzExMCwxOSBAQCBib29sIFdlYkNvb2tpZUphcjo6aXNFbGlnaWJsZUZv
ckNhY2hlKFdlCiAgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVE
b21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOwogfQogCitz
dGF0aWMgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoY29uc3QgV2ViRnJhbWUqIGZyYW1lKQorewor
ICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZzo6Tm87CisgICAgYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vOworICAgIGF1dG8qIGNvcmVQYWdlID0gcGFnZS0+Y29y
ZVBhZ2UoKTsKKyAgICBpZiAoIWNvcmVQYWdlKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vOworICAgIHJldHVybiBjb3JlUGFn
ZS0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoKTsKK30KKwogU3RyaW5nIFdl
YkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogewogICAgIGF1dG8qIHdlYkZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSA/
IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpkb2N1bWVudC5mcmFtZSgpKSA6IG51bGxwdHI7CkBA
IC0xMjUsNyArMTQ1LDcgQEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpE
bwogCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nl
c3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBp
bmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHko
Y29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFz
a0lUUEluTmV0d29ya1Byb2Nlc3MsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KHdlYkZyYW1lKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAw
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29raWVTdHJpbmc7CkBAIC0x
NDgsOSArMTY4LDkgQEAgdm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMoV2ViQ29yZTo6RAog
ICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwogCiAgICAg
aWYgKGlzRWxpZ2libGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHVybCkpCi0gICAgICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9jdW1l
bnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgY29va2llU3RyaW5nKTsKKyAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBjb29raWVTdHJpbmcsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nKHdlYkZyYW1lKSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0
UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNo
b3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNvb2tpZVN0cmluZyksIDApOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywg
Y29va2llU3RyaW5nLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFt
ZSkpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJp
bmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQpAQCAtMTk2
LDE1ICsyMTYsMTUgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IAog
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29r
aWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFBJbk5ldHdv
cmtQcm9jZXNzID0gU2hvdWxkQXNrSVRQOjpObzsKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIGF1dG8qIHdlYkZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6IG51bGxwdHI7CisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKHdlYkZyYW1l
LCBmaXJzdFBhcnR5LCB1cmwsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpKQogICAgICAg
ICByZXR1cm4geyB9OwogI2VuZGlmCiAKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3Jr
UHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVw
bHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCA/IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZDo6WWVzIDogV2ViQ29yZTo6U2VjdXJl
Q29va2llc0FjY2Vzc2VkOjpObyB9OwogfQpAQCAtMjIwLDcgKzI0MCw3IEBAIGJvb2wgV2ViQ29v
a2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IFcKIAogICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCA9IHdlYkZyYW1lID8gbWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5mcmFtZUlE
KCkpIDogV1RGOjpudWxsb3B0OwogICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQg
PSB3ZWJGcmFtZSAmJiB3ZWJGcmFtZS0+cGFnZSgpID8gbWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5w
YWdlKCktPmlkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRS
YXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhk
b2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9j
ZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29r
aWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVz
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCks
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyh3ZWJGcmFtZSkpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tp
ZXMpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsNiArNTUwLDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3Vs
ZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJl
c291cmNlcyA9IHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24ubG9hZHNGcm9tTmV0d29yayA9IHBhcmFtZXRlcnMubG9hZHNGcm9tTmV0d29yazsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyA9
IHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc7CiAKICAgICBp
ZiAoIXBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQogICAg
ICAgICBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKS5z
ZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZmFsc2UpOwpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYy
MDMyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMjAtMDUtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgU1BJIHRvIHVuYmxvY2sgdGhpcmQgcGFydHkgY29va2llcyBmcm9tIFdL
V2ViVmlld3Mgd2l0aCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR1cm5lZCBvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMDU4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MDU5NTUzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFu
ZGVyLgorCisgICAgICAgIEkgYWxzbyBhZGQgX3Rlc3Rfd2FpdEZvckFsZXJ0IHRvIG1ha2UgdGVz
dHMgbGVzcyB2ZXJib3NlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW06CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9IVFRQU2VydmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQU2VydmVyKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRhdGFGcm9tU3RyaW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Om51bGxUZXJtaW5hdGVkUmVxdWVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246
OnJlY2VpdmUgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6c2Vu
ZCBjb25zdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdKToKKwogMjAyMC0wNS0yMCAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1vcmUgQml0bWFwIG1l
dGhvZHMuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJveHkubW0JKHJldmlzaW9uIDI2MjAzMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MiwzICsxODIsOTcgQEAg
VEVTVChXZWJLaXQsIFNlY3VyZVByb3h5Q29ubmVjdGlvbikKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoU1NMKQorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1F
V09SSykKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdCwgUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCit7CisgICAgYXV0byBydW5UZXN0ID0gW10gKGJvb2wg
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIHsKKyAgICAgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nXSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICsrY29ubmVjdGlvbkNvdW50OworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoW2Nvbm5lY3Rpb24sIGNvbm5lY3Rpb25Db3VudCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmddIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAg
ICAgU3RyaW5nIHJlcGx5OworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJvZHkgPQorICAg
ICAgICAgICAgICAgICI8c2NyaXB0PiIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICInaHR0cDovL3dlYmtpdC5vcmcvcGF0aDMnLCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ7Y3JlZGVudGlhbHM6J2luY2x1ZGUnfSIKKyAgICAgICAgICAg
ICAgICAgICAgIikudGhlbigoKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGVydCgn
ZmV0Y2hlZCcpIgorICAgICAgICAgICAgICAgICAgICAifSkuY2F0Y2goKGUpPT57IgorICAgICAg
ICAgICAgICAgICAgICAgICAgImFsZXJ0KGUpIgorICAgICAgICAgICAgICAgICAgICAifSkiCisg
ICAgICAgICAgICAgICAgIjwvc2NyaXB0PiI7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjb25u
ZWN0aW9uQ291bnQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiR0VUIGh0dHA6Ly93ZWJr
aXQub3JnL3BhdGgxIEhUVFAvMS4xXHJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkg
PSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xy
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6ICIsIHN0cmxlbihi
b2R5KSwgIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiU2V0LUNvb2tpZTogYT1iXHJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGJvZHkKKyAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGNhc2UgMzogeworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIo
cmVxdWVzdC5kYXRhKCksICJHRVQgaHR0cDovL2V4YW1wbGUuY29tL3BhdGgyIEhUVFAvMS4xXHJc
biIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbHkgPSBtYWtlU3RyaW5nKAorICAgICAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCBzdHJsZW4oYm9keSksICJcclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJcclxuIiwgYm9keQorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rp
b25Db3VudCA9PSAyIHx8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQorICAg
ICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAi
Q29va2llOiBhPWJcclxuIikpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Ryc3RyKHJlcXVlc3QuZGF0YSgpLCAiQ29va2ll
OiBhPWJcclxuIikpOworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVx
dWVzdC5kYXRhKCksICJHRVQgaHR0cDovL3dlYmtpdC5vcmcvcGF0aDMgSFRUUC8xLjFcclxuIikp
OworICAgICAgICAgICAgICAgICAgICByZXBseSA9CisgICAgICAgICAgICAgICAgICAgICAgICAi
SFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzOiB0cnVlXHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAiXHJcbiI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92
ZShyZXBseSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8g
c3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0Tm9uUGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAg
W3N0b3JlQ29uZmlndXJhdGlvbiBzZXRQcm94eUNvbmZpZ3VyYXRpb246QHsKKyAgICAgICAgICAg
IChOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFByb3h5SG9zdDogQCIxMjcuMC4wLjEi
LAorICAgICAgICAgICAgKE5TU3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlQb3J0
OiBAKHNlcnZlci5wb3J0KCkpCisgICAgICAgIH1dOworICAgICAgICBbc3RvcmVDb25maWd1cmF0
aW9uIHNldEFsbG93c1NlcnZlclByZWNvbm5lY3Q6Tk9dOworICAgICAgICBhdXRvIGRhdGFTdG9y
ZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246c3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgICAgIFtkYXRhU3RvcmUgX3Nl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisgICAgICAgIGF1dG8gdmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAg
ICAgICBbdmlld0NvbmZpZ3VyYXRpb24gX3NldFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nOnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nXTsKKyAgICAgICAgW3Zp
ZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOnZpZXdDb25maWd1
cmF0aW9uLmdldCgpXSk7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQu
b3JnL3BhdGgxIl1dXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dh
aXRGb3JBbGVydF0sICJmZXRjaGVkIik7CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly9leGFtcGxlLmNvbS9wYXRoMiJdXV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmll
dyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCIpOworICAgIH07CisgICAgcnVuVGVzdCh0
cnVlKTsKKyAgICBydW5UZXN0KGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCisjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgJKHJldmlzaW9uIDI2MjAzMikKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsMyArMzIsNyBAQAogLSAoTlNTdHJpbmcgKil3YWl0Rm9yQWxlcnQ7CiAKIEBlbmQK
KworQGludGVyZmFjZSBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQorLSAoTlNTdHJp
bmcgKilfdGVzdF93YWl0Rm9yQWxlcnQ7CitAZW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2MjAzMikKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5
LDMgKzU5LDE3IEBAIC0gKE5TU3RyaW5nICopd2FpdEZvckFsZXJ0CiB9CiAKIEBlbmQKKworQGlt
cGxlbWVudGF0aW9uIFdLV2ViVmlldyAoVGVzdFVJRGVsZWdhdGVFeHRyYXMpCisKKy0gKE5TU3Ry
aW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0Cit7CisgICAgRVhQRUNUX0ZBTFNFKHNlbGYuVUlEZWxl
Z2F0ZSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVGVzdFVJRGVsZWdhdGUgbmV3
XSk7CisgICAgc2VsZi5VSURlbGVnYXRlID0gdWlEZWxlZ2F0ZS5nZXQoKTsKKyAgICBOU1N0cmlu
ZyAqYWxlcnQgPSBbdWlEZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdOworICAgIHNlbGYuVUlEZWxlZ2F0
ZSA9IG5pbDsKKyAgICByZXR1cm4gYWxlcnQ7Cit9CisKK0BlbmQK
</data>

          </attachment>
      

    </bug>

</bugzilla>