<?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>189053</bug_id>
          
          <creation_ts>2018-08-28 12:16:46 -0700</creation_ts>
          <short_desc>[Curl][WebKit] Implement Proxy configuration API.</short_desc>
          <delta_ts>2018-11-09 12:44:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pvollan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454491</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-28 12:16:46 -0700</bug_when>
    <thetext>Implement Curl specific proxy and TLS related settings on WebKit NetworkProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454494</commentid>
    <comment_count>1</comment_count>
      <attachid>348321</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-28 12:24:54 -0700</bug_when>
    <thetext>Created attachment 348321
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454495</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-28 12:27:27 -0700</bug_when>
    <thetext>Attachment 348321 did not pass style-queue:


ERROR: Source/WebKit/PlatformWin.cmake:67:  Alphabetical sorting problem. &quot;UIProcess/API/C/curl/WKContextCurl.cpp&quot; should be before &quot;UIProcess/win/WebView.cpp&quot;.  [list/order] [5]
ERROR: Source/WebKit/UIProcess/API/C/curl/WKContextCurl.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/UIProcess/win/WebProcessPoolWin.cpp:33:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/NetworkProcess/curl/NetworkProcessCurl.cpp:113:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 4 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454520</commentid>
    <comment_count>3</comment_count>
      <attachid>348333</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-28 13:32:23 -0700</bug_when>
    <thetext>Created attachment 348333
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454522</commentid>
    <comment_count>4</comment_count>
      <attachid>348334</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-28 13:37:41 -0700</bug_when>
    <thetext>Created attachment 348334
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454526</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-28 13:39:51 -0700</bug_when>
    <thetext>Attachment 348334 did not pass style-queue:


ERROR: Source/WebKit/PlatformWin.cmake:69:  Alphabetical sorting problem. &quot;UIProcess/curl/WebProcessPoolCurl.cpp&quot; should be before &quot;UIProcess/win/WebView.cpp&quot;.  [list/order] [5]
ERROR: Source/WebKit/UIProcess/API/C/curl/WKContextCurl.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/UIProcess/win/WebProcessPoolWin.cpp:33:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/NetworkProcess/curl/NetworkProcessCurl.cpp:113:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 4 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454537</commentid>
    <comment_count>6</comment_count>
      <attachid>348339</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-28 13:54:13 -0700</bug_when>
    <thetext>Created attachment 348339
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454542</commentid>
    <comment_count>7</comment_count>
      <attachid>348339</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-28 14:05:38 -0700</bug_when>
    <thetext>Comment on attachment 348339
PATCH

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

&gt; Source/WebKit/NetworkProcess/win/NetworkProcessWin.cpp:38
&gt; +    platformInitializeNetworkProcessCurl(parameters);

I don&apos;t think we should be going against the other ports in terms of how the NetworkProcess is being laid out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454622</commentid>
    <comment_count>8</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-08-28 16:28:47 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #7)
&gt; Comment on attachment 348339 [details]
&gt; PATCH
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348339&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/win/NetworkProcessWin.cpp:38
&gt; &gt; +    platformInitializeNetworkProcessCurl(parameters);
&gt; 
&gt; I don&apos;t think we should be going against the other ports in terms of how the
&gt; NetworkProcess is being laid out.

Our private port also uses Curl and it requires some special initialization. It&apos;s a little bit weird because There&apos;s no special extra initialization on Windows side, but the separation is needed for our platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456638</commentid>
    <comment_count>9</comment_count>
      <attachid>348339</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-04 23:08:00 -0700</bug_when>
    <thetext>Comment on attachment 348339
PATCH

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

I think you should make this change testable, for example, by adding proxy and TLS setting UI for MiniBrowser.

&gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:30
&gt; +#include &quot;NetworkProcess.h&quot;

You don&apos;t need to add this line.

&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:35
&gt; +#include &lt;WebCore/URL.h&gt;

You should not include URL.h because CurlProxySettings.h includes URL.h.

&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:134
&gt; +    ASSERT(!settings.isEmpty());

IIUC, this assertion can fail if the client calls WKContextSetNetworkProxySettings with kWKNetworkProxyModeCustom and an empty proxyUrl.

&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.cpp:30
&gt; +#include &quot;WebProcessPool.h&quot;

Remove this blank line.
https://webkit.org/code-style-guidelines/#include-system

&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.h:44
&gt; +WK_EXPORT WKStringRef WKContextGetSslCACertPath(WKContextRef);

You are using toCopiedAPI to return a copy of string. You should name an API Copy instead of Get if you return a copy of string in WK API.
For example, WKPageCopyTitle.
And, You should name SSL instead of Ssl, for exameple WKContextSetAllowsAnySSLCertificateForWebSocketTesting.
WKContextGetSslCACertPath -&gt; WKContextCopySSLCACertPath

&gt; Source/WebKit/UIProcess/win/WebProcessPoolWin.cpp:33
&gt; +

Remove this blank line.
https://webkit.org/code-style-guidelines/#include-system</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456648</commentid>
    <comment_count>10</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-04 23:47:32 -0700</bug_when>
    <thetext>Thanks for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456760</commentid>
    <comment_count>11</comment_count>
      <attachid>348339</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-05 10:14:15 -0700</bug_when>
    <thetext>Comment on attachment 348339
PATCH

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

&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.cpp:41
&gt; +    case WKNetworkProxyMode::kWKNetworkProxyModeDefault :

No space before :

&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.h:43
&gt; +WK_EXPORT void WKContextSetSslCACertPath(WKContextRef, WKStringRef caCertPath);

I have two problems with this:
1) This should be per WKWebsiteDataStoreRef, which corresponds with a NetworkSession.  It may be tempting to add things to WKContext, but we&apos;re in the process of moving as much as we can away from WKContext.
2) I&apos;m not sure this is a good design to expose these things via the API.  I think instead the cacert data should just be included in the bundle of files and resources that constitute WebKit.  There should definitely be a good default so that API users don&apos;t have to use this in order to get something working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457864</commentid>
    <comment_count>12</comment_count>
      <attachid>348339</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-07 22:22:26 -0700</bug_when>
    <thetext>Comment on attachment 348339
PATCH

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

&gt;&gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:30
&gt;&gt; +#include &quot;NetworkProcess.h&quot;
&gt; 
&gt; You don&apos;t need to add this line.

Got it.

&gt;&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:35
&gt;&gt; +#include &lt;WebCore/URL.h&gt;
&gt; 
&gt; You should not include URL.h because CurlProxySettings.h includes URL.h.

Got it.

&gt;&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:134
&gt;&gt; +    ASSERT(!settings.isEmpty());
&gt; 
&gt; IIUC, this assertion can fail if the client calls WKContextSetNetworkProxySettings with kWKNetworkProxyModeCustom and an empty proxyUrl.

Got it.

&gt;&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.cpp:30
&gt;&gt; +#include &quot;WebProcessPool.h&quot;
&gt; 
&gt; Remove this blank line.
&gt; https://webkit.org/code-style-guidelines/#include-system

Got it.

&gt;&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.cpp:41
&gt;&gt; +    case WKNetworkProxyMode::kWKNetworkProxyModeDefault :
&gt; 
&gt; No space before :

Got it.

&gt;&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.h:43
&gt;&gt; +WK_EXPORT void WKContextSetSslCACertPath(WKContextRef, WKStringRef caCertPath);
&gt; 
&gt; I have two problems with this:
&gt; 1) This should be per WKWebsiteDataStoreRef, which corresponds with a NetworkSession.  It may be tempting to add things to WKContext, but we&apos;re in the process of moving as much as we can away from WKContext.
&gt; 2) I&apos;m not sure this is a good design to expose these things via the API.  I think instead the cacert data should just be included in the bundle of files and resources that constitute WebKit.  There should definitely be a good default so that API users don&apos;t have to use this in order to get something working.

1) I see. I try moving them to WKWebsiteDataStoreRef.
2) From our system&apos;s requirement, we have to pass root ca information supplied by the library client.

&gt;&gt; Source/WebKit/UIProcess/API/C/curl/WKContextCurl.h:44
&gt;&gt; +WK_EXPORT WKStringRef WKContextGetSslCACertPath(WKContextRef);
&gt; 
&gt; You are using toCopiedAPI to return a copy of string. You should name an API Copy instead of Get if you return a copy of string in WK API.
&gt; For example, WKPageCopyTitle.
&gt; And, You should name SSL instead of Ssl, for exameple WKContextSetAllowsAnySSLCertificateForWebSocketTesting.
&gt; WKContextGetSslCACertPath -&gt; WKContextCopySSLCACertPath

I see. Thanks.

&gt;&gt; Source/WebKit/UIProcess/win/WebProcessPoolWin.cpp:33
&gt;&gt; +
&gt; 
&gt; Remove this blank line.
&gt; https://webkit.org/code-style-guidelines/#include-system

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462767</commentid>
    <comment_count>13</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-24 11:03:18 -0700</bug_when>
    <thetext>Alex,

we discussed about this and change our direction as removing SSL settings API. Then move those initialization into platform (i.e. Win, our platform) specific initialization when SSLHandle is initialized.

The rest of patch is proxy setting API. Do you think those API also should also move to WKWebsiteDataStore? It seems Apple port doesn&apos;t have such, I want to hear your opinion. We need this proxy support on our platform by following WebKit manner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462899</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-24 14:46:06 -0700</bug_when>
    <thetext>If you need proxy settings, put them on WebsiteDataStore, not WebProcessPool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462958</commentid>
    <comment_count>15</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-24 15:56:09 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #14)
&gt; If you need proxy settings, put them on WebsiteDataStore, not WebProcessPool.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462959</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-24 15:57:15 -0700</bug_when>
    <thetext>By the way, on Apple platforms the proxy settings are configured system-wide or per-app underneath us, so we don&apos;t have to have that code in WebKit.  I&apos;m not sure what the libsoup code does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462965</commentid>
    <comment_count>17</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-09-24 16:03:58 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #16)
&gt; By the way, on Apple platforms the proxy settings are configured system-wide
&gt; or per-app underneath us, so we don&apos;t have to have that code in WebKit.  I&apos;m
&gt; not sure what the libsoup code does.

Yep, that&apos;s why I asked to hear your opinion because I cannot find that in public. Gtk put the api in webcontext. That&apos;s why we&apos;ve added in WebContext. But we follow your new design choice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463226</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-25 11:26:26 -0700</bug_when>
    <thetext>GTK should follow, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463385</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-09-25 15:43:11 -0700</bug_when>
    <thetext>We store proxy settings in the SoupNetworkSession object. That&apos;s where we put all our platform-specific NetworkProcess configuration.

In the public API, they&apos;re exposed via WebKitWebContext, which of course we can&apos;t change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469493</commentid>
    <comment_count>20</comment_count>
      <attachid>352390</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-15 15:23:33 -0700</bug_when>
    <thetext>Created attachment 352390
WIP Patch

Alex, can you review is this the right direction to add proxy API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469511</commentid>
    <comment_count>21</comment_count>
      <attachid>352390</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-15 15:55:55 -0700</bug_when>
    <thetext>Comment on attachment 352390
WIP Patch

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

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:138
&gt; +    WEBCORE_EXPORT void setProxySettings(const CurlProxySettings&amp;) const;

Probably should be CurlProxySettings&amp;&amp; since you are sinking the data (caller doesn&apos;t need it anymore), right?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:306
&gt; +    void setNetworkProxySettings(PAL::SessionID, const WebCore::CurlProxySettings&amp;);

Ditto.

&gt; Source/WebKit/NetworkProcess/curl/NetworkProcessCurl.cpp:89
&gt; +        networkStorageSession-&gt;setProxySettings(settings);

WTFMove?

&gt; Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp:40
&gt; +    networkStorageSession().setProxySettings(parameters.proxySettings);

WTFMove!

&gt; Source/WebKit/NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:45
&gt; +    SessionTracker::setSession(sessionID, NetworkSession::create(WTFMove(parameters.networkSessionParameters)));

Yeah like this ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469512</commentid>
    <comment_count>22</comment_count>
      <attachid>352390</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-15 15:59:11 -0700</bug_when>
    <thetext>Comment on attachment 352390
WIP Patch

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

Thanks, Michael!

&gt;&gt; Source/WebCore/platform/network/NetworkStorageSession.h:138
&gt;&gt; +    WEBCORE_EXPORT void setProxySettings(const CurlProxySettings&amp;) const;
&gt; 
&gt; Probably should be CurlProxySettings&amp;&amp; since you are sinking the data (caller doesn&apos;t need it anymore), right?

Right.

&gt;&gt; Source/WebKit/NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:45
&gt;&gt; +    SessionTracker::setSession(sessionID, NetworkSession::create(WTFMove(parameters.networkSessionParameters)));
&gt; 
&gt; Yeah like this ;)

Yeag! :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472503</commentid>
    <comment_count>23</comment_count>
      <attachid>353191</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-26 11:09:16 -0700</bug_when>
    <thetext>Created attachment 353191
PATCH

Implement API for proxy configuration. Also add UI for Proxy on MiniBrowser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472506</commentid>
    <comment_count>24</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-26 11:12:58 -0700</bug_when>
    <thetext>Attachment 353191 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 1 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472516</commentid>
    <comment_count>25</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-26 11:34:29 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #24)
&gt; Attachment 353191 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright
&gt; message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;
&gt; [legal/copyright] [5]
&gt; Total errors found: 1 in 31 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

This file is generated and managed by VisualStudio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472642</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-10-26 20:09:50 -0700</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #25)
&gt; (In reply to Build Bot from comment #24)
&gt; &gt; ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright
&gt; &gt; message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;
&gt; &gt; [legal/copyright] [5]
&gt; &gt; Total errors found: 1 in 31 files
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against
&gt; &gt; check-webkit-style.
&gt; 
&gt; This file is generated and managed by VisualStudio.

So someone needs to update check-webkit-style to understand that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472789</commentid>
    <comment_count>27</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-27 18:56:42 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #26)
&gt; (In reply to Basuke Suzuki from comment #25)
&gt; &gt; (In reply to Build Bot from comment #24)
&gt; &gt; &gt; ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright
&gt; &gt; &gt; message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;
&gt; &gt; &gt; [legal/copyright] [5]
&gt; &gt; &gt; Total errors found: 1 in 31 files
&gt; &gt; &gt; 
&gt; &gt; &gt; If any of these errors are false positives, please file a bug against
&gt; &gt; &gt; check-webkit-style.
&gt; &gt; 
&gt; &gt; This file is generated and managed by VisualStudio.
&gt; 
&gt; So someone needs to update check-webkit-style to understand that.

I&apos;ll do next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472949</commentid>
    <comment_count>28</comment_count>
      <attachid>353191</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-29 10:55:48 -0700</bug_when>
    <thetext>Comment on attachment 353191
PATCH

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.messages.in:37
&gt; +    SetNetworkProxySettings(PAL::SessionID sessionID, WebCore::CurlProxySettings settings)

sessionID makes sense but soup equivalent is not doing so.
I guess some GTK refactoring could be done based on that patch.

&gt; Source/WebKit/NetworkProcess/curl/NetworkProcessCurl.cpp:88
&gt; +    if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))

Can there be a case where we do not have any networkStorageSession?
Should we ASSERT?

&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:133
&gt; +    encoder.encodeEnum(settings.mode());

We now use EnumTraits to encode the enum without encodeEnum.
You should then be able to write: encoder &lt;&lt; settings.mode();

&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:141
&gt; +bool ArgumentCoder&lt;CurlProxySettings&gt;::decode(Decoder&amp; decoder, CurlProxySettings&amp; settings)

We now try to write decoders as:
std::optional&lt;CurlProxySettings&gt; ArgumentCoder&lt;CurlProxySettings&gt;::decode(Decoder&amp; decoder)
Can that be done here?

&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:152
&gt; +    String url;

I initially thought url should be URL but it is not.
I wonder though whether it should be and if so if CurlProxySettings::url() should return a const URL&amp;.

&gt; Source/WebKit/UIProcess/WebsiteData/curl/WebsiteDataStoreCurl.cpp:40
&gt; +void WebsiteDataStore::setNetworkProxySettings(const WebCore::CurlProxySettings&amp; proxySettings)

Could be WebCore::CurlProxySettings&amp;&amp;?

&gt; Tools/MiniBrowser/win/Common.cpp:135
&gt; +        void setup() override

override -&gt; final here and below?

&gt; Tools/MiniBrowser/win/WebKitBrowserWindow.cpp:130
&gt; +        WKWebsiteDataStoreDisableNetworkProxySettings(store);

Maybe could be rewritten to:
if (!m_proxy.enable) {
    WKWebsiteDataStoreDisableNetworkProxySettings(store);
    return;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472968</commentid>
    <comment_count>29</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-29 11:34:41 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #28)
&gt; sessionID makes sense but soup equivalent is not doing so.
&gt; I guess some GTK refactoring could be done based on that patch.

Thing is, WPE/GTK has no concept of network sessions: there&apos;s always exactly one per UI process. For this reason, I&apos;ve never entirely understood why SessionID exists. I guess it&apos;s to allow a separate network session, e.g. for ephemeral views? (Epiphany always launches a new UI process for ephemeral mode, which is why I&apos;ve never paid attention to this.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472993</commentid>
    <comment_count>30</comment_count>
      <attachid>353191</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-29 12:33:54 -0700</bug_when>
    <thetext>Comment on attachment 353191
PATCH

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

Thanks for reviewing!

&gt;&gt; Source/WebKit/NetworkProcess/curl/NetworkProcessCurl.cpp:88
&gt;&gt; +    if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))
&gt; 
&gt; Can there be a case where we do not have any networkStorageSession?
&gt; Should we ASSERT?

I need to confirm this, but I believe it shouldn&apos;t be nil. Maybe ASSERT is good.

&gt;&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:133
&gt;&gt; +    encoder.encodeEnum(settings.mode());
&gt; 
&gt; We now use EnumTraits to encode the enum without encodeEnum.
&gt; You should then be able to write: encoder &lt;&lt; settings.mode();

Okay, I&apos;ll check that and try rewriting with it.

&gt;&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:141
&gt;&gt; +bool ArgumentCoder&lt;CurlProxySettings&gt;::decode(Decoder&amp; decoder, CurlProxySettings&amp; settings)
&gt; 
&gt; We now try to write decoders as:
&gt; std::optional&lt;CurlProxySettings&gt; ArgumentCoder&lt;CurlProxySettings&gt;::decode(Decoder&amp; decoder)
&gt; Can that be done here?

Got it. Trying.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/curl/WebsiteDataStoreCurl.cpp:40
&gt;&gt; +void WebsiteDataStore::setNetworkProxySettings(const WebCore::CurlProxySettings&amp; proxySettings)
&gt; 
&gt; Could be WebCore::CurlProxySettings&amp;&amp;?

Right.

&gt;&gt; Tools/MiniBrowser/win/Common.cpp:135
&gt;&gt; +        void setup() override
&gt; 
&gt; override -&gt; final here and below?

Ah, okay. That&apos;s better.

&gt;&gt; Tools/MiniBrowser/win/WebKitBrowserWindow.cpp:130
&gt;&gt; +        WKWebsiteDataStoreDisableNetworkProxySettings(store);
&gt; 
&gt; Maybe could be rewritten to:
&gt; if (!m_proxy.enable) {
&gt;     WKWebsiteDataStoreDisableNetworkProxySettings(store);
&gt;     return;
&gt; }

Okay, the point is stop nesting deep and use early return, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472997</commentid>
    <comment_count>31</comment_count>
      <attachid>353191</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-29 12:48:41 -0700</bug_when>
    <thetext>Comment on attachment 353191
PATCH

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

&gt;&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:152
&gt;&gt; +    String url;
&gt; 
&gt; I initially thought url should be URL but it is not.
&gt; I wonder though whether it should be and if so if CurlProxySettings::url() should return a const URL&amp;.

You are right. These are our mistake. Thanks. It should be String at anywhere. We&apos;ll change APIs and method calls to use String instead of URL. 

The background of this was here https://bugs.webkit.org/show_bug.cgi?id=184714#c11.

Summary:
There&apos;s no way to specify port 80 as a http proxy port. libcurl treat default port of http proxy to 1080 if port number is omitted. Once a string is stored in URL, port 80 is removed form the URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473012</commentid>
    <comment_count>32</comment_count>
      <attachid>353191</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-29 13:21:43 -0700</bug_when>
    <thetext>Comment on attachment 353191
PATCH

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/curl/NetworkProcessCurl.cpp:88
&gt;&gt;&gt; +    if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))
&gt;&gt; 
&gt;&gt; Can there be a case where we do not have any networkStorageSession?
&gt;&gt; Should we ASSERT?
&gt; 
&gt; I need to confirm this, but I believe it shouldn&apos;t be nil. Maybe ASSERT is good.

I still am investigating this, but this kind of pattern are used in many place. https://github.com/WebKit/webkit/blob/5ebf9a85efa6c334e5a7d68bdd7d8cc4396b30a9/Source/WebKit/NetworkProcess/NetworkProcess.cpp#L548
    if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))
        networkStorageSession-&gt;removeAllStorageAccess();
    else
        ASSERT_NOT_REACHED();
I don&apos;t see why, but it seems reasonable to follow this pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473034</commentid>
    <comment_count>33</comment_count>
      <attachid>353191</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-29 13:46:27 -0700</bug_when>
    <thetext>Comment on attachment 353191
PATCH

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

&gt;&gt;&gt; Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp:152
&gt;&gt;&gt; +    String url;
&gt;&gt; 
&gt;&gt; I initially thought url should be URL but it is not.
&gt;&gt; I wonder though whether it should be and if so if CurlProxySettings::url() should return a const URL&amp;.
&gt; 
&gt; You are right. These are our mistake. Thanks. It should be String at anywhere. We&apos;ll change APIs and method calls to use String instead of URL. 
&gt; 
&gt; The background of this was here https://bugs.webkit.org/show_bug.cgi?id=184714#c11.
&gt; 
&gt; Summary:
&gt; There&apos;s no way to specify port 80 as a http proxy port. libcurl treat default port of http proxy to 1080 if port number is omitted. Once a string is stored in URL, port 80 is removed form the URL.

No I was wrong. That was for libcurl implementation. We chose to act like standard. We translate the meaning of port and a user shouldn&apos;t care about this weird behavior of libcurl. Then these arguments are whole WebCore::URL and it should be used here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473484</commentid>
    <comment_count>34</comment_count>
      <attachid>353430</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-30 16:27:17 -0700</bug_when>
    <thetext>Created attachment 353430
FIX

Fixed Youenn&apos;s reviewed points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473485</commentid>
    <comment_count>35</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-30 16:29:59 -0700</bug_when>
    <thetext>Attachment 353430 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474540</commentid>
    <comment_count>36</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-02 10:17:33 -0700</bug_when>
    <thetext>Review please? Youenn?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476519</commentid>
    <comment_count>37</comment_count>
      <attachid>353430</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-08 07:18:58 -0800</bug_when>
    <thetext>Comment on attachment 353430
FIX

LGTM, some nits below.

Usually, when we add new API, it is a good practice to write some unit tests if the API is not tested as part of WebKitTestRunner.
I am not sure how much in that case that will help.
Currently our API tests do not run concurrently to an HTTP server.

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

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:139
&gt; +    WEBCORE_EXPORT void setProxySettings(CurlProxySettings&amp;&amp;) const;

It is strange to have setters be const, mutable behind I guess.
Should we make it non const?
Ditto for setCookieDatabase.

&gt; Source/WebKit/ChangeLog:8
&gt; +        Added proxy configuration API to WebsiteDataStore. Three API was added in /WKWebsiteDataStoreRefCurl.h:

s/was/were/.
I would remove the / from WKWebsiteDataStoreRefCurl.h

&gt; Source/WebKit/NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:42
&gt; +        return;

We probably have the same first 3 lines in SOUP/Mac ports.
Probably some refactoring could be done but it might be better as a follow-up.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1668
&gt;  #endif

There is some potential refactoring code that could also be done here as well to share this code with Mac.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:198
&gt; +    const WebCore::CurlProxySettings&amp; networkProxySettings() { return m_proxySettings; }

Should be const probably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476672</commentid>
    <comment_count>38</comment_count>
      <attachid>353430</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-08 15:01:53 -0800</bug_when>
    <thetext>Comment on attachment 353430
FIX

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

Thanks! Okay, try to put test in TestWebKitAPI.

&gt;&gt; Source/WebCore/platform/network/NetworkStorageSession.h:139
&gt;&gt; +    WEBCORE_EXPORT void setProxySettings(CurlProxySettings&amp;&amp;) const;
&gt; 
&gt; It is strange to have setters be const, mutable behind I guess.
&gt; Should we make it non const?
&gt; Ditto for setCookieDatabase.

Right. We&apos;ll change.

&gt;&gt; Source/WebKit/ChangeLog:8
&gt;&gt; +        Added proxy configuration API to WebsiteDataStore. Three API was added in /WKWebsiteDataStoreRefCurl.h:
&gt; 
&gt; s/was/were/.
&gt; I would remove the / from WKWebsiteDataStoreRefCurl.h

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:42
&gt;&gt; +        return;
&gt; 
&gt; We probably have the same first 3 lines in SOUP/Mac ports.
&gt; Probably some refactoring could be done but it might be better as a follow-up.

Okay. I&apos;ll think about that.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1668
&gt;&gt;  #endif
&gt; 
&gt; There is some potential refactoring code that could also be done here as well to share this code with Mac.

Got it.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:198
&gt;&gt; +    const WebCore::CurlProxySettings&amp; networkProxySettings() { return m_proxySettings; }
&gt; 
&gt; Should be const probably.

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477034</commentid>
    <comment_count>39</comment_count>
      <attachid>354367</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-09 12:04:44 -0800</bug_when>
    <thetext>Created attachment 354367
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477035</commentid>
    <comment_count>40</comment_count>
      <attachid>354367</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-09 12:05:53 -0800</bug_when>
    <thetext>Comment on attachment 354367
PATCH

We&apos;ll open a separate bug to add API test for this change. Thanks Youenn for r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477064</commentid>
    <comment_count>41</comment_count>
      <attachid>354367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-09 12:43:33 -0800</bug_when>
    <thetext>Comment on attachment 354367
PATCH

Clearing flags on attachment: 354367

Committed r238051: &lt;https://trac.webkit.org/changeset/238051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477065</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-09 12:43:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477066</commentid>
    <comment_count>43</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-09 12:44:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/45953089&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348321</attachid>
            <date>2018-08-28 12:24:54 -0700</date>
            <delta_ts>2018-08-28 13:32:23 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>30111</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjZiODcyMjIyOGEuLjcwZGRiMDM1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUyIEBACisyMDE4LTA4LTI4ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNv
bT4KKworICAgICAgICBbQ3VybF1bV2ViS2l0XSBJbXBsZW1lbnQgUHJveHkgYW5kIFRMUyByZWxh
dGVkIGZlYXR1cmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHByb3h5IGFuZCBUTFMgcmVsYXRlZCBmZWF0dXJlcyBvbiBXZWJLaXQg
TmV0d29ya1Byb2Nlc3MuIFNlcGFyYXRlIFdlYlByb2Nlc3NQb29sV2luIGFuZCBXZWJQcm9jZXNz
UG9vbEN1cmwKKyAgICAgICAgZm9yIGRpZmZlcmVuY2VzIG9mIGluaXRpYWxpemF0aW9uIGFtb25n
IHBsYXRmb3JtIGxheWVyIGFuZCBuZXR3b3JrIGxheWVyLgorICAgICAgICBBY3R1YWwgaW1wbGVt
ZW50YXRpb25zIGhhdmUgYmVlbiBpbiBXZWJDb3JlIGFscmVhZHkgYW5kIHVzZWQgaW4gV2ViS2l0
TGVnYWN5IGZvciBhIHdoaWxlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJsKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFNzbEFsZ29yaXRobXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3NsQ0FDZXJ0UGF0aCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2luL05ldHdvcmtQcm9jZXNzV2luLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2N1cmwv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8Q3VybFByb3h5U2V0dGluZ3M+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPEN1cmxQcm94eVNldHRpbmdzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcDogQWRkZWQuCisgICAgICAgIChXS0NvbnRleHRTZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyk6CisgICAgICAgIChXS0NvbnRleHRTZXRTc2xBbGdvcml0aG1z
KToKKyAgICAgICAgKFdLQ29udGV4dFNldFNzbENBQ2VydFBhdGgpOgorICAgICAgICAoV0tDb250
ZXh0R2V0U3NsQ0FDZXJ0UGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tD
b250ZXh0Q3VybC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1Bvb2xXaW4uY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3NDdXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE5l
dHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNl
dFNzbEFsZ29yaXRobXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0U3Ns
Q0FDZXJ0UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRTc2xDQUNl
cnRQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucyk6CisKIDIwMTgtMDgtMjQgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtDdXJsXSBN
YXRjaCB0aGUgaW50ZXJmYWNlIHVzZWQgaW4gTmV0d29ya0RhdGFUYXNrIGFuZCBSZXNvdXJjZUhh
bmRsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCBjYWVjNTNjM2M1Zi4uOGU4NmFiMjI3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTU1LDYgKzU1LDEwIEBAIGNsYXNzIFVSTDsK
IGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKKworI2lmIFVTRShDVVJM
KQorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0yNDQsNiArMjQ4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJv
eHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNl
bmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzc0N1cmwoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAg
ICB2b2lkIHNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzJik7CisgICAgdm9pZCBzZXRTc2xBbGdvcml0aG1zKFN0cmluZyBjaXBoZXJMaXN0LCBT
dHJpbmcgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFN0cmluZyBjdXJ2ZXNMaXN0KTsKKyAgICB2
b2lkIHNldFNzbENBQ2VydFBhdGgoU3RyaW5nKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaWRlbnRpZmllcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJhYTM0
ZDA5ZmY2Li5mODg5ZDhiYTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMyw2ICszMywxMiBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0TmV0d29y
a1Byb3h5U2V0dGluZ3Moc3RydWN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyBz
ZXR0aW5ncykKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgU2V0TmV0d29ya1Byb3h5U2V0
dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCisgICAgU2V0U3NsQWxn
b3JpdGhtcyhTdHJpbmcgY2lwaGVyTGlzdCwgU3RyaW5nIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0
LCBTdHJpbmcgY3VydmVzTGlzdCkKKyAgICBTZXRTc2xDQUNlcnRQYXRoKFN0cmluZyBjYUNlcnRQ
YXRoKQorI2VuZGlmCisKICAgICBDbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAogICAgIEFkZFdl
YnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
d2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCBjZDdkYmE4ZTlhMy4uMjcxOGU5Nzk0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC04OSw2ICs4OSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2Vs
aWYgVVNFKENVUkwpCiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGU7
CiAjZW5kaWYKKyNpZiBVU0UoQ1VSTCkKKyAgICBlbmNvZGVyIDw8IHByb3h5U2V0dGluZ3M7Cisg
ICAgZW5jb2RlciA8PCBjaXBoZXJMaXN0OworICAgIGVuY29kZXIgPDwgc2lnbmF0dXJlQWxnb3Jp
dGhtc0xpc3Q7CisgICAgZW5jb2RlciA8PCBjdXJ2ZXNMaXN0OworICAgIGVuY29kZXIgPDwgY2FD
ZXJ0UGF0aDsKKyNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBlbmNvZGVyIDw8IGxvZ0Nvb2tpZUluZm9y
bWF0aW9uOwogI2VuZGlmCkBAIC0yMTQsNiArMjIxLDE5IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQ
cm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJveHlTZXR0aW5ncykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaXBoZXJMaXN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNpZ25h
dHVyZUFsZ29yaXRobXNMaXN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmN1cnZlc0xpc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FDZXJ0UGF0aCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmxvZ0Nvb2tpZUluZm9ybWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDU0ZTZhYjA0YzY0Li4yNGM0YmM5MGIyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYKKwog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKQEAgLTEwNCw2
ICsxMDgsMTQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBTdHJpbmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKKyAgICBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyBwcm94eVNldHRpbmdzOworICAg
IFN0cmluZyBjaXBoZXJMaXN0OworICAgIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlzdDsK
KyAgICBTdHJpbmcgY3VydmVzTGlzdDsKKyAgICBTdHJpbmcgY2FDZXJ0UGF0aDsKKyNlbmRpZgor
CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGJvb2wgbG9nQ29va2llSW5mb3JtYXRpb24geyBmYWxzZSB9OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggMjliNTI4ZTFjNzkuLmI3ZWNjYmQ0MzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0RhdGFU
YXNrQ3VybC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkN1cmwuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db29raWVzU3RyYXRlZ3kuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggMTkxMzFjNjczMjIu
LmE1YWY2YjViZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtMjYsMjkgKzI2LDIzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAotI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCi0jaW5jbHVkZSAiV2Vi
Q29va2llTWFuYWdlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JBTVNpemUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDdXJsKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZp
bGUuaXNFbXB0eSgpKQogICAgICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNl
dENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3Jh
Z2VGaWxlKTsKKyAgICBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhwYXJhbWV0ZXJzLnByb3h5U2V0
dGluZ3MpOworICAgIHNldFNzbEFsZ29yaXRobXMocGFyYW1ldGVycy5jaXBoZXJMaXN0LCBwYXJh
bWV0ZXJzLnNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBwYXJhbWV0ZXJzLmN1cnZlc0xpc3QpOwor
ICAgIGlmICghcGFyYW1ldGVycy5jYUNlcnRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0U3Ns
Q0FDZXJ0UGF0aChwYXJhbWV0ZXJzLmNhQ2VydFBhdGgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTkyLDQgKzg2
LDMxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25U
b0JhY2tncm91bmQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2V0UHJv
eHlTZXR0aW5ncyhzZXR0aW5ncyk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNzbEFs
Z29yaXRobXMoU3RyaW5nIGNpcGhlckxpc3QsIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlz
dCwgU3RyaW5nIGN1cnZlc0xpc3QpCit7CisgICAgYXV0byYgc3NsSGFuZGxlID0gQ3VybENvbnRl
eHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpOworICAgIHNzbEhhbmRsZS5zZXRDaXBoZXJMaXN0
KFdURk1vdmUoY2lwaGVyTGlzdCkpOworICAgIHNzbEhhbmRsZS5zZXRTaWduYXR1cmVBbGdvcml0
aG1zTGlzdChXVEZNb3ZlKHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0KSk7CisgICAgc3NsSGFuZGxl
LnNldEN1cnZlc0xpc3QoV1RGTW92ZShjdXJ2ZXNMaXN0KSk7Cit9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFNzbENBQ2VydFBhdGgoU3RyaW5nIGNhQ2VydFBhdGgpCit7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG9uTWVtb3J5SWRlbnRpZmllciA9ICI6bWVtb3J5OiI7CisKKyAgICBpZiAo
Y2FDZXJ0UGF0aC5zdGFydHNXaXRoKG9uTWVtb3J5SWRlbnRpZmllcikpIHsKKyAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNhQ2VydERhdGE7CisgICAgICAgIGF1dG8gYm9keSA9IGNhQ2VydFBhdGgu
c3Vic3RyaW5nKHN0cmxlbihvbk1lbW9yeUlkZW50aWZpZXIpKS51dGY4KCk7CisgICAgICAgIGNh
Q2VydERhdGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJvZHkuZGF0
YSgpKSwgYm9keS5sZW5ndGgoKSk7CisgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5z
c2xIYW5kbGUoKS5zZXRDQUNlcnREYXRhKFdURk1vdmUoY2FDZXJ0RGF0YSkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zc2xIYW5kbGUoKS5zZXRDQUNl
cnRQYXRoKFdURk1vdmUoY2FDZXJ0UGF0aCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3
b3JrUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3
b3JrUHJvY2Vzc1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjQ0NzA3YTk5NDM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93aW4vTmV0d29ya1Byb2Nlc3NXaW4uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworI2lmIFVTRShDVVJMKQor
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ3VybChwYXJhbWV0ZXJzKTsKKyNl
bmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmlu
ZGV4IDVjOTlkNWFhNWE3Li4wZTQxMmI2NThhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBA
IC0xMCw2ICsxMCw3IEBAIGFkZF9kZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKIAogbGlz
dChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy93aW4vTmV0d29ya1By
b2Nlc3NNYWluV2luLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJvY2Vzc1dp
bi5jcHAKIAogICAgIFBsYXRmb3JtL0lQQy93aW4vQXR0YWNobWVudFdpbi5jcHAKICAgICBQbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC02Myw2ICs2NCwxMiBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCiAgICAgVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9D
L2N1cmwvV0tDb250ZXh0Q3VybC5jcHAKKworICAgIFVJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQ
b29sQ3VybC5jcHAKKworICAgIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAK
IAogICAgIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA4
Y2E3NjBmY2ZmZC4uMDIwNGI5MWE2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0xNDYsNiArMTQ2LDEwIEBAIHN0cnVjdCBTb3VwTmV0d29y
a1Byb3h5U2V0dGluZ3M7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiAjZW5kaWYKIAor
I2lmIFVTRShDVVJMKQorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CisjZW5kaWYKKwogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjsKICNlbmRpZgpAQCAtNDQ4LDYgKzQ1MiwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50PiB7CiB9OwogI2VuZGlmCiAKKyNp
ZiBVU0UoQ1VSTCkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3Vy
bFByb3h5U2V0dGluZ3M+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOworfTsKKyNlbmRpZgorCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDb21w
b3NpdGlvblVuZGVybGluZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKaW5kZXgg
MzY2NzZkMDNjMWEuLjRmMWFiOGQ2YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKQEAgLTI4LDkgKzI4LDEx
IEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0
aWZpY2F0ZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjcsNCArMTI5LDM4IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBDcmVkZW50
aWFsJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxDdXJsUHJv
eHlTZXR0aW5ncz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJsUHJveHlTZXR0
aW5ncyYgc2V0dGluZ3MpCit7CisgICAgQVNTRVJUKCFzZXR0aW5ncy5pc0VtcHR5KCkpOworICAg
IGVuY29kZXIuZW5jb2RlRW51bShzZXR0aW5ncy5tb2RlKCkpOworICAgIGlmIChzZXR0aW5ncy5t
b2RlKCkgIT0gQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZW5jb2RlciA8PCBzZXR0aW5ncy51cmwoKTsKKyAgICBlbmNvZGVyIDw8IHNldHRp
bmdzLmlnbm9yZUhvc3RzKCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0
aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdXJsUHJveHlTZXR0aW5ncyYgc2V0dGlu
Z3MpCit7CisgICAgQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGUgbW9kZTsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShtb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1v
ZGUgIT0gQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbSkgeworICAgICAgICBzZXR0aW5n
cyA9IEN1cmxQcm94eVNldHRpbmdzKG1vZGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBTdHJpbmcgdXJsOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGlnbm9yZUhvc3RzOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaWdub3JlSG9zdHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBz
ZXR0aW5ncyA9IEN1cmxQcm94eVNldHRpbmdzKFVSTChVUkwoKSwgdXJsKSwgV1RGTW92ZShpZ25v
cmVIb3N0cykpOworICAgIHJldHVybiB0cnVlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLQ29udGV4dEN1cmwuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjc5ZmE0NjRiNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLQ29udGV4dEN1cmwuY3BwCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLQ29udGV4dEN1cmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViQ29yZS9DdXJsUHJveHlTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIldlYkNvcmUvVVJMLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tDb250ZXh0U2V0TmV0
d29ya1Byb3h5U2V0dGluZ3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLTmV0d29ya1Byb3h5TW9k
ZSBtb2RlLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpCit7Cisg
ICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBXS05ldHdvcmtQcm94eU1vZGU6OmtXS05ldHdv
cmtQcm94eU1vZGVEZWZhdWx0IDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQpLT5zZXROZXR3b3Jr
UHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJv
eHlTZXR0aW5nczo6TW9kZTo6RGVmYXVsdCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdL
TmV0d29ya1Byb3h5TW9kZTo6a1dLTmV0d29ya1Byb3h5TW9kZU5vUHJveHkgOgorICAgICAgICB0
b0ltcGwoY29udGV4dCktPnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94
eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpOb1Byb3h5KSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tOZXR3b3JrUHJveHlNb2RlOjprV0tOZXR3b3JrUHJv
eHlNb2RlQ3VzdG9tIDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQpLT5zZXROZXR3b3JrUHJveHlT
ZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIHRvV1RGU3RyaW5nKHByb3h5VXJsKSksIHRvV1RGU3RyaW5nKGlnbm9yZUhvc3RzKSkp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0U3NsQWxnb3Jp
dGhtcyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgY2lwaGVyTGlzdCwgV0tTdHJp
bmdSZWYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFdLU3RyaW5nUmVmIGN1cnZlc0xpc3QpCit7
CisgICAgdG9JbXBsKGNvbnRleHQpLT5zZXRTc2xBbGdvcml0aG1zKHRvV1RGU3RyaW5nKGNpcGhl
ckxpc3QpLCB0b1dURlN0cmluZyhzaWduYXR1cmVBbGdvcml0aG1zTGlzdCksIHRvV1RGU3RyaW5n
KGN1cnZlc0xpc3QpKTsKK30KKwordm9pZCBXS0NvbnRleHRTZXRTc2xDQUNlcnRQYXRoKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKQoreworICAgIHRvSW1wbChj
b250ZXh0KS0+c2V0U3NsQ0FDZXJ0UGF0aCh0b1dURlN0cmluZyhjYUNlcnRQYXRoKSk7Cit9CisK
K1dLU3RyaW5nUmVmIFdLQ29udGV4dEdldFNzbENBQ2VydFBhdGgoV0tDb250ZXh0UmVmIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChjb250ZXh0KS0+Z2V0U3NsQ0FD
ZXJ0UGF0aCgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L2N1cmwvV0tDb250ZXh0Q3VybC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3Vy
bC9XS0NvbnRleHRDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjhhNDkzMzM5MjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRl
IDxXZWJLaXQvV0tDb250ZXh0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworZW51bSBXS05ldHdvcmtQcm94eU1vZGUgeworICAgIGtXS05ldHdvcmtQcm94
eU1vZGVEZWZhdWx0LAorICAgIGtXS05ldHdvcmtQcm94eU1vZGVOb1Byb3h5LAorICAgIGtXS05l
dHdvcmtQcm94eU1vZGVDdXN0b20KK307CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldE5l
dHdvcmtQcm94eVNldHRpbmdzKFdLQ29udGV4dFJlZiwgV0tOZXR3b3JrUHJveHlNb2RlLCBXS1VS
TFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpOworV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0U3NsQWxnb3JpdGhtcyhXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIGNpcGhl
ckxpc3QsIFdLU3RyaW5nUmVmIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBXS1N0cmluZ1JlZiBj
dXJ2ZXNMaXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFNzbENBQ2VydFBhdGgoV0tD
b250ZXh0UmVmLCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1Jl
ZiBXS0NvbnRleHRHZXRTc2xDQUNlcnRQYXRoKFdLQ29udGV4dFJlZik7CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAppbmRleCAwOGRkYjFmNTUwYy4uMmY2MDcwYzA1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNjUsNiArNjUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkKKyNp
bmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBO
U09iamVjdDsKQEAgLTEwMCw3ICsxMDQsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7
CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLSAgICAKKwogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8QVBJOjpEaWN0aW9uYXJ5Kj4gRGljdGlvbmFyeUNhbGxiYWNrOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTYsNyArMTIwLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bv
b2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9j
ZXNzUG8KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQb29sPiBjcmVhdGUoQVBJ
OjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mKTsKIAotICAgIGV4cGxpY2l0IFdlYlByb2Nlc3NQ
b29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJik7ICAgICAgICAKKyAgICBleHBsaWNp
dCBXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYpOwogICAgIHZp
cnR1YWwgfldlYlByb2Nlc3NQb29sKCk7CiAKICAgICB2b2lkIG5vdGlmeVRoaXNXZWJQcm9jZXNz
UG9vbFdhc0NyZWF0ZWQoKTsKQEAgLTIyNiw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0U2hv
dWxkVXNlRm9udFNtb290aGluZyhib29sKTsKLSAgICAKKwogICAgIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVS
TFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hl
bWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmKTsKQEAgLTI1
Nyw3ICsyNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhj
b25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNlbmRpZgogICAgIHZv
aWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOwotICAgIAorCiAgICAgLy8gRG93bmxv
YWRzLgogICAgIERvd25sb2FkUHJveHkqIGNyZWF0ZURvd25sb2FkUHJveHkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpOwogICAg
IEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4gKm1fZG93bmxv
YWRDbGllbnQ7IH0KQEAgLTI3Miw3ICsyNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVk
IHdrUGFnZUNvdW50OwogICAgICAgICB1bnNpZ25lZCB3a0ZyYW1lQ291bnQ7CiAgICAgfTsKLSAg
ICBzdGF0aWMgU3RhdGlzdGljcyYgc3RhdGlzdGljcygpOyAgICAKKyAgICBzdGF0aWMgU3RhdGlz
dGljcyYgc3RhdGlzdGljcygpOwogCiAgICAgdm9pZCB1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24o
KTsKICAgICBib29sIGlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsgfQpAQCAtMzEyLDggKzMxNiw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sKTsKICAgICBi
b29sIGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBnZXRTdGF0aXN0
aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRpY3Rpb25h
cnkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgCisgICAgdm9pZCBnZXRTdGF0aXN0
aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkKEFQSTo6RGljdGlvbmFy
eSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKwogICAgIGJvb2wgamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25GaWxlRW5hYmxlZCgpIHsgcmV0dXJuIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25G
aWxlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5h
YmxlZChib29sIGZsYWcpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQ1NSw2ICs0NTksMTQgQEAg
cHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNwZW5kZWRQ
YWdlUHJveHkmKTsKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsKIAorI2lm
IFVTRShDVVJMKQorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJs
KE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBzZXROZXR3b3Jr
UHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOworICAgIHZv
aWQgc2V0U3NsQWxnb3JpdGhtcyhjb25zdCBTdHJpbmcmIGNpcGhlckxpc3QsIGNvbnN0IFN0cmlu
ZyYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIGNvbnN0IFN0cmluZyYgY3VydmVzTGlzdCk7Cisg
ICAgdm9pZCBzZXRTc2xDQUNlcnRQYXRoKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBnZXRT
c2xDQUNlcnRQYXRoKCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVydGllc1N0YXRl
Q2hhbmdlZCgpOwogCiAgICAgdm9pZCBhZGRNb2NrTWVkaWFEZXZpY2UoY29uc3QgV2ViQ29yZTo6
TW9ja01lZGlhRGV2aWNlJik7CkBAIC01NzEsNyArNTgzLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fdmlzaXRlZExpbmtzUG9wdWxhdGVkIHsgZmFsc2UgfTsKIAogICAgIFBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgeyB0aGlzIH07Ci0gICAgICAgIAor
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQ7
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc1NlY3VyZTsKICAgICBI
YXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5nQ29udGVudFNlY3Vy
aXR5UG9saWN5OwpAQCAtNzA4LDYgKzcyMCwxNCBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTdXNwZW5kZWRQYWdlUHJveHkqPj4g
bV9zdXNwZW5kZWRQYWdlczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSwgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fc3dhcHBlZFByb2Nlc3NlczsKKworI2lmIFVT
RShDVVJMKQorICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIG1fY3VybFByb3h5U2V0dGlu
Z3M7CisgICAgU3RyaW5nIG1fY2lwaGVyTGlzdDsKKyAgICBTdHJpbmcgbV9zaWduYXR1cmVBbGdv
cml0aG1zTGlzdDsKKyAgICBTdHJpbmcgbV9jdXJ2ZXNMaXN0OworICAgIFN0cmluZyBtX2NhQ2Vy
dFBhdGg7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0ZmFlMjZmZDJhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY3VybC9XZWJQcm9jZXNzUG9vbEN1cmwuY3Bw
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJsKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMucHJveHlTZXR0aW5ncyA9IG1fY3Vy
bFByb3h5U2V0dGluZ3M7CisgICAgcGFyYW1ldGVycy5jaXBoZXJMaXN0ID0gbV9jaXBoZXJMaXN0
OworICAgIHBhcmFtZXRlcnMuc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QgPSBtX3NpZ25hdHVyZUFs
Z29yaXRobXNMaXN0OworICAgIHBhcmFtZXRlcnMuY3VydmVzTGlzdCA9IG1fY3VydmVzTGlzdDsK
KyAgICBwYXJhbWV0ZXJzLmNhQ2VydFBhdGggPSBtX2NhQ2VydFBhdGg7Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQ
cm94eVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBtX2N1cmxQcm94eVNldHRpbmdzID0gc2V0
dGluZ3M7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXROZXR3b3JrUHJveHlTZXR0aW5n
cyhtX2N1cmxQcm94eVNldHRpbmdzKSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dFNzbEFsZ29yaXRobXMoY29uc3QgU3RyaW5nJiBjaXBoZXJMaXN0LCBjb25zdCBTdHJpbmcmIHNp
Z25hdHVyZUFsZ29yaXRobXNMaXN0LCBjb25zdCBTdHJpbmcmIGN1cnZlc0xpc3QpCit7CisgICAg
bV9jaXBoZXJMaXN0ID0gY2lwaGVyTGlzdDsKKyAgICBtX3NpZ25hdHVyZUFsZ29yaXRobXNMaXN0
ID0gc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3Q7CisgICAgbV9jdXJ2ZXNMaXN0ID0gY3VydmVzTGlz
dDsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNzbEFsZ29yaXRobXMobV9jaXBoZXJM
aXN0LCBtX3NpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBtX2N1cnZlc0xpc3QpLCAwKTsKK30KKwor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0U3NsQ0FDZXJ0UGF0aChjb25zdCBTdHJpbmcmIGNhQ2Vy
dFBhdGgpCit7CisgICAgbV9jYUNlcnRQYXRoID0gY2FDZXJ0UGF0aDsKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldFNzbENBQ2VydFBhdGgobV9jYUNlcnRQYXRoKSwgMCk7Cit9CisKK1N0
cmluZyBXZWJQcm9jZXNzUG9vbDo6Z2V0U3NsQ0FDZXJ0UGF0aCgpCit7CisgICAgcmV0dXJuIG1f
Y2FDZXJ0UGF0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRleCAxMDE1ZmYwNjA2
Yy4uNjliZDEyYTQ3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9X
ZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NQb29sV2luLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zOCwxMiArNDAsMTQgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lm
IFVTRShDVVJMKQorICAgIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ3VybChwYXJh
bWV0ZXJzKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBA
IC01NSw2ICs1OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNv
bnRleHQoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNh
bmRib3hFeHRlbnNpb25zKCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348333</attachid>
            <date>2018-08-28 13:32:23 -0700</date>
            <delta_ts>2018-08-28 13:36:51 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>27267</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBj
YWVjNTNjM2M1Zi4uOGU4NmFiMjI3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTU1LDYgKzU1LDEwIEBAIGNsYXNzIFVSTDsKIGVudW0g
Y2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
Owogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKKworI2lmIFVTRShDVVJMKQorY2xh
c3MgQ3VybFByb3h5U2V0dGluZ3M7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0yNDQsNiArMjQ4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJveHlTZXR0
aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNlbmRpZgog
CisjaWYgVVNFKENVUkwpCisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
c0N1cmwoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lk
IHNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdz
Jik7CisgICAgdm9pZCBzZXRTc2xBbGdvcml0aG1zKFN0cmluZyBjaXBoZXJMaXN0LCBTdHJpbmcg
c2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFN0cmluZyBjdXJ2ZXNMaXN0KTsKKyAgICB2b2lkIHNl
dFNzbENBQ2VydFBhdGgoU3RyaW5nKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHN0YXRpYyB2b2lkIHNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaWRlbnRpZmllcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJhYTM0ZDA5ZmY2
Li5mODg5ZDhiYTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMyw2ICszMywxMiBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0TmV0d29ya1Byb3h5
U2V0dGluZ3Moc3RydWN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyBzZXR0aW5n
cykKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgU2V0TmV0d29ya1Byb3h5U2V0dGluZ3Mo
V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCisgICAgU2V0U3NsQWxnb3JpdGht
cyhTdHJpbmcgY2lwaGVyTGlzdCwgU3RyaW5nIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBTdHJp
bmcgY3VydmVzTGlzdCkKKyAgICBTZXRTc2xDQUNlcnRQYXRoKFN0cmluZyBjYUNlcnRQYXRoKQor
I2VuZGlmCisKICAgICBDbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAogICAgIEFkZFdlYnNpdGVE
YXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCBjZDdkYmE4ZTlhMy4uMjcxOGU5Nzk0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC04OSw2ICs4OSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VsaWYgVVNF
KENVUkwpCiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGU7CiAjZW5k
aWYKKyNpZiBVU0UoQ1VSTCkKKyAgICBlbmNvZGVyIDw8IHByb3h5U2V0dGluZ3M7CisgICAgZW5j
b2RlciA8PCBjaXBoZXJMaXN0OworICAgIGVuY29kZXIgPDwgc2lnbmF0dXJlQWxnb3JpdGhtc0xp
c3Q7CisgICAgZW5jb2RlciA8PCBjdXJ2ZXNMaXN0OworICAgIGVuY29kZXIgPDwgY2FDZXJ0UGF0
aDsKKyNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKSAmJiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBlbmNvZGVyIDw8IGxvZ0Nvb2tpZUluZm9ybWF0aW9u
OwogI2VuZGlmCkBAIC0yMTQsNiArMjIxLDE5IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucHJveHlTZXR0aW5ncykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaXBoZXJMaXN0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNpZ25hdHVyZUFs
Z29yaXRobXNMaXN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmN1cnZlc0xpc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FDZXJ0UGF0aCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmxv
Z0Nvb2tpZUluZm9ybWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IDU0ZTZhYjA0YzY0Li4yNGM0YmM5MGIyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkK
KyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYKKwogbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKQEAgLTEwNCw2ICsxMDgs
MTQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBTdHJp
bmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogI2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkK
KyAgICBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyBwcm94eVNldHRpbmdzOworICAgIFN0cmlu
ZyBjaXBoZXJMaXN0OworICAgIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlzdDsKKyAgICBT
dHJpbmcgY3VydmVzTGlzdDsKKyAgICBTdHJpbmcgY2FDZXJ0UGF0aDsKKyNlbmRpZgorCiAjaWYg
SEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIGJvb2wgbG9nQ29va2llSW5mb3JtYXRpb24geyBmYWxzZSB9OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKaW5kZXggMjliNTI4ZTFjNzkuLmI3ZWNjYmQ0MzkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQ3Vy
bC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkN1cmwuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVzU3RyYXRlZ3kuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggMTkxMzFjNjczMjIuLmE1YWY2
YjViZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtMjYsMjkgKzI2LDIzIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAotI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCi0jaW5jbHVkZSAiV2ViQ29va2ll
TWFuYWdlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DdXJsQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JBTVNp
emUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nl
c3NDdXJsKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUuaXNF
bXB0eSgpKQogICAgICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldENvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxl
KTsKKyAgICBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3Mp
OworICAgIHNldFNzbEFsZ29yaXRobXMocGFyYW1ldGVycy5jaXBoZXJMaXN0LCBwYXJhbWV0ZXJz
LnNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBwYXJhbWV0ZXJzLmN1cnZlc0xpc3QpOworICAgIGlm
ICghcGFyYW1ldGVycy5jYUNlcnRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0U3NsQ0FDZXJ0
UGF0aChwYXJhbWV0ZXJzLmNhQ2VydFBhdGgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
bGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTkyLDQgKzg2LDMxIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tn
cm91bmQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdz
JiBzZXR0aW5ncykKK3sKKyAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2V0UHJveHlTZXR0
aW5ncyhzZXR0aW5ncyk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNzbEFsZ29yaXRo
bXMoU3RyaW5nIGNpcGhlckxpc3QsIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlzdCwgU3Ry
aW5nIGN1cnZlc0xpc3QpCit7CisgICAgYXV0byYgc3NsSGFuZGxlID0gQ3VybENvbnRleHQ6OnNp
bmdsZXRvbigpLnNzbEhhbmRsZSgpOworICAgIHNzbEhhbmRsZS5zZXRDaXBoZXJMaXN0KFdURk1v
dmUoY2lwaGVyTGlzdCkpOworICAgIHNzbEhhbmRsZS5zZXRTaWduYXR1cmVBbGdvcml0aG1zTGlz
dChXVEZNb3ZlKHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0KSk7CisgICAgc3NsSGFuZGxlLnNldEN1
cnZlc0xpc3QoV1RGTW92ZShjdXJ2ZXNMaXN0KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldFNzbENBQ2VydFBhdGgoU3RyaW5nIGNhQ2VydFBhdGgpCit7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIG9uTWVtb3J5SWRlbnRpZmllciA9ICI6bWVtb3J5OiI7CisKKyAgICBpZiAoY2FDZXJ0
UGF0aC5zdGFydHNXaXRoKG9uTWVtb3J5SWRlbnRpZmllcikpIHsKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGNhQ2VydERhdGE7CisgICAgICAgIGF1dG8gYm9keSA9IGNhQ2VydFBhdGguc3Vic3Ry
aW5nKHN0cmxlbihvbk1lbW9yeUlkZW50aWZpZXIpKS51dGY4KCk7CisgICAgICAgIGNhQ2VydERh
dGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJvZHkuZGF0YSgpKSwg
Ym9keS5sZW5ndGgoKSk7CisgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zc2xIYW5k
bGUoKS5zZXRDQUNlcnREYXRhKFdURk1vdmUoY2FDZXJ0RGF0YSkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zc2xIYW5kbGUoKS5zZXRDQUNlcnRQYXRo
KFdURk1vdmUoY2FDZXJ0UGF0aCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJv
Y2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJv
Y2Vzc1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0NzA3
YTk5NDM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
aW4vTmV0d29ya1Byb2Nlc3NXaW4uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisKKyNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworI2lmIFVTRShDVVJMKQorICAgIHBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ3VybChwYXJhbWV0ZXJzKTsKKyNlbmRpZgor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDVj
OTlkNWFhNWE3Li4wZjZhMTFiMDUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMCw2
ICsxMCw3IEBAIGFkZF9kZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKIAogbGlzdChBUFBF
TkQgV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy93aW4vTmV0d29ya1Byb2Nlc3NN
YWluV2luLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJvY2Vzc1dpbi5jcHAK
IAogICAgIFBsYXRmb3JtL0lQQy93aW4vQXR0YWNobWVudFdpbi5jcHAKICAgICBQbGF0Zm9ybS9J
UEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC00Myw2ICs0NCw4IEBAIGxpc3QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcAorCiAgICAg
VUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL3dpbi9B
UElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtNjMsNiArNjYsMTAgQEAgbGlzdChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAog
ICAgIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKIAorICAgIFVJUHJvY2Vzcy9jdXJsL1dlYlBy
b2Nlc3NQb29sQ3VybC5jcHAKKworICAgIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCisKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdp
bi5jcHAKIAogICAgIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApp
bmRleCA4Y2E3NjBmY2ZmZC4uMDIwNGI5MWE2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNDYsNiArMTQ2LDEwIEBAIHN0cnVjdCBTb3Vw
TmV0d29ya1Byb3h5U2V0dGluZ3M7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiAjZW5k
aWYKIAorI2lmIFVTRShDVVJMKQorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CisjZW5kaWYKKwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKICNlbmRpZgpAQCAtNDQ4LDYgKzQ1MiwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50PiB7CiB9OwogI2VuZGlm
CiAKKyNpZiBVU0UoQ1VSTCkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q3VybFByb3h5U2V0dGluZ3M+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJik7CisgICAgc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImLCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOworfTsKKyNlbmRpZgor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5k
ZXJsaW5lPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAK
aW5kZXggMzY2NzZkMDNjMWEuLjRmMWFiOGQ2YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKQEAgLTI4LDkg
KzI4LDExIEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DZXJ0aWZpY2F0ZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjcsNCArMTI5LDM4IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBD
cmVkZW50aWFsJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxD
dXJsUHJveHlTZXR0aW5ncz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDdXJsUHJv
eHlTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgQVNTRVJUKCFzZXR0aW5ncy5pc0VtcHR5KCkp
OworICAgIGVuY29kZXIuZW5jb2RlRW51bShzZXR0aW5ncy5tb2RlKCkpOworICAgIGlmIChzZXR0
aW5ncy5tb2RlKCkgIT0gQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZW5jb2RlciA8PCBzZXR0aW5ncy51cmwoKTsKKyAgICBlbmNvZGVyIDw8
IHNldHRpbmdzLmlnbm9yZUhvc3RzKCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxDdXJsUHJv
eHlTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdXJsUHJveHlTZXR0aW5ncyYg
c2V0dGluZ3MpCit7CisgICAgQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGUgbW9kZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShtb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKG1vZGUgIT0gQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbSkgeworICAgICAgICBz
ZXR0aW5ncyA9IEN1cmxQcm94eVNldHRpbmdzKG1vZGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBTdHJpbmcgdXJsOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGlnbm9yZUhvc3RzOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaWdub3JlSG9zdHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBzZXR0aW5ncyA9IEN1cmxQcm94eVNldHRpbmdzKFVSTChVUkwoKSwgdXJsKSwgV1RGTW92
ZShpZ25vcmVIb3N0cykpOworICAgIHJldHVybiB0cnVlOworfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLQ29udGV4dEN1cmwuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjc5ZmE0NjRiNTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLQ29udGV4dEN1cmwu
Y3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldLQ29udGV4dEN1cmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViQ29yZS9DdXJsUHJveHlT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmUvVVJMLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tDb250ZXh0
U2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLTmV0d29ya1By
b3h5TW9kZSBtb2RlLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMp
Cit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBXS05ldHdvcmtQcm94eU1vZGU6OmtX
S05ldHdvcmtQcm94eU1vZGVEZWZhdWx0IDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQpLT5zZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpD
dXJsUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVsdCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdLTmV0d29ya1Byb3h5TW9kZTo6a1dLTmV0d29ya1Byb3h5TW9kZU5vUHJveHkgOgorICAg
ICAgICB0b0ltcGwoY29udGV4dCktPnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1
cmxQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpOb1Byb3h5
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tOZXR3b3JrUHJveHlNb2RlOjprV0tOZXR3
b3JrUHJveHlNb2RlQ3VzdG9tIDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQpLT5zZXROZXR3b3Jr
UHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHByb3h5VXJsKSksIHRvV1RGU3RyaW5nKGlnbm9yZUhv
c3RzKSkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0U3Ns
QWxnb3JpdGhtcyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgY2lwaGVyTGlzdCwg
V0tTdHJpbmdSZWYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFdLU3RyaW5nUmVmIGN1cnZlc0xp
c3QpCit7CisgICAgdG9JbXBsKGNvbnRleHQpLT5zZXRTc2xBbGdvcml0aG1zKHRvV1RGU3RyaW5n
KGNpcGhlckxpc3QpLCB0b1dURlN0cmluZyhzaWduYXR1cmVBbGdvcml0aG1zTGlzdCksIHRvV1RG
U3RyaW5nKGN1cnZlc0xpc3QpKTsKK30KKwordm9pZCBXS0NvbnRleHRTZXRTc2xDQUNlcnRQYXRo
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKQoreworICAgIHRv
SW1wbChjb250ZXh0KS0+c2V0U3NsQ0FDZXJ0UGF0aCh0b1dURlN0cmluZyhjYUNlcnRQYXRoKSk7
Cit9CisKK1dLU3RyaW5nUmVmIFdLQ29udGV4dEdldFNzbENBQ2VydFBhdGgoV0tDb250ZXh0UmVm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChjb250ZXh0KS0+Z2V0
U3NsQ0FDZXJ0UGF0aCgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL2N1cmwvV0tDb250ZXh0Q3VybC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvY3VybC9XS0NvbnRleHRDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjhhNDkzMzM5MjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNp
bmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworZW51bSBXS05ldHdvcmtQcm94eU1vZGUgeworICAgIGtXS05ldHdv
cmtQcm94eU1vZGVEZWZhdWx0LAorICAgIGtXS05ldHdvcmtQcm94eU1vZGVOb1Byb3h5LAorICAg
IGtXS05ldHdvcmtQcm94eU1vZGVDdXN0b20KK307CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dFNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdLQ29udGV4dFJlZiwgV0tOZXR3b3JrUHJveHlNb2Rl
LCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpOworV0tfRVhQT1JU
IHZvaWQgV0tDb250ZXh0U2V0U3NsQWxnb3JpdGhtcyhXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVm
IGNpcGhlckxpc3QsIFdLU3RyaW5nUmVmIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBXS1N0cmlu
Z1JlZiBjdXJ2ZXNMaXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFNzbENBQ2VydFBh
dGgoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKTsKK1dLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS0NvbnRleHRHZXRTc2xDQUNlcnRQYXRoKFdLQ29udGV4dFJlZik7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCAwOGRkYjFmNTUwYy4uMmY2MDcwYzA1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNjUsNiArNjUsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQ1VS
TCkKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OwogT0JKQ19D
TEFTUyBOU09iamVjdDsKQEAgLTEwMCw3ICsxMDQsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBz
dHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgU3RhdGlzdGlj
c0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLSAgICAKKwogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEaWN0aW9uYXJ5Kj4gRGljdGlvbmFyeUNhbGxiYWNr
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTYsNyArMTIwLDcgQEAgY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpQcm9jZXNzUG8KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQb29sPiBjcmVh
dGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mKTsKIAotICAgIGV4cGxpY2l0IFdlYlBy
b2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJik7ICAgICAgICAKKyAgICBl
eHBsaWNpdCBXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYpOwog
ICAgIHZpcnR1YWwgfldlYlByb2Nlc3NQb29sKCk7CiAKICAgICB2b2lkIG5vdGlmeVRoaXNXZWJQ
cm9jZXNzUG9vbFdhc0NyZWF0ZWQoKTsKQEAgLTIyNiw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQg
c2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKLSAgICAKKwogICAgIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdp
c3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmKTsK
QEAgLTI1Nyw3ICsyNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJveHlTZXR0
aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNlbmRpZgog
ICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOwotICAgIAorCiAgICAgLy8g
RG93bmxvYWRzLgogICAgIERvd25sb2FkUHJveHkqIGNyZWF0ZURvd25sb2FkUHJveHkoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2Up
OwogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4gKm1f
ZG93bmxvYWRDbGllbnQ7IH0KQEAgLTI3Miw3ICsyNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVu
c2lnbmVkIHdrUGFnZUNvdW50OwogICAgICAgICB1bnNpZ25lZCB3a0ZyYW1lQ291bnQ7CiAgICAg
fTsKLSAgICBzdGF0aWMgU3RhdGlzdGljcyYgc3RhdGlzdGljcygpOyAgICAKKyAgICBzdGF0aWMg
U3RhdGlzdGljcyYgc3RhdGlzdGljcygpOwogCiAgICAgdm9pZCB1c2VUZXN0aW5nTmV0d29ya1Nl
c3Npb24oKTsKICAgICBib29sIGlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsgfQpAQCAtMzEyLDggKzMx
Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sKTsK
ICAgICBib29sIGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBnZXRT
dGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRp
Y3Rpb25hcnkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgCisgICAgdm9pZCBnZXRT
dGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkKEFQSTo6RGlj
dGlvbmFyeSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKwogICAgIGJvb2wgamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZCgpIHsgcmV0dXJuIG1famF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25GaWxlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25G
aWxlRW5hYmxlZChib29sIGZsYWcpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQ1NSw2ICs0NTks
MTQgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShTdXNw
ZW5kZWRQYWdlUHJveHkmKTsKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsK
IAorI2lmIFVTRShDVVJMKQorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nl
c3NDdXJsKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBzZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOwor
ICAgIHZvaWQgc2V0U3NsQWxnb3JpdGhtcyhjb25zdCBTdHJpbmcmIGNpcGhlckxpc3QsIGNvbnN0
IFN0cmluZyYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIGNvbnN0IFN0cmluZyYgY3VydmVzTGlz
dCk7CisgICAgdm9pZCBzZXRTc2xDQUNlcnRQYXRoKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmlu
ZyBnZXRTc2xDQUNlcnRQYXRoKCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVydGll
c1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBhZGRNb2NrTWVkaWFEZXZpY2UoY29uc3QgV2Vi
Q29yZTo6TW9ja01lZGlhRGV2aWNlJik7CkBAIC01NzEsNyArNTgzLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fdmlzaXRlZExpbmtzUG9wdWxhdGVkIHsgZmFsc2UgfTsKIAogICAgIFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgeyB0aGlzIH07Ci0gICAg
ICAgIAorCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9j
dW1lbnQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc1NlY3VyZTsK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5nQ29udGVu
dFNlY3VyaXR5UG9saWN5OwpAQCAtNzA4LDYgKzcyMCwxNCBAQCBwcml2YXRlOgogCiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTdXNwZW5kZWRQYWdlUHJv
eHkqPj4gbV9zdXNwZW5kZWRQYWdlczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSwgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fc3dhcHBlZFByb2Nlc3NlczsKKwor
I2lmIFVTRShDVVJMKQorICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIG1fY3VybFByb3h5
U2V0dGluZ3M7CisgICAgU3RyaW5nIG1fY2lwaGVyTGlzdDsKKyAgICBTdHJpbmcgbV9zaWduYXR1
cmVBbGdvcml0aG1zTGlzdDsKKyAgICBTdHJpbmcgbV9jdXJ2ZXNMaXN0OworICAgIFN0cmluZyBt
X2NhQ2VydFBhdGg7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0ZmFlMjZmZDJhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY3VybC9XZWJQcm9jZXNzUG9vbEN1
cmwuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJsKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMucHJveHlTZXR0aW5ncyA9
IG1fY3VybFByb3h5U2V0dGluZ3M7CisgICAgcGFyYW1ldGVycy5jaXBoZXJMaXN0ID0gbV9jaXBo
ZXJMaXN0OworICAgIHBhcmFtZXRlcnMuc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QgPSBtX3NpZ25h
dHVyZUFsZ29yaXRobXNMaXN0OworICAgIHBhcmFtZXRlcnMuY3VydmVzTGlzdCA9IG1fY3VydmVz
TGlzdDsKKyAgICBwYXJhbWV0ZXJzLmNhQ2VydFBhdGggPSBtX2NhQ2VydFBhdGg7Cit9CisKK3Zv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6
OkN1cmxQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBtX2N1cmxQcm94eVNldHRpbmdz
ID0gc2V0dGluZ3M7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXROZXR3b3JrUHJveHlT
ZXR0aW5ncyhtX2N1cmxQcm94eVNldHRpbmdzKSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldFNzbEFsZ29yaXRobXMoY29uc3QgU3RyaW5nJiBjaXBoZXJMaXN0LCBjb25zdCBTdHJp
bmcmIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBjb25zdCBTdHJpbmcmIGN1cnZlc0xpc3QpCit7
CisgICAgbV9jaXBoZXJMaXN0ID0gY2lwaGVyTGlzdDsKKyAgICBtX3NpZ25hdHVyZUFsZ29yaXRo
bXNMaXN0ID0gc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3Q7CisgICAgbV9jdXJ2ZXNMaXN0ID0gY3Vy
dmVzTGlzdDsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNzbEFsZ29yaXRobXMobV9j
aXBoZXJMaXN0LCBtX3NpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBtX2N1cnZlc0xpc3QpLCAwKTsK
K30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0U3NsQ0FDZXJ0UGF0aChjb25zdCBTdHJpbmcm
IGNhQ2VydFBhdGgpCit7CisgICAgbV9jYUNlcnRQYXRoID0gY2FDZXJ0UGF0aDsKKyAgICBpZiAo
bV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNldFNzbENBQ2VydFBhdGgobV9jYUNlcnRQYXRoKSwgMCk7Cit9
CisKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6Z2V0U3NsQ0FDZXJ0UGF0aCgpCit7CisgICAgcmV0
dXJuIG1fY2FDZXJ0UGF0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRleCAxMDE1
ZmYwNjA2Yy4uNjliZDEyYTQ3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zOCwxMiArNDAsMTQgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3
b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworI2lmIFVTRShDVVJMKQorICAgIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ3Vy
bChwYXJhbWV0ZXJzKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CkBAIC01NSw2ICs1OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxp
ZGF0ZUNvbnRleHQoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRo
c0ZvclNhbmRib3hFeHRlbnNpb25zKCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348334</attachid>
            <date>2018-08-28 13:37:41 -0700</date>
            <delta_ts>2018-08-28 13:54:13 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>30294</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjZiODcyMjIyOGEuLjcwZGRiMDM1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUyIEBACisyMDE4LTA4LTI4ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNv
bT4KKworICAgICAgICBbQ3VybF1bV2ViS2l0XSBJbXBsZW1lbnQgUHJveHkgYW5kIFRMUyByZWxh
dGVkIGZlYXR1cmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHByb3h5IGFuZCBUTFMgcmVsYXRlZCBmZWF0dXJlcyBvbiBXZWJLaXQg
TmV0d29ya1Byb2Nlc3MuIFNlcGFyYXRlIFdlYlByb2Nlc3NQb29sV2luIGFuZCBXZWJQcm9jZXNz
UG9vbEN1cmwKKyAgICAgICAgZm9yIGRpZmZlcmVuY2VzIG9mIGluaXRpYWxpemF0aW9uIGFtb25n
IHBsYXRmb3JtIGxheWVyIGFuZCBuZXR3b3JrIGxheWVyLgorICAgICAgICBBY3R1YWwgaW1wbGVt
ZW50YXRpb25zIGhhdmUgYmVlbiBpbiBXZWJDb3JlIGFscmVhZHkgYW5kIHVzZWQgaW4gV2ViS2l0
TGVnYWN5IGZvciBhIHdoaWxlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJsKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFNzbEFsZ29yaXRobXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3NsQ0FDZXJ0UGF0aCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2luL05ldHdvcmtQcm9jZXNzV2luLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2N1cmwv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8Q3VybFByb3h5U2V0dGluZ3M+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPEN1cmxQcm94eVNldHRpbmdzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcDogQWRkZWQuCisgICAgICAgIChXS0NvbnRleHRTZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyk6CisgICAgICAgIChXS0NvbnRleHRTZXRTc2xBbGdvcml0aG1z
KToKKyAgICAgICAgKFdLQ29udGV4dFNldFNzbENBQ2VydFBhdGgpOgorICAgICAgICAoV0tDb250
ZXh0R2V0U3NsQ0FDZXJ0UGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tD
b250ZXh0Q3VybC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1Bvb2xXaW4uY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3NDdXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE5l
dHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNl
dFNzbEFsZ29yaXRobXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0U3Ns
Q0FDZXJ0UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRTc2xDQUNl
cnRQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucyk6CisKIDIwMTgtMDgtMjQgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtDdXJsXSBN
YXRjaCB0aGUgaW50ZXJmYWNlIHVzZWQgaW4gTmV0d29ya0RhdGFUYXNrIGFuZCBSZXNvdXJjZUhh
bmRsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCBjYWVjNTNjM2M1Zi4uOGU4NmFiMjI3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTU1LDYgKzU1LDEwIEBAIGNsYXNzIFVSTDsK
IGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKKworI2lmIFVTRShDVVJM
KQorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0yNDQsNiArMjQ4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJv
eHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNl
bmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzc0N1cmwoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAg
ICB2b2lkIHNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzJik7CisgICAgdm9pZCBzZXRTc2xBbGdvcml0aG1zKFN0cmluZyBjaXBoZXJMaXN0LCBT
dHJpbmcgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFN0cmluZyBjdXJ2ZXNMaXN0KTsKKyAgICB2
b2lkIHNldFNzbENBQ2VydFBhdGgoU3RyaW5nKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaWRlbnRpZmllcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJhYTM0
ZDA5ZmY2Li5mODg5ZDhiYTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMyw2ICszMywxMiBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0TmV0d29y
a1Byb3h5U2V0dGluZ3Moc3RydWN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyBz
ZXR0aW5ncykKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgU2V0TmV0d29ya1Byb3h5U2V0
dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCisgICAgU2V0U3NsQWxn
b3JpdGhtcyhTdHJpbmcgY2lwaGVyTGlzdCwgU3RyaW5nIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0
LCBTdHJpbmcgY3VydmVzTGlzdCkKKyAgICBTZXRTc2xDQUNlcnRQYXRoKFN0cmluZyBjYUNlcnRQ
YXRoKQorI2VuZGlmCisKICAgICBDbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAogICAgIEFkZFdl
YnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
d2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCBjZDdkYmE4ZTlhMy4uMjcxOGU5Nzk0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC04OSw2ICs4OSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2Vs
aWYgVVNFKENVUkwpCiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGU7
CiAjZW5kaWYKKyNpZiBVU0UoQ1VSTCkKKyAgICBlbmNvZGVyIDw8IHByb3h5U2V0dGluZ3M7Cisg
ICAgZW5jb2RlciA8PCBjaXBoZXJMaXN0OworICAgIGVuY29kZXIgPDwgc2lnbmF0dXJlQWxnb3Jp
dGhtc0xpc3Q7CisgICAgZW5jb2RlciA8PCBjdXJ2ZXNMaXN0OworICAgIGVuY29kZXIgPDwgY2FD
ZXJ0UGF0aDsKKyNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBlbmNvZGVyIDw8IGxvZ0Nvb2tpZUluZm9y
bWF0aW9uOwogI2VuZGlmCkBAIC0yMTQsNiArMjIxLDE5IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQ
cm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJveHlTZXR0aW5ncykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaXBoZXJMaXN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNpZ25h
dHVyZUFsZ29yaXRobXNMaXN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmN1cnZlc0xpc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FDZXJ0UGF0aCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmxvZ0Nvb2tpZUluZm9ybWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDU0ZTZhYjA0YzY0Li4yNGM0YmM5MGIyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYKKwog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKQEAgLTEwNCw2
ICsxMDgsMTQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBTdHJpbmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKKyAgICBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyBwcm94eVNldHRpbmdzOworICAg
IFN0cmluZyBjaXBoZXJMaXN0OworICAgIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlzdDsK
KyAgICBTdHJpbmcgY3VydmVzTGlzdDsKKyAgICBTdHJpbmcgY2FDZXJ0UGF0aDsKKyNlbmRpZgor
CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGJvb2wgbG9nQ29va2llSW5mb3JtYXRpb24geyBmYWxzZSB9OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggMjliNTI4ZTFjNzkuLmI3ZWNjYmQ0MzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0RhdGFU
YXNrQ3VybC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkN1cmwuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db29raWVzU3RyYXRlZ3kuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggMTkxMzFjNjczMjIu
LmE1YWY2YjViZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtMjYsMjkgKzI2LDIzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAotI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCi0jaW5jbHVkZSAiV2Vi
Q29va2llTWFuYWdlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JBTVNpemUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDdXJsKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZp
bGUuaXNFbXB0eSgpKQogICAgICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNl
dENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3Jh
Z2VGaWxlKTsKKyAgICBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhwYXJhbWV0ZXJzLnByb3h5U2V0
dGluZ3MpOworICAgIHNldFNzbEFsZ29yaXRobXMocGFyYW1ldGVycy5jaXBoZXJMaXN0LCBwYXJh
bWV0ZXJzLnNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBwYXJhbWV0ZXJzLmN1cnZlc0xpc3QpOwor
ICAgIGlmICghcGFyYW1ldGVycy5jYUNlcnRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0U3Ns
Q0FDZXJ0UGF0aChwYXJhbWV0ZXJzLmNhQ2VydFBhdGgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTkyLDQgKzg2
LDMxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25U
b0JhY2tncm91bmQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2V0UHJv
eHlTZXR0aW5ncyhzZXR0aW5ncyk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNzbEFs
Z29yaXRobXMoU3RyaW5nIGNpcGhlckxpc3QsIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlz
dCwgU3RyaW5nIGN1cnZlc0xpc3QpCit7CisgICAgYXV0byYgc3NsSGFuZGxlID0gQ3VybENvbnRl
eHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpOworICAgIHNzbEhhbmRsZS5zZXRDaXBoZXJMaXN0
KFdURk1vdmUoY2lwaGVyTGlzdCkpOworICAgIHNzbEhhbmRsZS5zZXRTaWduYXR1cmVBbGdvcml0
aG1zTGlzdChXVEZNb3ZlKHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0KSk7CisgICAgc3NsSGFuZGxl
LnNldEN1cnZlc0xpc3QoV1RGTW92ZShjdXJ2ZXNMaXN0KSk7Cit9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFNzbENBQ2VydFBhdGgoU3RyaW5nIGNhQ2VydFBhdGgpCit7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG9uTWVtb3J5SWRlbnRpZmllciA9ICI6bWVtb3J5OiI7CisKKyAgICBpZiAo
Y2FDZXJ0UGF0aC5zdGFydHNXaXRoKG9uTWVtb3J5SWRlbnRpZmllcikpIHsKKyAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNhQ2VydERhdGE7CisgICAgICAgIGF1dG8gYm9keSA9IGNhQ2VydFBhdGgu
c3Vic3RyaW5nKHN0cmxlbihvbk1lbW9yeUlkZW50aWZpZXIpKS51dGY4KCk7CisgICAgICAgIGNh
Q2VydERhdGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJvZHkuZGF0
YSgpKSwgYm9keS5sZW5ndGgoKSk7CisgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5z
c2xIYW5kbGUoKS5zZXRDQUNlcnREYXRhKFdURk1vdmUoY2FDZXJ0RGF0YSkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zc2xIYW5kbGUoKS5zZXRDQUNl
cnRQYXRoKFdURk1vdmUoY2FDZXJ0UGF0aCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3
b3JrUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3
b3JrUHJvY2Vzc1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjQ0NzA3YTk5NDM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93aW4vTmV0d29ya1Byb2Nlc3NXaW4uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworI2lmIFVTRShDVVJMKQor
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ3VybChwYXJhbWV0ZXJzKTsKKyNl
bmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmlu
ZGV4IDVjOTlkNWFhNWE3Li4wZjZhMTFiMDUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBA
IC0xMCw2ICsxMCw3IEBAIGFkZF9kZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKIAogbGlz
dChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy93aW4vTmV0d29ya1By
b2Nlc3NNYWluV2luLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJvY2Vzc1dp
bi5jcHAKIAogICAgIFBsYXRmb3JtL0lQQy93aW4vQXR0YWNobWVudFdpbi5jcHAKICAgICBQbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC00Myw2ICs0NCw4IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJp
YnV0ZXMuY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcAor
CiAgICAgVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJ
L3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtNjMsNiArNjYsMTAgQEAgbGlzdChB
UFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcAogICAgIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKIAorICAgIFVJUHJvY2Vzcy9jdXJs
L1dlYlByb2Nlc3NQb29sQ3VybC5jcHAKKworICAgIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwCisKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1
bmRsZVdpbi5jcHAKIAogICAgIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA4Y2E3NjBmY2ZmZC4uMDIwNGI5MWE2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNDYsNiArMTQ2LDEwIEBAIHN0cnVj
dCBTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3M7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7
CiAjZW5kaWYKIAorI2lmIFVTRShDVVJMKQorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIGNsYXNzIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjsKICNlbmRpZgpAQCAtNDQ4LDYgKzQ1MiwxMyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50PiB7CiB9Owog
I2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOworfTsKKyNl
bmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbXBvc2l0
aW9uVW5kZXJsaW5lPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3Vy
bC5jcHAKaW5kZXggMzY2NzZkMDNjMWEuLjRmMWFiOGQ2YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKQEAg
LTI4LDkgKzI4LDExIEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNl
dHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjcsNCArMTI5LDM4IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29k
ZXImLCBDcmVkZW50aWFsJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgQXJndW1lbnRD
b2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBD
dXJsUHJveHlTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgQVNTRVJUKCFzZXR0aW5ncy5pc0Vt
cHR5KCkpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShzZXR0aW5ncy5tb2RlKCkpOworICAgIGlm
IChzZXR0aW5ncy5tb2RlKCkgIT0gQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZW5jb2RlciA8PCBzZXR0aW5ncy51cmwoKTsKKyAgICBlbmNv
ZGVyIDw8IHNldHRpbmdzLmlnbm9yZUhvc3RzKCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxD
dXJsUHJveHlTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDdXJsUHJveHlTZXR0
aW5ncyYgc2V0dGluZ3MpCit7CisgICAgQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGUgbW9kZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShtb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKG1vZGUgIT0gQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbSkgeworICAg
ICAgICBzZXR0aW5ncyA9IEN1cmxQcm94eVNldHRpbmdzKG1vZGUpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBTdHJpbmcgdXJsOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dXJsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGlnbm9yZUhvc3RzOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWdub3JlSG9zdHMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBzZXR0aW5ncyA9IEN1cmxQcm94eVNldHRpbmdzKFVSTChVUkwoKSwgdXJsKSwg
V1RGTW92ZShpZ25vcmVIb3N0cykpOworICAgIHJldHVybiB0cnVlOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLQ29udGV4dEN1cmwuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjc5ZmE0NjRiNTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLQ29udGV4
dEN1cmwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldLQ29udGV4dEN1cmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViQ29yZS9DdXJs
UHJveHlTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmUvVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tD
b250ZXh0U2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLTmV0
d29ya1Byb3h5TW9kZSBtb2RlLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3Jl
SG9zdHMpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBXS05ldHdvcmtQcm94eU1v
ZGU6OmtXS05ldHdvcmtQcm94eU1vZGVEZWZhdWx0IDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQp
LT5zZXROZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJD
b3JlOjpDdXJsUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVsdCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdLTmV0d29ya1Byb3h5TW9kZTo6a1dLTmV0d29ya1Byb3h5TW9kZU5vUHJveHkg
OgorICAgICAgICB0b0ltcGwoY29udGV4dCktPnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNv
cmU6OkN1cmxQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpO
b1Byb3h5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tOZXR3b3JrUHJveHlNb2RlOjpr
V0tOZXR3b3JrUHJveHlNb2RlQ3VzdG9tIDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQpLT5zZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpV
UkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHByb3h5VXJsKSksIHRvV1RGU3RyaW5nKGln
bm9yZUhvc3RzKSkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV0tDb250ZXh0
U2V0U3NsQWxnb3JpdGhtcyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgY2lwaGVy
TGlzdCwgV0tTdHJpbmdSZWYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFdLU3RyaW5nUmVmIGN1
cnZlc0xpc3QpCit7CisgICAgdG9JbXBsKGNvbnRleHQpLT5zZXRTc2xBbGdvcml0aG1zKHRvV1RG
U3RyaW5nKGNpcGhlckxpc3QpLCB0b1dURlN0cmluZyhzaWduYXR1cmVBbGdvcml0aG1zTGlzdCks
IHRvV1RGU3RyaW5nKGN1cnZlc0xpc3QpKTsKK30KKwordm9pZCBXS0NvbnRleHRTZXRTc2xDQUNl
cnRQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKQorewor
ICAgIHRvSW1wbChjb250ZXh0KS0+c2V0U3NsQ0FDZXJ0UGF0aCh0b1dURlN0cmluZyhjYUNlcnRQ
YXRoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLQ29udGV4dEdldFNzbENBQ2VydFBhdGgoV0tDb250
ZXh0UmVmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChjb250ZXh0
KS0+Z2V0U3NsQ0FDZXJ0UGF0aCgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL2N1cmwvV0tDb250ZXh0Q3VybC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjhhNDkzMzM5MjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmgKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSBXS05ldHdvcmtQcm94eU1vZGUgeworICAgIGtX
S05ldHdvcmtQcm94eU1vZGVEZWZhdWx0LAorICAgIGtXS05ldHdvcmtQcm94eU1vZGVOb1Byb3h5
LAorICAgIGtXS05ldHdvcmtQcm94eU1vZGVDdXN0b20KK307CisKK1dLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdLQ29udGV4dFJlZiwgV0tOZXR3b3JrUHJv
eHlNb2RlLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpOworV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0U3NsQWxnb3JpdGhtcyhXS0NvbnRleHRSZWYsIFdLU3Ry
aW5nUmVmIGNpcGhlckxpc3QsIFdLU3RyaW5nUmVmIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBX
S1N0cmluZ1JlZiBjdXJ2ZXNMaXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFNzbENB
Q2VydFBhdGgoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0NvbnRleHRHZXRTc2xDQUNlcnRQYXRoKFdLQ29udGV4dFJlZik7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCAwOGRkYjFmNTUwYy4uMmY2MDcwYzA1ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNjUsNiArNjUsMTAgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBV
U0UoQ1VSTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5Owog
T0JKQ19DTEFTUyBOU09iamVjdDsKQEAgLTEwMCw3ICsxMDQsNyBAQCBjbGFzcyBXZWJQYWdlUHJv
eHk7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgU3Rh
dGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLSAgICAK
KwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEaWN0aW9uYXJ5Kj4gRGljdGlvbmFyeUNh
bGxiYWNrOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTYsNyArMTIwLDcgQEAgY2xhc3Mg
V2ViUHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpQcm9jZXNzUG8KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQb29s
PiBjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mKTsKIAotICAgIGV4cGxpY2l0
IFdlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJik7ICAgICAgICAK
KyAgICBleHBsaWNpdCBXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biYpOwogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NQb29sKCk7CiAKICAgICB2b2lkIG5vdGlmeVRo
aXNXZWJQcm9jZXNzUG9vbFdhc0NyZWF0ZWQoKTsKQEAgLTIyNiw3ICsyMzAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAg
IHZvaWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKLSAgICAKKwogICAgIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJp
bmcmKTsKQEAgLTI1Nyw3ICsyNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJv
eHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNl
bmRpZgogICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOwotICAgIAorCiAg
ICAgLy8gRG93bmxvYWRzLgogICAgIERvd25sb2FkUHJveHkqIGNyZWF0ZURvd25sb2FkUHJveHko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpOwogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KQEAgLTI3Miw3ICsyNzYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHVuc2lnbmVkIHdrUGFnZUNvdW50OwogICAgICAgICB1bnNpZ25lZCB3a0ZyYW1lQ291bnQ7
CiAgICAgfTsKLSAgICBzdGF0aWMgU3RhdGlzdGljcyYgc3RhdGlzdGljcygpOyAgICAKKyAgICBz
dGF0aWMgU3RhdGlzdGljcyYgc3RhdGlzdGljcygpOwogCiAgICAgdm9pZCB1c2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24oKTsKICAgICBib29sIGlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsgfQpAQCAtMzEy
LDggKzMxNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChi
b29sKTsKICAgICBib29sIGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgdm9p
ZCBnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChB
UEk6OkRpY3Rpb25hcnkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgCisgICAgdm9p
ZCBnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkKEFQ
STo6RGljdGlvbmFyeSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKwogICAgIGJvb2wgamF2
YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZCgpIHsgcmV0dXJuIG1famF2YVNjcmlwdENv
bmZpZ3VyYXRpb25GaWxlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25GaWxlRW5hYmxlZChib29sIGZsYWcpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQ1NSw2
ICs0NTksMTQgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94
eShTdXNwZW5kZWRQYWdlUHJveHkmKTsKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdh
cm0oKTsKIAorI2lmIFVTRShDVVJMKQorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDdXJsKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9p
ZCBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5n
cyYpOworICAgIHZvaWQgc2V0U3NsQWxnb3JpdGhtcyhjb25zdCBTdHJpbmcmIGNpcGhlckxpc3Qs
IGNvbnN0IFN0cmluZyYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIGNvbnN0IFN0cmluZyYgY3Vy
dmVzTGlzdCk7CisgICAgdm9pZCBzZXRTc2xDQUNlcnRQYXRoKGNvbnN0IFN0cmluZyYpOworICAg
IFN0cmluZyBnZXRTc2xDQUNlcnRQYXRoKCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJv
cGVydGllc1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBhZGRNb2NrTWVkaWFEZXZpY2UoY29u
c3QgV2ViQ29yZTo6TW9ja01lZGlhRGV2aWNlJik7CkBAIC01NzEsNyArNTgzLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fdmlzaXRlZExpbmtzUG9wdWxhdGVkIHsgZmFsc2UgfTsKIAogICAgIFBs
dWdJbkF1dG9TdGFydFByb3ZpZGVyIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgeyB0aGlzIH07
Ci0gICAgICAgIAorCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Vt
cHR5RG9jdW1lbnQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc1Nl
Y3VyZTsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5n
Q29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtNzA4LDYgKzcyMCwxNCBAQCBwcml2YXRlOgogCiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTdXNwZW5kZWRQ
YWdlUHJveHkqPj4gbV9zdXNwZW5kZWRQYWdlczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSwgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fc3dhcHBlZFByb2Nlc3Nl
czsKKworI2lmIFVTRShDVVJMKQorICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIG1fY3Vy
bFByb3h5U2V0dGluZ3M7CisgICAgU3RyaW5nIG1fY2lwaGVyTGlzdDsKKyAgICBTdHJpbmcgbV9z
aWduYXR1cmVBbGdvcml0aG1zTGlzdDsKKyAgICBTdHJpbmcgbV9jdXJ2ZXNMaXN0OworICAgIFN0
cmluZyBtX2NhQ2VydFBhdGg7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0ZmFlMjZmZDJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY3VybC9XZWJQcm9jZXNz
UG9vbEN1cmwuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKworI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJsKE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMucHJveHlTZXR0
aW5ncyA9IG1fY3VybFByb3h5U2V0dGluZ3M7CisgICAgcGFyYW1ldGVycy5jaXBoZXJMaXN0ID0g
bV9jaXBoZXJMaXN0OworICAgIHBhcmFtZXRlcnMuc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QgPSBt
X3NpZ25hdHVyZUFsZ29yaXRobXNMaXN0OworICAgIHBhcmFtZXRlcnMuY3VydmVzTGlzdCA9IG1f
Y3VydmVzTGlzdDsKKyAgICBwYXJhbWV0ZXJzLmNhQ2VydFBhdGggPSBtX2NhQ2VydFBhdGg7Cit9
CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdl
YkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBtX2N1cmxQcm94eVNl
dHRpbmdzID0gc2V0dGluZ3M7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXROZXR3b3Jr
UHJveHlTZXR0aW5ncyhtX2N1cmxQcm94eVNldHRpbmdzKSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldFNzbEFsZ29yaXRobXMoY29uc3QgU3RyaW5nJiBjaXBoZXJMaXN0LCBjb25z
dCBTdHJpbmcmIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBjb25zdCBTdHJpbmcmIGN1cnZlc0xp
c3QpCit7CisgICAgbV9jaXBoZXJMaXN0ID0gY2lwaGVyTGlzdDsKKyAgICBtX3NpZ25hdHVyZUFs
Z29yaXRobXNMaXN0ID0gc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3Q7CisgICAgbV9jdXJ2ZXNMaXN0
ID0gY3VydmVzTGlzdDsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNzbEFsZ29yaXRo
bXMobV9jaXBoZXJMaXN0LCBtX3NpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBtX2N1cnZlc0xpc3Qp
LCAwKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0U3NsQ0FDZXJ0UGF0aChjb25zdCBT
dHJpbmcmIGNhQ2VydFBhdGgpCit7CisgICAgbV9jYUNlcnRQYXRoID0gY2FDZXJ0UGF0aDsKKyAg
ICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNzbENBQ2VydFBhdGgobV9jYUNlcnRQYXRoKSwg
MCk7Cit9CisKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6Z2V0U3NsQ0FDZXJ0UGF0aCgpCit7Cisg
ICAgcmV0dXJuIG1fY2FDZXJ0UGF0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRl
eCAxMDE1ZmYwNjA2Yy4uNjliZDEyYTQ3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zOCwxMiArNDAs
MTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworI2lmIFVTRShDVVJMKQorICAgIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzQ3VybChwYXJhbWV0ZXJzKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQ
cm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CkBAIC01NSw2ICs1OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW52YWxpZGF0ZUNvbnRleHQoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29s
dmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348339</attachid>
            <date>2018-08-28 13:54:13 -0700</date>
            <delta_ts>2018-10-15 15:23:33 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>30267</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjZiODcyMjIyOGEuLjcwZGRiMDM1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUyIEBACisyMDE4LTA4LTI4ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNv
bT4KKworICAgICAgICBbQ3VybF1bV2ViS2l0XSBJbXBsZW1lbnQgUHJveHkgYW5kIFRMUyByZWxh
dGVkIGZlYXR1cmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHByb3h5IGFuZCBUTFMgcmVsYXRlZCBmZWF0dXJlcyBvbiBXZWJLaXQg
TmV0d29ya1Byb2Nlc3MuIFNlcGFyYXRlIFdlYlByb2Nlc3NQb29sV2luIGFuZCBXZWJQcm9jZXNz
UG9vbEN1cmwKKyAgICAgICAgZm9yIGRpZmZlcmVuY2VzIG9mIGluaXRpYWxpemF0aW9uIGFtb25n
IHBsYXRmb3JtIGxheWVyIGFuZCBuZXR3b3JrIGxheWVyLgorICAgICAgICBBY3R1YWwgaW1wbGVt
ZW50YXRpb25zIGhhdmUgYmVlbiBpbiBXZWJDb3JlIGFscmVhZHkgYW5kIHVzZWQgaW4gV2ViS2l0
TGVnYWN5IGZvciBhIHdoaWxlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJsKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFNzbEFsZ29yaXRobXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3NsQ0FDZXJ0UGF0aCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2luL05ldHdvcmtQcm9jZXNzV2luLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2N1cmwv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8Q3VybFByb3h5U2V0dGluZ3M+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPEN1cmxQcm94eVNldHRpbmdzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcDogQWRkZWQuCisgICAgICAgIChXS0NvbnRleHRTZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyk6CisgICAgICAgIChXS0NvbnRleHRTZXRTc2xBbGdvcml0aG1z
KToKKyAgICAgICAgKFdLQ29udGV4dFNldFNzbENBQ2VydFBhdGgpOgorICAgICAgICAoV0tDb250
ZXh0R2V0U3NsQ0FDZXJ0UGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tD
b250ZXh0Q3VybC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1Bvb2xXaW4uY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3NDdXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldE5l
dHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNl
dFNzbEFsZ29yaXRobXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0U3Ns
Q0FDZXJ0UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRTc2xDQUNl
cnRQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucyk6CisKIDIwMTgtMDgtMjQgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtDdXJsXSBN
YXRjaCB0aGUgaW50ZXJmYWNlIHVzZWQgaW4gTmV0d29ya0RhdGFUYXNrIGFuZCBSZXNvdXJjZUhh
bmRsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCBjYWVjNTNjM2M1Zi4uOGU4NmFiMjI3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTU1LDYgKzU1LDEwIEBAIGNsYXNzIFVSTDsK
IGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKKworI2lmIFVTRShDVVJM
KQorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0yNDQsNiArMjQ4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJv
eHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNl
bmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzc0N1cmwoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAg
ICB2b2lkIHNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzJik7CisgICAgdm9pZCBzZXRTc2xBbGdvcml0aG1zKFN0cmluZyBjaXBoZXJMaXN0LCBT
dHJpbmcgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFN0cmluZyBjdXJ2ZXNMaXN0KTsKKyAgICB2
b2lkIHNldFNzbENBQ2VydFBhdGgoU3RyaW5nKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaWRlbnRpZmllcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJhYTM0
ZDA5ZmY2Li5mODg5ZDhiYTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMyw2ICszMywxMiBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0TmV0d29y
a1Byb3h5U2V0dGluZ3Moc3RydWN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyBz
ZXR0aW5ncykKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgU2V0TmV0d29ya1Byb3h5U2V0
dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCisgICAgU2V0U3NsQWxn
b3JpdGhtcyhTdHJpbmcgY2lwaGVyTGlzdCwgU3RyaW5nIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0
LCBTdHJpbmcgY3VydmVzTGlzdCkKKyAgICBTZXRTc2xDQUNlcnRQYXRoKFN0cmluZyBjYUNlcnRQ
YXRoKQorI2VuZGlmCisKICAgICBDbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAogICAgIEFkZFdl
YnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
d2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCBjZDdkYmE4ZTlhMy4uMjcxOGU5Nzk0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC04OSw2ICs4OSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2Vs
aWYgVVNFKENVUkwpCiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGU7
CiAjZW5kaWYKKyNpZiBVU0UoQ1VSTCkKKyAgICBlbmNvZGVyIDw8IHByb3h5U2V0dGluZ3M7Cisg
ICAgZW5jb2RlciA8PCBjaXBoZXJMaXN0OworICAgIGVuY29kZXIgPDwgc2lnbmF0dXJlQWxnb3Jp
dGhtc0xpc3Q7CisgICAgZW5jb2RlciA8PCBjdXJ2ZXNMaXN0OworICAgIGVuY29kZXIgPDwgY2FD
ZXJ0UGF0aDsKKyNlbmRpZgogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBlbmNvZGVyIDw8IGxvZ0Nvb2tpZUluZm9y
bWF0aW9uOwogI2VuZGlmCkBAIC0yMTQsNiArMjIxLDE5IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQ
cm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJveHlTZXR0aW5ncykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaXBoZXJMaXN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNpZ25h
dHVyZUFsZ29yaXRobXNMaXN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmN1cnZlc0xpc3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FDZXJ0UGF0aCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmxvZ0Nvb2tpZUluZm9ybWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDU0ZTZhYjA0YzY0Li4yNGM0YmM5MGIyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYKKwog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKQEAgLTEwNCw2
ICsxMDgsMTQgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBTdHJpbmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKKyAgICBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyBwcm94eVNldHRpbmdzOworICAg
IFN0cmluZyBjaXBoZXJMaXN0OworICAgIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlzdDsK
KyAgICBTdHJpbmcgY3VydmVzTGlzdDsKKyAgICBTdHJpbmcgY2FDZXJ0UGF0aDsKKyNlbmRpZgor
CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGJvb2wgbG9nQ29va2llSW5mb3JtYXRpb24geyBmYWxzZSB9OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggMjliNTI4ZTFjNzkuLmI3ZWNjYmQ0MzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0RhdGFU
YXNrQ3VybC5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkN1cmwuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db29raWVzU3RyYXRlZ3kuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggMTkxMzFjNjczMjIu
LmFhMDg2MTZlNTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtMjYsMjkgKzI2LDIzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAotI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCi0jaW5jbHVkZSAiV2Vi
Q29va2llTWFuYWdlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JBTVNpemUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDdXJsKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZp
bGUuaXNFbXB0eSgpKQogICAgICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNl
dENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3Jh
Z2VGaWxlKTsKKyAgICBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhwYXJhbWV0ZXJzLnByb3h5U2V0
dGluZ3MpOworICAgIHNldFNzbEFsZ29yaXRobXMocGFyYW1ldGVycy5jaXBoZXJMaXN0LCBwYXJh
bWV0ZXJzLnNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBwYXJhbWV0ZXJzLmN1cnZlc0xpc3QpOwor
ICAgIGlmICghcGFyYW1ldGVycy5jYUNlcnRQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0U3Ns
Q0FDZXJ0UGF0aChwYXJhbWV0ZXJzLmNhQ2VydFBhdGgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTkyLDQgKzg2
LDMwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25U
b0JhY2tncm91bmQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2V0UHJv
eHlTZXR0aW5ncyhzZXR0aW5ncyk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNzbEFs
Z29yaXRobXMoU3RyaW5nIGNpcGhlckxpc3QsIFN0cmluZyBzaWduYXR1cmVBbGdvcml0aG1zTGlz
dCwgU3RyaW5nIGN1cnZlc0xpc3QpCit7CisgICAgYXV0byYgc3NsSGFuZGxlID0gQ3VybENvbnRl
eHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpOworICAgIHNzbEhhbmRsZS5zZXRDaXBoZXJMaXN0
KFdURk1vdmUoY2lwaGVyTGlzdCkpOworICAgIHNzbEhhbmRsZS5zZXRTaWduYXR1cmVBbGdvcml0
aG1zTGlzdChXVEZNb3ZlKHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0KSk7CisgICAgc3NsSGFuZGxl
LnNldEN1cnZlc0xpc3QoV1RGTW92ZShjdXJ2ZXNMaXN0KSk7Cit9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFNzbENBQ2VydFBhdGgoU3RyaW5nIGNhQ2VydFBhdGgpCit7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG9uTWVtb3J5SWRlbnRpZmllciA9ICI6bWVtb3J5OiI7CisKKyAgICBpZiAo
Y2FDZXJ0UGF0aC5zdGFydHNXaXRoKG9uTWVtb3J5SWRlbnRpZmllcikpIHsKKyAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNhQ2VydERhdGE7CisgICAgICAgIGF1dG8gYm9keSA9IGNhQ2VydFBhdGgu
c3Vic3RyaW5nKHN0cmxlbihvbk1lbW9yeUlkZW50aWZpZXIpKS51dGY4KCk7CisgICAgICAgIGNh
Q2VydERhdGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJvZHkuZGF0
YSgpKSwgYm9keS5sZW5ndGgoKSk7CisgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5z
c2xIYW5kbGUoKS5zZXRDQUNlcnREYXRhKFdURk1vdmUoY2FDZXJ0RGF0YSkpOworICAgIH0gZWxz
ZQorICAgICAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc3NsSGFuZGxlKCkuc2V0Q0FDZXJ0
UGF0aChXVEZNb3ZlKGNhQ2VydFBhdGgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJvY2Vz
c1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJvY2Vz
c1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0NzA3YTk5
NDM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4v
TmV0d29ya1Byb2Nlc3NXaW4uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworI2lmIFVTRShDVVJMKQorICAgIHBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ3VybChwYXJhbWV0ZXJzKTsKKyNlbmRpZgorfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDVjOTlk
NWFhNWE3Li40MGM4Yjg3NTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMCw2ICsx
MCw3IEBAIGFkZF9kZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKIAogbGlzdChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy93aW4vTmV0d29ya1Byb2Nlc3NNYWlu
V2luLmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL3dpbi9OZXR3b3JrUHJvY2Vzc1dpbi5jcHAKIAog
ICAgIFBsYXRmb3JtL0lQQy93aW4vQXR0YWNobWVudFdpbi5jcHAKICAgICBQbGF0Zm9ybS9JUEMv
d2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC00Myw2ICs0NCw4IEBAIGxpc3QoQVBQRU5EIFdlYktp
dF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3Bw
CiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcAorCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL3dpbi9BUElX
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtNTMsNiArNTYsOCBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0
b3JlV2luLmNwcAogCisgICAgVUlQcm9jZXNzL2N1cmwvV2ViUHJvY2Vzc1Bvb2xDdXJsLmNwcAor
CiAgICAgVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3Mvd2lu
L1RleHRDaGVja2VyV2luLmNwcAogICAgIFVJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQcm94
eVdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggOGNhNzYwZmNmZmQuLjAyMDRiOTFhNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTQ2LDYgKzE0NiwxMCBAQCBzdHJ1Y3QgU291
cE5ldHdvcmtQcm94eVNldHRpbmdzOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwogI2Vu
ZGlmCiAKKyNpZiBVU0UoQ1VSTCkKK2NsYXNzIEN1cmxQcm94eVNldHRpbmdzOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI7CiAjZW5kaWYKQEAgLTQ0OCw2ICs0NTIsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudD4gewogfTsKICNlbmRp
ZgogCisjaWYgVVNFKENVUkwpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkN1cmxQcm94eVNldHRpbmdzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOworICAgIHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MmKTsKK307CisjZW5kaWYK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmUmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3Bw
CmluZGV4IDM2Njc2ZDAzYzFhLi40ZjFhYjhkNmExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0yOCw5
ICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2VydGlmaWNhdGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5n
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTI3LDQgKzEyOSwzOCBAQCBib29s
IEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwg
Q3JlZGVudGlhbCYpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8
Q3VybFByb3h5U2V0dGluZ3M+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3VybFBy
b3h5U2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIEFTU0VSVCghc2V0dGluZ3MuaXNFbXB0eSgp
KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0oc2V0dGluZ3MubW9kZSgpKTsKKyAgICBpZiAoc2V0
dGluZ3MubW9kZSgpICE9IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpDdXN0b20pCisgICAgICAg
IHJldHVybjsKKworICAgIGVuY29kZXIgPDwgc2V0dGluZ3MudXJsKCk7CisgICAgZW5jb2RlciA8
PCBzZXR0aW5ncy5pZ25vcmVIb3N0cygpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8Q3VybFBy
b3h5U2V0dGluZ3M+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ3VybFByb3h5U2V0dGluZ3Mm
IHNldHRpbmdzKQoreworICAgIEN1cmxQcm94eVNldHRpbmdzOjpNb2RlIG1vZGU7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0obW9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChtb2RlICE9IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpDdXN0b20pIHsKKyAgICAgICAg
c2V0dGluZ3MgPSBDdXJsUHJveHlTZXR0aW5ncyhtb2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgU3RyaW5nIHVybDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBpZ25vcmVIb3N0czsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlnbm9yZUhvc3RzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc2V0dGluZ3MgPSBDdXJsUHJveHlTZXR0aW5ncyhVUkwoVVJMKCksIHVybCksIFdURk1v
dmUoaWdub3JlSG9zdHMpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tDb250ZXh0Q3VybC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUxNWJlYjE3YmNiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJs
LmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXS0NvbnRleHRDdXJsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJv
eHlTZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tDb250
ZXh0U2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLTmV0d29y
a1Byb3h5TW9kZSBtb2RlLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9z
dHMpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBXS05ldHdvcmtQcm94eU1vZGU6
OmtXS05ldHdvcmtQcm94eU1vZGVEZWZhdWx0IDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQpLT5z
ZXROZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJDb3Jl
OjpDdXJsUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVsdCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdLTmV0d29ya1Byb3h5TW9kZTo6a1dLTmV0d29ya1Byb3h5TW9kZU5vUHJveHkgOgor
ICAgICAgICB0b0ltcGwoY29udGV4dCktPnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNvcmU6
OkN1cmxQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpOb1By
b3h5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tOZXR3b3JrUHJveHlNb2RlOjprV0tO
ZXR3b3JrUHJveHlNb2RlQ3VzdG9tIDoKKyAgICAgICAgdG9JbXBsKGNvbnRleHQpLT5zZXROZXR3
b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHByb3h5VXJsKSksIHRvV1RGU3RyaW5nKGlnbm9y
ZUhvc3RzKSkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0
U3NsQWxnb3JpdGhtcyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgY2lwaGVyTGlz
dCwgV0tTdHJpbmdSZWYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIFdLU3RyaW5nUmVmIGN1cnZl
c0xpc3QpCit7CisgICAgdG9JbXBsKGNvbnRleHQpLT5zZXRTc2xBbGdvcml0aG1zKHRvV1RGU3Ry
aW5nKGNpcGhlckxpc3QpLCB0b1dURlN0cmluZyhzaWduYXR1cmVBbGdvcml0aG1zTGlzdCksIHRv
V1RGU3RyaW5nKGN1cnZlc0xpc3QpKTsKK30KKwordm9pZCBXS0NvbnRleHRTZXRTc2xDQUNlcnRQ
YXRoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKQoreworICAg
IHRvSW1wbChjb250ZXh0KS0+c2V0U3NsQ0FDZXJ0UGF0aCh0b1dURlN0cmluZyhjYUNlcnRQYXRo
KSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLQ29udGV4dEdldFNzbENBQ2VydFBhdGgoV0tDb250ZXh0
UmVmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChjb250ZXh0KS0+
Z2V0U3NsQ0FDZXJ0UGF0aCgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL2N1cmwvV0tDb250ZXh0Q3VybC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjhhNDkzMzM5MjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvY3VybC9XS0NvbnRleHRDdXJsLmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4K
KyNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSBXS05ldHdvcmtQcm94eU1vZGUgeworICAgIGtXS05l
dHdvcmtQcm94eU1vZGVEZWZhdWx0LAorICAgIGtXS05ldHdvcmtQcm94eU1vZGVOb1Byb3h5LAor
ICAgIGtXS05ldHdvcmtQcm94eU1vZGVDdXN0b20KK307CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdLQ29udGV4dFJlZiwgV0tOZXR3b3JrUHJveHlN
b2RlLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpOworV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0U3NsQWxnb3JpdGhtcyhXS0NvbnRleHRSZWYsIFdLU3RyaW5n
UmVmIGNpcGhlckxpc3QsIFdLU3RyaW5nUmVmIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBXS1N0
cmluZ1JlZiBjdXJ2ZXNMaXN0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFNzbENBQ2Vy
dFBhdGgoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBjYUNlcnRQYXRoKTsKK1dLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS0NvbnRleHRHZXRTc2xDQUNlcnRQYXRoKFdLQ29udGV4dFJlZik7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCAwOGRkYjFmNTUwYy4uMmY2MDcwYzA1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNjUsNiArNjUsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1NvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OwogT0JK
Q19DTEFTUyBOU09iamVjdDsKQEAgLTEwMCw3ICsxMDQsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7
CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgU3RhdGlz
dGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLSAgICAKKwog
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEaWN0aW9uYXJ5Kj4gRGljdGlvbmFyeUNhbGxi
YWNrOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTYsNyArMTIwLDcgQEAgY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpQcm9jZXNzUG8KIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQb29sPiBj
cmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mKTsKIAotICAgIGV4cGxpY2l0IFdl
YlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJik7ICAgICAgICAKKyAg
ICBleHBsaWNpdCBXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYp
OwogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NQb29sKCk7CiAKICAgICB2b2lkIG5vdGlmeVRoaXNX
ZWJQcm9jZXNzUG9vbFdhc0NyZWF0ZWQoKTsKQEAgLTIyNiw3ICsyMzAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZv
aWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKLSAgICAKKwogICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcm
KTsKQEAgLTI1Nyw3ICsyNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXR3b3JrUHJveHlT
ZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmKTsKICNlbmRp
ZgogICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOwotICAgIAorCiAgICAg
Ly8gRG93bmxvYWRzLgogICAgIERvd25sb2FkUHJveHkqIGNyZWF0ZURvd25sb2FkUHJveHkoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpOwogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4g
Km1fZG93bmxvYWRDbGllbnQ7IH0KQEAgLTI3Miw3ICsyNzYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHVuc2lnbmVkIHdrUGFnZUNvdW50OwogICAgICAgICB1bnNpZ25lZCB3a0ZyYW1lQ291bnQ7CiAg
ICAgfTsKLSAgICBzdGF0aWMgU3RhdGlzdGljcyYgc3RhdGlzdGljcygpOyAgICAKKyAgICBzdGF0
aWMgU3RhdGlzdGljcyYgc3RhdGlzdGljcygpOwogCiAgICAgdm9pZCB1c2VUZXN0aW5nTmV0d29y
a1Nlc3Npb24oKTsKICAgICBib29sIGlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSBjb25z
dCB7IHJldHVybiBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsgfQpAQCAtMzEyLDgg
KzMxNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29s
KTsKICAgICBib29sIGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBn
ZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6
OkRpY3Rpb25hcnkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgCisgICAgdm9pZCBn
ZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkKEFQSTo6
RGljdGlvbmFyeSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKwogICAgIGJvb2wgamF2YVNj
cmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZCgpIHsgcmV0dXJuIG1famF2YVNjcmlwdENvbmZp
Z3VyYXRpb25GaWxlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25GaWxlRW5hYmxlZChib29sIGZsYWcpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQ1NSw2ICs0
NTksMTQgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclN1c3BlbmRlZFBhZ2VQcm94eShT
dXNwZW5kZWRQYWdlUHJveHkmKTsKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0o
KTsKIAorI2lmIFVTRShDVVJMKQorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3NDdXJsKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBz
ZXROZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYp
OworICAgIHZvaWQgc2V0U3NsQWxnb3JpdGhtcyhjb25zdCBTdHJpbmcmIGNpcGhlckxpc3QsIGNv
bnN0IFN0cmluZyYgc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QsIGNvbnN0IFN0cmluZyYgY3VydmVz
TGlzdCk7CisgICAgdm9pZCBzZXRTc2xDQUNlcnRQYXRoKGNvbnN0IFN0cmluZyYpOworICAgIFN0
cmluZyBnZXRTc2xDQUNlcnRQYXRoKCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVy
dGllc1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBhZGRNb2NrTWVkaWFEZXZpY2UoY29uc3Qg
V2ViQ29yZTo6TW9ja01lZGlhRGV2aWNlJik7CkBAIC01NzEsNyArNTgzLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fdmlzaXRlZExpbmtzUG9wdWxhdGVkIHsgZmFsc2UgfTsKIAogICAgIFBsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgeyB0aGlzIH07Ci0g
ICAgICAgIAorCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5
RG9jdW1lbnQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc1NlY3Vy
ZTsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5nQ29u
dGVudFNlY3VyaXR5UG9saWN5OwpAQCAtNzA4LDYgKzcyMCwxNCBAQCBwcml2YXRlOgogCiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTdXNwZW5kZWRQYWdl
UHJveHkqPj4gbV9zdXNwZW5kZWRQYWdlczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSwgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fc3dhcHBlZFByb2Nlc3NlczsK
KworI2lmIFVTRShDVVJMKQorICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIG1fY3VybFBy
b3h5U2V0dGluZ3M7CisgICAgU3RyaW5nIG1fY2lwaGVyTGlzdDsKKyAgICBTdHJpbmcgbV9zaWdu
YXR1cmVBbGdvcml0aG1zTGlzdDsKKyAgICBTdHJpbmcgbV9jdXJ2ZXNMaXN0OworICAgIFN0cmlu
ZyBtX2NhQ2VydFBhdGg7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jdXJsL1dlYlByb2Nlc3NQb29sQ3VybC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0ZmFlMjZmZDJhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY3VybC9XZWJQcm9jZXNzUG9v
bEN1cmwuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKworI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDdXJsKE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMucHJveHlTZXR0aW5n
cyA9IG1fY3VybFByb3h5U2V0dGluZ3M7CisgICAgcGFyYW1ldGVycy5jaXBoZXJMaXN0ID0gbV9j
aXBoZXJMaXN0OworICAgIHBhcmFtZXRlcnMuc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3QgPSBtX3Np
Z25hdHVyZUFsZ29yaXRobXNMaXN0OworICAgIHBhcmFtZXRlcnMuY3VydmVzTGlzdCA9IG1fY3Vy
dmVzTGlzdDsKKyAgICBwYXJhbWV0ZXJzLmNhQ2VydFBhdGggPSBtX2NhQ2VydFBhdGg7Cit9CisK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNv
cmU6OkN1cmxQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBtX2N1cmxQcm94eVNldHRp
bmdzID0gc2V0dGluZ3M7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXROZXR3b3JrUHJv
eHlTZXR0aW5ncyhtX2N1cmxQcm94eVNldHRpbmdzKSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldFNzbEFsZ29yaXRobXMoY29uc3QgU3RyaW5nJiBjaXBoZXJMaXN0LCBjb25zdCBT
dHJpbmcmIHNpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBjb25zdCBTdHJpbmcmIGN1cnZlc0xpc3Qp
Cit7CisgICAgbV9jaXBoZXJMaXN0ID0gY2lwaGVyTGlzdDsKKyAgICBtX3NpZ25hdHVyZUFsZ29y
aXRobXNMaXN0ID0gc2lnbmF0dXJlQWxnb3JpdGhtc0xpc3Q7CisgICAgbV9jdXJ2ZXNMaXN0ID0g
Y3VydmVzTGlzdDsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNzbEFsZ29yaXRobXMo
bV9jaXBoZXJMaXN0LCBtX3NpZ25hdHVyZUFsZ29yaXRobXNMaXN0LCBtX2N1cnZlc0xpc3QpLCAw
KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0U3NsQ0FDZXJ0UGF0aChjb25zdCBTdHJp
bmcmIGNhQ2VydFBhdGgpCit7CisgICAgbV9jYUNlcnRQYXRoID0gY2FDZXJ0UGF0aDsKKyAgICBp
ZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNzbENBQ2VydFBhdGgobV9jYUNlcnRQYXRoKSwgMCk7
Cit9CisKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6Z2V0U3NsQ0FDZXJ0UGF0aCgpCit7CisgICAg
cmV0dXJuIG1fY2FDZXJ0UGF0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRleCAx
MDE1ZmYwNjA2Yy4uZmJhZWE4ZjUzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtMjcsNyArMjcsMTAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgor
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogCkBAIC0zOCwxMiArNDEsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIFVTRShDVVJMKQorICAg
IHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ3VybChwYXJhbWV0ZXJzKTsKKyNlbmRp
ZgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC01NSw2ICs2MCw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25z
KCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="365993"
          type_id="1"
          status="-"
          setter="fujii"
    />
    <flag name="commit-queue"
          id="365994"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352390</attachid>
            <date>2018-10-15 15:23:33 -0700</date>
            <delta_ts>2018-10-26 11:09:16 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>22814</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDhhM2Q0NDM3MTEyLi5iOWM4N2RlMDdhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC02MCw2ICs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBD
b29raWVKYXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3VybFByb3h5U2V0dGlu
Z3M7CiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFNvdXBOZXR3b3JrU2Vzc2lvbjsKQEAgLTEzNCw2ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAg
Q29va2llSmFyREImIGNvb2tpZURhdGFiYXNlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDb29raWVEYXRhYmFzZShVbmlxdWVSZWY8Q29va2llSmFyREI+JiYpIGNvbnN0Owog
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm94eVNldHRpbmdzKGNvbnN0IEN1cmxQcm94
eVNldHRpbmdzJikgY29uc3Q7CisKICAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCgpIGNv
bnN0OwogI2Vsc2UKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIE5l
dHdvcmtpbmdDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5k
ZXggZTExMGFkMTY0OTEuLmEwM2Q5MzZmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkN1cmwuY3BwCkBAIC0xOTMsNiArMTkzLDExIEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uCiAg
ICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgq
dGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVT
aXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwg
aGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNv
b2tpZXMpOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJveHlTZXR0aW5n
cyhjb25zdCBDdXJsUHJveHlTZXR0aW5ncyYgcHJveHlTZXR0aW5ncykgY29uc3QKK3sKKyAgICBD
dXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2V0UHJveHlTZXR0aW5ncyhwcm94eVNldHRpbmdzKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENVUkwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZmIzNzcz
ZDFlZmUuLmJjZTdjNWU3MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOworY2xhc3MgQ3VybFByb3h5
U2V0dGluZ3M7CiBjbGFzcyBEb3dubG9hZElEOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwpAQCAtMzAxLDYgKzMwMiwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6U291cE5ldHdv
cmtQcm94eVNldHRpbmdzJik7CiAjZW5kaWYKIAorI2lmIFVTRShDVVJMKQorICAgIHZvaWQgc2V0
TmV0d29ya1Byb3h5U2V0dGluZ3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkN1cmxQ
cm94eVNldHRpbmdzJik7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMg
dm9pZCBzZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlk
ZW50aWZpZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhYzczYmVkNDJlMi4uZGUwZTRj
MjU0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzMsNiArMzMsMTAgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldE5ldHdvcmtQcm94eVNldHRpbmdz
KHN0cnVjdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCiAjZW5k
aWYKIAorI2lmIFVTRShDVVJMKQorICAgIFNldE5ldHdvcmtQcm94eVNldHRpbmdzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCisj
ZW5kaWYKKwogICAgIENsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQogCiAgICAgQWRkV2Vic2l0ZURh
dGFTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3ZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
MmM3Yjk5ZDMzZDguLjAwNGQyOWQyNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0zNCw2ICszNCwxMSBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKICNlbmRp
ZgogCisjaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI7CkBAIC01Miw2
ICs1Nyw5IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAg
U3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKICAgICBTdHJpbmcgc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogI2VuZGlmCisjaWYgVVNFKENVUkwp
CisgICAgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MgcHJveHlTZXR0aW5nczsKKyNlbmRpZgog
fTsKIAogaW5saW5lIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC02NCw2ICs3Miw5IEBAIGlubGluZSB2
b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zCiAgICAgZW5jb2RlciA8PCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI7CiAjZW5kaWYKKyNpZiBVU0UoQ1VSTCkKKyAgICBlbmNvZGVyIDw8IHByb3h5U2V0dGlu
Z3M7CisjZW5kaWYKIH0KIAogaW5saW5lIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtOTcsNyArMTA4LDEzIEBAIGlubGluZSBzdGQ6Om9w
dGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyCiAgICAgaWYgKCFzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKLSAgICAKKworI2lmIFVTRShD
VVJMKQorICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIHByb3h5U2V0dGluZ3M7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwcm94eVNldHRpbmdzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIHNlc3Npb25JRAogICAg
ICAgICAsIFdURk1vdmUoKmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcikKQEAgLTEwNyw2ICsxMjQs
OSBAQCBpbmxpbmUgc3RkOjpvcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcgogICAgICAgICAsIFdURk1vdmUoKnNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgLCBXVEZNb3ZlKCpzb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCiAjZW5kaWYKKyNpZiBVU0UoQ1VSTCkKKyAgICAg
ICAgLCBXVEZNb3ZlKHByb3h5U2V0dGluZ3MpCisjZW5kaWYKICAgICB9fTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3ND
dXJsLmNwcAppbmRleCAxOTEzMWM2NzMyMi4uN2MxNDUyMzliM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3Bw
CkBAIC0yNiwyMCArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgogCi0jaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUNhY2hl
c1RvQ2xlYXIuaCIKLSNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgIldl
YkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxDb250ZXh0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgot
I2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTkyLDQgKzgzLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
UHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MmIHNl
dHRpbmdzKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+c2V0UHJveHlTZXR0aW5ncyhzZXR0aW5ncyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAppbmRleCA1ZDNhNjZkZDEwYi4uYWE3Y2Iw
MDUyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb25DdXJsLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybENvbnRleHQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtMzUsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5ldHdvcmtTZXNzaW9u
Q3VybDo6TmV0d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICAgICA6IE5ldHdvcmtTZXNzaW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklE
KQogewotCisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuc2V0UHJveHlTZXR0aW5ncyhwYXJh
bWV0ZXJzLnByb3h5U2V0dGluZ3MpOwogfQogCiBOZXR3b3JrU2Vzc2lvbkN1cmw6On5OZXR3b3Jr
U2Vzc2lvbkN1cmwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJsLmNwcAppbmRleCA3MzZl
ZTk4NTFiYS4uNzU5MzliMmU4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dEN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dEN1cmwuY3Bw
CkBAIC0yNiwxNiArMjYsMjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oIgogCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNp
bmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJikKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOworICAgIGlmIChOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHJldHVybjsKKworICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIFN0cmluZzo6
bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRT
ZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5j
bWFrZQppbmRleCAzYWViNmE0YWIwNC4uM2RkNTY0Mzc3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtNDAsNiArNDAsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLVmlld3BvcnRBdHRyaWJ1dGVzLmNwcAogCisgICAgVUlQcm9jZXNz
L0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAKKwogICAgIFVJUHJvY2Vz
cy9BUEkvQy93aW4vV0tWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0
ZURhdGFTdG9yZVdpbi5jcHAKQEAgLTQ4LDYgKzUwLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKIAogICAgIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAogCisg
ICAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL2N1cmwvV2Vic2l0ZURhdGFTdG9yZUN1cmwuY3BwCisK
ICAgICBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCiAK
ICAgICBVSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMTA1LDYgKzEwOSw3IEBA
IGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJ
Un0vU2hhcmVkL3VuaXgiCiAgICAgIiR7V0VCS0lUX0RJUn0vU2hhcmVkL3dpbiIKICAgICAiJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9DL2N1cmwiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3dp
biIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC93aW4iCiAgICAgIiR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93aW4iCkBAIC0xOTYsNiArMjAxLDcgQEAgc2V0KFdlYktp
dF9GT1JXQVJESU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAgICBVSVByb2Nlc3MvQVBJL0MKICAg
ICBVSVByb2Nlc3MvQVBJL2NwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2N1cmwKICAgICBVSVBy
b2Nlc3MvQVBJL0Mvd2luCiAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDNlZWI0
NDJlMzI3Li40NjMxMjNjYzE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTE0OSw2ICsxNDksMTAgQEAgc3RydWN0IFNvdXBOZXR3b3JrUHJv
eHlTZXR0aW5nczsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKICNlbmRpZgogCisjaWYg
VVNFKENVUkwpCitjbGFzcyBDdXJsUHJveHlTZXR0aW5nczsKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwog
I2VuZGlmCkBAIC00NTEsNiArNDU1LDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQ+IHsKIH07CiAjZW5kaWYKIAorI2lmIFVT
RShDVVJMKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJsUHJv
eHlTZXR0aW5ncz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6Q3VybFByb3h5U2V0dGluZ3MmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJik7Cit9OworI2VuZGlmCisKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0
aW9uVW5kZXJsaW5lJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcAppbmRleCAzNjY3
NmQwM2MxYS4uOTI1MzEwZjUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1
cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNh
dGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC0xMjcs
NCArMTI4LDM3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKERlY29kZXImLCBDcmVkZW50aWFsJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgQXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBDdXJsUHJveHlTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHNldHRpbmdzLm1vZGUoKSk7CisgICAgaWYgKHNldHRpbmdzLm1vZGUoKSAhPSBD
dXJsUHJveHlTZXR0aW5nczo6TW9kZTo6Q3VzdG9tKQorICAgICAgICByZXR1cm47CisKKyAgICBl
bmNvZGVyIDw8IHNldHRpbmdzLnVybCgpOworICAgIGVuY29kZXIgPDwgc2V0dGluZ3MuaWdub3Jl
SG9zdHMoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPEN1cmxQcm94eVNldHRpbmdzPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIEN1cmxQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAg
ICBDdXJsUHJveHlTZXR0aW5nczo6TW9kZSBtb2RlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKG1vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobW9kZSAhPSBDdXJs
UHJveHlTZXR0aW5nczo6TW9kZTo6Q3VzdG9tKSB7CisgICAgICAgIHNldHRpbmdzID0gQ3VybFBy
b3h5U2V0dGluZ3MobW9kZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFN0
cmluZyB1cmw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBTdHJpbmcgaWdub3JlSG9zdHM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpZ25vcmVIb3N0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNldHRpbmdzID0g
Q3VybFByb3h5U2V0dGluZ3MoVVJMKFVSTCgpLCB1cmwpLCBXVEZNb3ZlKGlnbm9yZUhvc3RzKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YmYzMTRhMjg0OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3Vy
bC5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXROZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS05ldHdvcmtQcm94eU1vZGUgcHJveHlNb2RlLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJp
bmdSZWYgaWdub3JlSG9zdHMpCit7CisgICAgc3dpdGNoIChwcm94eU1vZGUpIHsKKyAgICBjYXNl
IFdLTmV0d29ya1Byb3h5TW9kZTo6a1dLTmV0d29ya1Byb3h5TW9kZURlZmF1bHQ6CisgICAgICAg
IHRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TmV0d29ya1Byb3h5
U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0
dGluZ3M6Ok1vZGU6OkRlZmF1bHQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXS05ldHdv
cmtQcm94eU1vZGU6OmtXS05ldHdvcmtQcm94eU1vZGVOb1Byb3h5OgorICAgICAgICB0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5ldHdvcmtQcm94eVNldHRpbmdz
KFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpN
b2RlOjpOb1Byb3h5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tOZXR3b3JrUHJveHlN
b2RlOjprV0tOZXR3b3JrUHJveHlNb2RlQ3VzdG9tOgorICAgICAgICB0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNvcmU6
OkN1cmxQcm94eVNldHRpbmdzKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJp
bmcocHJveHlVcmwpKSwgdG9XVEZTdHJpbmcoaWdub3JlSG9zdHMpKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1
cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU3ZWFmMDJhMmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJs
LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
ZW51bSBXS05ldHdvcmtQcm94eU1vZGUgeworICAgIGtXS05ldHdvcmtQcm94eU1vZGVEZWZhdWx0
LAorICAgIGtXS05ldHdvcmtQcm94eU1vZGVOb1Byb3h5LAorICAgIGtXS05ldHdvcmtQcm94eU1v
ZGVDdXN0b20KK307CisKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldE5ldHdv
cmtQcm94eVNldHRpbmdzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tOZXR3b3JrUHJveHlNb2Rl
LCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBjMmU3ZTFiODY5My4u
ZmNiMjAwM2IwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNjM0LDYgKzE2MzQsMTAgQEAgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAj
ZW5kaWYKIAorI2lmIFVTRShDVVJMKQorICAgIHBsYXRmb3JtU2V0UGFyYW1ldGVycyhwYXJhbWV0
ZXJzKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCBhNDIyNjFmMDQxZi4uMWM5YjU0ZWVlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTQ2
LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNlbmRp
ZgogCisjaWYgVVNFKENVUkwpCisjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
fQpAQCAtMTgzLDcgKzE4NywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm94eUNvbmZpZ3Vy
YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmIGNvbmZpZ3VyYXRpb24pIHsgbV9wcm94eUNvbmZpZ3VyYXRp
b24gPSBjb25maWd1cmF0aW9uOyB9CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5Q29uZmlndXJh
dGlvbigpIHsgcmV0dXJuIG1fcHJveHlDb25maWd1cmF0aW9uLmdldCgpOyB9CiAjZW5kaWYKLSAg
ICAKKworI2lmIFVTRShDVVJMKQorICAgIHZvaWQgcGxhdGZvcm1TZXRQYXJhbWV0ZXJzKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBzZXROZXR3b3JrUHJveHlTZXR0aW5n
cyhjb25zdCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOworICAgIGNvbnN0IFdlYkNvcmU6
OkN1cmxQcm94eVNldHRpbmdzJiBuZXR3b3JrUHJveHlTZXR0aW5ncygpIHsgcmV0dXJuIG1fcHJv
eHlTZXR0aW5nczsgfQorI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBhbGxvd1dlYnNpdGVEYXRh
UmVjb3Jkc0ZvckFsbE9yaWdpbnMoKTsKIAogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKQEAgLTI0
NSw4ICsyNTUsMTMgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gbV9jZkNvb2tpZVN0b3JhZ2U7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
bV9wcm94eUNvbmZpZ3VyYXRpb247CiAjZW5kaWYKKworI2lmIFVTRShDVVJMKQorICAgIFdlYkNv
cmU6OkN1cmxQcm94eVNldHRpbmdzIG1fcHJveHlTZXR0aW5nczsKKyNlbmRpZgorCiAgICAgSGFz
aFNldDxXZWJDb3JlOjpDb29raWU+IG1fcGVuZGluZ0Nvb2tpZXM7Ci0gICAgCisKICAgICBTdHJp
bmcgbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CiAgICAgQWxsb3dzQ2VsbHVsYXJBY2Nlc3Mg
bV9hbGxvd3NDZWxsdWxhckFjY2VzcyB7IEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvY3VybC9XZWJz
aXRlRGF0YVN0b3JlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMTc2NTYxZjkwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldFBhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMucHJveHlTZXR0aW5ncyA9IG1fcHJveHlTZXR0aW5nczsKK30KKwordm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpDdXJsUHJv
eHlTZXR0aW5ncyYgcHJveHlTZXR0aW5ncykKK3sKKyAgICBtX3Byb3h5U2V0dGluZ3MgPSBwcm94
eVNldHRpbmdzOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygp
KQorICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXROZXR3b3JrUHJveHlTZXR0aW5ncyhtX3Nlc3Npb25JRCwgbV9w
cm94eVNldHRpbmdzKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dp
bi9XZWJLaXRCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRC
cm93c2VyV2luZG93LmNwcAppbmRleCA0ODE2N2Q3YWFjMS4uN2FiM2JlMTBlYjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tDcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuaD4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKIHN0ZDo6d3N0cmluZyBjcmVhdGVTdHJpbmcoV0tTdHJpbmdSZWYgd2tTdHJpbmcp
CkBAIC0xMDUsNiArMTA2LDExIEBAIFdlYktpdEJyb3dzZXJXaW5kb3c6OldlYktpdEJyb3dzZXJX
aW5kb3coSFdORCBtYWluV25kLCBIV05EIHVybEJhclduZCkKICAgICBuYXZpZ2F0aW9uQ2xpZW50
LmRpZENvbW1pdE5hdmlnYXRpb24gPSBkaWRDb21taXROYXZpZ2F0aW9uOwogICAgIG5hdmlnYXRp
b25DbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50
KHBhZ2UsICZuYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOworCisgICAgYXV0byB3a1Byb3h5VXJsID0g
YWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOworICAgIGF1dG8gd2tJZ25v
cmVIb3N0ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpOworICAg
IGF1dG8gc3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQuZ2V0KCkp
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldE5ldHdvcmtQcm94eVNldHRpbmdzKHN0b3JlLCBX
S05ldHdvcmtQcm94eU1vZGU6OmtXS05ldHdvcmtQcm94eU1vZGVEZWZhdWx0LCB3a1Byb3h5VXJs
LmdldCgpLCB3a0lnbm9yZUhvc3QuZ2V0KCkpOwogfQogCiBIUkVTVUxUIFdlYktpdEJyb3dzZXJX
aW5kb3c6OmluaXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353191</attachid>
            <date>2018-10-26 11:09:16 -0700</date>
            <delta_ts>2018-10-30 16:27:17 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>49815</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTA4ZGU3MTdlMi4uZDA0NTY0NjAzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0xMC0yNiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdW1dlYktpdF0gSW1wbGVtZW50IFByb3h5IGNvbmZpZ3Vy
YXRpb24gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgQVBJIHRvIHNldCBwcm94eSBmcm9tIHRoZSBhcHAuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGJlY2F1c2UgdGhlcmUncyBubyBiZWhhdmlvdXIgY2hhbmdlIGluIFdlYkNvcmUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybENvbnRleHQ6OnNldFByb3h5U2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJveHlTZXR0aW5ncyBjb25zdCk6CisK
IDIwMTgtMTAtMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXVtJRkNdIEFkZCBqdXN0aWZ5IHRleHQtYWxpZ24gc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmlu
ZGV4IGFhOWU0MjhlMzkyLi40OTEzZTc3MTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC02MCw2ICs2
MCw3IEBAIHR5cGVkZWYgc3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBDb29raWVKYXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CiBjbGFzcyBOZXR3
b3JraW5nQ29udGV4dDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNvdXBOZXR3b3Jr
U2Vzc2lvbjsKQEAgLTEzNSw2ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgQ29va2llSmFyREImIGNv
b2tpZURhdGFiYXNlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVE
YXRhYmFzZShVbmlxdWVSZWY8Q29va2llSmFyREI+JiYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRQcm94eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYpIGNvbnN0Owor
CiAgICAgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKICNlbHNlCiAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBOZXR3b3JraW5nQ29udGV4dCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
aAppbmRleCAzNzMyNjAxNzliOC4uODA1MmI4MjhlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCkBAIC0xMDQsNyArMTA0LDcg
QEAgcHVibGljOgogCiAgICAgLy8gUHJveHkKICAgICBjb25zdCBDdXJsUHJveHlTZXR0aW5ncyYg
cHJveHlTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlTZXR0aW5nczsgfQotICAgIHZv
aWQgc2V0UHJveHlTZXR0aW5ncyhjb25zdCBDdXJsUHJveHlTZXR0aW5ncyYgc2V0dGluZ3MpIHsg
bV9wcm94eVNldHRpbmdzID0gc2V0dGluZ3M7IH0KKyAgICB2b2lkIHNldFByb3h5U2V0dGluZ3Mo
Q3VybFByb3h5U2V0dGluZ3MmJiBzZXR0aW5ncykgeyBtX3Byb3h5U2V0dGluZ3MgPSBXVEZNb3Zl
KHNldHRpbmdzKTsgfQogICAgIHZvaWQgc2V0UHJveHlVc2VyUGFzcyhjb25zdCBTdHJpbmcmIHVz
ZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsgbV9wcm94eVNldHRpbmdzLnNldFVzZXJQYXNz
KHVzZXIsIHBhc3N3b3JkKTsgfQogICAgIHZvaWQgc2V0RGVmYXVsdFByb3h5QXV0aE1ldGhvZCgp
IHsgbV9wcm94eVNldHRpbmdzLnNldERlZmF1bHRBdXRoTWV0aG9kKCk7IH0KICAgICB2b2lkIHNl
dFByb3h5QXV0aE1ldGhvZChsb25nIGF1dGhNZXRob2QpIHsgbV9wcm94eVNldHRpbmdzLnNldEF1
dGhNZXRob2QoYXV0aE1ldGhvZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNw
cAppbmRleCBlMTEwYWQxNjQ5MS4uMzEwMjgwZGVlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKQEAgLTE5Myw2ICsxOTMsMTEgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b24KICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKCp0aGlzLCBoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHku
c2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFt
ZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2Vj
dXJlQ29va2llcyk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94eVNl
dHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5ncykgY29uc3QKK3sKKyAgICBD
dXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2V0UHJveHlTZXR0aW5ncyhXVEZNb3ZlKHByb3h5U2V0
dGluZ3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENV
UkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDJmYTFkNTY4YThmLi45ZGZiNzI2YzU0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0xMC0yNiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdW1dlYktpdF0gSW1wbGVtZW50IFByb3h5IGNvbmZpZ3Vy
YXRpb24gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgcHJveHkgY29uZmlndXJhdGlvbiBBUEkgdG8gV2Vic2l0ZURhdGFTdG9yZS4gVGhy
ZWUgQVBJIHdhcyBhZGRlZCBpbiAvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oOgorICAgICAg
ICAtIFdLV2Vic2l0ZURhdGFTdG9yZUVuYWJsZURlZmF1bHROZXR3b3JrUHJveHlTZXR0aW5ncyhX
S1dlYnNpdGVEYXRhU3RvcmVSZWYpCisgICAgICAgIC0gV0tXZWJzaXRlRGF0YVN0b3JlRW5hYmxl
Q3VzdG9tTmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS1VSTFJl
ZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpCisgICAgICAgIC0gV0tXZWJzaXRl
RGF0YVN0b3JlRGlzYWJsZU5ldHdvcmtQcm94eVNldHRpbmdzKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZikKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldE5ldHdvcmtQcm94eVNl
dHRpbmdzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3Vy
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3VybDo6TmV0d29ya1Nlc3Np
b25DdXJsKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Q3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogUGxhdGZvcm1XaW4u
Y21ha2U6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPEN1cmxQcm94eVNldHRpbmdzPjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lv
bkN1cmwuY3BwLgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlRW5hYmxlRGVmYXVsdE5ldHdv
cmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUVuYWJsZUN1c3Rv
bU5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZURpc2Fi
bGVOZXR3b3JrUHJveHlTZXR0aW5ncyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2N1cmwv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6Om5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvY3VybC9XZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwLgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldFBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXROZXR3b3JrUHJveHlTZXR0aW5ncyk6
CisKIDIwMTgtMTAtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG9uJ3Qgd2FzdGUgdGltZSB1bmRlciAtc2V0dXBJbnRlcmFjdGlvbiB1bmRlciAt
aW5pdFdpdGhGcmFtZSBmb3IgdW5wYXJlbnRlZCBXS1dlYlZpZXdzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggM2EyOGQ1Y2RlZDYuLmZhYzMz
YzIwNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOworY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CiBj
bGFzcyBEb3dubG9hZElEOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUHJv
dGVjdGlvblNwYWNlOwpAQCAtMzAxLDYgKzMwMiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
TmV0d29ya1Byb3h5U2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRp
bmdzJik7CiAjZW5kaWYKIAorI2lmIFVTRShDVVJMKQorICAgIHZvaWQgc2V0TmV0d29ya1Byb3h5
U2V0dGluZ3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJiYpOwor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIHZvaWQgc2V0U2hhcmVkSFRU
UENvb2tpZVN0b3JhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggMmM3OTdlMDJkYmEuLjNjZGQyMWUyYWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTMzLDYgKzMzLDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBTZXROZXR3b3JrUHJveHlTZXR0aW5ncyhzdHJ1Y3QgV2ViQ29yZTo6
U291cE5ldHdvcmtQcm94eVNldHRpbmdzIHNldHRpbmdzKQogI2VuZGlmCiAKKyNpZiBVU0UoQ1VS
TCkKKyAgICBTZXROZXR3b3JrUHJveHlTZXR0aW5ncyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCisKICAgICBDbGVh
ckNhY2hlZENyZWRlbnRpYWxzKCkKIAogICAgIEFkZFdlYnNpdGVEYXRhU3RvcmUoc3RydWN0IFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGVjZTU1MTc2ZGJjLi4xNTIy
OGM1MTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMzMsNiArMzMsMTEg
QEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCiAjZW5kaWYKIAorI2lmIFVTRShDVVJM
KQorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q3VybFByb3h5U2V0dGluZ3MuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOwpAQCAtNTEsNiArNTYsOSBAQCBzdHJ1Y3Qg
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFN0cmluZyBzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcjsKICNlbmRpZgorI2lmIFVTRShDVVJMKQorICAgIFdlYkNvcmU6OkN1
cmxQcm94eVNldHRpbmdzIHByb3h5U2V0dGluZ3M7CisjZW5kaWYKIH07CiAKIGlubGluZSB2b2lk
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdApAQCAtNjMsNiArNzEsOSBAQCBpbmxpbmUgdm9pZCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29ucwog
ICAgIGVuY29kZXIgPDwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogICAgIGVu
Y29kZXIgPDwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogI2VuZGlmCisj
aWYgVVNFKENVUkwpCisgICAgZW5jb2RlciA8PCBwcm94eVNldHRpbmdzOworI2VuZGlmCiB9CiAK
IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKQEAgLTk2LDcgKzEwNywxMyBAQCBpbmxpbmUgc3RkOjpvcHRpb25hbDxOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcgogICAgIGlm
ICghc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogI2VuZGlmCi0gICAgCisKKyNpZiBVU0UoQ1VSTCkKKyAgICBXZWJDb3Jl
OjpDdXJsUHJveHlTZXR0aW5ncyBwcm94eVNldHRpbmdzOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocHJveHlTZXR0aW5ncykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYK
KwogICAgIHJldHVybiB7ewogICAgICAgICBzZXNzaW9uSUQKICAgICAgICAgLCBXVEZNb3ZlKCpi
b3VuZEludGVyZmFjZUlkZW50aWZpZXIpCkBAIC0xMDYsNiArMTIzLDkgQEAgaW5saW5lIHN0ZDo6
b3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXIKICAgICAgICAgLCBXVEZNb3ZlKCpzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIpCiAgICAgICAgICwgV1RGTW92ZSgqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKQogI2VuZGlmCisjaWYgVVNFKENVUkwpCisgICAgICAgICwgV1RGTW92ZShwcm94
eVNldHRpbmdzKQorI2VuZGlmCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggMTkx
MzFjNjczMjIuLjQ4NDA5MzllMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtMjYsMjAgKzI2LDEx
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAot
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCi0jaW5j
bHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJ
bmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbmNsdWRlIDx3dGYvUkFN
U2l6ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05Miw0
ICs4MywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0
aW9uVG9CYWNrZ3JvdW5kKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRQ
cm94eVNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a1Nlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDVkM2E2NmRkMTBiLi5mYTY4YjZlYjdjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3Vy
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNz
aW9uQ3VybC5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkN1
cmwuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DdXJsQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zNSw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogTmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3Jr
U2Vzc2lvbkN1cmwoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIDogTmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpCiB7Ci0KKyAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zZXRQcm94eVNldHRpbmdzKFdURk1vdmUocGFyYW1ldGVy
cy5wcm94eVNldHRpbmdzKSk7CiB9CiAKIE5ldHdvcmtTZXNzaW9uQ3VybDo6fk5ldHdvcmtTZXNz
aW9uQ3VybCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dEN1cmwuY3BwCmluZGV4IDczNmVlOTg1
MWJhLi43NTkzOWIyZTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKQEAg
LTI2LDE2ICsyNiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1
ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYm
KQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNl
c3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CisgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1i
ZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Np
b24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtl
CmluZGV4IDNhZWI2YTRhYjA0Li4zZGQ1NjQzNzc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtl
CkBAIC00MCw2ICs0MCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmNwcAorCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL3dpbi9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0
YVN0b3JlV2luLmNwcApAQCAtNDgsNiArNTAsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNF
UwogCiAgICAgVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCiAKKyAgICBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvY3VybC9XZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHAKKwogICAg
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKIAogICAg
IFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC0xMDUsNiArMTA5LDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9T
aGFyZWQvdW5peCIKICAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvd2luIgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL0MvY3VybCIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL0Mvd2luIgog
ICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwL3dpbiIKICAgICAiJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL3dpbiIKQEAgLTE5Niw2ICsyMDEsNyBAQCBzZXQoV2ViS2l0X0ZP
UldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIFVJUHJvY2Vzcy9BUEkvQwogICAgIFVJ
UHJvY2Vzcy9BUEkvY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvY3VybAogICAgIFVJUHJvY2Vz
cy9BUEkvQy93aW4KIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZDg3ODE4ZTdi
YTcuLjFlMmY1MmUxYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtMTQ4LDYgKzE0OCwxMCBAQCBzdHJ1Y3QgU291cE5ldHdvcmtQcm94eVNl
dHRpbmdzOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwogI2VuZGlmCiAKKyNpZiBVU0Uo
Q1VSTCkKK2NsYXNzIEN1cmxQcm94eVNldHRpbmdzOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5k
aWYKQEAgLTQ0NSw2ICs0NDksMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudD4gewogfTsKICNlbmRpZgogCisjaWYgVVNFKENV
UkwpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkN1cmxQcm94eVNl
dHRpbmdzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpDdXJsUHJveHlTZXR0aW5ncyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MmKTsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gewogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmUmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb21wb3NpdGlv
blVuZGVybGluZT4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCmluZGV4IDM2Njc2ZDAz
YzFhLi45MjUzMTBmNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
dXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUlu
Zm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTEyNyw0ICsx
MjgsMzcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjb2RlciYsIENyZWRlbnRpYWwmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBB
cmd1bWVudENvZGVyPEN1cmxQcm94eVNldHRpbmdzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEN1cmxQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBlbmNvZGVyLmVuY29k
ZUVudW0oc2V0dGluZ3MubW9kZSgpKTsKKyAgICBpZiAoc2V0dGluZ3MubW9kZSgpICE9IEN1cmxQ
cm94eVNldHRpbmdzOjpNb2RlOjpDdXN0b20pCisgICAgICAgIHJldHVybjsKKworICAgIGVuY29k
ZXIgPDwgc2V0dGluZ3MudXJsKCk7CisgICAgZW5jb2RlciA8PCBzZXR0aW5ncy5pZ25vcmVIb3N0
cygpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8Q3VybFByb3h5U2V0dGluZ3M+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgQ3VybFByb3h5U2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIEN1
cmxQcm94eVNldHRpbmdzOjpNb2RlIG1vZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
bW9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtb2RlICE9IEN1cmxQcm94
eVNldHRpbmdzOjpNb2RlOjpDdXN0b20pIHsKKyAgICAgICAgc2V0dGluZ3MgPSBDdXJsUHJveHlT
ZXR0aW5ncyhtb2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgU3RyaW5n
IHVybDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFN0cmluZyBpZ25vcmVIb3N0czsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGln
bm9yZUhvc3RzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2V0dGluZ3MgPSBDdXJs
UHJveHlTZXR0aW5ncyhVUkwoVVJMKCksIHVybCksIFdURk1vdmUoaWdub3JlSG9zdHMpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzZGEwNTk3ODY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVE
YXRhU3RvcmVSZWZDdXJsLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgi
CisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUVuYWJs
ZURlZmF1bHROZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmKQoreworICAgIHRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MoV2ViQ29y
ZTo6Q3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkRlZmF1bHQpKTsKK30KKwordm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVFbmFibGVDdXN0b21OZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdu
b3JlSG9zdHMpCit7CisgICAgdG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXROZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyhXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHByb3h5VXJsKSksIHRvV1RGU3Ry
aW5nKGlnbm9yZUhvc3RzKSkpOworfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURpc2FibGVO
ZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQor
eworICAgIHRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TmV0d29y
a1Byb3h5U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFBy
b3h5U2V0dGluZ3M6Ok1vZGU6Ok5vUHJveHkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiYjI3YWE0YTJlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dl
YnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRW5h
YmxlRGVmYXVsdE5ldHdvcmtQcm94eVNldHRpbmdzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZik7CitX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVFbmFibGVDdXN0b21OZXR3b3JrUHJveHlT
ZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLVVJMUmVmIHByb3h5VXJsLCBXS1N0cmlu
Z1JlZiBpZ25vcmVIb3N0cyk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVEaXNh
YmxlTmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMWEyNTViODk1NjIu
LjBlYmUwYmJiODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTY2Nyw2ICsxNjY3LDEwIEBAIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
I2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkKKyAgICBwbGF0Zm9ybVNldFBhcmFtZXRlcnMocGFyYW1l
dGVycyk7CisjZW5kaWYKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggYmQ1NzkxM2QzOTkuLmMxODdlYTU3OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC00
Niw2ICs0NiwxMCBAQAogI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjZW5k
aWYKIAorI2lmIFVTRShDVVJMKQorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3Mu
aD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IH0KQEAgLTE4Nyw3ICsxOTEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJveHlDb25maWd1
cmF0aW9uKENGRGljdGlvbmFyeVJlZiBjb25maWd1cmF0aW9uKSB7IG1fcHJveHlDb25maWd1cmF0
aW9uID0gY29uZmlndXJhdGlvbjsgfQogICAgIENGRGljdGlvbmFyeVJlZiBwcm94eUNvbmZpZ3Vy
YXRpb24oKSB7IHJldHVybiBtX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKTsgfQogI2VuZGlmCi0g
ICAgCisKKyNpZiBVU0UoQ1VSTCkKKyAgICB2b2lkIHBsYXRmb3JtU2V0UGFyYW1ldGVycyhXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOworICAgIHZvaWQgc2V0TmV0d29ya1Byb3h5U2V0dGlu
Z3MoY29uc3QgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MmKTsKKyAgICBjb25zdCBXZWJDb3Jl
OjpDdXJsUHJveHlTZXR0aW5ncyYgbmV0d29ya1Byb3h5U2V0dGluZ3MoKSB7IHJldHVybiBtX3By
b3h5U2V0dGluZ3M7IH0KKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zKCk7CiAKICNpZiBIQVZFKFNFQ19LRVlfUFJPWFkpCkBAIC0y
NTIsOCArMjYyLDEzIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IG1fY2ZDb29raWVTdG9yYWdlOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IG1fcHJveHlDb25maWd1cmF0aW9uOwogI2VuZGlmCisKKyNpZiBVU0UoQ1VSTCkKKyAgICBXZWJD
b3JlOjpDdXJsUHJveHlTZXR0aW5ncyBtX3Byb3h5U2V0dGluZ3M7CisjZW5kaWYKKwogICAgIEhh
c2hTZXQ8V2ViQ29yZTo6Q29va2llPiBtX3BlbmRpbmdDb29raWVzOwotICAgIAorCiAgICAgU3Ry
aW5nIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwogICAgIEFsbG93c0NlbGx1bGFyQWNjZXNz
IG1fYWxsb3dzQ2VsbHVsYXJBY2Nlc3MgeyBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL2N1cmwvV2Vi
c2l0ZURhdGFTdG9yZUN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvY3VybC9XZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjE3NjU2MWY5MDYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvY3VybC9XZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHAK
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXRQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnByb3h5U2V0dGluZ3MgPSBtX3Byb3h5U2V0dGluZ3M7Cit9CisKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6Q3VybFBy
b3h5U2V0dGluZ3MmIHByb3h5U2V0dGluZ3MpCit7CisgICAgbV9wcm94eVNldHRpbmdzID0gcHJv
eHlTZXR0aW5nczsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6U2V0TmV0d29ya1Byb3h5U2V0dGluZ3MobV9zZXNzaW9uSUQsIG1f
cHJveHlTZXR0aW5ncykpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYmI4MWVjN2RhZGMuLmZlMjI3MGY0NTgxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTgtMTAtMjYgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgorCisg
ICAgICAgIFtDdXJsXVtXZWJLaXRdIEltcGxlbWVudCBQcm94eSBjb25maWd1cmF0aW9uIEFQSS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTA1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFBy
b3h5IFNldHRpbmdzIGRpYWxvZyB0byBjYWxsIG5ld2x5IGFkZGVkIEFQSS4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL3dpbi9Ccm93c2VyV2luZG93Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIv
d2luL0NvbW1vbi5jcHA6CisgICAgICAgIChhc2tQcm94eVNldHRpbmdzKToKKyAgICAgICAgKGFz
a0NyZWRlbnRpYWwpOgorICAgICAgICAoYXV0aERpYWxvZ1Byb2MpOiBEZWxldGVkLgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3dpbi9Db21tb24uaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4v
RGlhbG9nSGVscGVyLmg6IEFkZGVkLgorICAgICAgICAoRGlhbG9nOjpydW4pOgorICAgICAgICAo
RGlhbG9nOjpkb2Fsb2dQcm9jKToKKyAgICAgICAgKERpYWxvZzo6aGFuZGxlKToKKyAgICAgICAg
KERpYWxvZzo6c2V0dXApOgorICAgICAgICAoRGlhbG9nOjp1cGRhdGUpOgorICAgICAgICAoRGlh
bG9nOjp2YWxpZGF0ZSk6CisgICAgICAgIChEaWFsb2c6OnVwZGF0ZU9rQnV0dG9uKToKKyAgICAg
ICAgKERpYWxvZzo6Y29tbWFuZCk6CisgICAgICAgIChEaWFsb2c6Om9rKToKKyAgICAgICAgKERp
YWxvZzo6Y2FuY2VsKToKKyAgICAgICAgKERpYWxvZzo6Y2xvc2UpOgorICAgICAgICAoRGlhbG9n
OjpoRGxnKToKKyAgICAgICAgKERpYWxvZzo6aXRlbSk6CisgICAgICAgIChEaWFsb2c6OnNldEVu
YWJsZWQpOgorICAgICAgICAoRGlhbG9nOjpzZXRUZXh0KToKKyAgICAgICAgKERpYWxvZzo6Z2V0
VGV4dCk6CisgICAgICAgIChEaWFsb2c6OmdldFRleHRMZW5ndGgpOgorICAgICAgICAoRGlhbG9n
OjpSYWRpb0dyb3VwOjpSYWRpb0dyb3VwKToKKyAgICAgICAgKERpYWxvZzo6UmFkaW9Hcm91cDo6
c2V0KToKKyAgICAgICAgKERpYWxvZzo6UmFkaW9Hcm91cDo6Z2V0KToKKyAgICAgICAgKERpYWxv
Zzo6cmFkaW9Hcm91cCk6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3Bw
OgorICAgICAgICAoTWFpbldpbmRvdzo6V25kUHJvYyk6CisgICAgICAgICogTWluaUJyb3dzZXIv
d2luL01pbmlCcm93c2VyTGliLnJjOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9NaW5pQnJv
d3NlckxpYlJlc291cmNlLmg6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dz
ZXJXaW5kb3cuY3BwOgorICAgICAgICAoY3JlYXRlV0tVUkwpOgorICAgICAgICAoV2ViS2l0QnJv
d3NlcldpbmRvdzo6V2ViS2l0QnJvd3NlcldpbmRvdyk6CisgICAgICAgIChXZWJLaXRCcm93c2Vy
V2luZG93Ojp1cGRhdGVQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdEJyb3dzZXJXaW5k
b3c6OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0QnJvd3NlcldpbmRvdzo6bG9hZEhUTUxTdHJp
bmcpOgorICAgICAgICAoV2ViS2l0QnJvd3NlcldpbmRvdzo6b3BlblByb3h5U2V0dGluZ3MpOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93Lmg6CisgICAgICAg
ICogTWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdzo6b3BlblByb3h5U2V0dGluZ3MpOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93Lmg6CisKIDIwMTgt
MTAtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gW0RhdGFsaXN0XSBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXNob3ctaGlkZS5o
dG1sIGZhaWxzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlcldpbmRv
dy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJXaW5kb3cuaAppbmRleCA5MWQ3YjM5
NDA4ZS4uYTUyMjM3ZmNkZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Ccm93
c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJXaW5kb3cuaApA
QCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGxhdW5jaEluc3BlY3RvcigpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgb3BlblByb3h5U2V0dGluZ3MoKSA9IDA7CiAKICAgICB2aXJ0dWFsIF9ic3RyX3QgdXNlckFn
ZW50KCkgPSAwOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFVJTlQgbWVudUlEKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIv
d2luL0NvbW1vbi5jcHAKaW5kZXggOTU2ZjExNTMzMDEuLjhmMzljNGJkMDU0IDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci93aW4vQ29tbW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgInN0ZGFmeC5oIgog
I2luY2x1ZGUgIkNvbW1vbi5oIgogCisjaW5jbHVkZSAiRGlhbG9nSGVscGVyLmgiCiAjaW5jbHVk
ZSAiTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oIgogI2luY2x1ZGUgIk1pbmlCcm93c2VyUmVwbGFj
ZS5oIgogI2luY2x1ZGUgPGRiZ2hlbHAuaD4KQEAgLTExOSw1NCArMTIwLDExNSBAQCB2b2lkIGNy
ZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyogZXhjZXB0aW9uUG9pbnRlcnMpCiAg
ICAgfQogfQogCi1zdHJ1Y3QgQXV0aERpYWxvZ0RhdGEgewotICAgIGNvbnN0IHN0ZDo6d3N0cmlu
ZyYgcmVhbG07Ci0gICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOwotfTsKLQotc3RhdGljIElOVF9Q
VFIgQ0FMTEJBQ0sgYXV0aERpYWxvZ1Byb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCitib29sIGFza1Byb3h5U2V0dGluZ3MoSFdORCBod25k
LCBQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKLSAg
ICBjYXNlIFdNX0lOSVRESUFMT0c6IHsKLSAgICAgICAgU2V0V2luZG93TG9uZ1B0cihoRGxnLCBE
V0xQX1VTRVIsIGxQYXJhbSk7Ci0gICAgICAgIEF1dGhEaWFsb2dEYXRhJiBkYXRhID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8QXV0aERpYWxvZ0RhdGEqPihsUGFyYW0pOwotICAgICAgICBTZXREbGdJdGVt
VGV4dChoRGxnLCBJRENfUkVBTE1fVEVYVCwgX2JzdHJfdChkYXRhLnJlYWxtLmNfc3RyKCkpKTsK
LSAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotICAgIGNhc2UgV01fQ09NTUFORDogewotICAg
ICAgICBBdXRoRGlhbG9nRGF0YSYgZGF0YSA9ICpyZWludGVycHJldF9jYXN0PEF1dGhEaWFsb2dE
YXRhKj4oR2V0V2luZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VTRVIpKTsKLSAgICAgICAgaW50IHdt
SWQgPSBMT1dPUkQod1BhcmFtKTsKLSAgICAgICAgc3dpdGNoICh3bUlkKSB7Ci0gICAgICAgIGNh
c2UgSURPSzogewotICAgICAgICAgICAgVENIQVIgc3RyWzI1Nl07Ci0gICAgICAgICAgICBpbnQg
c3RyTGVuID0gR2V0V2luZG93VGV4dChHZXREbGdJdGVtKGhEbGcsIElEQ19BVVRIX1VTRVIpLCBz
dHIsIFdURl9BUlJBWV9MRU5HVEgoc3RyKS0xKTsKLSAgICAgICAgICAgIHN0cltzdHJMZW5dID0g
MDsKLSAgICAgICAgICAgIGRhdGEuY3JlZGVudGlhbC51c2VybmFtZSA9IHN0cjsKLQotICAgICAg
ICAgICAgc3RyTGVuID0gR2V0V2luZG93VGV4dChHZXREbGdJdGVtKGhEbGcsIElEQ19BVVRIX1BB
U1NXT1JEKSwgc3RyLCBXVEZfQVJSQVlfTEVOR1RIKHN0ciktMSk7Ci0gICAgICAgICAgICBzdHJb
c3RyTGVuXSA9IDA7Ci0gICAgICAgICAgICBkYXRhLmNyZWRlbnRpYWwucGFzc3dvcmQgPSBzdHI7
Ci0KLSAgICAgICAgICAgIEVuZERpYWxvZyhoRGxnLCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVy
biBUUlVFOworICAgIGNsYXNzIFByb3h5RGlhbG9nIDogcHVibGljIERpYWxvZyB7CisgICAgcHVi
bGljOgorICAgICAgICBQcm94eURpYWxvZyhQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKKyAgICAg
ICAgICAgIDogc2V0dGluZ3MgeyBzZXR0aW5ncyB9CisgICAgICAgIHsKICAgICAgICAgfQotICAg
ICAgICBjYXNlIElEQ0FOQ0VMOgotICAgICAgICAgICAgRW5kRGlhbG9nKGhEbGcsIGZhbHNlKTsK
LSAgICAgICAgICAgIHJldHVybiBUUlVFOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBQcm94
eVNldHRpbmdzJiBzZXR0aW5nczsKKworICAgICAgICB2b2lkIHNldHVwKCkgb3ZlcnJpZGUKKyAg
ICAgICAgeworICAgICAgICAgICAgYXV0byBjb21tYW5kID0gY29tbWFuZEZvclByb3h5Q2hvaWNl
KCk7CisgICAgICAgICAgICBwcm94eUNob2ljZSgpLnNldChjb21tYW5kKTsKKyAgICAgICAgICAg
IHNldFRleHQoSURDX1BST1hZX1VSTCwgc2V0dGluZ3MudXJsKTsKKyAgICAgICAgICAgIHNldFRl
eHQoSURDX1BST1hZX0VYQ0xVREUsIHNldHRpbmdzLmV4Y2x1ZGVIb3N0cyk7CiAgICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICByZXR1cm4gRkFMU0U7CisKKyAgICAg
ICAgdm9pZCBvaygpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHRpbmdzLnVy
bCA9IGdldFRleHQoSURDX1BST1hZX1VSTCk7CisgICAgICAgICAgICBzZXR0aW5ncy5leGNsdWRl
SG9zdHMgPSBnZXRUZXh0KElEQ19QUk9YWV9FWENMVURFKTsKKyAgICAgICAgICAgIHVwZGF0ZVBy
b3h5Q2hvaWNlKHByb3h5Q2hvaWNlKCkuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCB2YWxpZGF0ZSgpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgdmFsaWQg
PSB0cnVlOworCisgICAgICAgICAgICBpZiAocHJveHlDaG9pY2UoKS5nZXQoKSA9PSBJRENfUFJP
WFlfQ1VTVE9NKSB7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlZChJRENfUFJPWFlfVVJMLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBzZXRFbmFibGVkKElEQ19QUk9YWV9FWENMVURFLCB0cnVl
KTsKKworICAgICAgICAgICAgICAgIGlmICghZ2V0VGV4dExlbmd0aChJRENfUFJPWFlfVVJMKSkK
KyAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlZChJRENfUFJPWFlfVVJMLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgc2V0RW5hYmxlZChJRENfUFJPWFlfRVhDTFVERSwgZmFsc2UpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgICAgIH0KKworICAgICAg
ICBSYWRpb0dyb3VwIHByb3h5Q2hvaWNlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHJhZGlvR3JvdXAoSURDX1BST1hZX0RFRkFVTFQsIElEQ19QUk9YWV9ESVNBQkxFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGludCBjb21tYW5kRm9yUHJveHlDaG9pY2UoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIXNldHRpbmdzLmVuYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
SURDX1BST1hZX0RJU0FCTEU7CisgICAgICAgICAgICBpZiAoc2V0dGluZ3MuY3VzdG9tKQorICAg
ICAgICAgICAgICAgIHJldHVybiBJRENfUFJPWFlfQ1VTVE9NOworICAgICAgICAgICAgcmV0dXJu
IElEQ19QUk9YWV9ERUZBVUxUOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB1cGRhdGVQcm94
eUNob2ljZShpbnQgY29tbWFuZCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChjb21t
YW5kKSB7CisgICAgICAgICAgICBjYXNlIElEQ19QUk9YWV9ERUZBVUxUOgorICAgICAgICAgICAg
ICAgIHNldHRpbmdzLmVuYWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3MuY3Vz
dG9tID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElE
Q19QUk9YWV9DVVNUT006CisgICAgICAgICAgICAgICAgc2V0dGluZ3MuZW5hYmxlID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBzZXR0aW5ncy5jdXN0b20gPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBJRENfUFJPWFlfRElTQUJMRToKKyAgICAgICAgICAg
ICAgICBzZXR0aW5ncy5lbmFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5j
dXN0b20gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgUHJveHlEaWFsb2cgZGlhbG9nIHsgc2V0dGluZ3MgfTsKKyAgICByZXR1cm4g
ZGlhbG9nLnJ1bihoSW5zdCwgaHduZCwgSUREX1BST1hZKTsKIH0KIAogc3RkOjpvcHRpb25hbDxD
cmVkZW50aWFsPiBhc2tDcmVkZW50aWFsKEhXTkQgaHduZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiBy
ZWFsbSkKIHsKLSAgICBBdXRoRGlhbG9nRGF0YSBkYXRhIHsgcmVhbG0gfTsKLSAgICBhdXRvIHJl
c3VsdCA9IERpYWxvZ0JveFBhcmFtKGhJbnN0LCBNQUtFSU5UUkVTT1VSQ0UoSUREX0FVVEgpLCBo
d25kLCBhdXRoRGlhbG9nUHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZkYXRhKSk7Ci0g
ICAgaWYgKHJlc3VsdCA8PSAwKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJl
dHVybiBkYXRhLmNyZWRlbnRpYWw7CisgICAgc3RydWN0IEF1dGhEaWFsb2cgOiBwdWJsaWMgRGlh
bG9nIHsKKyAgICAgICAgc3RkOjp3c3RyaW5nIHJlYWxtOworICAgICAgICBDcmVkZW50aWFsIGNy
ZWRlbnRpYWw7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0dXAoKQorICAgICAg
ICB7CisgICAgICAgICAgICBzZXRUZXh0KElEQ19SRUFMTV9URVhULCByZWFsbSk7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIG9rKCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAg
Y3JlZGVudGlhbC51c2VybmFtZSA9IGdldFRleHQoSURDX0FVVEhfVVNFUik7CisgICAgICAgICAg
ICBjcmVkZW50aWFsLnBhc3N3b3JkID0gZ2V0VGV4dChJRENfQVVUSF9QQVNTV09SRCk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgQXV0aERpYWxvZyBkaWFsb2c7CisgICAgZGlhbG9nLnJlYWxt
ID0gcmVhbG07CisKKyAgICBpZiAoZGlhbG9nLnJ1bihoSW5zdCwgaHduZCwgSUREX0FVVEgpKQor
ICAgICAgICByZXR1cm4gZGlhbG9nLmNyZWRlbnRpYWw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogQ29tbWFuZExpbmVPcHRpb25zIHBhcnNlQ29tbWFuZExpbmUoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2lu
L0NvbW1vbi5oCmluZGV4IDcwYTg0YzRlMmNhLi4xNWJjNGRkY2YyYyAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9D
b21tb24uaApAQCAtNTEsMTEgKzUxLDE5IEBAIHN0cnVjdCBDcmVkZW50aWFsIHsKICAgICBzdGQ6
OndzdHJpbmcgcGFzc3dvcmQ7CiB9OwogCitzdHJ1Y3QgUHJveHlTZXR0aW5ncyB7CisgICAgYm9v
bCBlbmFibGUgeyB0cnVlIH07CisgICAgYm9vbCBjdXN0b20geyBmYWxzZSB9OworICAgIHN0ZDo6
d3N0cmluZyB1cmw7CisgICAgc3RkOjp3c3RyaW5nIGV4Y2x1ZGVIb3N0czsKK307CisKIHZvaWQg
Y29tcHV0ZUZ1bGxEZXNrdG9wRnJhbWUoKTsKIGJvb2wgZ2V0QXBwRGF0YUZvbGRlcihfYnN0cl90
JiBkaXJlY3RvcnkpOwogQ29tbWFuZExpbmVPcHRpb25zIHBhcnNlQ29tbWFuZExpbmUoKTsKIHZv
aWQgY3JlYXRlQ3Jhc2hSZXBvcnQoRVhDRVBUSU9OX1BPSU5URVJTKik7CiBzdGQ6Om9wdGlvbmFs
PENyZWRlbnRpYWw+IGFza0NyZWRlbnRpYWwoSFdORCwgY29uc3Qgc3RkOjp3c3RyaW5nJiByZWFs
bSk7Citib29sIGFza1Byb3h5U2V0dGluZ3MoSFdORCwgUHJveHlTZXR0aW5ncyYpOwogCiBleHRl
cm4gSElOU1RBTkNFIGhJbnN0OwogZXh0ZXJuIFBPSU5UIHNfd2luZG93UG9zaXRpb247CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vRGlhbG9nSGVscGVyLmggYi9Ub29scy9NaW5p
QnJvd3Nlci93aW4vRGlhbG9nSGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjA5M2RmNDcyN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvd2luL0RpYWxvZ0hlbHBlci5oCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAic3RkYWZ4LmgiCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworY2xh
c3MgRGlhbG9nIHsKK3B1YmxpYzoKKyAgICBib29sIHJ1bihISU5TVEFOQ0UgaEluc3QsIEhXTkQg
aHduZCwgaW50IGRpYWxvZ0lkKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBEaWFsb2dC
b3hQYXJhbShoSW5zdCwgTUFLRUlOVFJFU09VUkNFKGRpYWxvZ0lkKSwgaHduZCwgZG9hbG9nUHJv
YywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIChyZXN1
bHQgPiAwKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSU5UX1BUUiBDQUxMQkFDSyBkb2Fsb2dQcm9j
KEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQor
ICAgIHsKKyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gV01fSU5JVERJQUxPRykKKyAgICAgICAgICAg
IFNldFdpbmRvd0xvbmdQdHIoaERsZywgRFdMUF9VU0VSLCBsUGFyYW0pOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBsUGFyYW0gPSBHZXRXaW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNFUik7
CisKKyAgICAgICAgYXV0byogZGlhbG9nID0gcmVpbnRlcnByZXRfY2FzdDxEaWFsb2cqPihsUGFy
YW0pOworICAgICAgICByZXR1cm4gZGlhbG9nLT5oYW5kbGUoaERsZywgbWVzc2FnZSwgd1BhcmFt
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBJTlRfUFRSIGhhbmRsZShIV05EIGhEbGcsIFVJ
TlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobWVzc2Fn
ZSkgeworICAgICAgICBjYXNlIFdNX0lOSVRESUFMT0c6IHsKKyAgICAgICAgICAgIG1faERsZyA9
IGhEbGc7CisgICAgICAgICAgICBzZXR1cCgpOworICAgICAgICAgICAgdXBkYXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdNX0NPTU1BTkQ6
CisgICAgICAgICAgICBpbnQgd21JZCA9IExPV09SRCh3UGFyYW0pOworICAgICAgICAgICAgc3dp
dGNoICh3bUlkKSB7CisgICAgICAgICAgICBjYXNlIElET0s6CisgICAgICAgICAgICAgICAgb2so
KTsKKyAgICAgICAgICAgICAgICBjbG9zZSh0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
VFJVRTsKKyAgICAgICAgICAgIGNhc2UgSURDQU5DRUw6CisgICAgICAgICAgICAgICAgY2FuY2Vs
KCk7CisgICAgICAgICAgICAgICAgY2xvc2UoZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVy
biBUUlVFOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBhdXRvIGhhbmRs
ZWQgPSBjb21tYW5kKHdtSWQpOworICAgICAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICAg
ICAgICAgIHJldHVybiBoYW5kbGVkOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0dXAoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlKCkgeyB1cGRhdGVPa0J1dHRvbih2YWxpZGF0ZSgpKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZSgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlT2tCdXR0b24oYm9vbCBpc1ZhbGlkKSB7IHNldEVuYWJsZWQoSURPSywgaXNW
YWxpZCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29tbWFuZChpbnQgd21JZCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb2soKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
KCkgeyB9CisKKyAgICB2b2lkIGNsb3NlKGJvb2wgc3VjY2VzcykgeyBFbmREaWFsb2cobV9oRGxn
LCBzdWNjZXNzKTsgfQorCisgICAgSFdORCBoRGxnKCkgeyByZXR1cm4gbV9oRGxnOyB9CisKKyAg
ICBIV05EIGl0ZW0oaW50IGl0ZW1JZCkgeyByZXR1cm4gR2V0RGxnSXRlbShtX2hEbGcsIGl0ZW1J
ZCk7IH0KKworICAgIHZvaWQgc2V0RW5hYmxlZChpbnQgaXRlbUlkLCBib29sIGVuYWJsZWQpCisg
ICAgeworICAgICAgICBFbmFibGVXaW5kb3coaXRlbShpdGVtSWQpLCBlbmFibGVkKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldFRleHQoaW50IGl0ZW1JZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiBzdHIp
CisgICAgeworICAgICAgICBTZXREbGdJdGVtVGV4dChtX2hEbGcsIGl0ZW1JZCwgX2JzdHJfdChz
dHIuY19zdHIoKSkpOworICAgIH0KKworICAgIHN0ZDo6d3N0cmluZyBnZXRUZXh0KGludCBpdGVt
SWQpCisgICAgeworICAgICAgICBhdXRvIGxlbmd0aCA9IGdldFRleHRMZW5ndGgoaXRlbUlkKTsK
KyAgICAgICAgc3RkOjp2ZWN0b3I8VENIQVI+IGJ1ZmZlcihsZW5ndGggKyAxLCAwKTsKKyAgICAg
ICAgR2V0V2luZG93VGV4dChpdGVtKGl0ZW1JZCksIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7Cisg
ICAgICAgIHJldHVybiBzdGQ6OndzdHJpbmcgeyBidWZmZXIuZGF0YSgpIH07CisgICAgfQorCisg
ICAgaW50IGdldFRleHRMZW5ndGgoaW50IGl0ZW1JZCkKKyAgICB7CisgICAgICAgIHJldHVybiBH
ZXRXaW5kb3dUZXh0TGVuZ3RoKGl0ZW0oaXRlbUlkKSk7CisgICAgfQorCisgICAgY2xhc3MgUmFk
aW9Hcm91cCB7CisgICAgcHVibGljOgorICAgICAgICBSYWRpb0dyb3VwKERpYWxvZyYgZGlhbG9n
LCBpbnQgZmlyc3QsIGludCBsYXN0KQorICAgICAgICAgICAgOiBtX2RpYWxvZyhkaWFsb2cpCisg
ICAgICAgICAgICAsIG1fZmlyc3QoZmlyc3QpCisgICAgICAgICAgICAsIG1fbGFzdChsYXN0KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldChpbnQgaXRlbSkKKyAgICAg
ICAgeworICAgICAgICAgICAgQ2hlY2tSYWRpb0J1dHRvbihtX2RpYWxvZy5oRGxnKCksIG1fZmly
c3QsIG1fbGFzdCwgaXRlbSk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ2V0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZm9yIChpbnQgaWQgPSBtX2ZpcnN0OyBpZCA8PSBtX2xhc3Q7IGlk
KyspIHsKKyAgICAgICAgICAgICAgICBpZiAoSXNEbGdCdXR0b25DaGVja2VkKG1fZGlhbG9nLmhE
bGcoKSwgaWQpID09IEJTVF9DSEVDS0VEKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgRGlhbG9nJiBtX2RpYWxvZzsKKyAgICAgICAgaW50IG1fZmlyc3Q7
CisgICAgICAgIGludCBtX2xhc3Q7CisgICAgfTsKKworICAgIFJhZGlvR3JvdXAgcmFkaW9Hcm91
cChpbnQgZmlyc3QsIGludCBsYXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJhZGlvR3JvdXAo
KnRoaXMsIGZpcnN0LCBsYXN0KTsKKyAgICB9CisKKyAgICBIV05EIG1faERsZyB7IH07Cit9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3BwIGIvVG9vbHMv
TWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3BwCmluZGV4IGY5MDUyOGM0NjVkLi43ZjRiZGI0
MjdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3BwCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmNwcApAQCAtMjEwLDYgKzIxMCw5
IEBAIExSRVNVTFQgQ0FMTEJBQ0sgTWFpbldpbmRvdzo6V25kUHJvYyhIV05EIGhXbmQsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBCiAgICAgICAgIGNhc2UgSURNX1dFQl9JTlNQRUNU
T1I6CiAgICAgICAgICAgICB0aGlzV2luZG93LT5icm93c2VyV2luZG93KCktPmxhdW5jaEluc3Bl
Y3RvcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSURNX1BST1hZX1NFVFRJ
TkdTOgorICAgICAgICAgICAgdGhpc1dpbmRvdy0+YnJvd3NlcldpbmRvdygpLT5vcGVuUHJveHlT
ZXR0aW5ncygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSURNX0NBQ0hFUzoK
ICAgICAgICAgICAgIGlmICghOjpJc1dpbmRvdyh0aGlzV2luZG93LT5tX2hDYWNoZVduZCkpIHsK
ICAgICAgICAgICAgICAgICB0aGlzV2luZG93LT5tX2hDYWNoZVduZCA9IENyZWF0ZURpYWxvZ1Bh
cmFtKGhJbnN0LCBNQUtFSU5UUkVTT1VSQ0UoSUREX0NBQ0hFUyksIGhXbmQsIGNhY2hlc0RpYWxv
Z1Byb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPih0aGlzV2luZG93LmdldCgpKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMgYi9Ub29scy9N
aW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMKaW5kZXggMGE3YTdmNTVhODcuLmZkMDM3
Y2UwNGYyIDEwMDc1NQotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIu
cmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliLnJjCkBAIC05Myw2
ICs5Myw3IEBAIEJFR0lOCiAgICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1INCiAgICAgICAg
ICAgICBNRU5VSVRFTSAiT3RoZXIiLCAgICAgICAgICAgICAgICAgICAgICAgSURNX1VBX09USEVS
DQogICAgICAgICBFTkQNCisgICAgICAgIE1FTlVJVEVNICJQcm94eSBTZXR0aW5ncy4uLiIsICAg
ICAgICAgICBJRE1fUFJPWFlfU0VUVElOR1MNCiAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUg0K
ICAgICAgICAgTUVOVUlURU0gIkRpc2FibGUgSW1hZ2VzIiwgICAgICAgICAgICAgIElETV9ESVNB
QkxFX0lNQUdFUw0KICAgICAgICAgTUVOVUlURU0gIkRpc2FibGUgU3R5bGVzIiwgICAgICAgICAg
ICAgIElETV9ESVNBQkxFX1NUWUxFUw0KQEAgLTI1OSw2ICsyNjAsMjYgQEAgQkVHSU4KICAgICBF
RElUVEVYVCAgICAgICAgSURDX0FVVEhfUEFTU1dPUkQsNjcsNjQsMTU3LDE0LEVTX1BBU1NXT1JE
IHwgRVNfQVVUT0hTQ1JPTEwNCiBFTkQNCiANCitJRERfUFJPWFkgRElBTE9HRVggMCwgMCwgMzEw
LCAxNzYNCitTVFlMRSBEU19TRVRGT05UIHwgRFNfTU9EQUxGUkFNRSB8IERTX0ZJWEVEU1lTIHwg
V1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQ0KK0NBUFRJT04gIlByb3h5IENvbmZp
Z3VyYXRpb24iDQorRk9OVCA4LCAiTVMgU2hlbGwgRGxnIiwgNDAwLCAwLCAweDENCitCRUdJTg0K
KyAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5OSwxNTUsNTAsMTQNCisgICAgUFVTSEJV
VFRPTiAgICAgICJDYW5jZWwiLElEQ0FOQ0VMLDI1MywxNTUsNTAsMTQNCisgICAgQ09OVFJPTCAg
ICAgICAgICJVc2Ugc3lzdGVtIGRlZmF1bHQgcHJveHkgY29uZmlndXJhdGlvbi4iLElEQ19QUk9Y
WV9ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAgIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVU
VE9OIHwgV1NfR1JPVVAsMjIsMTUsMjI2LDEwDQorICAgIENPTlRST0wgICAgICAgICAiVXNlIGN1
c3RvbSBwcm94eSBjb25maWd1cmF0aW9uOiIsSURDX1BST1hZX0NVU1RPTSwNCisgICAgICAgICAg
ICAgICAgICAgICJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiwyMiwzMywyMjYsMTANCisgICAg
Q09OVFJPTCAgICAgICAgICJEb24ndCB1c2UgcHJveHkuIixJRENfUFJPWFlfRElTQUJMRSwiQnV0
dG9uIixCU19BVVRPUkFESU9CVVRUT04sMjIsMTE3LDIyNiwxMA0KKyAgICBFRElUVEVYVCAgICAg
ICAgSURDX1BST1hZX1VSTCw3Niw1MiwxOTMsMTQsRVNfQVVUT0hTQ1JPTEwNCisgICAgRURJVFRF
WFQgICAgICAgIElEQ19QUk9YWV9FWENMVURFLDc2LDg1LDE5MywxNCxFU19BVVRPSFNDUk9MTA0K
KyAgICBMVEVYVCAgICAgICAgICAgIlVSTDoiLElEQ19TVEFUSUMsMzAsNTUsNDMsOCwwLFdTX0VY
X1JJR0hUDQorICAgIExURVhUICAgICAgICAgICAiRXhjdWRlIGxpc3Q6IixJRENfU1RBVElDLDMw
LDg4LDQzLDgsMCxXU19FWF9SSUdIVA0KKyAgICBMVEVYVCAgICAgICAgICAgIkV4YW1wbGU6IGh0
dHA6Ly8xOTIuMTY4LjAuMjo4MDAwIixJRENfU1RBVElDLDgwLDY4LDE5NCw4DQorICAgIExURVhU
ICAgICAgICAgICAiQ29tbWEgc2VwYXJhdGVkIGhvc3RuYW1lcy4iLElEQ19TVEFUSUMsODAsMTAx
LDE5NCw4DQorRU5EDQorDQogDQogI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQNCiAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLw0KQEAgLTMyNyw2ICszNDgsMTUgQEAgQkVHSU4KICAgICAgICAgSE9SWkdVSURF
LCAyNQ0KICAgICAgICAgSE9SWkdVSURFLCA1MA0KICAgICBFTkQNCisNCisgICAgSUREX1BST1hZ
LCBESUFMT0cNCisgICAgQkVHSU4NCisgICAgICAgIExFRlRNQVJHSU4sIDcNCisgICAgICAgIFJJ
R0hUTUFSR0lOLCAzMDMNCisgICAgICAgIFZFUlRHVUlERSwgMjINCisgICAgICAgIFRPUE1BUkdJ
TiwgNw0KKyAgICAgICAgQk9UVE9NTUFSR0lOLCAxNjkNCisgICAgRU5EDQogRU5EDQogI2VuZGlm
ICAgIC8vIEFQU1RVRElPX0lOVk9LRUQNCiANCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci93aW4vTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01p
bmlCcm93c2VyTGliUmVzb3VyY2UuaAppbmRleCBlNmM5YjAwMzYzZS4uNTg4ZTgyMjYzOTAgMTAw
NzU1Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmgK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaApAQCAt
NTYsNiArNTYsNyBAQAogI2RlZmluZSBJRE1fU0hPV19MQVlFUl9UUkVFICAgICAgICAgICAgIDE3
NQogI2RlZmluZSBJRERfQVVUSCAgICAgICAgICAgICAgICAgICAgICAgIDE3NgogI2RlZmluZSBJ
RE1fREVCVUdfSU5GT19MQVlFUiAgICAgICAgICAgIDE3NworI2RlZmluZSBJRERfUFJPWFkgICAg
ICAgICAgICAgICAgICAgICAgIDE3OAogI2RlZmluZSBJRENfRU1QVFlfVVJMX0NBQ0hFICAgICAg
ICAgICAgIDEwMDAKICNkZWZpbmUgSURDX1JFVFVSTl9GUkVFX01FTU9SWSAgICAgICAgICAxMDAx
CiAjZGVmaW5lIElEQ19FTVBUWV9XRUJDT1JFX0NBQ0hFICAgICAgICAgMTAwMgpAQCAtMTEyLDE4
ICsxMTMsMjQgQEAKICNkZWZpbmUgSURDX0FVVEhfUEFTU1dPUkQgICAgICAgICAgICAgICAxMDU0
CiAjZGVmaW5lIElEQ19VUkxfQkFSICAgICAgICAgICAgICAgICAgICAgMTA1NQogI2RlZmluZSBJ
RENfUkVBTE1fVEVYVCAgICAgICAgICAgICAgICAgIDEwNTYKKyNkZWZpbmUgSURDX1BST1hZX1VS
TCAgICAgICAgICAgICAgICAgICAxMDU3CisjZGVmaW5lIElEQ19QUk9YWV9ERUZBVUxUICAgICAg
ICAgICAgICAgMTA1OAorI2RlZmluZSBJRENfUFJPWFlfQ1VTVE9NICAgICAgICAgICAgICAgIDEw
NTkKKyNkZWZpbmUgSURDX1BST1hZX0VYQ0xVREUgICAgICAgICAgICAgICAxMDYwCisjZGVmaW5l
IElEQ19QUk9YWV9ESVNBQkxFICAgICAgICAgICAgICAgMTA2MQogI2RlZmluZSBJRE1fTkVXX1dF
QktJVF9XSU5ET1cgICAgICAgICAgIDMyNzc2CiAjZGVmaW5lIElETV9ORVdfV0VCS0lUTEVHQUNZ
X1dJTkRPVyAgICAgMzI3NzcKKyNkZWZpbmUgSURNX1BST1hZX1NFVFRJTkdTICAgICAgICAgICAg
ICAzMjc3OAogI2RlZmluZSBJRENfU1RBVElDICAgICAgICAgICAgICAgICAgICAgIC0xCiAKIC8v
IE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCi0vLyAKKy8vCiAjaWZkZWYgQVBT
VFVESU9fSU5WT0tFRAogI2lmbmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCiAjZGVmaW5l
IF9BUFNfTk9fTUZDICAgICAgICAgICAgICAgICAgICAgMQotI2RlZmluZSBfQVBTX05FWFRfUkVT
T1VSQ0VfVkFMVUUgICAgICAgIDE3NQotI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAg
ICAgICAgIDMyNzc4Ci0jZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTA1
NQorI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDE3OQorI2RlZmluZSBf
QVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDMyNzc5CisjZGVmaW5lIF9BUFNfTkVYVF9D
T05UUk9MX1ZBTFVFICAgICAgICAgMTA2MgogI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUg
ICAgICAgICAgIDExMAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9X
ZWJLaXRCcm93c2VyV2luZG93LmNwcAppbmRleCA0ODE2N2Q3YWFjMS4uMjg1NDc1MmU4ODEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcAor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tDcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuaD4KICNpbmNs
dWRlIDx2ZWN0b3I+CiAKIHN0ZDo6d3N0cmluZyBjcmVhdGVTdHJpbmcoV0tTdHJpbmdSZWYgd2tT
dHJpbmcpCkBAIC03OCw2ICs3OSwxMiBAQCBXS1JldGFpblB0cjxXS1VSTFJlZj4gY3JlYXRlV0tV
UkwoX2JzdHJfdCBzdHIpCiAgICAgcmV0dXJuIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENT
dHJpbmcodXRmOC5kYXRhKCkpKTsKIH0KIAorV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNyZWF0ZVdL
VVJMKGNvbnN0IHN0ZDo6d3N0cmluZyYgc3RyKQoreworICAgIGF1dG8gdXRmOCA9IGNyZWF0ZVVU
RjhTdHJpbmcoc3RyLmNfc3RyKCksIHN0ci5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFkb3B0V0so
V0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXRmOC5kYXRhKCkpKTsKK30KKwogUmVmPEJyb3dz
ZXJXaW5kb3c+IFdlYktpdEJyb3dzZXJXaW5kb3c6OmNyZWF0ZShIV05EIG1haW5XbmQsIEhXTkQg
dXJsQmFyV25kLCBib29sLCBib29sKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktp
dEJyb3dzZXJXaW5kb3cobWFpblduZCwgdXJsQmFyV25kKSk7CkBAIC05NCw4ICsxMDEsOCBAQCBX
ZWJLaXRCcm93c2VyV2luZG93OjpXZWJLaXRCcm93c2VyV2luZG93KEhXTkQgbWFpblduZCwgSFdO
RCB1cmxCYXJXbmQpCiAgICAgV0tQcmVmZXJlbmNlc1NldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
cHJlZnMsIHRydWUpOwogICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQcmVmZXJlbmNlcyhjb25m
LmdldCgpLCBwcmVmcyk7CiAKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENy
ZWF0ZSgpKTsKLSAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25mLmdldCgpLCBj
b250ZXh0LmdldCgpKTsKKyAgICBtX2NvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgp
KTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25mLmdldCgpLCBtX2NvbnRl
eHQuZ2V0KCkpOwogCiAgICAgbV92aWV3ID0gYWRvcHRXSyhXS1ZpZXdDcmVhdGUocmVjdCwgY29u
Zi5nZXQoKSwgbWFpblduZCkpOwogICAgIGF1dG8gcGFnZSA9IFdLVmlld0dldFBhZ2UobV92aWV3
LmdldCgpKTsKQEAgLTEwNSw2ICsxMTIsMjIgQEAgV2ViS2l0QnJvd3NlcldpbmRvdzo6V2ViS2l0
QnJvd3NlcldpbmRvdyhIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFyV25kKQogICAgIG5hdmlnYXRp
b25DbGllbnQuZGlkQ29tbWl0TmF2aWdhdGlvbiA9IGRpZENvbW1pdE5hdmlnYXRpb247CiAgICAg
bmF2aWdhdGlvbkNsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRp
b25DbGllbnQocGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CisKKyAgICB1cGRhdGVQcm94
eVNldHRpbmdzKCk7Cit9CisKK3ZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6dXBkYXRlUHJveHlT
ZXR0aW5ncygpCit7CisgICAgYXV0byBzdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3Rv
cmUobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV9wcm94eS5lbmFibGUpIHsKKyAgICAgICAg
aWYgKG1fcHJveHkuY3VzdG9tKSB7CisgICAgICAgICAgICBhdXRvIHVybCA9IGNyZWF0ZVdLVVJM
KG1fcHJveHkudXJsKTsKKyAgICAgICAgICAgIGF1dG8gZXhjbHVkZUhvc3RzID0gY3JlYXRlV0tT
dHJpbmcobV9wcm94eS5leGNsdWRlSG9zdHMpOworICAgICAgICAgICAgV0tXZWJzaXRlRGF0YVN0
b3JlRW5hYmxlQ3VzdG9tTmV0d29ya1Byb3h5U2V0dGluZ3Moc3RvcmUsIHVybC5nZXQoKSwgZXhj
bHVkZUhvc3RzLmdldCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBXS1dlYnNpdGVE
YXRhU3RvcmVFbmFibGVEZWZhdWx0TmV0d29ya1Byb3h5U2V0dGluZ3Moc3RvcmUpOworICAgIH0g
ZWxzZQorICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVEaXNhYmxlTmV0d29ya1Byb3h5U2V0dGlu
Z3Moc3RvcmUpOwogfQogCiBIUkVTVUxUIFdlYktpdEJyb3dzZXJXaW5kb3c6OmluaXQoKQpAQCAt
MTIwLDE0ICsxNDMsMTQgQEAgSFdORCBXZWJLaXRCcm93c2VyV2luZG93Ojpod25kKCkKIEhSRVNV
TFQgV2ViS2l0QnJvd3NlcldpbmRvdzo6bG9hZFVSTChjb25zdCBCU1RSJiB1cmwpCiB7CiAgICAg
YXV0byBwYWdlID0gV0tWaWV3R2V0UGFnZShtX3ZpZXcuZ2V0KCkpOwotICAgIFdLUGFnZUxvYWRV
UkwocGFnZSwgY3JlYXRlV0tVUkwodXJsKS5nZXQoKSk7CisgICAgV0tQYWdlTG9hZFVSTChwYWdl
LCBjcmVhdGVXS1VSTChfYnN0cl90KHVybCkpLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogSFJFU1VMVCBXZWJLaXRCcm93c2VyV2luZG93Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBCU1RS
JiBzdHIpCiB7CiAgICAgYXV0byBwYWdlID0gV0tWaWV3R2V0UGFnZShtX3ZpZXcuZ2V0KCkpOwot
ICAgIGF1dG8gdXJsID0gY3JlYXRlV0tVUkwoTCJhYm91dDoiKTsKKyAgICBhdXRvIHVybCA9IGNy
ZWF0ZVdLVVJMKF9ic3RyX3QoTCJhYm91dDoiKSk7CiAgICAgV0tQYWdlTG9hZEhUTUxTdHJpbmco
cGFnZSwgY3JlYXRlV0tTdHJpbmcoX2JzdHJfdChzdHIpKS5nZXQoKSwgdXJsLmdldCgpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3Myw2ICsxOTYsMTMgQEAgdm9pZCBXZWJLaXRCcm93c2Vy
V2luZG93OjpsYXVuY2hJbnNwZWN0b3IoKQogICAgIFdLSW5zcGVjdG9yU2hvdyhpbnNwZWN0b3Ip
OwogfQogCit2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6Om9wZW5Qcm94eVNldHRpbmdzKCkKK3sK
KyAgICBpZiAoYXNrUHJveHlTZXR0aW5ncyhtX2hNYWluV25kLCBtX3Byb3h5KSkKKyAgICAgICAg
dXBkYXRlUHJveHlTZXR0aW5ncygpOworCit9CisKIHZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6
c2V0VXNlckFnZW50KF9ic3RyX3QmIGN1c3RvbVVBU3RyaW5nKQogewogICAgIGF1dG8gcGFnZSA9
IFdLVmlld0dldFBhZ2UobV92aWV3LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmggYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2Vi
S2l0QnJvd3NlcldpbmRvdy5oCmluZGV4IDQyNjZlN2M2NGE4Li4wMDNiMzVjYTlkNiAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuaAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKKyNpbmNsdWRl
ICJDb21tb24uaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV2ViS2l0Ml9DLmg+CiAKQEAgLTQ2LDYgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcHJpbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGxhdW5jaEluc3BlY3RvcigpIG92ZXJyaWRl
OworICAgIHZvaWQgb3BlblByb3h5U2V0dGluZ3MoKSBvdmVycmlkZTsKIAogICAgIF9ic3RyX3Qg
dXNlckFnZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoX2JzdHJfdCYpIG92
ZXJyaWRlOwpAQCAtNTcsMTEgKzU5LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCB6b29tSW4oKSBv
dmVycmlkZTsKICAgICB2b2lkIHpvb21PdXQoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgdXBkYXRl
UHJveHlTZXR0aW5ncygpOworCiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihX
S1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CiAgICAg
c3RhdGljIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJl
ZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJlZiwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVJlZiwgY29uc3Qgdm9pZCopOwogCisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBtX2Nv
bnRleHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tWaWV3UmVmPiBtX3ZpZXc7CiAgICAgSFdORCBtX2hN
YWluV25kIHsgbnVsbHB0ciB9OwogICAgIEhXTkQgbV91cmxCYXJXbmQgeyBudWxscHRyIH07Cisg
ICAgUHJveHlTZXR0aW5ncyBtX3Byb3h5IHsgfTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci93aW4vV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJv
d3Nlci93aW4vV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5jcHAKaW5kZXggZDNmODhiYTNmYjMu
LmY2ZmNkNTc5NGY3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0TGVn
YWN5QnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdExl
Z2FjeUJyb3dzZXJXaW5kb3cuY3BwCkBAIC00MzAsNiArNDMwLDEwIEBAIHZvaWQgV2ViS2l0TGVn
YWN5QnJvd3NlcldpbmRvdzo6bGF1bmNoSW5zcGVjdG9yKCkKICAgICBtX2luc3BlY3Rvci0+c2hv
dygpOwogfQogCit2b2lkIFdlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3c6Om9wZW5Qcm94eVNldHRp
bmdzKCkKK3sKK30KKwogdm9pZCBXZWJLaXRMZWdhY3lCcm93c2VyV2luZG93OjpuYXZpZ2F0ZUZv
cndhcmRPckJhY2t3YXJkKFVJTlQgbWVudUlEKQogewogICAgIGlmICghbV93ZWJWaWV3KQpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3cu
aCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmgKaW5k
ZXggNzExZTc0NTM3OGYuLmVjZTRlYWYyNDA5IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci93aW4vV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2hvd0xhc3RWaXNpdGVkU2l0ZXMoSVdlYlZpZXcmKTsKICAgICB2b2lk
IGxhdW5jaEluc3BlY3RvcigpOworICAgIHZvaWQgb3BlblByb3h5U2V0dGluZ3MoKTsKICAgICB2
b2lkIG5hdmlnYXRlRm9yd2FyZE9yQmFja3dhcmQoVUlOVCBtZW51SUQpOwogICAgIHZvaWQgbmF2
aWdhdGVUb0hpc3RvcnkoVUlOVCBtZW51SUQpOwogICAgIHZvaWQgZXhpdFByb2dyYW0oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353430</attachid>
            <date>2018-10-30 16:27:17 -0700</date>
            <delta_ts>2018-11-09 12:04:44 -0800</delta_ts>
            <desc>FIX</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>50717</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTA4ZGU3MTdlMi4uZDA0NTY0NjAzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0xMC0yNiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdW1dlYktpdF0gSW1wbGVtZW50IFByb3h5IGNvbmZpZ3Vy
YXRpb24gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgQVBJIHRvIHNldCBwcm94eSBmcm9tIHRoZSBhcHAuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGJlY2F1c2UgdGhlcmUncyBubyBiZWhhdmlvdXIgY2hhbmdlIGluIFdlYkNvcmUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybENvbnRleHQ6OnNldFByb3h5U2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJveHlTZXR0aW5ncyBjb25zdCk6CisK
IDIwMTgtMTAtMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXVtJRkNdIEFkZCBqdXN0aWZ5IHRleHQtYWxpZ24gc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmlu
ZGV4IGFhOWU0MjhlMzkyLi40OTEzZTc3MTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC02MCw2ICs2
MCw3IEBAIHR5cGVkZWYgc3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBDb29raWVKYXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7CiBjbGFzcyBOZXR3
b3JraW5nQ29udGV4dDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNvdXBOZXR3b3Jr
U2Vzc2lvbjsKQEAgLTEzNSw2ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgQ29va2llSmFyREImIGNv
b2tpZURhdGFiYXNlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVE
YXRhYmFzZShVbmlxdWVSZWY8Q29va2llSmFyREI+JiYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRQcm94eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYpIGNvbnN0Owor
CiAgICAgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKICNlbHNlCiAgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBOZXR3b3JraW5nQ29udGV4dCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
aAppbmRleCAzNzMyNjAxNzliOC4uODA1MmI4MjhlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCkBAIC0xMDQsNyArMTA0LDcg
QEAgcHVibGljOgogCiAgICAgLy8gUHJveHkKICAgICBjb25zdCBDdXJsUHJveHlTZXR0aW5ncyYg
cHJveHlTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlTZXR0aW5nczsgfQotICAgIHZv
aWQgc2V0UHJveHlTZXR0aW5ncyhjb25zdCBDdXJsUHJveHlTZXR0aW5ncyYgc2V0dGluZ3MpIHsg
bV9wcm94eVNldHRpbmdzID0gc2V0dGluZ3M7IH0KKyAgICB2b2lkIHNldFByb3h5U2V0dGluZ3Mo
Q3VybFByb3h5U2V0dGluZ3MmJiBzZXR0aW5ncykgeyBtX3Byb3h5U2V0dGluZ3MgPSBXVEZNb3Zl
KHNldHRpbmdzKTsgfQogICAgIHZvaWQgc2V0UHJveHlVc2VyUGFzcyhjb25zdCBTdHJpbmcmIHVz
ZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsgbV9wcm94eVNldHRpbmdzLnNldFVzZXJQYXNz
KHVzZXIsIHBhc3N3b3JkKTsgfQogICAgIHZvaWQgc2V0RGVmYXVsdFByb3h5QXV0aE1ldGhvZCgp
IHsgbV9wcm94eVNldHRpbmdzLnNldERlZmF1bHRBdXRoTWV0aG9kKCk7IH0KICAgICB2b2lkIHNl
dFByb3h5QXV0aE1ldGhvZChsb25nIGF1dGhNZXRob2QpIHsgbV9wcm94eVNldHRpbmdzLnNldEF1
dGhNZXRob2QoYXV0aE1ldGhvZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmgKaW5kZXggYTYxYzZlYzIyNjIu
LjI3YTcwMjEwZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdzIHsKIHB1YmxpYzoKLSAgICBl
bnVtIGNsYXNzIE1vZGUgeworICAgIGVudW0gY2xhc3MgTW9kZSA6IHVpbnQ4X3QgewogICAgICAg
ICBEZWZhdWx0LAogICAgICAgICBOb1Byb3h5LAogICAgICAgICBDdXN0b20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlMTEwYWQxNjQ5MS4uMzEwMjgwZGVlOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTE5Myw2ICsxOTMsMTEgQEAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKCp0aGlzLCBoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFy
dHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwg
aGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVhZGVy
RmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRQcm94eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgcHJveHlTZXR0
aW5ncykgY29uc3QKK3sKKyAgICBDdXJsQ29udGV4dDo6c2luZ2xldG9uKCkuc2V0UHJveHlTZXR0
aW5ncyhXVEZNb3ZlKHByb3h5U2V0dGluZ3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gVVNFKENVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJmYTFkNTY4YThmLi45ZGZiNzI2
YzU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOC0xMC0yNiAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxdW1dlYktpdF0gSW1w
bGVtZW50IFByb3h5IGNvbmZpZ3VyYXRpb24gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgcHJveHkgY29uZmlndXJhdGlvbiBBUEkgdG8g
V2Vic2l0ZURhdGFTdG9yZS4gVGhyZWUgQVBJIHdhcyBhZGRlZCBpbiAvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmQ3VybC5oOgorICAgICAgICAtIFdLV2Vic2l0ZURhdGFTdG9yZUVuYWJsZURlZmF1bHRO
ZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYpCisgICAgICAgIC0gV0tX
ZWJzaXRlRGF0YVN0b3JlRW5hYmxlQ3VzdG9tTmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdSZWYgaWdub3JlSG9zdHMp
CisgICAgICAgIC0gV0tXZWJzaXRlRGF0YVN0b3JlRGlzYWJsZU5ldHdvcmtQcm94eVNldHRpbmdz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZikKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uQ3VybDo6TmV0d29ya1Nlc3Npb25DdXJsKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6Cisg
ICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVy
c0N1cmwuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEN1cmxQcm94eVNldHRpbmdz
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5n
cz46OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmQ3VybC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwLgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlRW5hYmxlRGVmYXVsdE5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZUVuYWJsZUN1c3RvbU5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZURpc2FibGVOZXR3b3JrUHJveHlTZXR0aW5ncyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJs
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Om5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvY3VybC9XZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vz
c2lvbkN1cmwuY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9y
bVNldFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyk6CisKIDIwMTgtMTAtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qgd2FzdGUgdGltZSB1bmRlciAtc2V0
dXBJbnRlcmFjdGlvbiB1bmRlciAtaW5pdFdpdGhGcmFtZSBmb3IgdW5wYXJlbnRlZCBXS1dlYlZp
ZXdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggM2EyOGQ1Y2RlZDYuLmZhYzMzYzIwNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFNlc3Npb25J
RDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOworY2xhc3Mg
Q3VybFByb3h5U2V0dGluZ3M7CiBjbGFzcyBEb3dubG9hZElEOwogY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwpAQCAtMzAxLDYgKzMwMiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6
U291cE5ldHdvcmtQcm94eVNldHRpbmdzJik7CiAjZW5kaWYKIAorI2lmIFVTRShDVVJMKQorICAg
IHZvaWQgc2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkN1
cmxQcm94eVNldHRpbmdzJiYpOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3Rh
dGljIHZvaWQgc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpZGVudGlmaWVyKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMmM3OTdlMDJkYmEuLjNj
ZGQyMWUyYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTMzLDYgKzMzLDEwIEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXROZXR3b3JrUHJveHlTZXR0
aW5ncyhzdHJ1Y3QgV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRpbmdzIHNldHRpbmdzKQog
I2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkKKyAgICBTZXROZXR3b3JrUHJveHlTZXR0aW5ncyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIHNldHRpbmdz
KQorI2VuZGlmCisKICAgICBDbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAogICAgIEFkZFdlYnNp
dGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IGVjZTU1MTc2ZGJjLi5hMmRmYmI4Yjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtMzMsNiArMzMsMTEgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCiAj
ZW5kaWYKIAorI2lmIFVTRShDVVJMKQorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOwpAQCAt
NTEsNiArNTYsOSBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgU3RyaW5n
IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICNlbmRpZgorI2lmIFVTRShD
VVJMKQorICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIHByb3h5U2V0dGluZ3M7CisjZW5k
aWYKIH07CiAKIGlubGluZSB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjMsNiArNzEsOSBAQCBpbmxp
bmUgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29ucwogICAgIGVuY29kZXIgPDwgc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyOwogI2VuZGlmCisjaWYgVVNFKENVUkwpCisgICAgZW5jb2RlciA8PCBwcm94eVNl
dHRpbmdzOworI2VuZGlmCiB9CiAKIGlubGluZSBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTk2LDcgKzEwNywxNCBAQCBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcgogICAgIGlmICghc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCi0gICAgCisKKyNpZiBV
U0UoQ1VSTCkKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzPiBw
cm94eVNldHRpbmdzOworICAgIGRlY29kZXIgPj4gcHJveHlTZXR0aW5nczsKKyAgICBpZiAoIXBy
b3h5U2V0dGluZ3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKKwogICAg
IHJldHVybiB7ewogICAgICAgICBzZXNzaW9uSUQKICAgICAgICAgLCBXVEZNb3ZlKCpib3VuZElu
dGVyZmFjZUlkZW50aWZpZXIpCkBAIC0xMDYsNiArMTI0LDkgQEAgaW5saW5lIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXIKICAgICAgICAgLCBXVEZNb3ZlKCpzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIpCiAgICAgICAgICwgV1RGTW92ZSgqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKQogI2VuZGlmCisjaWYgVVNFKENVUkwpCisgICAgICAgICwgV1RGTW92ZSgqcHJveHlTZXR0
aW5ncykKKyNlbmRpZgogICAgIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCmluZGV4IDE5MTMxYzY3
MzIyLi5lN2EzYjQ3YzliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKQEAgLTI2LDIwICsyNiwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAKLSNpbmNs
dWRlICJOZXR3b3JrQ2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgotI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgotI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3VybENvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JBTVNpemUu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtOTIsNCArODMs
MTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRv
QmFja2dyb3VuZCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYmIHNldHRpbmdzKQoreworICAgIGlmIChhdXRvKiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0UHJveHlT
ZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCmlu
ZGV4IDVkM2E2NmRkMTBiLi5mYTY4YjZlYjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAKQEAgLTI3LDYg
KzI3LDggQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkN1cmwuaCIKIAogI2luY2x1ZGUgIk5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DdXJs
Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zNSw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogTmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Np
b24ocGFyYW1ldGVycy5zZXNzaW9uSUQpCiB7Ci0KKyAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24o
KS5zZXRQcm94eVNldHRpbmdzKFdURk1vdmUocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKSk7CiB9
CiAKIE5ldHdvcmtTZXNzaW9uQ3VybDo6fk5ldHdvcmtTZXNzaW9uQ3VybCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dEN1cmwuY3BwCmluZGV4IDczNmVlOTg1MWJhLi43NTkzOWIyZTgzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKQEAgLTI2LDE2ICsyNiwyMyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAK
KyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3Jl
U2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKQordm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
YXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNz
aW9uSUQ7CisgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpl
bnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25J
RCgpKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3Jr
U2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21h
a2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDNhZWI2YTRhYjA0Li4z
ZGQ1NjQzNzc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC00MCw2ICs0MCw4IEBAIGxp
c3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9y
dEF0dHJpYnV0ZXMuY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRh
U3RvcmVSZWZDdXJsLmNwcAorCiAgICAgVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuY3BwCiAK
ICAgICBVSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtNDgs
NiArNTAsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCiAKKyAgICBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Y3VybC9XZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHAKKwogICAgIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKIAogICAgIFVJUHJvY2Vzcy93aW4vUGFnZUNs
aWVudEltcGwuY3BwCkBAIC0xMDUsNiArMTA5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9TaGFyZWQvdW5peCIKICAgICAiJHtX
RUJLSVRfRElSfS9TaGFyZWQvd2luIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Qy9jYWlybyIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL0MvY3VybCIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL0Mvd2luIgogICAgICIke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvY3BwL3dpbiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dp
biIKQEAgLTE5Niw2ICsyMDEsNyBAQCBzZXQoV2ViS2l0X0ZPUldBUkRJTkdfSEVBREVSU19ESVJF
Q1RPUklFUwogICAgIFVJUHJvY2Vzcy9BUEkvQwogICAgIFVJUHJvY2Vzcy9BUEkvY3BwCiAKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvY3VybAogICAgIFVJUHJvY2Vzcy9BUEkvQy93aW4KIAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZDg3ODE4ZTdiYTcuLmUyZWFhMmUwYTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNDUsNiAr
NDUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjZW5kaWYKIAor
I2lmIFVTRShDVVJMKQorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hT
ZW5kUmlnaHQ7CkBAIC00NDUsNiArNDQ5LDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQ+IHsKIH07CiAjZW5kaWYKIAorI2lm
IFVTRShDVVJMKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJs
UHJveHlTZXR0aW5ncz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsKK307CisjZW5kaWYK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmUmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTgwMCw0ICs4
MTEsMTUgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6V29ya2VyVHlw
ZT4gewogICAgID47CiB9OwogCisjaWYgVVNFKENVUkwpCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5nczo6TW9kZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpN
b2RlLAorICAgICAgICBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5nczo6TW9kZTo6RGVmYXVsdCwK
KyAgICAgICAgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6Ok5vUHJveHksCisgICAg
ICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpDdXN0b20KKyAgICA+OworfTsK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCmluZGV4IDM2Njc2ZDAz
YzFhLi45ODRhYWYzMDdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
dXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUlu
Zm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTEyNyw0ICsx
MjgsMzQgQEAgYm9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjb2RlciYsIENyZWRlbnRpYWwmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBB
cmd1bWVudENvZGVyPEN1cmxQcm94eVNldHRpbmdzPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEN1cmxQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBlbmNvZGVyIDw8IHNl
dHRpbmdzLm1vZGUoKTsKKyAgICBpZiAoc2V0dGluZ3MubW9kZSgpICE9IEN1cmxQcm94eVNldHRp
bmdzOjpNb2RlOjpDdXN0b20pCisgICAgICAgIHJldHVybjsKKworICAgIGVuY29kZXIgPDwgc2V0
dGluZ3MudXJsKCk7CisgICAgZW5jb2RlciA8PCBzZXR0aW5ncy5pZ25vcmVIb3N0cygpOworfQor
CitzdGQ6Om9wdGlvbmFsPEN1cmxQcm94eVNldHRpbmdzPiBBcmd1bWVudENvZGVyPEN1cmxQcm94
eVNldHRpbmdzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgQ3VybFByb3h5U2V0
dGluZ3M6Ok1vZGUgbW9kZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vZGUpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKG1vZGUgIT0gQ3VybFByb3h5U2V0dGlu
Z3M6Ok1vZGU6OkN1c3RvbSkKKyAgICAgICAgcmV0dXJuIEN1cmxQcm94eVNldHRpbmdzIHsgbW9k
ZSB9OworCisgICAgVVJMIHVybDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgaWdub3JlSG9zdHM7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpZ25vcmVIb3N0cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gQ3VybFByb3h5U2V0dGluZ3MgeyBXVEZNb3ZlKHVybCksIFdU
Rk1vdmUoaWdub3JlSG9zdHMpIH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hM2RhMDU5Nzg2NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVm
Q3VybC5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVFbmFibGVEZWZhdWx0TmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZikKK3sKKyAgICB0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdz
KFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KSk7Cit9CisKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlRW5hYmxlQ3VzdG9tTmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tVUkxSZWYgcHJveHlVcmwsIFdLU3RyaW5n
UmVmIGlnbm9yZUhvc3RzKQoreworICAgIHRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGlu
Z3MoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyhwcm94eVVybCkpLCB0
b1dURlN0cmluZyhpZ25vcmVIb3N0cykpKTsKK30KKwordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVE
aXNhYmxlTmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZikKK3sKKyAgICB0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
dE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzKFdlYkNvcmU6
OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpOb1Byb3h5KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YmIyN2Fh
NGEyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1
cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5j
bHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZUVuYWJsZURlZmF1bHROZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRW5hYmxlQ3VzdG9tTmV0d29y
a1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXS1VSTFJlZiBwcm94eVVybCwg
V0tTdHJpbmdSZWYgaWdub3JlSG9zdHMpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlRGlzYWJsZU5ldHdvcmtQcm94eVNldHRpbmdzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZik7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDFhMjU1
Yjg5NTYyLi4wZWJlMGJiYjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE2NjcsNiArMTY2Nywx
MCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwg
cGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgcGxhdGZvcm1TZXRQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpOworI2VuZGlmCisKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IGJkNTc5MTNkMzk5Li4zNWQyMTI4MDE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aApAQCAtNDYsNiArNDYsMTAgQEAKICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
PgogI2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNl
dHRpbmdzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiB9CkBAIC0xODcsNyArMTkxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb3h5
Q29uZmlndXJhdGlvbihDRkRpY3Rpb25hcnlSZWYgY29uZmlndXJhdGlvbikgeyBtX3Byb3h5Q29u
ZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247IH0KICAgICBDRkRpY3Rpb25hcnlSZWYgcHJveHlD
b25maWd1cmF0aW9uKCkgeyByZXR1cm4gbV9wcm94eUNvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KICNl
bmRpZgotICAgIAorCisjaWYgVVNFKENVUkwpCisgICAgdm9pZCBwbGF0Zm9ybVNldFBhcmFtZXRl
cnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHNldE5ldHdvcmtQcm94
eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJiYpOworICAgIGNvbnN0IFdlYkNv
cmU6OkN1cmxQcm94eVNldHRpbmdzJiBuZXR3b3JrUHJveHlTZXR0aW5ncygpIHsgcmV0dXJuIG1f
cHJveHlTZXR0aW5nczsgfQorI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBhbGxvd1dlYnNpdGVE
YXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMoKTsKIAogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKQEAg
LTI1Miw4ICsyNjIsMTMgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gbV9jZkNvb2tpZVN0b3JhZ2U7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gbV9wcm94eUNvbmZpZ3VyYXRpb247CiAjZW5kaWYKKworI2lmIFVTRShDVVJMKQorICAgIFdl
YkNvcmU6OkN1cmxQcm94eVNldHRpbmdzIG1fcHJveHlTZXR0aW5nczsKKyNlbmRpZgorCiAgICAg
SGFzaFNldDxXZWJDb3JlOjpDb29raWU+IG1fcGVuZGluZ0Nvb2tpZXM7Ci0gICAgCisKICAgICBT
dHJpbmcgbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CiAgICAgQWxsb3dzQ2VsbHVsYXJBY2Nl
c3MgbV9hbGxvd3NDZWxsdWxhckFjY2VzcyB7IEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvY3VybC9X
ZWJzaXRlRGF0YVN0b3JlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMzhiNmEwZDBhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9jdXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNw
cApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldFBhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucHJveHlTZXR0aW5ncyA9IG1fcHJveHlTZXR0aW5nczsKK30KKwordm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlT
ZXR0aW5ncyYmIHByb3h5U2V0dGluZ3MpCit7CisgICAgbV9wcm94eVNldHRpbmdzID0gV1RGTW92
ZShwcm94eVNldHRpbmdzKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0TmV0d29ya1Byb3h5U2V0dGluZ3MobV9zZXNzaW9u
SUQsIG1fcHJveHlTZXR0aW5ncykpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmI4MWVjN2RhZGMuLmZlMjI3MGY0NTgxIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTYgQEAKKzIwMTgtMTAtMjYgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29t
PgorCisgICAgICAgIFtDdXJsXVtXZWJLaXRdIEltcGxlbWVudCBQcm94eSBjb25maWd1cmF0aW9u
IEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
OTA1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIFByb3h5IFNldHRpbmdzIGRpYWxvZyB0byBjYWxsIG5ld2x5IGFkZGVkIEFQSS4KKworICAg
ICAgICAqIE1pbmlCcm93c2VyL3dpbi9Ccm93c2VyV2luZG93Lmg6CisgICAgICAgICogTWluaUJy
b3dzZXIvd2luL0NvbW1vbi5jcHA6CisgICAgICAgIChhc2tQcm94eVNldHRpbmdzKToKKyAgICAg
ICAgKGFza0NyZWRlbnRpYWwpOgorICAgICAgICAoYXV0aERpYWxvZ1Byb2MpOiBEZWxldGVkLgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9Db21tb24uaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci93aW4vRGlhbG9nSGVscGVyLmg6IEFkZGVkLgorICAgICAgICAoRGlhbG9nOjpydW4pOgorICAg
ICAgICAoRGlhbG9nOjpkb2Fsb2dQcm9jKToKKyAgICAgICAgKERpYWxvZzo6aGFuZGxlKToKKyAg
ICAgICAgKERpYWxvZzo6c2V0dXApOgorICAgICAgICAoRGlhbG9nOjp1cGRhdGUpOgorICAgICAg
ICAoRGlhbG9nOjp2YWxpZGF0ZSk6CisgICAgICAgIChEaWFsb2c6OnVwZGF0ZU9rQnV0dG9uKToK
KyAgICAgICAgKERpYWxvZzo6Y29tbWFuZCk6CisgICAgICAgIChEaWFsb2c6Om9rKToKKyAgICAg
ICAgKERpYWxvZzo6Y2FuY2VsKToKKyAgICAgICAgKERpYWxvZzo6Y2xvc2UpOgorICAgICAgICAo
RGlhbG9nOjpoRGxnKToKKyAgICAgICAgKERpYWxvZzo6aXRlbSk6CisgICAgICAgIChEaWFsb2c6
OnNldEVuYWJsZWQpOgorICAgICAgICAoRGlhbG9nOjpzZXRUZXh0KToKKyAgICAgICAgKERpYWxv
Zzo6Z2V0VGV4dCk6CisgICAgICAgIChEaWFsb2c6OmdldFRleHRMZW5ndGgpOgorICAgICAgICAo
RGlhbG9nOjpSYWRpb0dyb3VwOjpSYWRpb0dyb3VwKToKKyAgICAgICAgKERpYWxvZzo6UmFkaW9H
cm91cDo6c2V0KToKKyAgICAgICAgKERpYWxvZzo6UmFkaW9Hcm91cDo6Z2V0KToKKyAgICAgICAg
KERpYWxvZzo6cmFkaW9Hcm91cCk6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01haW5XaW5k
b3cuY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6V25kUHJvYyk6CisgICAgICAgICogTWluaUJy
b3dzZXIvd2luL01pbmlCcm93c2VyTGliLnJjOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9N
aW5pQnJvd3NlckxpYlJlc291cmNlLmg6CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL1dlYktp
dEJyb3dzZXJXaW5kb3cuY3BwOgorICAgICAgICAoY3JlYXRlV0tVUkwpOgorICAgICAgICAoV2Vi
S2l0QnJvd3NlcldpbmRvdzo6V2ViS2l0QnJvd3NlcldpbmRvdyk6CisgICAgICAgIChXZWJLaXRC
cm93c2VyV2luZG93Ojp1cGRhdGVQcm94eVNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdEJyb3dz
ZXJXaW5kb3c6OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0QnJvd3NlcldpbmRvdzo6bG9hZEhU
TUxTdHJpbmcpOgorICAgICAgICAoV2ViS2l0QnJvd3NlcldpbmRvdzo6b3BlblByb3h5U2V0dGlu
Z3MpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93Lmg6Cisg
ICAgICAgICogTWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdzo6b3BlblByb3h5U2V0dGluZ3MpOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93Lmg6CisK
IDIwMTgtMTAtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gW0RhdGFsaXN0XSBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXNob3ct
aGlkZS5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3Nl
cldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJXaW5kb3cuaAppbmRleCA5
MWQ3YjM5NDA4ZS4uYTUyMjM3ZmNkZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dp
bi9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJXaW5k
b3cuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxhdW5jaEluc3BlY3RvcigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgb3BlblByb3h5U2V0dGluZ3MoKSA9IDA7CiAKICAgICB2aXJ0dWFsIF9ic3RyX3Qg
dXNlckFnZW50KCkgPSAwOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFVJTlQgbWVudUlEKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL0NvbW1vbi5jcHAKaW5kZXggOTU2ZjExNTMzMDEuLjRkMTYxNzM4MGFmIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgInN0ZGFm
eC5oIgogI2luY2x1ZGUgIkNvbW1vbi5oIgogCisjaW5jbHVkZSAiRGlhbG9nSGVscGVyLmgiCiAj
aW5jbHVkZSAiTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oIgogI2luY2x1ZGUgIk1pbmlCcm93c2Vy
UmVwbGFjZS5oIgogI2luY2x1ZGUgPGRiZ2hlbHAuaD4KQEAgLTExOSw1NCArMTIwLDExNSBAQCB2
b2lkIGNyZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyogZXhjZXB0aW9uUG9pbnRl
cnMpCiAgICAgfQogfQogCi1zdHJ1Y3QgQXV0aERpYWxvZ0RhdGEgewotICAgIGNvbnN0IHN0ZDo6
d3N0cmluZyYgcmVhbG07Ci0gICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOwotfTsKLQotc3RhdGlj
IElOVF9QVFIgQ0FMTEJBQ0sgYXV0aERpYWxvZ1Byb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCitib29sIGFza1Byb3h5U2V0dGluZ3MoSFdO
RCBod25kLCBQcm94eVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBzd2l0Y2ggKG1lc3NhZ2Up
IHsKLSAgICBjYXNlIFdNX0lOSVRESUFMT0c6IHsKLSAgICAgICAgU2V0V2luZG93TG9uZ1B0ciho
RGxnLCBEV0xQX1VTRVIsIGxQYXJhbSk7Ci0gICAgICAgIEF1dGhEaWFsb2dEYXRhJiBkYXRhID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8QXV0aERpYWxvZ0RhdGEqPihsUGFyYW0pOwotICAgICAgICBTZXRE
bGdJdGVtVGV4dChoRGxnLCBJRENfUkVBTE1fVEVYVCwgX2JzdHJfdChkYXRhLnJlYWxtLmNfc3Ry
KCkpKTsKLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotICAgIGNhc2UgV01fQ09NTUFORDog
ewotICAgICAgICBBdXRoRGlhbG9nRGF0YSYgZGF0YSA9ICpyZWludGVycHJldF9jYXN0PEF1dGhE
aWFsb2dEYXRhKj4oR2V0V2luZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VTRVIpKTsKLSAgICAgICAg
aW50IHdtSWQgPSBMT1dPUkQod1BhcmFtKTsKLSAgICAgICAgc3dpdGNoICh3bUlkKSB7Ci0gICAg
ICAgIGNhc2UgSURPSzogewotICAgICAgICAgICAgVENIQVIgc3RyWzI1Nl07Ci0gICAgICAgICAg
ICBpbnQgc3RyTGVuID0gR2V0V2luZG93VGV4dChHZXREbGdJdGVtKGhEbGcsIElEQ19BVVRIX1VT
RVIpLCBzdHIsIFdURl9BUlJBWV9MRU5HVEgoc3RyKS0xKTsKLSAgICAgICAgICAgIHN0cltzdHJM
ZW5dID0gMDsKLSAgICAgICAgICAgIGRhdGEuY3JlZGVudGlhbC51c2VybmFtZSA9IHN0cjsKLQot
ICAgICAgICAgICAgc3RyTGVuID0gR2V0V2luZG93VGV4dChHZXREbGdJdGVtKGhEbGcsIElEQ19B
VVRIX1BBU1NXT1JEKSwgc3RyLCBXVEZfQVJSQVlfTEVOR1RIKHN0ciktMSk7Ci0gICAgICAgICAg
ICBzdHJbc3RyTGVuXSA9IDA7Ci0gICAgICAgICAgICBkYXRhLmNyZWRlbnRpYWwucGFzc3dvcmQg
PSBzdHI7Ci0KLSAgICAgICAgICAgIEVuZERpYWxvZyhoRGxnLCB0cnVlKTsKLSAgICAgICAgICAg
IHJldHVybiBUUlVFOworICAgIGNsYXNzIFByb3h5RGlhbG9nIDogcHVibGljIERpYWxvZyB7Cisg
ICAgcHVibGljOgorICAgICAgICBQcm94eURpYWxvZyhQcm94eVNldHRpbmdzJiBzZXR0aW5ncykK
KyAgICAgICAgICAgIDogc2V0dGluZ3MgeyBzZXR0aW5ncyB9CisgICAgICAgIHsKICAgICAgICAg
fQotICAgICAgICBjYXNlIElEQ0FOQ0VMOgotICAgICAgICAgICAgRW5kRGlhbG9nKGhEbGcsIGZh
bHNlKTsKLSAgICAgICAgICAgIHJldHVybiBUUlVFOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBQcm94eVNldHRpbmdzJiBzZXR0aW5nczsKKworICAgICAgICB2b2lkIHNldHVwKCkgZmluYWwK
KyAgICAgICAgeworICAgICAgICAgICAgYXV0byBjb21tYW5kID0gY29tbWFuZEZvclByb3h5Q2hv
aWNlKCk7CisgICAgICAgICAgICBwcm94eUNob2ljZSgpLnNldChjb21tYW5kKTsKKyAgICAgICAg
ICAgIHNldFRleHQoSURDX1BST1hZX1VSTCwgc2V0dGluZ3MudXJsKTsKKyAgICAgICAgICAgIHNl
dFRleHQoSURDX1BST1hZX0VYQ0xVREUsIHNldHRpbmdzLmV4Y2x1ZGVIb3N0cyk7CiAgICAgICAg
IH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICByZXR1cm4gRkFMU0U7CisKKyAg
ICAgICAgdm9pZCBvaygpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHRpbmdzLnVy
bCA9IGdldFRleHQoSURDX1BST1hZX1VSTCk7CisgICAgICAgICAgICBzZXR0aW5ncy5leGNsdWRl
SG9zdHMgPSBnZXRUZXh0KElEQ19QUk9YWV9FWENMVURFKTsKKyAgICAgICAgICAgIHVwZGF0ZVBy
b3h5Q2hvaWNlKHByb3h5Q2hvaWNlKCkuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCB2YWxpZGF0ZSgpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgdmFsaWQgPSB0
cnVlOworCisgICAgICAgICAgICBpZiAocHJveHlDaG9pY2UoKS5nZXQoKSA9PSBJRENfUFJPWFlf
Q1VTVE9NKSB7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlZChJRENfUFJPWFlfVVJMLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBzZXRFbmFibGVkKElEQ19QUk9YWV9FWENMVURFLCB0cnVlKTsK
KworICAgICAgICAgICAgICAgIGlmICghZ2V0VGV4dExlbmd0aChJRENfUFJPWFlfVVJMKSkKKyAg
ICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgc2V0RW5hYmxlZChJRENfUFJPWFlfVVJMLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgc2V0RW5hYmxlZChJRENfUFJPWFlfRVhDTFVERSwgZmFsc2UpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgICAgIH0KKworICAgICAgICBS
YWRpb0dyb3VwIHByb3h5Q2hvaWNlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJh
ZGlvR3JvdXAoSURDX1BST1hZX0RFRkFVTFQsIElEQ19QUk9YWV9ESVNBQkxFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGludCBjb21tYW5kRm9yUHJveHlDaG9pY2UoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXNldHRpbmdzLmVuYWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSURD
X1BST1hZX0RJU0FCTEU7CisgICAgICAgICAgICBpZiAoc2V0dGluZ3MuY3VzdG9tKQorICAgICAg
ICAgICAgICAgIHJldHVybiBJRENfUFJPWFlfQ1VTVE9NOworICAgICAgICAgICAgcmV0dXJuIElE
Q19QUk9YWV9ERUZBVUxUOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB1cGRhdGVQcm94eUNo
b2ljZShpbnQgY29tbWFuZCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChjb21tYW5k
KSB7CisgICAgICAgICAgICBjYXNlIElEQ19QUk9YWV9ERUZBVUxUOgorICAgICAgICAgICAgICAg
IHNldHRpbmdzLmVuYWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3MuY3VzdG9t
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElEQ19Q
Uk9YWV9DVVNUT006CisgICAgICAgICAgICAgICAgc2V0dGluZ3MuZW5hYmxlID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBzZXR0aW5ncy5jdXN0b20gPSB0cnVlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBJRENfUFJPWFlfRElTQUJMRToKKyAgICAgICAgICAgICAg
ICBzZXR0aW5ncy5lbmFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5jdXN0
b20gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
OworCisgICAgUHJveHlEaWFsb2cgZGlhbG9nIHsgc2V0dGluZ3MgfTsKKyAgICByZXR1cm4gZGlh
bG9nLnJ1bihoSW5zdCwgaHduZCwgSUREX1BST1hZKTsKIH0KIAogc3RkOjpvcHRpb25hbDxDcmVk
ZW50aWFsPiBhc2tDcmVkZW50aWFsKEhXTkQgaHduZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiByZWFs
bSkKIHsKLSAgICBBdXRoRGlhbG9nRGF0YSBkYXRhIHsgcmVhbG0gfTsKLSAgICBhdXRvIHJlc3Vs
dCA9IERpYWxvZ0JveFBhcmFtKGhJbnN0LCBNQUtFSU5UUkVTT1VSQ0UoSUREX0FVVEgpLCBod25k
LCBhdXRoRGlhbG9nUHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZkYXRhKSk7Ci0gICAg
aWYgKHJlc3VsdCA8PSAwKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVy
biBkYXRhLmNyZWRlbnRpYWw7CisgICAgc3RydWN0IEF1dGhEaWFsb2cgOiBwdWJsaWMgRGlhbG9n
IHsKKyAgICAgICAgc3RkOjp3c3RyaW5nIHJlYWxtOworICAgICAgICBDcmVkZW50aWFsIGNyZWRl
bnRpYWw7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0dXAoKQorICAgICAgICB7
CisgICAgICAgICAgICBzZXRUZXh0KElEQ19SRUFMTV9URVhULCByZWFsbSk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIG9rKCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgY3JlZGVu
dGlhbC51c2VybmFtZSA9IGdldFRleHQoSURDX0FVVEhfVVNFUik7CisgICAgICAgICAgICBjcmVk
ZW50aWFsLnBhc3N3b3JkID0gZ2V0VGV4dChJRENfQVVUSF9QQVNTV09SRCk7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgQXV0aERpYWxvZyBkaWFsb2c7CisgICAgZGlhbG9nLnJlYWxtID0gcmVh
bG07CisKKyAgICBpZiAoZGlhbG9nLnJ1bihoSW5zdCwgaHduZCwgSUREX0FVVEgpKQorICAgICAg
ICByZXR1cm4gZGlhbG9nLmNyZWRlbnRpYWw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogQ29tbWFuZExpbmVPcHRpb25zIHBhcnNlQ29tbWFuZExpbmUoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1v
bi5oCmluZGV4IDcwYTg0YzRlMmNhLi4xNWJjNGRkY2YyYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvd2luL0NvbW1vbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24u
aApAQCAtNTEsMTEgKzUxLDE5IEBAIHN0cnVjdCBDcmVkZW50aWFsIHsKICAgICBzdGQ6OndzdHJp
bmcgcGFzc3dvcmQ7CiB9OwogCitzdHJ1Y3QgUHJveHlTZXR0aW5ncyB7CisgICAgYm9vbCBlbmFi
bGUgeyB0cnVlIH07CisgICAgYm9vbCBjdXN0b20geyBmYWxzZSB9OworICAgIHN0ZDo6d3N0cmlu
ZyB1cmw7CisgICAgc3RkOjp3c3RyaW5nIGV4Y2x1ZGVIb3N0czsKK307CisKIHZvaWQgY29tcHV0
ZUZ1bGxEZXNrdG9wRnJhbWUoKTsKIGJvb2wgZ2V0QXBwRGF0YUZvbGRlcihfYnN0cl90JiBkaXJl
Y3RvcnkpOwogQ29tbWFuZExpbmVPcHRpb25zIHBhcnNlQ29tbWFuZExpbmUoKTsKIHZvaWQgY3Jl
YXRlQ3Jhc2hSZXBvcnQoRVhDRVBUSU9OX1BPSU5URVJTKik7CiBzdGQ6Om9wdGlvbmFsPENyZWRl
bnRpYWw+IGFza0NyZWRlbnRpYWwoSFdORCwgY29uc3Qgc3RkOjp3c3RyaW5nJiByZWFsbSk7Citi
b29sIGFza1Byb3h5U2V0dGluZ3MoSFdORCwgUHJveHlTZXR0aW5ncyYpOwogCiBleHRlcm4gSElO
U1RBTkNFIGhJbnN0OwogZXh0ZXJuIFBPSU5UIHNfd2luZG93UG9zaXRpb247CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vRGlhbG9nSGVscGVyLmggYi9Ub29scy9NaW5pQnJvd3Nl
ci93aW4vRGlhbG9nSGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjA5M2RmNDcyN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2lu
L0RpYWxvZ0hlbHBlci5oCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAic3Rk
YWZ4LmgiCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworY2xhc3MgRGlh
bG9nIHsKK3B1YmxpYzoKKyAgICBib29sIHJ1bihISU5TVEFOQ0UgaEluc3QsIEhXTkQgaHduZCwg
aW50IGRpYWxvZ0lkKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBEaWFsb2dCb3hQYXJh
bShoSW5zdCwgTUFLRUlOVFJFU09VUkNFKGRpYWxvZ0lkKSwgaHduZCwgZG9hbG9nUHJvYywgcmVp
bnRlcnByZXRfY2FzdDxMUEFSQU0+KHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIChyZXN1bHQgPiAw
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSU5UX1BUUiBDQUxMQkFDSyBkb2Fsb2dQcm9jKEhXTkQg
aERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorICAgIHsK
KyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gV01fSU5JVERJQUxPRykKKyAgICAgICAgICAgIFNldFdp
bmRvd0xvbmdQdHIoaERsZywgRFdMUF9VU0VSLCBsUGFyYW0pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBsUGFyYW0gPSBHZXRXaW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNFUik7CisKKyAg
ICAgICAgYXV0byogZGlhbG9nID0gcmVpbnRlcnByZXRfY2FzdDxEaWFsb2cqPihsUGFyYW0pOwor
ICAgICAgICByZXR1cm4gZGlhbG9nLT5oYW5kbGUoaERsZywgbWVzc2FnZSwgd1BhcmFtKTsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICBJTlRfUFRSIGhhbmRsZShIV05EIGhEbGcsIFVJTlQgbWVz
c2FnZSwgV1BBUkFNIHdQYXJhbSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobWVzc2FnZSkgewor
ICAgICAgICBjYXNlIFdNX0lOSVRESUFMT0c6IHsKKyAgICAgICAgICAgIG1faERsZyA9IGhEbGc7
CisgICAgICAgICAgICBzZXR1cCgpOworICAgICAgICAgICAgdXBkYXRlKCk7CisgICAgICAgICAg
ICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdNX0NPTU1BTkQ6CisgICAg
ICAgICAgICBpbnQgd21JZCA9IExPV09SRCh3UGFyYW0pOworICAgICAgICAgICAgc3dpdGNoICh3
bUlkKSB7CisgICAgICAgICAgICBjYXNlIElET0s6CisgICAgICAgICAgICAgICAgb2soKTsKKyAg
ICAgICAgICAgICAgICBjbG9zZSh0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsK
KyAgICAgICAgICAgIGNhc2UgSURDQU5DRUw6CisgICAgICAgICAgICAgICAgY2FuY2VsKCk7Cisg
ICAgICAgICAgICAgICAgY2xvc2UoZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBUUlVF
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBhdXRvIGhhbmRsZWQgPSBj
b21tYW5kKHdtSWQpOworICAgICAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiBoYW5kbGVkOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biBGQUxTRTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0dXAoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlKCkgeyB1cGRhdGVPa0J1dHRvbih2YWxpZGF0ZSgpKTsgfQorICAgIHZp
cnR1YWwgYm9vbCB2YWxpZGF0ZSgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlT2tCdXR0b24oYm9vbCBpc1ZhbGlkKSB7IHNldEVuYWJsZWQoSURPSywgaXNWYWxpZCk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29tbWFuZChpbnQgd21JZCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgb2soKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9
CisKKyAgICB2b2lkIGNsb3NlKGJvb2wgc3VjY2VzcykgeyBFbmREaWFsb2cobV9oRGxnLCBzdWNj
ZXNzKTsgfQorCisgICAgSFdORCBoRGxnKCkgeyByZXR1cm4gbV9oRGxnOyB9CisKKyAgICBIV05E
IGl0ZW0oaW50IGl0ZW1JZCkgeyByZXR1cm4gR2V0RGxnSXRlbShtX2hEbGcsIGl0ZW1JZCk7IH0K
KworICAgIHZvaWQgc2V0RW5hYmxlZChpbnQgaXRlbUlkLCBib29sIGVuYWJsZWQpCisgICAgewor
ICAgICAgICBFbmFibGVXaW5kb3coaXRlbShpdGVtSWQpLCBlbmFibGVkKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFRleHQoaW50IGl0ZW1JZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiBzdHIpCisgICAg
eworICAgICAgICBTZXREbGdJdGVtVGV4dChtX2hEbGcsIGl0ZW1JZCwgX2JzdHJfdChzdHIuY19z
dHIoKSkpOworICAgIH0KKworICAgIHN0ZDo6d3N0cmluZyBnZXRUZXh0KGludCBpdGVtSWQpCisg
ICAgeworICAgICAgICBhdXRvIGxlbmd0aCA9IGdldFRleHRMZW5ndGgoaXRlbUlkKTsKKyAgICAg
ICAgc3RkOjp2ZWN0b3I8VENIQVI+IGJ1ZmZlcihsZW5ndGggKyAxLCAwKTsKKyAgICAgICAgR2V0
V2luZG93VGV4dChpdGVtKGl0ZW1JZCksIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CisgICAgICAg
IHJldHVybiBzdGQ6OndzdHJpbmcgeyBidWZmZXIuZGF0YSgpIH07CisgICAgfQorCisgICAgaW50
IGdldFRleHRMZW5ndGgoaW50IGl0ZW1JZCkKKyAgICB7CisgICAgICAgIHJldHVybiBHZXRXaW5k
b3dUZXh0TGVuZ3RoKGl0ZW0oaXRlbUlkKSk7CisgICAgfQorCisgICAgY2xhc3MgUmFkaW9Hcm91
cCB7CisgICAgcHVibGljOgorICAgICAgICBSYWRpb0dyb3VwKERpYWxvZyYgZGlhbG9nLCBpbnQg
Zmlyc3QsIGludCBsYXN0KQorICAgICAgICAgICAgOiBtX2RpYWxvZyhkaWFsb2cpCisgICAgICAg
ICAgICAsIG1fZmlyc3QoZmlyc3QpCisgICAgICAgICAgICAsIG1fbGFzdChsYXN0KQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldChpbnQgaXRlbSkKKyAgICAgICAgewor
ICAgICAgICAgICAgQ2hlY2tSYWRpb0J1dHRvbihtX2RpYWxvZy5oRGxnKCksIG1fZmlyc3QsIG1f
bGFzdCwgaXRlbSk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ2V0KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZm9yIChpbnQgaWQgPSBtX2ZpcnN0OyBpZCA8PSBtX2xhc3Q7IGlkKyspIHsK
KyAgICAgICAgICAgICAgICBpZiAoSXNEbGdCdXR0b25DaGVja2VkKG1fZGlhbG9nLmhEbGcoKSwg
aWQpID09IEJTVF9DSEVDS0VEKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQ7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgRGlhbG9nJiBtX2RpYWxvZzsKKyAgICAgICAgaW50IG1fZmlyc3Q7CisgICAg
ICAgIGludCBtX2xhc3Q7CisgICAgfTsKKworICAgIFJhZGlvR3JvdXAgcmFkaW9Hcm91cChpbnQg
Zmlyc3QsIGludCBsYXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJhZGlvR3JvdXAoKnRoaXMs
IGZpcnN0LCBsYXN0KTsKKyAgICB9CisKKyAgICBIV05EIG1faERsZyB7IH07Cit9OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL01haW5XaW5kb3cuY3BwCmluZGV4IGY5MDUyOGM0NjVkLi43ZjRiZGI0MjdlZiAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3BwCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmNwcApAQCAtMjEwLDYgKzIxMCw5IEBAIExS
RVNVTFQgQ0FMTEJBQ0sgTWFpbldpbmRvdzo6V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdQYXJhbSwgTFBBCiAgICAgICAgIGNhc2UgSURNX1dFQl9JTlNQRUNUT1I6CiAg
ICAgICAgICAgICB0aGlzV2luZG93LT5icm93c2VyV2luZG93KCktPmxhdW5jaEluc3BlY3Rvcigp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSURNX1BST1hZX1NFVFRJTkdTOgor
ICAgICAgICAgICAgdGhpc1dpbmRvdy0+YnJvd3NlcldpbmRvdygpLT5vcGVuUHJveHlTZXR0aW5n
cygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSURNX0NBQ0hFUzoKICAgICAg
ICAgICAgIGlmICghOjpJc1dpbmRvdyh0aGlzV2luZG93LT5tX2hDYWNoZVduZCkpIHsKICAgICAg
ICAgICAgICAgICB0aGlzV2luZG93LT5tX2hDYWNoZVduZCA9IENyZWF0ZURpYWxvZ1BhcmFtKGhJ
bnN0LCBNQUtFSU5UUkVTT1VSQ0UoSUREX0NBQ0hFUyksIGhXbmQsIGNhY2hlc0RpYWxvZ1Byb2Ms
IHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPih0aGlzV2luZG93LmdldCgpKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMgYi9Ub29scy9NaW5pQnJv
d3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMKaW5kZXggMGE3YTdmNTVhODcuLmZkMDM3Y2UwNGYy
IDEwMDc1NQotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliLnJjCkBAIC05Myw2ICs5Myw3
IEBAIEJFR0lOCiAgICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1INCiAgICAgICAgICAgICBN
RU5VSVRFTSAiT3RoZXIiLCAgICAgICAgICAgICAgICAgICAgICAgSURNX1VBX09USEVSDQogICAg
ICAgICBFTkQNCisgICAgICAgIE1FTlVJVEVNICJQcm94eSBTZXR0aW5ncy4uLiIsICAgICAgICAg
ICBJRE1fUFJPWFlfU0VUVElOR1MNCiAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUg0KICAgICAg
ICAgTUVOVUlURU0gIkRpc2FibGUgSW1hZ2VzIiwgICAgICAgICAgICAgIElETV9ESVNBQkxFX0lN
QUdFUw0KICAgICAgICAgTUVOVUlURU0gIkRpc2FibGUgU3R5bGVzIiwgICAgICAgICAgICAgIElE
TV9ESVNBQkxFX1NUWUxFUw0KQEAgLTI1OSw2ICsyNjAsMjYgQEAgQkVHSU4KICAgICBFRElUVEVY
VCAgICAgICAgSURDX0FVVEhfUEFTU1dPUkQsNjcsNjQsMTU3LDE0LEVTX1BBU1NXT1JEIHwgRVNf
QVVUT0hTQ1JPTEwNCiBFTkQNCiANCitJRERfUFJPWFkgRElBTE9HRVggMCwgMCwgMzEwLCAxNzYN
CitTVFlMRSBEU19TRVRGT05UIHwgRFNfTU9EQUxGUkFNRSB8IERTX0ZJWEVEU1lTIHwgV1NfUE9Q
VVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQ0KK0NBUFRJT04gIlByb3h5IENvbmZpZ3VyYXRp
b24iDQorRk9OVCA4LCAiTVMgU2hlbGwgRGxnIiwgNDAwLCAwLCAweDENCitCRUdJTg0KKyAgICBE
RUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5OSwxNTUsNTAsMTQNCisgICAgUFVTSEJVVFRPTiAg
ICAgICJDYW5jZWwiLElEQ0FOQ0VMLDI1MywxNTUsNTAsMTQNCisgICAgQ09OVFJPTCAgICAgICAg
ICJVc2Ugc3lzdGVtIGRlZmF1bHQgcHJveHkgY29uZmlndXJhdGlvbi4iLElEQ19QUk9YWV9ERUZB
VUxULA0KKyAgICAgICAgICAgICAgICAgICAgIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OIHwg
V1NfR1JPVVAsMjIsMTUsMjI2LDEwDQorICAgIENPTlRST0wgICAgICAgICAiVXNlIGN1c3RvbSBw
cm94eSBjb25maWd1cmF0aW9uOiIsSURDX1BST1hZX0NVU1RPTSwNCisgICAgICAgICAgICAgICAg
ICAgICJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiwyMiwzMywyMjYsMTANCisgICAgQ09OVFJP
TCAgICAgICAgICJEb24ndCB1c2UgcHJveHkuIixJRENfUFJPWFlfRElTQUJMRSwiQnV0dG9uIixC
U19BVVRPUkFESU9CVVRUT04sMjIsMTE3LDIyNiwxMA0KKyAgICBFRElUVEVYVCAgICAgICAgSURD
X1BST1hZX1VSTCw3Niw1MiwxOTMsMTQsRVNfQVVUT0hTQ1JPTEwNCisgICAgRURJVFRFWFQgICAg
ICAgIElEQ19QUk9YWV9FWENMVURFLDc2LDg1LDE5MywxNCxFU19BVVRPSFNDUk9MTA0KKyAgICBM
VEVYVCAgICAgICAgICAgIlVSTDoiLElEQ19TVEFUSUMsMzAsNTUsNDMsOCwwLFdTX0VYX1JJR0hU
DQorICAgIExURVhUICAgICAgICAgICAiRXhjdWRlIGxpc3Q6IixJRENfU1RBVElDLDMwLDg4LDQz
LDgsMCxXU19FWF9SSUdIVA0KKyAgICBMVEVYVCAgICAgICAgICAgIkV4YW1wbGU6IGh0dHA6Ly8x
OTIuMTY4LjAuMjo4MDAwIixJRENfU1RBVElDLDgwLDY4LDE5NCw4DQorICAgIExURVhUICAgICAg
ICAgICAiQ29tbWEgc2VwYXJhdGVkIGhvc3RuYW1lcy4iLElEQ19TVEFUSUMsODAsMTAxLDE5NCw4
DQorRU5EDQorDQogDQogI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQNCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLw0KQEAgLTMyNyw2ICszNDgsMTUgQEAgQkVHSU4KICAgICAgICAgSE9SWkdVSURFLCAyNQ0K
ICAgICAgICAgSE9SWkdVSURFLCA1MA0KICAgICBFTkQNCisNCisgICAgSUREX1BST1hZLCBESUFM
T0cNCisgICAgQkVHSU4NCisgICAgICAgIExFRlRNQVJHSU4sIDcNCisgICAgICAgIFJJR0hUTUFS
R0lOLCAzMDMNCisgICAgICAgIFZFUlRHVUlERSwgMjINCisgICAgICAgIFRPUE1BUkdJTiwgNw0K
KyAgICAgICAgQk9UVE9NTUFSR0lOLCAxNjkNCisgICAgRU5EDQogRU5EDQogI2VuZGlmICAgIC8v
IEFQU1RVRElPX0lOVk9LRUQNCiANCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4v
TWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93
c2VyTGliUmVzb3VyY2UuaAppbmRleCBlNmM5YjAwMzYzZS4uNTg4ZTgyMjYzOTAgMTAwNzU1Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmgKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaApAQCAtNTYsNiAr
NTYsNyBAQAogI2RlZmluZSBJRE1fU0hPV19MQVlFUl9UUkVFICAgICAgICAgICAgIDE3NQogI2Rl
ZmluZSBJRERfQVVUSCAgICAgICAgICAgICAgICAgICAgICAgIDE3NgogI2RlZmluZSBJRE1fREVC
VUdfSU5GT19MQVlFUiAgICAgICAgICAgIDE3NworI2RlZmluZSBJRERfUFJPWFkgICAgICAgICAg
ICAgICAgICAgICAgIDE3OAogI2RlZmluZSBJRENfRU1QVFlfVVJMX0NBQ0hFICAgICAgICAgICAg
IDEwMDAKICNkZWZpbmUgSURDX1JFVFVSTl9GUkVFX01FTU9SWSAgICAgICAgICAxMDAxCiAjZGVm
aW5lIElEQ19FTVBUWV9XRUJDT1JFX0NBQ0hFICAgICAgICAgMTAwMgpAQCAtMTEyLDE4ICsxMTMs
MjQgQEAKICNkZWZpbmUgSURDX0FVVEhfUEFTU1dPUkQgICAgICAgICAgICAgICAxMDU0CiAjZGVm
aW5lIElEQ19VUkxfQkFSICAgICAgICAgICAgICAgICAgICAgMTA1NQogI2RlZmluZSBJRENfUkVB
TE1fVEVYVCAgICAgICAgICAgICAgICAgIDEwNTYKKyNkZWZpbmUgSURDX1BST1hZX1VSTCAgICAg
ICAgICAgICAgICAgICAxMDU3CisjZGVmaW5lIElEQ19QUk9YWV9ERUZBVUxUICAgICAgICAgICAg
ICAgMTA1OAorI2RlZmluZSBJRENfUFJPWFlfQ1VTVE9NICAgICAgICAgICAgICAgIDEwNTkKKyNk
ZWZpbmUgSURDX1BST1hZX0VYQ0xVREUgICAgICAgICAgICAgICAxMDYwCisjZGVmaW5lIElEQ19Q
Uk9YWV9ESVNBQkxFICAgICAgICAgICAgICAgMTA2MQogI2RlZmluZSBJRE1fTkVXX1dFQktJVF9X
SU5ET1cgICAgICAgICAgIDMyNzc2CiAjZGVmaW5lIElETV9ORVdfV0VCS0lUTEVHQUNZX1dJTkRP
VyAgICAgMzI3NzcKKyNkZWZpbmUgSURNX1BST1hZX1NFVFRJTkdTICAgICAgICAgICAgICAzMjc3
OAogI2RlZmluZSBJRENfU1RBVElDICAgICAgICAgICAgICAgICAgICAgIC0xCiAKIC8vIE5leHQg
ZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCi0vLyAKKy8vCiAjaWZkZWYgQVBTVFVESU9f
SU5WT0tFRAogI2lmbmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCiAjZGVmaW5lIF9BUFNf
Tk9fTUZDICAgICAgICAgICAgICAgICAgICAgMQotI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0Vf
VkFMVUUgICAgICAgIDE3NQotI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAg
IDMyNzc4Ci0jZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTA1NQorI2Rl
ZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDE3OQorI2RlZmluZSBfQVBTX05F
WFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDMyNzc5CisjZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9M
X1ZBTFVFICAgICAgICAgMTA2MgogI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAg
ICAgIDExMAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dp
bi9XZWJLaXRCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRC
cm93c2VyV2luZG93LmNwcAppbmRleCA0ODE2N2Q3YWFjMS4uOGJiZjdmNTYxNWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tDcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuaD4KICNpbmNsdWRlIDx2
ZWN0b3I+CiAKIHN0ZDo6d3N0cmluZyBjcmVhdGVTdHJpbmcoV0tTdHJpbmdSZWYgd2tTdHJpbmcp
CkBAIC03OCw2ICs3OSwxMiBAQCBXS1JldGFpblB0cjxXS1VSTFJlZj4gY3JlYXRlV0tVUkwoX2Jz
dHJfdCBzdHIpCiAgICAgcmV0dXJuIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmco
dXRmOC5kYXRhKCkpKTsKIH0KIAorV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGNyZWF0ZVdLVVJMKGNv
bnN0IHN0ZDo6d3N0cmluZyYgc3RyKQoreworICAgIGF1dG8gdXRmOCA9IGNyZWF0ZVVURjhTdHJp
bmcoc3RyLmNfc3RyKCksIHN0ci5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFkb3B0V0soV0tVUkxD
cmVhdGVXaXRoVVRGOENTdHJpbmcodXRmOC5kYXRhKCkpKTsKK30KKwogUmVmPEJyb3dzZXJXaW5k
b3c+IFdlYktpdEJyb3dzZXJXaW5kb3c6OmNyZWF0ZShIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFy
V25kLCBib29sLCBib29sKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEJyb3dz
ZXJXaW5kb3cobWFpblduZCwgdXJsQmFyV25kKSk7CkBAIC05NCw4ICsxMDEsOCBAQCBXZWJLaXRC
cm93c2VyV2luZG93OjpXZWJLaXRCcm93c2VyV2luZG93KEhXTkQgbWFpblduZCwgSFdORCB1cmxC
YXJXbmQpCiAgICAgV0tQcmVmZXJlbmNlc1NldERldmVsb3BlckV4dHJhc0VuYWJsZWQocHJlZnMs
IHRydWUpOwogICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQcmVmZXJlbmNlcyhjb25mLmdldCgp
LCBwcmVmcyk7CiAKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgp
KTsKLSAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25mLmdldCgpLCBjb250ZXh0
LmdldCgpKTsKKyAgICBtX2NvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgpKTsKKyAg
ICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25mLmdldCgpLCBtX2NvbnRleHQuZ2V0
KCkpOwogCiAgICAgbV92aWV3ID0gYWRvcHRXSyhXS1ZpZXdDcmVhdGUocmVjdCwgY29uZi5nZXQo
KSwgbWFpblduZCkpOwogICAgIGF1dG8gcGFnZSA9IFdLVmlld0dldFBhZ2UobV92aWV3LmdldCgp
KTsKQEAgLTEwNSw2ICsxMTIsMjcgQEAgV2ViS2l0QnJvd3NlcldpbmRvdzo6V2ViS2l0QnJvd3Nl
cldpbmRvdyhIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFyV25kKQogICAgIG5hdmlnYXRpb25DbGll
bnQuZGlkQ29tbWl0TmF2aWdhdGlvbiA9IGRpZENvbW1pdE5hdmlnYXRpb247CiAgICAgbmF2aWdh
dGlvbkNsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGll
bnQocGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CisKKyAgICB1cGRhdGVQcm94eVNldHRp
bmdzKCk7Cit9CisKK3ZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6dXBkYXRlUHJveHlTZXR0aW5n
cygpCit7CisgICAgYXV0byBzdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUobV9j
b250ZXh0LmdldCgpKTsKKworICAgIGlmICghbV9wcm94eS5lbmFibGUpIHsKKyAgICAgICAgV0tX
ZWJzaXRlRGF0YVN0b3JlRGlzYWJsZU5ldHdvcmtQcm94eVNldHRpbmdzKHN0b3JlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9wcm94eS5jdXN0b20pIHsKKyAgICAgICAg
V0tXZWJzaXRlRGF0YVN0b3JlRW5hYmxlRGVmYXVsdE5ldHdvcmtQcm94eVNldHRpbmdzKHN0b3Jl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gdXJsID0gY3JlYXRlV0tVUkwo
bV9wcm94eS51cmwpOworICAgIGF1dG8gZXhjbHVkZUhvc3RzID0gY3JlYXRlV0tTdHJpbmcobV9w
cm94eS5leGNsdWRlSG9zdHMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZUVuYWJsZUN1c3RvbU5l
dHdvcmtQcm94eVNldHRpbmdzKHN0b3JlLCB1cmwuZ2V0KCksIGV4Y2x1ZGVIb3N0cy5nZXQoKSk7
CiB9CiAKIEhSRVNVTFQgV2ViS2l0QnJvd3NlcldpbmRvdzo6aW5pdCgpCkBAIC0xMjAsMTQgKzE0
OCwxNCBAQCBIV05EIFdlYktpdEJyb3dzZXJXaW5kb3c6Omh3bmQoKQogSFJFU1VMVCBXZWJLaXRC
cm93c2VyV2luZG93Ojpsb2FkVVJMKGNvbnN0IEJTVFImIHVybCkKIHsKICAgICBhdXRvIHBhZ2Ug
PSBXS1ZpZXdHZXRQYWdlKG1fdmlldy5nZXQoKSk7Ci0gICAgV0tQYWdlTG9hZFVSTChwYWdlLCBj
cmVhdGVXS1VSTCh1cmwpLmdldCgpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHBhZ2UsIGNyZWF0ZVdL
VVJMKF9ic3RyX3QodXJsKSkuZ2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBIUkVTVUxU
IFdlYktpdEJyb3dzZXJXaW5kb3c6OmxvYWRIVE1MU3RyaW5nKGNvbnN0IEJTVFImIHN0cikKIHsK
ICAgICBhdXRvIHBhZ2UgPSBXS1ZpZXdHZXRQYWdlKG1fdmlldy5nZXQoKSk7Ci0gICAgYXV0byB1
cmwgPSBjcmVhdGVXS1VSTChMImFib3V0OiIpOworICAgIGF1dG8gdXJsID0gY3JlYXRlV0tVUkwo
X2JzdHJfdChMImFib3V0OiIpKTsKICAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZyhwYWdlLCBjcmVh
dGVXS1N0cmluZyhfYnN0cl90KHN0cikpLmdldCgpLCB1cmwuZ2V0KCkpOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMTczLDYgKzIwMSwxMyBAQCB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6Omxh
dW5jaEluc3BlY3RvcigpCiAgICAgV0tJbnNwZWN0b3JTaG93KGluc3BlY3Rvcik7CiB9CiAKK3Zv
aWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6b3BlblByb3h5U2V0dGluZ3MoKQoreworICAgIGlmIChh
c2tQcm94eVNldHRpbmdzKG1faE1haW5XbmQsIG1fcHJveHkpKQorICAgICAgICB1cGRhdGVQcm94
eVNldHRpbmdzKCk7CisKK30KKwogdm9pZCBXZWJLaXRCcm93c2VyV2luZG93OjpzZXRVc2VyQWdl
bnQoX2JzdHJfdCYgY3VzdG9tVUFTdHJpbmcpCiB7CiAgICAgYXV0byBwYWdlID0gV0tWaWV3R2V0
UGFnZShtX3ZpZXcuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dl
YktpdEJyb3dzZXJXaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2Vy
V2luZG93LmgKaW5kZXggNDI2NmU3YzY0YTguLjAwM2IzNWNhOWQ2IDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgorI2luY2x1ZGUgIkNvbW1vbi5o
IgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJL
aXQyX0MuaD4KIApAQCAtNDYsNiArNDcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwcmludCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgbGF1bmNoSW5zcGVjdG9yKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBvcGVuUHJveHlTZXR0aW5ncygpIG92ZXJyaWRlOwogCiAgICAgX2JzdHJfdCB1c2VyQWdlbnQo
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChfYnN0cl90Jikgb3ZlcnJpZGU7CkBA
IC01NywxMSArNTksMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHpvb21JbigpIG92ZXJyaWRlOwog
ICAgIHZvaWQgem9vbU91dCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCB1cGRhdGVQcm94eVNldHRp
bmdzKCk7CisKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlZiwg
V0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRDb21taXROYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVS
ZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV0tQYWdlUmVmLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmLCBjb25z
dCB2b2lkKik7CiAKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IG1fY29udGV4dDsKICAg
ICBXS1JldGFpblB0cjxXS1ZpZXdSZWY+IG1fdmlldzsKICAgICBIV05EIG1faE1haW5XbmQgeyBu
dWxscHRyIH07CiAgICAgSFdORCBtX3VybEJhclduZCB7IG51bGxwdHIgfTsKKyAgICBQcm94eVNl
dHRpbmdzIG1fcHJveHkgeyB9OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dp
bi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9X
ZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcAppbmRleCBkM2Y4OGJhM2ZiMy4uZjZmY2Q1Nzk0
ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2Vy
V2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0TGVnYWN5QnJvd3Nl
cldpbmRvdy5jcHAKQEAgLTQzMCw2ICs0MzAsMTAgQEAgdm9pZCBXZWJLaXRMZWdhY3lCcm93c2Vy
V2luZG93OjpsYXVuY2hJbnNwZWN0b3IoKQogICAgIG1faW5zcGVjdG9yLT5zaG93KCk7CiB9CiAK
K3ZvaWQgV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdzo6b3BlblByb3h5U2V0dGluZ3MoKQorewor
fQorCiB2b2lkIFdlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3c6Om5hdmlnYXRlRm9yd2FyZE9yQmFj
a3dhcmQoVUlOVCBtZW51SUQpCiB7CiAgICAgaWYgKCFtX3dlYlZpZXcpCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5oIGIvVG9vbHMv
TWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3cuaAppbmRleCA3MTFlNzQ1
Mzc4Zi4uZWNlNGVhZjI0MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJL
aXRMZWdhY3lCcm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktp
dExlZ2FjeUJyb3dzZXJXaW5kb3cuaApAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBzaG93TGFzdFZpc2l0ZWRTaXRlcyhJV2ViVmlldyYpOwogICAgIHZvaWQgbGF1bmNoSW5z
cGVjdG9yKCk7CisgICAgdm9pZCBvcGVuUHJveHlTZXR0aW5ncygpOwogICAgIHZvaWQgbmF2aWdh
dGVGb3J3YXJkT3JCYWNrd2FyZChVSU5UIG1lbnVJRCk7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvSGlz
dG9yeShVSU5UIG1lbnVJRCk7CiAgICAgdm9pZCBleGl0UHJvZ3JhbSgpOwo=
</data>
<flag name="review"
          id="370645"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354367</attachid>
            <date>2018-11-09 12:04:44 -0800</date>
            <delta_ts>2018-11-09 12:43:33 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>189053.diff</filename>
            <type>text/plain</type>
            <size>51248</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNWU0YTFhNmMzMi4uYmEwMTU5YWQ5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxOC0xMS0wOCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdW1dlYktpdF0gSW1wbGVtZW50IFByb3h5IGNvbmZpZ3Vy
YXRpb24gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAg
ICBBZGRlZCBBUEkgdG8gc2V0IHByb3h5IGZyb20gdGhlIGFwcC4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSdzIG5vIGJlaGF2aW91ciBjaGFuZ2UgaW4gV2ViQ29yZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsQ29udGV4dDo6c2V0UHJveHlTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94eVNldHRpbmdzIGNvbnN0KToKKwogMjAx
OC0xMS0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAg
IFNpbXBsaWZ5IG1hY3JvcyBpbiBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggYWE5ZTQyOGUz
OTIuLmUyNGYzYTU4ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTYwLDYgKzYwLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tpZUphcjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDdXJsUHJveHlTZXR0aW5nczsKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU291cE5ldHdvcmtTZXNzaW9uOwpAQCAt
MTMzLDcgKzEzNCw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENvb2tpZUphckN1cmwmIGNvb2tp
ZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVN0b3JhZ2U7IH07CiAgICAgQ29va2ll
SmFyREImIGNvb2tpZURhdGFiYXNlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDb29raWVEYXRhYmFzZShVbmlxdWVSZWY8Q29va2llSmFyREI+JiYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llRGF0YWJhc2UoVW5pcXVlUmVmPENvb2tpZUphckRC
PiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJveHlTZXR0aW5ncyhDdXJsUHJv
eHlTZXR0aW5ncyYmKTsKIAogICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENvbnRleHQuaAppbmRleCAzNzMyNjAxNzliOC4uODA1MmI4MjhlZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHVibGljOgogCiAgICAgLy8gUHJveHkKICAgICBjb25zdCBDdXJsUHJveHlT
ZXR0aW5ncyYgcHJveHlTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlTZXR0aW5nczsg
fQotICAgIHZvaWQgc2V0UHJveHlTZXR0aW5ncyhjb25zdCBDdXJsUHJveHlTZXR0aW5ncyYgc2V0
dGluZ3MpIHsgbV9wcm94eVNldHRpbmdzID0gc2V0dGluZ3M7IH0KKyAgICB2b2lkIHNldFByb3h5
U2V0dGluZ3MoQ3VybFByb3h5U2V0dGluZ3MmJiBzZXR0aW5ncykgeyBtX3Byb3h5U2V0dGluZ3Mg
PSBXVEZNb3ZlKHNldHRpbmdzKTsgfQogICAgIHZvaWQgc2V0UHJveHlVc2VyUGFzcyhjb25zdCBT
dHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsgbV9wcm94eVNldHRpbmdzLnNl
dFVzZXJQYXNzKHVzZXIsIHBhc3N3b3JkKTsgfQogICAgIHZvaWQgc2V0RGVmYXVsdFByb3h5QXV0
aE1ldGhvZCgpIHsgbV9wcm94eVNldHRpbmdzLnNldERlZmF1bHRBdXRoTWV0aG9kKCk7IH0KICAg
ICB2b2lkIHNldFByb3h5QXV0aE1ldGhvZChsb25nIGF1dGhNZXRob2QpIHsgbV9wcm94eVNldHRp
bmdzLnNldEF1dGhNZXRob2QoYXV0aE1ldGhvZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmgKaW5kZXggYTYx
YzZlYzIyNjIuLjI3YTcwMjEwZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdzIHsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIE1vZGUgeworICAgIGVudW0gY2xhc3MgTW9kZSA6IHVpbnQ4X3Qg
ewogICAgICAgICBEZWZhdWx0LAogICAgICAgICBOb1Byb3h5LAogICAgICAgICBDdXN0b20KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlMTEwYWQxNjQ5MS4uYjA3MDgz
YmE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTcxLDcgKzcx
LDcgQEAgTmV0d29ya2luZ0NvbnRleHQqIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZURhdGFiYXNlKFVuaXF1ZVJlZjxDb29raWVKYXJEQj4mJiBj
b29raWVEYXRhYmFzZSkgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29r
aWVEYXRhYmFzZShVbmlxdWVSZWY8Q29va2llSmFyREI+JiYgY29va2llRGF0YWJhc2UpCiB7CiAg
ICAgbV9jb29raWVEYXRhYmFzZSA9IFdURk1vdmUoY29va2llRGF0YWJhc2UpOwogfQpAQCAtMTkz
LDYgKzE5MywxMSBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgogICAgIHJldHVybiBjb29raWVT
dG9yYWdlKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKnRoaXMsIGhlYWRlckZpZWxk
UHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZp
ZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHku
cGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAordm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByb3h5U2V0dGluZ3MoQ3VybFByb3h5U2V0dGlu
Z3MmJiBwcm94eVNldHRpbmdzKQoreworICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zZXRQ
cm94eVNldHRpbmdzKFdURk1vdmUocHJveHlTZXR0aW5ncykpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ1VSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmIxMmRmNmVlZGMu
LjkwODVkYzNlYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTExLTA4ICBCYXN1
a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF1bV2Vi
S2l0XSBJbXBsZW1lbnQgUHJveHkgY29uZmlndXJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwNTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZGVkIHByb3h5IGNvbmZpZ3VyYXRpb24g
QVBJIHRvIFdlYnNpdGVEYXRhU3RvcmUuIFRocmVlIEFQSSB3ZXJlIGFkZGVkIGluIFdLV2Vic2l0
ZURhdGFTdG9yZVJlZkN1cmwuaDoKKyAgICAgICAgLSBXS1dlYnNpdGVEYXRhU3RvcmVFbmFibGVE
ZWZhdWx0TmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmKQorICAgICAg
ICAtIFdLV2Vic2l0ZURhdGFTdG9yZUVuYWJsZUN1c3RvbU5ldHdvcmtQcm94eVNldHRpbmdzKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiwgV0tVUkxSZWYsIFdLU3RyaW5nUmVmIGlnbm9yZUhvc3RzKQor
ICAgICAgICAtIFdLV2Vic2l0ZURhdGFTdG9yZURpc2FibGVOZXR3b3JrUHJveHlTZXR0aW5ncyhX
S1dlYnNpdGVEYXRhU3RvcmVSZWYpCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpzZXROZXR3b3JrUHJveHlTZXR0aW5ncyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3Vy
bC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dEN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24pOgorICAg
ICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnND
dXJsLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3VybFByb3h5U2V0dGluZ3M+
OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZkN1cmwuY3BwOgorICAgICAgICAgIENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwLgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlRW5hYmxlRGVmYXVsdE5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZUVuYWJsZUN1c3RvbU5ldHdvcmtQcm94eVNldHRpbmdzKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZURpc2FibGVOZXR3b3JrUHJveHlTZXR0aW5ncyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5o
OgorICAgICAgICAgIENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6bmV0d29ya1By
b3h5U2V0dGluZ3MgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9jdXJs
L1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcDoKKyAgICAgICAgICBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcC4KKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXRQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0TmV0d29ya1Byb3h5U2V0dGluZ3Mp
OgorCiAyMDE4LTExLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBTdXBwb3J0IGRlbGV0aW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgbGluZSBhbmQg
dG8gdGhlIGVuZCBvZiB0aGUgbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGJiMGNlODM1ZmIyLi5iMmEyM2ZlNTE4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNTksNiArNTks
NyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENlcnRp
ZmljYXRlSW5mbzsKK2NsYXNzIEN1cmxQcm94eVNldHRpbmdzOwogY2xhc3MgRG93bmxvYWRJRDsK
IGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKQEAg
LTMwMiw2ICszMDMsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5ldHdvcmtQcm94eVNldHRp
bmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwogI2VuZGlmCiAK
KyNpZiBVU0UoQ1VSTCkKKyAgICB2b2lkIHNldE5ldHdvcmtQcm94eVNldHRpbmdzKFBBTDo6U2Vz
c2lvbklELCBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYmKTsKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHN0YXRpYyB2b2lkIHNldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaWRlbnRpZmllcik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDdmYmIwNzQ5NDQ5Li5jNDJmNWExOWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zMyw2ICsz
MywxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
U2V0TmV0d29ya1Byb3h5U2V0dGluZ3Moc3RydWN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlT
ZXR0aW5ncyBzZXR0aW5ncykKICNlbmRpZgogCisjaWYgVVNFKENVUkwpCisgICAgU2V0TmV0d29y
a1Byb3h5U2V0dGluZ3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpDdXJsUHJv
eHlTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRpZgorCiAgICAgQ2xlYXJDYWNoZWRDcmVkZW50aWFs
cygpCiAKICAgICBBZGRXZWJzaXRlRGF0YVN0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCBlY2U1NTE3NmRiYy4uYTJkZmJiOGI5NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTMzLDYgKzMzLDExIEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnNDRi5oIgogI2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdz
Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlcjsKQEAgLTUxLDYgKzU2LDkgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyOwogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI7
CiAjZW5kaWYKKyNpZiBVU0UoQ1VSTCkKKyAgICBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyBw
cm94eVNldHRpbmdzOworI2VuZGlmCiB9OwogCiBpbmxpbmUgdm9pZCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAg
LTYzLDYgKzcxLDkgQEAgaW5saW5lIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnMKICAgICBlbmNvZGVyIDw8IHNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IHNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICNlbmRpZgorI2lmIFVTRShDVVJMKQorICAg
IGVuY29kZXIgPDwgcHJveHlTZXR0aW5nczsKKyNlbmRpZgogfQogCiBpbmxpbmUgc3RkOjpvcHRp
b25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC05Niw3ICsx
MDcsMTQgQEAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXIKICAgICBpZiAoIXNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgotICAgIAorCisjaWYgVVNFKENVUkwpCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpD
dXJsUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKKyAgICBkZWNvZGVyID4+IHByb3h5U2V0
dGluZ3M7CisgICAgaWYgKCFwcm94eVNldHRpbmdzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworI2VuZGlmCisKICAgICByZXR1cm4ge3sKICAgICAgICAgc2Vzc2lvbklECiAgICAgICAg
ICwgV1RGTW92ZSgqYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKQpAQCAtMTA1LDYgKzEyMyw5IEBA
IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyCiAgICAgICAgICwgV1RGTW92ZShwcm94eUNvbmZpZ3Vy
YXRpb24pCiAgICAgICAgICwgV1RGTW92ZSgqc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKQogICAgICAgICAsIFdURk1vdmUoKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRp
ZmllcikKKyNlbmRpZgorI2lmIFVTRShDVVJMKQorICAgICAgICAsIFdURk1vdmUoKnByb3h5U2V0
dGluZ3MpCiAjZW5kaWYKICAgICB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggMTkxMzFjNjcz
MjIuLmU3YTNiNDdjOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtMjYsMjAgKzI2LDExIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKIAotI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCi0jaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9DdXJsQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05Miw0ICs4Mywx
MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9C
YWNrZ3JvdW5kKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OkN1cmxQcm94eVNldHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRQcm94eVNl
dHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAKaW5k
ZXggNWQzYTY2ZGQxMGIuLmZhNjhiNmViN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcApAQCAtMjcsNiAr
MjcsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uQ3VybC5oIgogCiAjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1cmxD
b250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM1LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lv
bihwYXJhbWV0ZXJzLnNlc3Npb25JRCkKIHsKLQorICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
LnNldFByb3h5U2V0dGluZ3MoV1RGTW92ZShwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MpKTsKIH0K
IAogTmV0d29ya1Nlc3Npb25DdXJsOjp+TmV0d29ya1Nlc3Npb25DdXJsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dEN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Q3VybC5jcHAKaW5kZXggNzM2ZWU5ODUxYmEuLjc1OTM5YjJlODM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHRDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJsLmNwcApAQCAtMjYsMTYgKzI2LDIzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKIAor
I2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVT
ZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCit2b2lkIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBh
dXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Np
b25JRDsKKyAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQorICAgICAgICByZXR1cm47CisKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVNlc3Npb24oc2Vzc2lvbklELCBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklE
KCkpKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtT
ZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cykpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggM2FlYjZhNGFiMDQuLjNk
ZDU2NDM3Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTQwLDYgKzQwLDggQEAgbGlz
dChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0
QXR0cmlidXRlcy5jcHAKIAorICAgIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZkN1cmwuY3BwCisKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAog
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCkBAIC00OCw2
ICs1MCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKIAorICAgIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9j
dXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcAorCiAgICAgVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAogCiAgICAgVUlQcm9jZXNzL3dpbi9QYWdlQ2xp
ZW50SW1wbC5jcHAKQEAgLTEwNSw2ICsxMDksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1NoYXJlZC91bml4IgogICAgICIke1dF
QktJVF9ESVJ9L1NoYXJlZC93aW4iCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9D
L2NhaXJvIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jdXJsIgogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy93aW4iCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9jcHAvd2luIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd2lu
IgpAQCAtMTk2LDYgKzIwMSw3IEBAIHNldChXZWJLaXRfRk9SV0FSRElOR19IRUFERVJTX0RJUkVD
VE9SSUVTCiAgICAgVUlQcm9jZXNzL0FQSS9DCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAKIAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9jdXJsCiAgICAgVUlQcm9jZXNzL0FQSS9DL3dpbgogCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBmNTA5MjE2MTZiMi4uNTk1OGRiMTE2M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00NSw2ICs0
NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNlbmRpZgogCisj
aWYgVVNFKENVUkwpCisjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNl
bmRSaWdodDsKQEAgLTQ0OSw2ICs0NTMsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudD4gewogfTsKICNlbmRpZgogCisjaWYg
VVNFKENVUkwpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkN1cmxQ
cm94eVNldHRpbmdzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkN1cmxQcm94eVNldHRpbmdzPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKyNlbmRpZgor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5k
ZXJsaW5lPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtODEzLDQgKzgy
NCwxNSBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpXb3JrZXJUeXBl
PiB7CiAgICAgPjsKIH07CiAKKyNpZiBVU0UoQ1VSTCkKK3RlbXBsYXRlIDw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M6Ok1v
ZGUsCisgICAgICAgIFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0LAor
ICAgICAgICBXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5nczo6TW9kZTo6Tm9Qcm94eSwKKyAgICAg
ICAgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbQorICAgID47Cit9Owor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKaW5kZXggMzY2NzZkMDNj
MWEuLjk4NGFhZjMwN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJsL1dl
YkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1
cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5m
by5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtMTI3LDQgKzEy
OCwzNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJiwgQ3JlZGVudGlhbCYpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEFy
Z3VtZW50Q29kZXI8Q3VybFByb3h5U2V0dGluZ3M+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgQ3VybFByb3h5U2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIGVuY29kZXIgPDwgc2V0
dGluZ3MubW9kZSgpOworICAgIGlmIChzZXR0aW5ncy5tb2RlKCkgIT0gQ3VybFByb3h5U2V0dGlu
Z3M6Ok1vZGU6OkN1c3RvbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZW5jb2RlciA8PCBzZXR0
aW5ncy51cmwoKTsKKyAgICBlbmNvZGVyIDw8IHNldHRpbmdzLmlnbm9yZUhvc3RzKCk7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8Q3VybFByb3h5U2V0dGluZ3M+IEFyZ3VtZW50Q29kZXI8Q3VybFByb3h5
U2V0dGluZ3M+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBDdXJsUHJveHlTZXR0
aW5nczo6TW9kZSBtb2RlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9kZSkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAobW9kZSAhPSBDdXJsUHJveHlTZXR0aW5n
czo6TW9kZTo6Q3VzdG9tKQorICAgICAgICByZXR1cm4gQ3VybFByb3h5U2V0dGluZ3MgeyBtb2Rl
IH07CisKKyAgICBVUkwgdXJsOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFN0cmluZyBpZ25vcmVIb3N0czsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlnbm9yZUhvc3RzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiBDdXJsUHJveHlTZXR0aW5ncyB7IFdURk1vdmUodXJsKSwgV1RG
TW92ZShpZ25vcmVIb3N0cykgfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzZGEwNTk3ODY0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dl
YnNpdGVEYXRhU3RvcmVSZWZDdXJsLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZD
dXJsLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUHJveHlTZXR0aW5ncy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUVuYWJsZURlZmF1bHROZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmKQoreworICAgIHRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3Mo
V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkRlZmF1bHQpKTsKK30KKwordm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVFbmFibGVDdXN0b21OZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1VSTFJlZiBwcm94eVVybCwgV0tTdHJpbmdS
ZWYgaWdub3JlSG9zdHMpCit7CisgICAgdG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXROZXR3b3JrUHJveHlTZXR0aW5ncyhXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5n
cyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHByb3h5VXJsKSksIHRv
V1RGU3RyaW5nKGlnbm9yZUhvc3RzKSkpOworfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURp
c2FibGVOZXR3b3JrUHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmKQoreworICAgIHRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0
TmV0d29ya1Byb3h5U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MoV2ViQ29yZTo6
Q3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6Ok5vUHJveHkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWZDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiYjI3YWE0
YTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3Vy
bC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlRW5hYmxlRGVmYXVsdE5ldHdvcmtQcm94eVNldHRpbmdzKFdLV2Vic2l0ZURhdGFTdG9yZVJl
Zik7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVFbmFibGVDdXN0b21OZXR3b3Jr
UHJveHlTZXR0aW5ncyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdLVVJMUmVmIHByb3h5VXJsLCBX
S1N0cmluZ1JlZiBpZ25vcmVIb3N0cyk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVEaXNhYmxlTmV0d29ya1Byb3h5U2V0dGluZ3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmKTsKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMWEyNTVi
ODk1NjIuLjBlYmUwYmJiODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTY2Nyw2ICsxNjY3LDEw
IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMoKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBw
YXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogI2VuZGlmCiAKKyNpZiBVU0UoQ1VSTCkKKyAgICBwbGF0Zm9ybVNldFBhcmFtZXRlcnMo
cGFyYW1ldGVycyk7CisjZW5kaWYKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggYmQ1NzkxM2QzOTkuLjk5ZWE2ODYzMTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CkBAIC00Niw2ICs0NiwxMCBAQAogI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+
CiAjZW5kaWYKIAorI2lmIFVTRShDVVJMKQorI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0
dGluZ3MuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIH0KQEAgLTE4Nyw3ICsxOTEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJveHlD
b25maWd1cmF0aW9uKENGRGljdGlvbmFyeVJlZiBjb25maWd1cmF0aW9uKSB7IG1fcHJveHlDb25m
aWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsgfQogICAgIENGRGljdGlvbmFyeVJlZiBwcm94eUNv
bmZpZ3VyYXRpb24oKSB7IHJldHVybiBtX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKTsgfQogI2Vu
ZGlmCi0gICAgCisKKyNpZiBVU0UoQ1VSTCkKKyAgICB2b2lkIHBsYXRmb3JtU2V0UGFyYW1ldGVy
cyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOworICAgIHZvaWQgc2V0TmV0d29ya1Byb3h5
U2V0dGluZ3MoV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MmJik7CisgICAgY29uc3QgV2ViQ29y
ZTo6Q3VybFByb3h5U2V0dGluZ3MmIG5ldHdvcmtQcm94eVNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9wcm94eVNldHRpbmdzOyB9CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIGFsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwogCiAjaWYgSEFWRShTRUNfS0VZX1BST1hZ
KQpAQCAtMjUyLDggKzI2MiwxMyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBtX2NmQ29va2llU3RvcmFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBtX3Byb3h5Q29uZmlndXJhdGlvbjsKICNlbmRpZgorCisjaWYgVVNFKENVUkwpCisg
ICAgV2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3MgbV9wcm94eVNldHRpbmdzOworI2VuZGlmCisK
ICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb2tpZT4gbV9wZW5kaW5nQ29va2llczsKLSAgICAKKwog
ICAgIFN0cmluZyBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsKICAgICBBbGxvd3NDZWxsdWxh
ckFjY2VzcyBtX2FsbG93c0NlbGx1bGFyQWNjZXNzIHsgQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Olll
cyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9j
dXJsL1dlYnNpdGVEYXRhU3RvcmVDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL2N1cmwvV2Vic2l0ZURhdGFTdG9yZUN1cmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOGI2YTBkMGFmNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL2N1cmwvV2Vic2l0ZURhdGFTdG9yZUN1
cmwuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0UGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5wcm94eVNldHRpbmdzID0gbV9wcm94eVNldHRpbmdzOworfQorCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldE5ldHdvcmtQcm94eVNldHRpbmdzKFdlYkNvcmU6OkN1cmxQ
cm94eVNldHRpbmdzJiYgcHJveHlTZXR0aW5ncykKK3sKKyAgICBtX3Byb3h5U2V0dGluZ3MgPSBX
VEZNb3ZlKHByb3h5U2V0dGluZ3MpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXROZXR3b3JrUHJveHlTZXR0aW5ncyhtX3Nl
c3Npb25JRCwgbV9wcm94eVNldHRpbmdzKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYjZjNzc1MzQwNC4uY2FlMjJhNmM5ZTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxOC0xMS0wOCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdW1dlYktpdF0gSW1wbGVtZW50IFByb3h5IGNvbmZpZ3Vy
YXRpb24gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg5MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAg
ICBBZGRlZCBQcm94eSBTZXR0aW5ncyBkaWFsb2cgdG8gY2FsbCBuZXdseSBhZGRlZCBBUEkuCisK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1p
bmlCcm93c2VyL3dpbi9Db21tb24uY3BwOgorICAgICAgICAoYXNrUHJveHlTZXR0aW5ncyk6Cisg
ICAgICAgIChhc2tDcmVkZW50aWFsKToKKyAgICAgICAgKGF1dGhEaWFsb2dQcm9jKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQ29tbW9uLmg6CisgICAgICAgICogTWluaUJy
b3dzZXIvd2luL0RpYWxvZ0hlbHBlci5oOiBBZGRlZC4KKyAgICAgICAgKERpYWxvZzo6cnVuKToK
KyAgICAgICAgKERpYWxvZzo6ZG9hbG9nUHJvYyk6CisgICAgICAgIChEaWFsb2c6OmhhbmRsZSk6
CisgICAgICAgIChEaWFsb2c6OnNldHVwKToKKyAgICAgICAgKERpYWxvZzo6dXBkYXRlKToKKyAg
ICAgICAgKERpYWxvZzo6dmFsaWRhdGUpOgorICAgICAgICAoRGlhbG9nOjp1cGRhdGVPa0J1dHRv
bik6CisgICAgICAgIChEaWFsb2c6OmNvbW1hbmQpOgorICAgICAgICAoRGlhbG9nOjpvayk6Cisg
ICAgICAgIChEaWFsb2c6OmNhbmNlbCk6CisgICAgICAgIChEaWFsb2c6OmNsb3NlKToKKyAgICAg
ICAgKERpYWxvZzo6aERsZyk6CisgICAgICAgIChEaWFsb2c6Oml0ZW0pOgorICAgICAgICAoRGlh
bG9nOjpzZXRFbmFibGVkKToKKyAgICAgICAgKERpYWxvZzo6c2V0VGV4dCk6CisgICAgICAgIChE
aWFsb2c6OmdldFRleHQpOgorICAgICAgICAoRGlhbG9nOjpnZXRUZXh0TGVuZ3RoKToKKyAgICAg
ICAgKERpYWxvZzo6UmFkaW9Hcm91cDo6UmFkaW9Hcm91cCk6CisgICAgICAgIChEaWFsb2c6OlJh
ZGlvR3JvdXA6OnNldCk6CisgICAgICAgIChEaWFsb2c6OlJhZGlvR3JvdXA6OmdldCk6CisgICAg
ICAgIChEaWFsb2c6OnJhZGlvR3JvdXApOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9NYWlu
V2luZG93LmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6OlduZFByb2MpOgorICAgICAgICAqIE1p
bmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYi5yYzoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93
aW4vTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9X
ZWJLaXRCcm93c2VyV2luZG93LmNwcDoKKyAgICAgICAgKGNyZWF0ZVdLVVJMKToKKyAgICAgICAg
KFdlYktpdEJyb3dzZXJXaW5kb3c6OldlYktpdEJyb3dzZXJXaW5kb3cpOgorICAgICAgICAoV2Vi
S2l0QnJvd3NlcldpbmRvdzo6dXBkYXRlUHJveHlTZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXRC
cm93c2VyV2luZG93Ojpsb2FkVVJMKToKKyAgICAgICAgKFdlYktpdEJyb3dzZXJXaW5kb3c6Omxv
YWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdlYktpdEJyb3dzZXJXaW5kb3c6Om9wZW5Qcm94eVNl
dHRpbmdzKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5o
OgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3c6Om9wZW5Qcm94eVNldHRpbmdz
KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5o
OgorCiAyMDE4LTExLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPdmVycmlkZSArW1VJS2V5Ym9hcmQgaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlXSBpbiBX
ZWJLaXRUZXN0UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvd2luL0Jyb3dzZXJXaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Ccm93
c2VyV2luZG93LmgKaW5kZXggOTFkN2IzOTQwOGUuLmE1MjIzN2ZjZGQ3IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlcldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3dpbi9Ccm93c2VyV2luZG93LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHByaW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsYXVuY2hJbnNwZWN0
b3IoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9wZW5Qcm94eVNldHRpbmdzKCkgPSAwOwogCiAg
ICAgdmlydHVhbCBfYnN0cl90IHVzZXJBZ2VudCgpID0gMDsKICAgICB2b2lkIHNldFVzZXJBZ2Vu
dChVSU5UIG1lbnVJRCk7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9u
LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwCmluZGV4IDk1NmYxMTUzMzAx
Li40ZDE2MTczODBhZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5j
cHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJzdGRhZnguaCIKICNpbmNsdWRlICJDb21tb24uaCIKIAorI2luY2x1ZGUg
IkRpYWxvZ0hlbHBlci5oIgogI2luY2x1ZGUgIk1pbmlCcm93c2VyTGliUmVzb3VyY2UuaCIKICNp
bmNsdWRlICJNaW5pQnJvd3NlclJlcGxhY2UuaCIKICNpbmNsdWRlIDxkYmdoZWxwLmg+CkBAIC0x
MTksNTQgKzEyMCwxMTUgQEAgdm9pZCBjcmVhdGVDcmFzaFJlcG9ydChFWENFUFRJT05fUE9JTlRF
UlMqIGV4Y2VwdGlvblBvaW50ZXJzKQogICAgIH0KIH0KIAotc3RydWN0IEF1dGhEaWFsb2dEYXRh
IHsKLSAgICBjb25zdCBzdGQ6OndzdHJpbmcmIHJlYWxtOwotICAgIENyZWRlbnRpYWwgY3JlZGVu
dGlhbDsKLX07Ci0KLXN0YXRpYyBJTlRfUFRSIENBTExCQUNLIGF1dGhEaWFsb2dQcm9jKEhXTkQg
aERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorYm9vbCBh
c2tQcm94eVNldHRpbmdzKEhXTkQgaHduZCwgUHJveHlTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0g
ICAgc3dpdGNoIChtZXNzYWdlKSB7Ci0gICAgY2FzZSBXTV9JTklURElBTE9HOiB7Ci0gICAgICAg
IFNldFdpbmRvd0xvbmdQdHIoaERsZywgRFdMUF9VU0VSLCBsUGFyYW0pOwotICAgICAgICBBdXRo
RGlhbG9nRGF0YSYgZGF0YSA9ICpyZWludGVycHJldF9jYXN0PEF1dGhEaWFsb2dEYXRhKj4obFBh
cmFtKTsKLSAgICAgICAgU2V0RGxnSXRlbVRleHQoaERsZywgSURDX1JFQUxNX1RFWFQsIF9ic3Ry
X3QoZGF0YS5yZWFsbS5jX3N0cigpKSk7Ci0gICAgICAgIHJldHVybiBUUlVFOwotICAgIH0KLSAg
ICBjYXNlIFdNX0NPTU1BTkQ6IHsKLSAgICAgICAgQXV0aERpYWxvZ0RhdGEmIGRhdGEgPSAqcmVp
bnRlcnByZXRfY2FzdDxBdXRoRGlhbG9nRGF0YSo+KEdldFdpbmRvd0xvbmdQdHIoaERsZywgRFdM
UF9VU0VSKSk7Ci0gICAgICAgIGludCB3bUlkID0gTE9XT1JEKHdQYXJhbSk7Ci0gICAgICAgIHN3
aXRjaCAod21JZCkgewotICAgICAgICBjYXNlIElET0s6IHsKLSAgICAgICAgICAgIFRDSEFSIHN0
clsyNTZdOwotICAgICAgICAgICAgaW50IHN0ckxlbiA9IEdldFdpbmRvd1RleHQoR2V0RGxnSXRl
bShoRGxnLCBJRENfQVVUSF9VU0VSKSwgc3RyLCBXVEZfQVJSQVlfTEVOR1RIKHN0ciktMSk7Ci0g
ICAgICAgICAgICBzdHJbc3RyTGVuXSA9IDA7Ci0gICAgICAgICAgICBkYXRhLmNyZWRlbnRpYWwu
dXNlcm5hbWUgPSBzdHI7Ci0KLSAgICAgICAgICAgIHN0ckxlbiA9IEdldFdpbmRvd1RleHQoR2V0
RGxnSXRlbShoRGxnLCBJRENfQVVUSF9QQVNTV09SRCksIHN0ciwgV1RGX0FSUkFZX0xFTkdUSChz
dHIpLTEpOwotICAgICAgICAgICAgc3RyW3N0ckxlbl0gPSAwOwotICAgICAgICAgICAgZGF0YS5j
cmVkZW50aWFsLnBhc3N3b3JkID0gc3RyOwotCi0gICAgICAgICAgICBFbmREaWFsb2coaERsZywg
dHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICBjbGFzcyBQcm94eURpYWxvZyA6
IHB1YmxpYyBEaWFsb2cgeworICAgIHB1YmxpYzoKKyAgICAgICAgUHJveHlEaWFsb2coUHJveHlT
ZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgICAgICAgICA6IHNldHRpbmdzIHsgc2V0dGluZ3MgfQor
ICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBJRENBTkNFTDoKLSAgICAgICAgICAg
IEVuZERpYWxvZyhoRGxnLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gVFJVRTsKKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgUHJveHlTZXR0aW5ncyYgc2V0dGluZ3M7CisKKyAgICAgICAg
dm9pZCBzZXR1cCgpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gY29tbWFuZCA9
IGNvbW1hbmRGb3JQcm94eUNob2ljZSgpOworICAgICAgICAgICAgcHJveHlDaG9pY2UoKS5zZXQo
Y29tbWFuZCk7CisgICAgICAgICAgICBzZXRUZXh0KElEQ19QUk9YWV9VUkwsIHNldHRpbmdzLnVy
bCk7CisgICAgICAgICAgICBzZXRUZXh0KElEQ19QUk9YWV9FWENMVURFLCBzZXR0aW5ncy5leGNs
dWRlSG9zdHMpOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIEZBTFNFOworCisgICAgICAgIHZvaWQgb2soKSBmaW5hbAorICAgICAgICB7CisgICAg
ICAgICAgICBzZXR0aW5ncy51cmwgPSBnZXRUZXh0KElEQ19QUk9YWV9VUkwpOworICAgICAgICAg
ICAgc2V0dGluZ3MuZXhjbHVkZUhvc3RzID0gZ2V0VGV4dChJRENfUFJPWFlfRVhDTFVERSk7Cisg
ICAgICAgICAgICB1cGRhdGVQcm94eUNob2ljZShwcm94eUNob2ljZSgpLmdldCgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgdmFsaWRhdGUoKSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBib29sIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHByb3h5Q2hvaWNlKCku
Z2V0KCkgPT0gSURDX1BST1hZX0NVU1RPTSkgeworICAgICAgICAgICAgICAgIHNldEVuYWJsZWQo
SURDX1BST1hZX1VSTCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlZChJRENfUFJP
WFlfRVhDTFVERSwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWdldFRleHRMZW5ndGgo
SURDX1BST1hZX1VSTCkpCisgICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNldEVuYWJsZWQoSURDX1BST1hZX1VS
TCwgZmFsc2UpOworICAgICAgICAgICAgICAgIHNldEVuYWJsZWQoSURDX1BST1hZX0VYQ0xVREUs
IGZhbHNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHZhbGlkOworICAg
ICAgICB9CisKKyAgICAgICAgUmFkaW9Hcm91cCBwcm94eUNob2ljZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiByYWRpb0dyb3VwKElEQ19QUk9YWV9ERUZBVUxULCBJRENfUFJPWFlf
RElTQUJMRSk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgY29tbWFuZEZvclByb3h5Q2hvaWNl
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5lbmFibGUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIElEQ19QUk9YWV9ESVNBQkxFOworICAgICAgICAgICAgaWYgKHNldHRp
bmdzLmN1c3RvbSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSURDX1BST1hZX0NVU1RPTTsKKyAg
ICAgICAgICAgIHJldHVybiBJRENfUFJPWFlfREVGQVVMVDsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgdXBkYXRlUHJveHlDaG9pY2UoaW50IGNvbW1hbmQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoY29tbWFuZCkgeworICAgICAgICAgICAgY2FzZSBJRENfUFJPWFlfREVGQVVM
VDoKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5lbmFibGUgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHNldHRpbmdzLmN1c3RvbSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBJRENfUFJPWFlfQ1VTVE9NOgorICAgICAgICAgICAgICAgIHNldHRpbmdz
LmVuYWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3MuY3VzdG9tID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSURDX1BST1hZX0RJU0FC
TEU6CisgICAgICAgICAgICAgICAgc2V0dGluZ3MuZW5hYmxlID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgc2V0dGluZ3MuY3VzdG9tID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfTsKKworICAgIFByb3h5RGlhbG9nIGRpYWxvZyB7IHNldHRpbmdz
IH07CisgICAgcmV0dXJuIGRpYWxvZy5ydW4oaEluc3QsIGh3bmQsIElERF9QUk9YWSk7CiB9CiAK
IHN0ZDo6b3B0aW9uYWw8Q3JlZGVudGlhbD4gYXNrQ3JlZGVudGlhbChIV05EIGh3bmQsIGNvbnN0
IHN0ZDo6d3N0cmluZyYgcmVhbG0pCiB7Ci0gICAgQXV0aERpYWxvZ0RhdGEgZGF0YSB7IHJlYWxt
IH07Ci0gICAgYXV0byByZXN1bHQgPSBEaWFsb2dCb3hQYXJhbShoSW5zdCwgTUFLRUlOVFJFU09V
UkNFKElERF9BVVRIKSwgaHduZCwgYXV0aERpYWxvZ1Byb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBB
UkFNPigmZGF0YSkpOwotICAgIGlmIChyZXN1bHQgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gZGF0YS5jcmVkZW50aWFsOworICAgIHN0cnVjdCBBdXRoRGlh
bG9nIDogcHVibGljIERpYWxvZyB7CisgICAgICAgIHN0ZDo6d3N0cmluZyByZWFsbTsKKyAgICAg
ICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lk
IHNldHVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0VGV4dChJRENfUkVBTE1fVEVYVCwg
cmVhbG0pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBvaygpIGZpbmFsCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNyZWRlbnRpYWwudXNlcm5hbWUgPSBnZXRUZXh0KElEQ19BVVRIX1VTRVIp
OworICAgICAgICAgICAgY3JlZGVudGlhbC5wYXNzd29yZCA9IGdldFRleHQoSURDX0FVVEhfUEFT
U1dPUkQpOworICAgICAgICB9CisgICAgfTsKKworICAgIEF1dGhEaWFsb2cgZGlhbG9nOworICAg
IGRpYWxvZy5yZWFsbSA9IHJlYWxtOworCisgICAgaWYgKGRpYWxvZy5ydW4oaEluc3QsIGh3bmQs
IElERF9BVVRIKSkKKyAgICAgICAgcmV0dXJuIGRpYWxvZy5jcmVkZW50aWFsOworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIENvbW1hbmRMaW5lT3B0aW9ucyBwYXJzZUNvbW1hbmRMaW5l
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaCBiL1Rvb2xzL01p
bmlCcm93c2VyL3dpbi9Db21tb24uaAppbmRleCA3MGE4NGM0ZTJjYS4uMTViYzRkZGNmMmMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci93aW4vQ29tbW9uLmgKQEAgLTUxLDExICs1MSwxOSBAQCBzdHJ1Y3QgQ3JlZGVudGlh
bCB7CiAgICAgc3RkOjp3c3RyaW5nIHBhc3N3b3JkOwogfTsKIAorc3RydWN0IFByb3h5U2V0dGlu
Z3MgeworICAgIGJvb2wgZW5hYmxlIHsgdHJ1ZSB9OworICAgIGJvb2wgY3VzdG9tIHsgZmFsc2Ug
fTsKKyAgICBzdGQ6OndzdHJpbmcgdXJsOworICAgIHN0ZDo6d3N0cmluZyBleGNsdWRlSG9zdHM7
Cit9OworCiB2b2lkIGNvbXB1dGVGdWxsRGVza3RvcEZyYW1lKCk7CiBib29sIGdldEFwcERhdGFG
b2xkZXIoX2JzdHJfdCYgZGlyZWN0b3J5KTsKIENvbW1hbmRMaW5lT3B0aW9ucyBwYXJzZUNvbW1h
bmRMaW5lKCk7CiB2b2lkIGNyZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyopOwog
c3RkOjpvcHRpb25hbDxDcmVkZW50aWFsPiBhc2tDcmVkZW50aWFsKEhXTkQsIGNvbnN0IHN0ZDo6
d3N0cmluZyYgcmVhbG0pOworYm9vbCBhc2tQcm94eVNldHRpbmdzKEhXTkQsIFByb3h5U2V0dGlu
Z3MmKTsKIAogZXh0ZXJuIEhJTlNUQU5DRSBoSW5zdDsKIGV4dGVybiBQT0lOVCBzX3dpbmRvd1Bv
c2l0aW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0RpYWxvZ0hlbHBlci5o
IGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0RpYWxvZ0hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOTNkZjQ3MjdiNwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9EaWFsb2dIZWxwZXIuaApAQCAtMCwwICsxLDE1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgInN0ZGFmeC5oIgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKK2NsYXNzIERpYWxvZyB7CitwdWJsaWM6CisgICAgYm9vbCBydW4oSElOU1RBTkNF
IGhJbnN0LCBIV05EIGh3bmQsIGludCBkaWFsb2dJZCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gRGlhbG9nQm94UGFyYW0oaEluc3QsIE1BS0VJTlRSRVNPVVJDRShkaWFsb2dJZCksIGh3
bmQsIGRvYWxvZ1Byb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPih0aGlzKSk7CisgICAgICAg
IHJldHVybiAocmVzdWx0ID4gMCk7CisgICAgfQorCisgICAgc3RhdGljIElOVF9QVFIgQ0FMTEJB
Q0sgZG9hbG9nUHJvYyhIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKKyAgICB7CisgICAgICAgIGlmIChtZXNzYWdlID09IFdNX0lOSVRESUFMT0cp
CisgICAgICAgICAgICBTZXRXaW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNFUiwgbFBhcmFtKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbFBhcmFtID0gR2V0V2luZG93TG9uZ1B0cihoRGxn
LCBEV0xQX1VTRVIpOworCisgICAgICAgIGF1dG8qIGRpYWxvZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
RGlhbG9nKj4obFBhcmFtKTsKKyAgICAgICAgcmV0dXJuIGRpYWxvZy0+aGFuZGxlKGhEbGcsIG1l
c3NhZ2UsIHdQYXJhbSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSU5UX1BUUiBoYW5kbGUo
SFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0pCisgICAgeworICAgICAgICBz
d2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICAgICAgY2FzZSBXTV9JTklURElBTE9HOiB7CisgICAgICAg
ICAgICBtX2hEbGcgPSBoRGxnOworICAgICAgICAgICAgc2V0dXAoKTsKKyAgICAgICAgICAgIHVw
ZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBXTV9DT01NQU5EOgorICAgICAgICAgICAgaW50IHdtSWQgPSBMT1dPUkQod1BhcmFtKTsKKyAg
ICAgICAgICAgIHN3aXRjaCAod21JZCkgeworICAgICAgICAgICAgY2FzZSBJRE9LOgorICAgICAg
ICAgICAgICAgIG9rKCk7CisgICAgICAgICAgICAgICAgY2xvc2UodHJ1ZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICAgICBjYXNlIElEQ0FOQ0VMOgorICAgICAgICAg
ICAgICAgIGNhbmNlbCgpOworICAgICAgICAgICAgICAgIGNsb3NlKGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgYXV0byBoYW5kbGVkID0gY29tbWFuZCh3bUlkKTsKKyAgICAgICAgICAgICAgICB1cGRhdGUo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlZDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNl
dHVwKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZSgpIHsgdXBkYXRlT2tCdXR0b24odmFs
aWRhdGUoKSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGUoKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU9rQnV0dG9uKGJvb2wgaXNWYWxpZCkgeyBzZXRFbmFi
bGVkKElET0ssIGlzVmFsaWQpOyB9CisgICAgdmlydHVhbCBib29sIGNvbW1hbmQoaW50IHdtSWQp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG9rKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGNhbmNlbCgpIHsgfQorCisgICAgdm9pZCBjbG9zZShib29sIHN1Y2Nlc3MpIHsgRW5k
RGlhbG9nKG1faERsZywgc3VjY2Vzcyk7IH0KKworICAgIEhXTkQgaERsZygpIHsgcmV0dXJuIG1f
aERsZzsgfQorCisgICAgSFdORCBpdGVtKGludCBpdGVtSWQpIHsgcmV0dXJuIEdldERsZ0l0ZW0o
bV9oRGxnLCBpdGVtSWQpOyB9CisKKyAgICB2b2lkIHNldEVuYWJsZWQoaW50IGl0ZW1JZCwgYm9v
bCBlbmFibGVkKQorICAgIHsKKyAgICAgICAgRW5hYmxlV2luZG93KGl0ZW0oaXRlbUlkKSwgZW5h
YmxlZCk7CisgICAgfQorCisgICAgdm9pZCBzZXRUZXh0KGludCBpdGVtSWQsIGNvbnN0IHN0ZDo6
d3N0cmluZyYgc3RyKQorICAgIHsKKyAgICAgICAgU2V0RGxnSXRlbVRleHQobV9oRGxnLCBpdGVt
SWQsIF9ic3RyX3Qoc3RyLmNfc3RyKCkpKTsKKyAgICB9CisKKyAgICBzdGQ6OndzdHJpbmcgZ2V0
VGV4dChpbnQgaXRlbUlkKQorICAgIHsKKyAgICAgICAgYXV0byBsZW5ndGggPSBnZXRUZXh0TGVu
Z3RoKGl0ZW1JZCk7CisgICAgICAgIHN0ZDo6dmVjdG9yPFRDSEFSPiBidWZmZXIobGVuZ3RoICsg
MSwgMCk7CisgICAgICAgIEdldFdpbmRvd1RleHQoaXRlbShpdGVtSWQpLCBidWZmZXIuZGF0YSgp
LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gc3RkOjp3c3RyaW5nIHsgYnVmZmVyLmRhdGEoKSB9
OworICAgIH0KKworICAgIGludCBnZXRUZXh0TGVuZ3RoKGludCBpdGVtSWQpCisgICAgeworICAg
ICAgICByZXR1cm4gR2V0V2luZG93VGV4dExlbmd0aChpdGVtKGl0ZW1JZCkpOworICAgIH0KKwor
ICAgIGNsYXNzIFJhZGlvR3JvdXAgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmFkaW9Hcm91cChE
aWFsb2cmIGRpYWxvZywgaW50IGZpcnN0LCBpbnQgbGFzdCkKKyAgICAgICAgICAgIDogbV9kaWFs
b2coZGlhbG9nKQorICAgICAgICAgICAgLCBtX2ZpcnN0KGZpcnN0KQorICAgICAgICAgICAgLCBt
X2xhc3QobGFzdCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXQoaW50
IGl0ZW0pCisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrUmFkaW9CdXR0b24obV9kaWFsb2cu
aERsZygpLCBtX2ZpcnN0LCBtX2xhc3QsIGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgaW50
IGdldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGlkID0gbV9maXJzdDsgaWQg
PD0gbV9sYXN0OyBpZCsrKSB7CisgICAgICAgICAgICAgICAgaWYgKElzRGxnQnV0dG9uQ2hlY2tl
ZChtX2RpYWxvZy5oRGxnKCksIGlkKSA9PSBCU1RfQ0hFQ0tFRCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIERpYWxvZyYgbV9kaWFsb2c7CisgICAgICAg
IGludCBtX2ZpcnN0OworICAgICAgICBpbnQgbV9sYXN0OworICAgIH07CisKKyAgICBSYWRpb0dy
b3VwIHJhZGlvR3JvdXAoaW50IGZpcnN0LCBpbnQgbGFzdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBSYWRpb0dyb3VwKCp0aGlzLCBmaXJzdCwgbGFzdCk7CisgICAgfQorCisgICAgSFdORCBtX2hE
bGcgeyB9OworfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93
LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmNwcAppbmRleCBmOTA1Mjhj
NDY1ZC4uN2Y0YmRiNDI3ZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NYWlu
V2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5jcHAKQEAg
LTIxMCw2ICsyMTAsOSBAQCBMUkVTVUxUIENBTExCQUNLIE1haW5XaW5kb3c6OlduZFByb2MoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQQogICAgICAgICBjYXNlIElE
TV9XRUJfSU5TUEVDVE9SOgogICAgICAgICAgICAgdGhpc1dpbmRvdy0+YnJvd3NlcldpbmRvdygp
LT5sYXVuY2hJbnNwZWN0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElE
TV9QUk9YWV9TRVRUSU5HUzoKKyAgICAgICAgICAgIHRoaXNXaW5kb3ctPmJyb3dzZXJXaW5kb3co
KS0+b3BlblByb3h5U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IElETV9DQUNIRVM6CiAgICAgICAgICAgICBpZiAoITo6SXNXaW5kb3codGhpc1dpbmRvdy0+bV9o
Q2FjaGVXbmQpKSB7CiAgICAgICAgICAgICAgICAgdGhpc1dpbmRvdy0+bV9oQ2FjaGVXbmQgPSBD
cmVhdGVEaWFsb2dQYXJhbShoSW5zdCwgTUFLRUlOVFJFU09VUkNFKElERF9DQUNIRVMpLCBoV25k
LCBjYWNoZXNEaWFsb2dQcm9jLCByZWludGVycHJldF9jYXN0PExQQVJBTT4odGhpc1dpbmRvdy5n
ZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGli
LnJjIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliLnJjCmluZGV4IDBhN2E3
ZjU1YTg3Li5mZDAzN2NlMDRmMiAxMDA3NTUKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01p
bmlCcm93c2VyTGliLnJjCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3Nlckxp
Yi5yYwpAQCAtOTMsNiArOTMsNyBAQCBCRUdJTgogICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJB
VE9SDQogICAgICAgICAgICAgTUVOVUlURU0gIk90aGVyIiwgICAgICAgICAgICAgICAgICAgICAg
IElETV9VQV9PVEhFUg0KICAgICAgICAgRU5EDQorICAgICAgICBNRU5VSVRFTSAiUHJveHkgU2V0
dGluZ3MuLi4iLCAgICAgICAgICAgSURNX1BST1hZX1NFVFRJTkdTDQogICAgICAgICBNRU5VSVRF
TSBTRVBBUkFUT1INCiAgICAgICAgIE1FTlVJVEVNICJEaXNhYmxlIEltYWdlcyIsICAgICAgICAg
ICAgICBJRE1fRElTQUJMRV9JTUFHRVMNCiAgICAgICAgIE1FTlVJVEVNICJEaXNhYmxlIFN0eWxl
cyIsICAgICAgICAgICAgICBJRE1fRElTQUJMRV9TVFlMRVMNCkBAIC0yNTksNiArMjYwLDI2IEBA
IEJFR0lOCiAgICAgRURJVFRFWFQgICAgICAgIElEQ19BVVRIX1BBU1NXT1JELDY3LDY0LDE1Nywx
NCxFU19QQVNTV09SRCB8IEVTX0FVVE9IU0NST0xMDQogRU5EDQogDQorSUREX1BST1hZIERJQUxP
R0VYIDAsIDAsIDMxMCwgMTc2DQorU1RZTEUgRFNfU0VURk9OVCB8IERTX01PREFMRlJBTUUgfCBE
U19GSVhFRFNZUyB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUNCitDQVBUSU9O
ICJQcm94eSBDb25maWd1cmF0aW9uIg0KK0ZPTlQgOCwgIk1TIFNoZWxsIERsZyIsIDQwMCwgMCwg
MHgxDQorQkVHSU4NCisgICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTksMTU1LDUwLDE0
DQorICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsIixJRENBTkNFTCwyNTMsMTU1LDUwLDE0DQor
ICAgIENPTlRST0wgICAgICAgICAiVXNlIHN5c3RlbSBkZWZhdWx0IHByb3h5IGNvbmZpZ3VyYXRp
b24uIixJRENfUFJPWFlfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICJCdXR0b24iLEJT
X0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDIyLDE1LDIyNiwxMA0KKyAgICBDT05UUk9MICAg
ICAgICAgIlVzZSBjdXN0b20gcHJveHkgY29uZmlndXJhdGlvbjoiLElEQ19QUk9YWV9DVVNUT00s
DQorICAgICAgICAgICAgICAgICAgICAiQnV0dG9uIixCU19BVVRPUkFESU9CVVRUT04sMjIsMzMs
MjI2LDEwDQorICAgIENPTlRST0wgICAgICAgICAiRG9uJ3QgdXNlIHByb3h5LiIsSURDX1BST1hZ
X0RJU0FCTEUsIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OLDIyLDExNywyMjYsMTANCisgICAg
RURJVFRFWFQgICAgICAgIElEQ19QUk9YWV9VUkwsNzYsNTIsMTkzLDE0LEVTX0FVVE9IU0NST0xM
DQorICAgIEVESVRURVhUICAgICAgICBJRENfUFJPWFlfRVhDTFVERSw3Niw4NSwxOTMsMTQsRVNf
QVVUT0hTQ1JPTEwNCisgICAgTFRFWFQgICAgICAgICAgICJVUkw6IixJRENfU1RBVElDLDMwLDU1
LDQzLDgsMCxXU19FWF9SSUdIVA0KKyAgICBMVEVYVCAgICAgICAgICAgIkV4Y3VkZSBsaXN0OiIs
SURDX1NUQVRJQywzMCw4OCw0Myw4LDAsV1NfRVhfUklHSFQNCisgICAgTFRFWFQgICAgICAgICAg
ICJFeGFtcGxlOiBodHRwOi8vMTkyLjE2OC4wLjI6ODAwMCIsSURDX1NUQVRJQyw4MCw2OCwxOTQs
OA0KKyAgICBMVEVYVCAgICAgICAgICAgIkNvbW1hIHNlcGFyYXRlZCBob3N0bmFtZXMuIixJRENf
U1RBVElDLDgwLDEwMSwxOTQsOA0KK0VORA0KKw0KIA0KICNpZmRlZiBBUFNUVURJT19JTlZPS0VE
DQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCkBAIC0zMjcsNiArMzQ4LDE1IEBAIEJFR0lOCiAgICAg
ICAgIEhPUlpHVUlERSwgMjUNCiAgICAgICAgIEhPUlpHVUlERSwgNTANCiAgICAgRU5EDQorDQor
ICAgIElERF9QUk9YWSwgRElBTE9HDQorICAgIEJFR0lODQorICAgICAgICBMRUZUTUFSR0lOLCA3
DQorICAgICAgICBSSUdIVE1BUkdJTiwgMzAzDQorICAgICAgICBWRVJUR1VJREUsIDIyDQorICAg
ICAgICBUT1BNQVJHSU4sIDcNCisgICAgICAgIEJPVFRPTU1BUkdJTiwgMTY5DQorICAgIEVORA0K
IEVORA0KICNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VEDQogDQpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaCBiL1Rvb2xzL01pbmlC
cm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmgKaW5kZXggZTZjOWIwMDM2M2UuLjU4
OGU4MjI2MzkwIDEwMDc1NQotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJM
aWJSZXNvdXJjZS5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJl
c291cmNlLmgKQEAgLTU2LDYgKzU2LDcgQEAKICNkZWZpbmUgSURNX1NIT1dfTEFZRVJfVFJFRSAg
ICAgICAgICAgICAxNzUKICNkZWZpbmUgSUREX0FVVEggICAgICAgICAgICAgICAgICAgICAgICAx
NzYKICNkZWZpbmUgSURNX0RFQlVHX0lORk9fTEFZRVIgICAgICAgICAgICAxNzcKKyNkZWZpbmUg
SUREX1BST1hZICAgICAgICAgICAgICAgICAgICAgICAxNzgKICNkZWZpbmUgSURDX0VNUFRZX1VS
TF9DQUNIRSAgICAgICAgICAgICAxMDAwCiAjZGVmaW5lIElEQ19SRVRVUk5fRlJFRV9NRU1PUlkg
ICAgICAgICAgMTAwMQogI2RlZmluZSBJRENfRU1QVFlfV0VCQ09SRV9DQUNIRSAgICAgICAgIDEw
MDIKQEAgLTExMiwxOCArMTEzLDI0IEBACiAjZGVmaW5lIElEQ19BVVRIX1BBU1NXT1JEICAgICAg
ICAgICAgICAgMTA1NAogI2RlZmluZSBJRENfVVJMX0JBUiAgICAgICAgICAgICAgICAgICAgIDEw
NTUKICNkZWZpbmUgSURDX1JFQUxNX1RFWFQgICAgICAgICAgICAgICAgICAxMDU2CisjZGVmaW5l
IElEQ19QUk9YWV9VUkwgICAgICAgICAgICAgICAgICAgMTA1NworI2RlZmluZSBJRENfUFJPWFlf
REVGQVVMVCAgICAgICAgICAgICAgIDEwNTgKKyNkZWZpbmUgSURDX1BST1hZX0NVU1RPTSAgICAg
ICAgICAgICAgICAxMDU5CisjZGVmaW5lIElEQ19QUk9YWV9FWENMVURFICAgICAgICAgICAgICAg
MTA2MAorI2RlZmluZSBJRENfUFJPWFlfRElTQUJMRSAgICAgICAgICAgICAgIDEwNjEKICNkZWZp
bmUgSURNX05FV19XRUJLSVRfV0lORE9XICAgICAgICAgICAzMjc3NgogI2RlZmluZSBJRE1fTkVX
X1dFQktJVExFR0FDWV9XSU5ET1cgICAgIDMyNzc3CisjZGVmaW5lIElETV9QUk9YWV9TRVRUSU5H
UyAgICAgICAgICAgICAgMzI3NzgKICNkZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAg
ICAgICAtMQogCiAvLyBOZXh0IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcgb2JqZWN0cwotLy8gCisv
LwogI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKICNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lN
Qk9MUwogI2RlZmluZSBfQVBTX05PX01GQyAgICAgICAgICAgICAgICAgICAgIDEKLSNkZWZpbmUg
X0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxNzUKLSNkZWZpbmUgX0FQU19ORVhUX0NP
TU1BTkRfVkFMVUUgICAgICAgICAzMjc3OAotI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxV
RSAgICAgICAgIDEwNTUKKyNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAx
NzkKKyNkZWZpbmUgX0FQU19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICAzMjc3OQorI2RlZmlu
ZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwNjIKICNkZWZpbmUgX0FQU19ORVhU
X1NZTUVEX1ZBTFVFICAgICAgICAgICAxMTAKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5p
QnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKaW5kZXggYmY5M2NiNjkwNTIuLmE4
Mzg2MDY1NmY1IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3Nl
cldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5k
b3cuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQ3JlZGVudGlhbC5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS0luc3BlY3Rvci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1By
b3RlY3Rpb25TcGFjZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZD
dXJsLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiBzdGQ6OndzdHJpbmcgY3JlYXRlU3RyaW5nKFdL
U3RyaW5nUmVmIHdrU3RyaW5nKQpAQCAtNzUsNiArNzYsMTIgQEAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IGNyZWF0ZVdLVVJMKF9ic3RyX3Qgc3RyKQogICAgIHJldHVybiBhZG9wdFdLKFdLVVJMQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKHV0ZjguZGF0YSgpKSk7CiB9CiAKK1dLUmV0YWluUHRyPFdLVVJM
UmVmPiBjcmVhdGVXS1VSTChjb25zdCBzdGQ6OndzdHJpbmcmIHN0cikKK3sKKyAgICBhdXRvIHV0
ZjggPSBjcmVhdGVVVEY4U3RyaW5nKHN0ci5jX3N0cigpLCBzdHIubGVuZ3RoKCkpOworICAgIHJl
dHVybiBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHV0ZjguZGF0YSgpKSk7Cit9
CisKIFJlZjxCcm93c2VyV2luZG93PiBXZWJLaXRCcm93c2VyV2luZG93OjpjcmVhdGUoSFdORCBt
YWluV25kLCBIV05EIHVybEJhclduZCwgYm9vbCwgYm9vbCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJLaXRCcm93c2VyV2luZG93KG1haW5XbmQsIHVybEJhclduZCkpOwpAQCAtOTEs
OCArOTgsOCBAQCBXZWJLaXRCcm93c2VyV2luZG93OjpXZWJLaXRCcm93c2VyV2luZG93KEhXTkQg
bWFpblduZCwgSFdORCB1cmxCYXJXbmQpCiAgICAgV0tQcmVmZXJlbmNlc1NldERldmVsb3BlckV4
dHJhc0VuYWJsZWQocHJlZnMsIHRydWUpOwogICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQcmVm
ZXJlbmNlcyhjb25mLmdldCgpLCBwcmVmcyk7CiAKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdL
KFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChj
b25mLmdldCgpLCBjb250ZXh0LmdldCgpKTsKKyAgICBtX2NvbnRleHQgPSBhZG9wdFdLKFdLQ29u
dGV4dENyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25mLmdl
dCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgbV92aWV3ID0gYWRvcHRXSyhXS1ZpZXdDcmVh
dGUocmVjdCwgY29uZi5nZXQoKSwgbWFpblduZCkpOwogICAgIGF1dG8gcGFnZSA9IFdLVmlld0dl
dFBhZ2UobV92aWV3LmdldCgpKTsKQEAgLTEwMiw2ICsxMDksMjcgQEAgV2ViS2l0QnJvd3Nlcldp
bmRvdzo6V2ViS2l0QnJvd3NlcldpbmRvdyhIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFyV25kKQog
ICAgIG5hdmlnYXRpb25DbGllbnQuZGlkQ29tbWl0TmF2aWdhdGlvbiA9IGRpZENvbW1pdE5hdmln
YXRpb247CiAgICAgbmF2aWdhdGlvbkNsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgPSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQocGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CisKKyAg
ICB1cGRhdGVQcm94eVNldHRpbmdzKCk7Cit9CisKK3ZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6
dXBkYXRlUHJveHlTZXR0aW5ncygpCit7CisgICAgYXV0byBzdG9yZSA9IFdLQ29udGV4dEdldFdl
YnNpdGVEYXRhU3RvcmUobV9jb250ZXh0LmdldCgpKTsKKworICAgIGlmICghbV9wcm94eS5lbmFi
bGUpIHsKKyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlRGlzYWJsZU5ldHdvcmtQcm94eVNldHRp
bmdzKHN0b3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9wcm94eS5j
dXN0b20pIHsKKyAgICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlRW5hYmxlRGVmYXVsdE5ldHdvcmtQ
cm94eVNldHRpbmdzKHN0b3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
dXJsID0gY3JlYXRlV0tVUkwobV9wcm94eS51cmwpOworICAgIGF1dG8gZXhjbHVkZUhvc3RzID0g
Y3JlYXRlV0tTdHJpbmcobV9wcm94eS5leGNsdWRlSG9zdHMpOworICAgIFdLV2Vic2l0ZURhdGFT
dG9yZUVuYWJsZUN1c3RvbU5ldHdvcmtQcm94eVNldHRpbmdzKHN0b3JlLCB1cmwuZ2V0KCksIGV4
Y2x1ZGVIb3N0cy5nZXQoKSk7CiB9CiAKIEhSRVNVTFQgV2ViS2l0QnJvd3NlcldpbmRvdzo6aW5p
dCgpCkBAIC0xMTcsMTQgKzE0NSwxNCBAQCBIV05EIFdlYktpdEJyb3dzZXJXaW5kb3c6Omh3bmQo
KQogSFJFU1VMVCBXZWJLaXRCcm93c2VyV2luZG93Ojpsb2FkVVJMKGNvbnN0IEJTVFImIHVybCkK
IHsKICAgICBhdXRvIHBhZ2UgPSBXS1ZpZXdHZXRQYWdlKG1fdmlldy5nZXQoKSk7Ci0gICAgV0tQ
YWdlTG9hZFVSTChwYWdlLCBjcmVhdGVXS1VSTCh1cmwpLmdldCgpKTsKKyAgICBXS1BhZ2VMb2Fk
VVJMKHBhZ2UsIGNyZWF0ZVdLVVJMKF9ic3RyX3QodXJsKSkuZ2V0KCkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBIUkVTVUxUIFdlYktpdEJyb3dzZXJXaW5kb3c6OmxvYWRIVE1MU3RyaW5nKGNv
bnN0IEJTVFImIHN0cikKIHsKICAgICBhdXRvIHBhZ2UgPSBXS1ZpZXdHZXRQYWdlKG1fdmlldy5n
ZXQoKSk7Ci0gICAgYXV0byB1cmwgPSBjcmVhdGVXS1VSTChMImFib3V0OiIpOworICAgIGF1dG8g
dXJsID0gY3JlYXRlV0tVUkwoX2JzdHJfdChMImFib3V0OiIpKTsKICAgICBXS1BhZ2VMb2FkSFRN
TFN0cmluZyhwYWdlLCBjcmVhdGVXS1N0cmluZyhfYnN0cl90KHN0cikpLmdldCgpLCB1cmwuZ2V0
KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTcwLDYgKzE5OCwxMyBAQCB2b2lkIFdlYktp
dEJyb3dzZXJXaW5kb3c6OmxhdW5jaEluc3BlY3RvcigpCiAgICAgV0tJbnNwZWN0b3JTaG93KGlu
c3BlY3Rvcik7CiB9CiAKK3ZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6b3BlblByb3h5U2V0dGlu
Z3MoKQoreworICAgIGlmIChhc2tQcm94eVNldHRpbmdzKG1faE1haW5XbmQsIG1fcHJveHkpKQor
ICAgICAgICB1cGRhdGVQcm94eVNldHRpbmdzKCk7CisKK30KKwogdm9pZCBXZWJLaXRCcm93c2Vy
V2luZG93OjpzZXRVc2VyQWdlbnQoX2JzdHJfdCYgY3VzdG9tVUFTdHJpbmcpCiB7CiAgICAgYXV0
byBwYWdlID0gV0tWaWV3R2V0UGFnZShtX3ZpZXcuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmgKaW5kZXggNDI2NmU3YzY0YTguLjAwM2IzNWNhOWQ2
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5o
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmgKQEAgLTI1
LDYgKzI1LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgor
I2luY2x1ZGUgIkNvbW1vbi5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KIApAQCAtNDYsNiArNDcsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBwcmludCgpIG92ZXJyaWRlOwogICAgIHZvaWQgbGF1bmNoSW5zcGVjdG9yKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBvcGVuUHJveHlTZXR0aW5ncygpIG92ZXJyaWRlOwogCiAgICAg
X2JzdHJfdCB1c2VyQWdlbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChfYnN0
cl90Jikgb3ZlcnJpZGU7CkBAIC01NywxMSArNTksMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHpv
b21JbigpIG92ZXJyaWRlOwogICAgIHZvaWQgem9vbU91dCgpIG92ZXJyaWRlOwogCisgICAgdm9p
ZCB1cGRhdGVQcm94eVNldHRpbmdzKCk7CisKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hOYXZp
Z2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZp
Z2F0aW9uUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmLCBXS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUmVmLCBjb25zdCB2b2lkKik7CiAKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IG1fY29udGV4dDsKICAgICBXS1JldGFpblB0cjxXS1ZpZXdSZWY+IG1fdmlldzsKICAgICBI
V05EIG1faE1haW5XbmQgeyBudWxscHRyIH07CiAgICAgSFdORCBtX3VybEJhclduZCB7IG51bGxw
dHIgfTsKKyAgICBQcm94eVNldHRpbmdzIG1fcHJveHkgeyB9OwogfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcAppbmRleCBkM2Y4
OGJhM2ZiMy4uZjZmY2Q1Nzk0ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9X
ZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4v
V2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdy5jcHAKQEAgLTQzMCw2ICs0MzAsMTAgQEAgdm9pZCBX
ZWJLaXRMZWdhY3lCcm93c2VyV2luZG93OjpsYXVuY2hJbnNwZWN0b3IoKQogICAgIG1faW5zcGVj
dG9yLT5zaG93KCk7CiB9CiAKK3ZvaWQgV2ViS2l0TGVnYWN5QnJvd3NlcldpbmRvdzo6b3BlblBy
b3h5U2V0dGluZ3MoKQoreworfQorCiB2b2lkIFdlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3c6Om5h
dmlnYXRlRm9yd2FyZE9yQmFja3dhcmQoVUlOVCBtZW51SUQpCiB7CiAgICAgaWYgKCFtX3dlYlZp
ZXcpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0TGVnYWN5QnJvd3Nl
cldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5k
b3cuaAppbmRleCA3MTFlNzQ1Mzc4Zi4uZWNlNGVhZjI0MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL3dpbi9XZWJLaXRMZWdhY3lCcm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvd2luL1dlYktpdExlZ2FjeUJyb3dzZXJXaW5kb3cuaApAQCAtNzEsNiArNzEsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBzaG93TGFzdFZpc2l0ZWRTaXRlcyhJV2ViVmlldyYpOwog
ICAgIHZvaWQgbGF1bmNoSW5zcGVjdG9yKCk7CisgICAgdm9pZCBvcGVuUHJveHlTZXR0aW5ncygp
OwogICAgIHZvaWQgbmF2aWdhdGVGb3J3YXJkT3JCYWNrd2FyZChVSU5UIG1lbnVJRCk7CiAgICAg
dm9pZCBuYXZpZ2F0ZVRvSGlzdG9yeShVSU5UIG1lbnVJRCk7CiAgICAgdm9pZCBleGl0UHJvZ3Jh
bSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>