<?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>174716</bug_id>
          
          <creation_ts>2017-07-21 10:27:52 -0700</creation_ts>
          <short_desc>Merge WTFThreadData to Thread::current</short_desc>
          <delta_ts>2017-08-02 23:16:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mark.lam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1331004</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-21 10:27:52 -0700</bug_when>
    <thetext>It is great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331005</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-21 10:28:46 -0700</bug_when>
    <thetext>Important thing is that Thread::current() should not require WTF::initializeThreading(). It is achieved if we carefully integreate WTFThreadData&apos;s way to Thread::current().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333027</commentid>
    <comment_count>2</comment_count>
      <attachid>316662</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-28 12:16:09 -0700</bug_when>
    <thetext>Created attachment 316662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333032</commentid>
    <comment_count>3</comment_count>
      <attachid>316664</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-28 12:23:13 -0700</bug_when>
    <thetext>Created attachment 316664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333036</commentid>
    <comment_count>4</comment_count>
      <attachid>316667</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-28 12:31:17 -0700</bug_when>
    <thetext>Created attachment 316667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333041</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-28 12:35:44 -0700</bug_when>
    <thetext>Attachment 316667 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 33 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>1333199</commentid>
    <comment_count>6</comment_count>
      <attachid>316706</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-29 00:46:16 -0700</bug_when>
    <thetext>Created attachment 316706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333200</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-29 00:47:39 -0700</bug_when>
    <thetext>Attachment 316706 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 36 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>1333214</commentid>
    <comment_count>8</comment_count>
      <attachid>316709</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-29 07:51:42 -0700</bug_when>
    <thetext>Created attachment 316709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333215</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-29 08:07:34 -0700</bug_when>
    <thetext>Attachment 316709 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333216</commentid>
    <comment_count>10</comment_count>
      <attachid>316710</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-29 08:30:08 -0700</bug_when>
    <thetext>Created attachment 316710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333217</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-29 08:32:59 -0700</bug_when>
    <thetext>Attachment 316710 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333218</commentid>
    <comment_count>12</comment_count>
      <attachid>316711</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-29 08:43:20 -0700</bug_when>
    <thetext>Created attachment 316711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333219</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-29 08:44:59 -0700</bug_when>
    <thetext>Attachment 316711 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333220</commentid>
    <comment_count>14</comment_count>
      <attachid>316712</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-29 09:14:36 -0700</bug_when>
    <thetext>Created attachment 316712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333221</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-29 09:24:55 -0700</bug_when>
    <thetext>Attachment 316712 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333229</commentid>
    <comment_count>16</comment_count>
      <attachid>316717</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-29 10:57:50 -0700</bug_when>
    <thetext>Created attachment 316717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333230</commentid>
    <comment_count>17</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-29 11:01:50 -0700</bug_when>
    <thetext>Attachment 316717 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333394</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-31 04:23:56 -0700</bug_when>
    <thetext>Committed r220060: &lt;http://trac.webkit.org/changeset/220060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333395</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-31 04:25:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/33622976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333444</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-31 09:23:48 -0700</bug_when>
    <thetext>This broke Apple internal builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333445</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-31 09:25:37 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #20)
&gt; This broke Apple internal builds.

Oops! Is it related to build failure?
Or is it related to test failures? (like crash?)

And can I have any log about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333446</commentid>
    <comment_count>22</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-07-31 09:26:39 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #21)
&gt; And can I have any log about that?

The build failure is due to:
ThreadHolder.h:96:67: error: use of undeclared identifier &apos;WTF_THREAD_DATA_KEY&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333449</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-31 09:28:35 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #22)
&gt; (In reply to Yusuke Suzuki from comment #21)
&gt; &gt; And can I have any log about that?
&gt; 
&gt; The build failure is due to:
&gt; ThreadHolder.h:96:67: error: use of undeclared identifier
&gt; &apos;WTF_THREAD_DATA_KEY&apos;

OK, can we include &lt;wtf/FastTLS.h&gt; in ThreadHolder.h?
I can create a patch for that, but I don&apos;t have the way to ensure that internal build works fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333450</commentid>
    <comment_count>24</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-07-31 09:35:03 -0700</bug_when>
    <thetext>Reverted r220060 for reason:

This broke our internal builds. Contact reviewer of patch for more information.

Committed r220069: &lt;http://trac.webkit.org/changeset/220069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333451</commentid>
    <comment_count>25</comment_count>
      <attachid>316785</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-31 09:41:50 -0700</bug_when>
    <thetext>Created attachment 316785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333452</commentid>
    <comment_count>26</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-31 09:43:57 -0700</bug_when>
    <thetext>Attachment 316785 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333471</commentid>
    <comment_count>27</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-31 11:09:42 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #26)
&gt; Attachment 316785 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of
&gt; #ifndef for header guard.  [build/header_guard] [5]
&gt; Total errors found: 1 in 37 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

It seems like you ignored this very valid style warning the first time around.

Could you please fix it this time?

It&apos;s weird that this file *was* correct with #pragma once and it seems you reverted that on purpose...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333478</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-31 11:29:41 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #27)
&gt; (In reply to Build Bot from comment #26)
&gt; &gt; Attachment 316785 [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; 
&gt; &gt; ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of
&gt; &gt; #ifndef for header guard.  [build/header_guard] [5]
&gt; &gt; Total errors found: 1 in 37 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against
&gt; &gt; check-webkit-style.
&gt; 
&gt; It seems like you ignored this very valid style warning the first time
&gt; around.
&gt; 
&gt; Could you please fix it this time?
&gt; 
&gt; It&apos;s weird that this file *was* correct with #pragma once and it seems you
&gt; reverted that on purpose...?

This is intentional. WTF headers are a bit special ones becasue they are copied to build directory.
If someone includes WTF headers from different places (build dir / source dir), the compiler is confused with the two different paths and includes the same file twice.
Actually, I first used &quot;#pragma once&quot; for this. But it caused the compile error due to the above double inclusions :(
I think this should be fixed, but I don&apos;t think this should be done in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333479</commentid>
    <comment_count>29</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-31 11:31:52 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #28)
&gt; (In reply to Brady Eidson from comment #27)
&gt; &gt; (In reply to Build Bot from comment #26)
&gt; &gt; &gt; Attachment 316785 [details] did not pass style-queue:
&gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of
&gt; &gt; &gt; #ifndef for header guard.  [build/header_guard] [5]
&gt; &gt; &gt; Total errors found: 1 in 37 files
&gt; &gt; &gt; 
&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; It seems like you ignored this very valid style warning the first time
&gt; &gt; around.
&gt; &gt; 
&gt; &gt; Could you please fix it this time?
&gt; &gt; 
&gt; &gt; It&apos;s weird that this file *was* correct with #pragma once and it seems you
&gt; &gt; reverted that on purpose...?
&gt; 
&gt; This is intentional. WTF headers are a bit special ones becasue they are
&gt; copied to build directory.
&gt; If someone includes WTF headers from different places (build dir / source
&gt; dir), the compiler is confused with the two different paths and includes the
&gt; same file twice.
&gt; Actually, I first used &quot;#pragma once&quot; for this. But it caused the compile
&gt; error due to the above double inclusions :(
&gt; I think this should be fixed, but I don&apos;t think this should be done in this
&gt; patch.

I&apos;m confused as to why so many of the other WTF headers successfully use pragma once if this is a global problem with WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333481</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-31 11:38:43 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #29)
&gt; (In reply to Yusuke Suzuki from comment #28)
&gt; &gt; (In reply to Brady Eidson from comment #27)
&gt; &gt; &gt; (In reply to Build Bot from comment #26)
&gt; &gt; &gt; &gt; Attachment 316785 [details] did not pass style-queue:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of
&gt; &gt; &gt; &gt; #ifndef for header guard.  [build/header_guard] [5]
&gt; &gt; &gt; &gt; Total errors found: 1 in 37 files
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; If any of these errors are false positives, please file a bug against
&gt; &gt; &gt; &gt; check-webkit-style.
&gt; &gt; &gt; 
&gt; &gt; &gt; It seems like you ignored this very valid style warning the first time
&gt; &gt; &gt; around.
&gt; &gt; &gt; 
&gt; &gt; &gt; Could you please fix it this time?
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s weird that this file *was* correct with #pragma once and it seems you
&gt; &gt; &gt; reverted that on purpose...?
&gt; &gt; 
&gt; &gt; This is intentional. WTF headers are a bit special ones becasue they are
&gt; &gt; copied to build directory.
&gt; &gt; If someone includes WTF headers from different places (build dir / source
&gt; &gt; dir), the compiler is confused with the two different paths and includes the
&gt; &gt; same file twice.
&gt; &gt; Actually, I first used &quot;#pragma once&quot; for this. But it caused the compile
&gt; &gt; error due to the above double inclusions :(
&gt; &gt; I think this should be fixed, but I don&apos;t think this should be done in this
&gt; &gt; patch.
&gt; 
&gt; I&apos;m confused as to why so many of the other WTF headers successfully use
&gt; pragma once if this is a global problem with WTF

It is not limited to this ThreadHolder.h file. It depends on how the file is used.
For example, I remember that &quot;wtf/text/StringView.h&quot; is also such a thing.
https://bugs.webkit.org/show_bug.cgi?id=164686
https://bugs.webkit.org/show_bug.cgi?id=166676#c5
https://trac.webkit.org/changeset/210314/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333484</commentid>
    <comment_count>31</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-31 11:40:01 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #30)
&gt; (In reply to Brady Eidson from comment #29)
&gt; &gt; (In reply to Yusuke Suzuki from comment #28)
&gt; &gt; &gt; (In reply to Brady Eidson from comment #27)
&gt; &gt; &gt; &gt; (In reply to Build Bot from comment #26)
&gt; &gt; &gt; &gt; &gt; Attachment 316785 [details] did not pass style-queue:
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; ERROR: Source/WTF/wtf/ThreadHolder.h:32:  Use #pragma once instead of
&gt; &gt; &gt; &gt; &gt; #ifndef for header guard.  [build/header_guard] [5]
&gt; &gt; &gt; &gt; &gt; Total errors found: 1 in 37 files
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; If any of these errors are false positives, please file a bug against
&gt; &gt; &gt; &gt; &gt; check-webkit-style.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It seems like you ignored this very valid style warning the first time
&gt; &gt; &gt; &gt; around.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Could you please fix it this time?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It&apos;s weird that this file *was* correct with #pragma once and it seems you
&gt; &gt; &gt; &gt; reverted that on purpose...?
&gt; &gt; &gt; 
&gt; &gt; &gt; This is intentional. WTF headers are a bit special ones becasue they are
&gt; &gt; &gt; copied to build directory.
&gt; &gt; &gt; If someone includes WTF headers from different places (build dir / source
&gt; &gt; &gt; dir), the compiler is confused with the two different paths and includes the
&gt; &gt; &gt; same file twice.
&gt; &gt; &gt; Actually, I first used &quot;#pragma once&quot; for this. But it caused the compile
&gt; &gt; &gt; error due to the above double inclusions :(
&gt; &gt; &gt; I think this should be fixed, but I don&apos;t think this should be done in this
&gt; &gt; &gt; patch.
&gt; &gt; 
&gt; &gt; I&apos;m confused as to why so many of the other WTF headers successfully use
&gt; &gt; pragma once if this is a global problem with WTF
&gt; 
&gt; It is not limited to this ThreadHolder.h file. It depends on how the file is
&gt; used.
&gt; For example, I remember that &quot;wtf/text/StringView.h&quot; is also such a thing.
&gt; https://bugs.webkit.org/show_bug.cgi?id=164686
&gt; https://bugs.webkit.org/show_bug.cgi?id=166676#c5
&gt; https://trac.webkit.org/changeset/210314/webkit

And this is why we still sometimes uses ifndef guards for WTF while we already rewrote the headers of JSC, WebCore etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333490</commentid>
    <comment_count>32</comment_count>
      <attachid>316785</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-07-31 11:58:34 -0700</bug_when>
    <thetext>Comment on attachment 316785
Patch

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

Nice work.  r=me with fixes.

&gt; Source/WTF/wtf/ThreadHolder.h:33
&gt; -#pragma once
&gt; +#ifndef ThreadHolder_h
&gt; +#define ThreadHolder_h

Please add a comment to document why this is necessary here.  Or revert if this is not necessary.

&gt; Source/WTF/wtf/ThreadHolder.h:59
&gt;      // Creates and puts an instance of ThreadHolder into thread-specific storage.
&gt; -    static void initialize(Thread&amp;);
&gt; +    WTF_EXPORT_PRIVATE static ThreadHolder&amp; initialize(Ref&lt;Thread&gt;&amp;&amp;);
&gt; +    WTF_EXPORT_PRIVATE static ThreadHolder&amp; initializeCurrent();

Let&apos;s remove the WTF_EXPORT_PRIVATE for initialize() since it should only be called from slow paths in ThreadHolder*.cpp and Threading*.cpp.
Let&apos;s also make them private and add Thread as a friend class.  I think there&apos;s less risk with Thread doing the wrong thing (since Thread is crafted to work with ThreadHolder) than these being called from client code that should not be calling it (since there&apos;s move semantics on the Thread passed to ThreadHolder, and initialize() allocates a new ThreadHolder unconditonally).

&gt; Source/WTF/wtf/ThreadHolder.h:88
&gt; +    static WTF_EXPORTDATA ThreadSpecificKey m_key;

Please #if !HAVE(FAST_TLS) m_key.

&gt; Source/WTF/wtf/ThreadHolder.h:112
&gt; +    // WRT WebCore:
&gt; +    //    ThreadHolder is used on main thread before it could possibly be used
&gt; +    //    on secondary ones, so there is no need for synchronization here.
&gt; +    // WRT JavaScriptCore:
&gt; +    //    Thread::current() is initially called from initializeThreading(), ensuring
&gt; +    //    this is initially called in a pthread_once locked context.
&gt; +#if !HAVE(FAST_TLS)
&gt; +    if (UNLIKELY(ThreadHolder::m_key == InvalidThreadSpecificKey))
&gt; +        initializeOnce();
&gt; +#endif

This is not safe.  initializeOnce used to be called under a std::call_once guard in initializeThreading.  I recommend that you create a ThreadHolder::initializeOnce in ThreadHolder.cpp that does the std::call_once guard, and in turn calls ThreadHolder::platformInitializeOnce which is the old initializeOnce in the Pthread and Win ThreadHolder files.

Oh wait, I just realize that the comment above applies to synchronization of the call to initializeOnce.  Still, I think this is fragile (it always was).  But since you&apos;re changing the code to always ensure that initializeOnce() is called and it is only a slow path, I think we can get rid of this comment if we guard initializeOnce() with a std::call_once.

Also put #if !HAVE(FAST_TLS) around initializeOnce and platformInitializeOnce (maybe can skip for Windows since it is always !HAVE(FAST_TLS)).

&gt; Source/WTF/wtf/ThreadHolderPthreads.cpp:51
&gt; +    // Ideally we&apos;d have this as a release assert everywhere, but that would hurt performance.
&gt; +    // Having this release assert here means that we will catch &quot;didn&apos;t call
&gt; +    // WTF::initializeThreading() soon enough&quot; bugs in release mode.
&gt;      ASSERT(m_key != InvalidThreadSpecificKey);

Let&apos;s make this a RELEASE_ASSERT as the comment indicates.  It doesn&apos;t hurt perf that much since this should only be done once per thread.

On second thought, since the only way to call initialize() is via ThreadHolder::current(), and ThreadHolder::current() always ensures that initializeOnce() is called first, then we&apos;re not dependent on WTF::initializeThreading() to be called first anymore.  You can remove this comment, and just leave the assert as a debug ASSERT as a sanity check.

&gt; Source/WTF/wtf/ThreadHolderWin.cpp:82
&gt; +    // Ideally we&apos;d have this as a release assert everywhere, but that would hurt performance.
&gt; +    // Having this release assert here means that we will catch &quot;didn&apos;t call
&gt; +    // WTF::initializeThreading() soon enough&quot; bugs in release mode.
&gt; +    ASSERT(m_key != InvalidThreadSpecificKey);

Ditto.  You can remove this obsolete comment.

&gt; Source/WTF/wtf/Threading.cpp:99
&gt; +    m_savedLastStackTop = stack().origin();

Can we assert ASSERT(!Thread::current().stack().isEmpty()) before this?

I think it would be nicer if we can just initialize m_stack before this instead (to consolidate the initialization of the Thread instance initialization, but I think we can do that in a separate patch if desired.  You can make the initialization of m_stack on &quot;if (m_stack.isEmpty())&quot;.

&gt; Source/WTF/wtf/Threading.cpp:124
&gt;          context-&gt;stage = NewThreadContext::Stage::Initialized;
&gt;          context-&gt;condition.signal();

If we consolidate initialization of m_stack in initializeInThread(), we can move this signaling part after the call to initializeInThread() below.

&gt; Source/WTF/wtf/Threading.cpp:284
&gt; +        Thread::current();

If we made ThreadHolder::initializeOnce() guarded with a std::call_once, do we still need this?

Actually, your ChangeLog claims that &quot;WTF::Thread::current() can be accessed even before calling WTF::initializeThreading&quot;.  That means the 2 are now independent.  Which, in turn, means:
1. you can remove this.
2. you should definitely make ThreadHolder::initializeOnce() safe by guarding it with a std::call_once.

&gt; Source/WTF/wtf/Threading.h:278
&gt; +inline Thread&amp; Thread::current()
&gt; +{
&gt; +    return ThreadHolder::current().thread();
&gt; +}

nit: since this is a single line, would you mind just inlining it in the Thread class definition as:
    static Thread&amp; current() { return ThreadHolder::current().thread(); }

That will make it easier to see at a glance that it&apos;s just a forwarding wrapper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333795</commentid>
    <comment_count>33</comment_count>
      <attachid>316785</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-01 09:21:05 -0700</bug_when>
    <thetext>Comment on attachment 316785
Patch

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

Thank you!

&gt;&gt; Source/WTF/wtf/ThreadHolder.h:33
&gt;&gt; +#define ThreadHolder_h
&gt; 
&gt; Please add a comment to document why this is necessary here.  Or revert if this is not necessary.

Added the comment here.

&gt;&gt; Source/WTF/wtf/ThreadHolder.h:59
&gt;&gt; +    WTF_EXPORT_PRIVATE static ThreadHolder&amp; initializeCurrent();
&gt; 
&gt; Let&apos;s remove the WTF_EXPORT_PRIVATE for initialize() since it should only be called from slow paths in ThreadHolder*.cpp and Threading*.cpp.
&gt; Let&apos;s also make them private and add Thread as a friend class.  I think there&apos;s less risk with Thread doing the wrong thing (since Thread is crafted to work with ThreadHolder) than these being called from client code that should not be calling it (since there&apos;s move semantics on the Thread passed to ThreadHolder, and initialize() allocates a new ThreadHolder unconditonally).

Make sense.

&gt;&gt; Source/WTF/wtf/ThreadHolder.h:88
&gt;&gt; +    static WTF_EXPORTDATA ThreadSpecificKey m_key;
&gt; 
&gt; Please #if !HAVE(FAST_TLS) m_key.

Fixed :)

&gt;&gt; Source/WTF/wtf/ThreadHolder.h:112
&gt;&gt; +#endif
&gt; 
&gt; This is not safe.  initializeOnce used to be called under a std::call_once guard in initializeThreading.  I recommend that you create a ThreadHolder::initializeOnce in ThreadHolder.cpp that does the std::call_once guard, and in turn calls ThreadHolder::platformInitializeOnce which is the old initializeOnce in the Pthread and Win ThreadHolder files.
&gt; 
&gt; Oh wait, I just realize that the comment above applies to synchronization of the call to initializeOnce.  Still, I think this is fragile (it always was).  But since you&apos;re changing the code to always ensure that initializeOnce() is called and it is only a slow path, I think we can get rid of this comment if we guard initializeOnce() with a std::call_once.
&gt; 
&gt; Also put #if !HAVE(FAST_TLS) around initializeOnce and platformInitializeOnce (maybe can skip for Windows since it is always !HAVE(FAST_TLS)).

This comment and style is originally used in wtfThreadData(). Since previous Thread::current() is only used after calling initializeThreading(), the above comment is still valid.
(Because the previous wtfThreadData() is valid with the above comment.).
Anyway, using std::call_one in initializeOnce is nice.

&gt;&gt; Source/WTF/wtf/ThreadHolderPthreads.cpp:51
&gt;&gt;      ASSERT(m_key != InvalidThreadSpecificKey);
&gt; 
&gt; Let&apos;s make this a RELEASE_ASSERT as the comment indicates.  It doesn&apos;t hurt perf that much since this should only be done once per thread.
&gt; 
&gt; On second thought, since the only way to call initialize() is via ThreadHolder::current(), and ThreadHolder::current() always ensures that initializeOnce() is called first, then we&apos;re not dependent on WTF::initializeThreading() to be called first anymore.  You can remove this comment, and just leave the assert as a debug ASSERT as a sanity check.

OK, changed it to ASSERT and drop the above invalid comment.

&gt;&gt; Source/WTF/wtf/ThreadHolderWin.cpp:82
&gt;&gt; +    ASSERT(m_key != InvalidThreadSpecificKey);
&gt; 
&gt; Ditto.  You can remove this obsolete comment.

Done.

&gt;&gt; Source/WTF/wtf/Threading.cpp:99
&gt;&gt; +    m_savedLastStackTop = stack().origin();
&gt; 
&gt; Can we assert ASSERT(!Thread::current().stack().isEmpty()) before this?
&gt; 
&gt; I think it would be nicer if we can just initialize m_stack before this instead (to consolidate the initialization of the Thread instance initialization, but I think we can do that in a separate patch if desired.  You can make the initialization of m_stack on &quot;if (m_stack.isEmpty())&quot;.

This function is also called for existing non WTF thread. And m_stack is initialized in very different matter in different platforms.
(For the platforms having StackBounds::newThreadStackBounds, we initialize it in the caller thread.).

I added the above assert here.

&gt;&gt; Source/WTF/wtf/Threading.cpp:124
&gt;&gt;          context-&gt;condition.signal();
&gt; 
&gt; If we consolidate initialization of m_stack in initializeInThread(), we can move this signaling part after the call to initializeInThread() below.

Because of the above issue, we cannot move this to initializeInThread().

&gt;&gt; Source/WTF/wtf/Threading.cpp:284
&gt;&gt; +        Thread::current();
&gt; 
&gt; If we made ThreadHolder::initializeOnce() guarded with a std::call_once, do we still need this?
&gt; 
&gt; Actually, your ChangeLog claims that &quot;WTF::Thread::current() can be accessed even before calling WTF::initializeThreading&quot;.  That means the 2 are now independent.  Which, in turn, means:
&gt; 1. you can remove this.
&gt; 2. you should definitely make ThreadHolder::initializeOnce() safe by guarding it with a std::call_once.

I think we should keep this. We only ensured that Thread::current() is safe only when the previous wtfThreadData() style is guaranteed.

&gt;&gt; Source/WTF/wtf/Threading.h:278
&gt;&gt; +}
&gt; 
&gt; nit: since this is a single line, would you mind just inlining it in the Thread class definition as:
&gt;     static Thread&amp; current() { return ThreadHolder::current().thread(); }
&gt; 
&gt; That will make it easier to see at a glance that it&apos;s just a forwarding wrapper.

Changed, thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333802</commentid>
    <comment_count>34</comment_count>
      <attachid>316862</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-01 09:24:08 -0700</bug_when>
    <thetext>Created attachment 316862
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333810</commentid>
    <comment_count>35</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-01 09:27:24 -0700</bug_when>
    <thetext>Attachment 316862 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:37:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333843</commentid>
    <comment_count>36</comment_count>
      <attachid>316871</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-01 10:42:38 -0700</bug_when>
    <thetext>Created attachment 316871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333849</commentid>
    <comment_count>37</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-01 10:51:26 -0700</bug_when>
    <thetext>Attachment 316871 did not pass style-queue:


ERROR: Source/WTF/wtf/ThreadHolder.h:37:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 37 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>1333860</commentid>
    <comment_count>38</comment_count>
      <attachid>316871</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-01 11:14:33 -0700</bug_when>
    <thetext>Comment on attachment 316871
Patch

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

r=me with remaining issues resolved.

&gt; Source/WTF/wtf/ThreadHolder.h:83
&gt; +    WTF_EXPORT_PRIVATE static void ensureKey();

I think you can call this initializeKey() or keep the original name initializeOnce().  I suggested ensureKey() back when I was thinking that it will do the check for &quot;if (UNLIKELY(ThreadHolder::m_key == InvalidThreadSpecificKey))&quot;.  Since that&apos;s not necessary anymore, initializeOnce is a better name here.

&gt; Source/WTF/wtf/ThreadHolderPthreads.cpp:40
&gt; +void ThreadHolder::ensureKey()

Let&apos;s change this back to initializeOnce (for reasons above).

&gt; Source/WTF/wtf/ThreadHolderWin.cpp:52
&gt; -void ThreadHolder::initializeOnce()
&gt; +void ThreadHolder::ensureKey()

Let&apos;s change this back to initializeOnce (for reasons above).

&gt; Source/WTF/wtf/Threading.cpp:100
&gt; +    if (m_stack.isEmpty())
&gt; +        m_stack = StackBounds::currentThreadStackBounds();

I just re-read Thread::create() and saw that &quot;thread-&gt;m_stack = StackBounds::newThreadStackBounds(thread-&gt;m_handle)&quot; is only executed after the new thread has started.  That means there&apos;s a race to set m_stack.  However, since both should yield the same result, it should not matter that they overwrite each other with the same m_stack value.  If you think we cannot guarantee that m_stack will end up with the same value, then we can eliminate the race by making initializeInThread() take a &quot;needStackBoundInitialization&quot; argument and only initialize it based on that.

&gt; Source/WTF/wtf/Threading.cpp:287
&gt; +        ThreadHolder::ensureKey();

Let&apos;s rename this back to initializeOnce (for reasons above).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334667</commentid>
    <comment_count>39</comment_count>
      <attachid>316871</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-02 22:46:00 -0700</bug_when>
    <thetext>Comment on attachment 316871
Patch

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

&gt;&gt; Source/WTF/wtf/ThreadHolder.h:83
&gt;&gt; +    WTF_EXPORT_PRIVATE static void ensureKey();
&gt; 
&gt; I think you can call this initializeKey() or keep the original name initializeOnce().  I suggested ensureKey() back when I was thinking that it will do the check for &quot;if (UNLIKELY(ThreadHolder::m_key == InvalidThreadSpecificKey))&quot;.  Since that&apos;s not necessary anymore, initializeOnce is a better name here.

OK, I&apos;ll rename it to initializeKey().

&gt;&gt; Source/WTF/wtf/ThreadHolderPthreads.cpp:40
&gt;&gt; +void ThreadHolder::ensureKey()
&gt; 
&gt; Let&apos;s change this back to initializeOnce (for reasons above).

Fixed.

&gt;&gt; Source/WTF/wtf/ThreadHolderWin.cpp:52
&gt;&gt; +void ThreadHolder::ensureKey()
&gt; 
&gt; Let&apos;s change this back to initializeOnce (for reasons above).

Fixed.

&gt;&gt; Source/WTF/wtf/Threading.cpp:100
&gt;&gt; +        m_stack = StackBounds::currentThreadStackBounds();
&gt; 
&gt; I just re-read Thread::create() and saw that &quot;thread-&gt;m_stack = StackBounds::newThreadStackBounds(thread-&gt;m_handle)&quot; is only executed after the new thread has started.  That means there&apos;s a race to set m_stack.  However, since both should yield the same result, it should not matter that they overwrite each other with the same m_stack value.  If you think we cannot guarantee that m_stack will end up with the same value, then we can eliminate the race by making initializeInThread() take a &quot;needStackBoundInitialization&quot; argument and only initialize it based on that.

Actually, it does not have race. This is because the newly created thread need to wait the establishment in the creator side.
And the creator assigns m_stack if it can :)

&gt;&gt; Source/WTF/wtf/Threading.cpp:287
&gt;&gt; +        ThreadHolder::ensureKey();
&gt; 
&gt; Let&apos;s rename this back to initializeOnce (for reasons above).

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334675</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-02 23:03:31 -0700</bug_when>
    <thetext>Committed r220186: &lt;http://trac.webkit.org/changeset/220186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334676</commentid>
    <comment_count>41</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-02 23:16:48 -0700</bug_when>
    <thetext>Committed r220187: &lt;http://trac.webkit.org/changeset/220187&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316662</attachid>
            <date>2017-07-28 12:16:09 -0700</date>
            <delta_ts>2017-07-28 12:23:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170729041608.patch</filename>
            <type>text/plain</type>
            <size>63917</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi5hYzYzZjlhOWJhY2E0NmRm
Zjg5YjQ1MWZkZDg5N2Y3ZWUzNTk3NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MSBAQAogMjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVTdGFja0xp
bWl0cyk6CisgICAgICAgIChKU0M6OlZNOjpjb21taXR0ZWRTdGFja0J5dGVDb3VudCk6CisgICAg
ICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlKToK
KyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50
cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpWTTo6ZW5zdXJlU3RhY2tDYXBhY2l0eUZvcik6CisgICAgICAgICogeWFy
ci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3Ry
dWN0b3I6OmlzU2FmZVRvUmVjdXJzZSk6CisKKzIwMTctMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0IHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFu
dG9tRGlyZWN0QXJndW1lbnRzIHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzIHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tU3ByZWFkIHx8IGNhbmRpZGF0ZS0+
b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NjVkMmRlZTUwMWVjNThh
MTk5ZjUxZGVkZGUyMWM4OWI5ZWYwOWEzLi5kMTA5ZDNiYTFhOWRmZmFlOWEwYzQ5MDFiYzJiYzk1
MmM5NDRhOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA3LTI4ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERhdGEg
dG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0
Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAq
IHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAg
ICAgIChXVEY6OlN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6Cisg
ICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAg
ICAoV1RGOjpTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChX
VEY6OlN0YWNrU3RhdHM6OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0
Q2hlY2tQb2ludDo6TGF5b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRl
ci5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVy
OjpUaHJlYWRIb2xkZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlC
ZU51bGwpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAq
IHd0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgor
ICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1
cnJlbnREeWluZyk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhy
ZWFkKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpkaWRFeGl0KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1Rh
YmxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUp
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJl
YWQ6OnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpz
ZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2
ZWRMYXN0U3RhY2tUb3ApOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNr
VG9wKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6
CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChX
VEY6OlRocmVhZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dp
bi5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAg
ICAgIChXVEY6OlRocmVhZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRo
cmVhZERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJl
bW92ZWQuCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3
dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUp
OgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuaDoKKwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3
YWl0IGluIHNvbWUgcGxhdGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJl
YWRTdGFja0JvdW5kcyhQbGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCmluZGV4IDViMTAwYzc1ZTE1YjlmNDc2NjI5NDRhYTBmYzViYjhkZDA5
ZjQ2YzUuLmJhZWIxNzhkNDgxZGJlZGYyYmVkM2RmNmQ0ZTYzZmQxODE1NmM5OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBAIC0xNDEsMTUgKzE0MSwxNSBAQCAtIChK
U1ZhbHVlICopZ2xvYmFsT2JqZWN0CiAKICsgKEpTQ29udGV4dCAqKWN1cnJlbnRDb250ZXh0CiB7
Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBD
YWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRh
OworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tE
YXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwogICAgIHJldHVy
biBlbnRyeSA/IGVudHJ5LT5jb250ZXh0IDogbmlsOwogfQogCiArIChKU1ZhbHVlICopY3VycmVu
dFRoaXMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgp
OwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5t
X2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBD
YWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAg
ICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUg
dmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+dGhpc1ZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0
IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNTcsOCArMTU3LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJl
bnRUaGlzCiAKICsgKEpTVmFsdWUgKiljdXJyZW50Q2FsbGVlCiB7Ci0gICAgV1RGVGhyZWFkRGF0
YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5
ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhy
ZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxs
YmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnkt
PmNhbGxlZVZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0x
NjYsOCArMTY2LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRDYWxsZWUKIAogKyAoTlNBcnJheSAq
KWN1cnJlbnRBcmd1bWVudHMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3Rm
VGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICop
dGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJl
bnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5t
X2FwaURhdGE7CiAKICAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjk0
LDIxICsyOTQsMjEgQEAgLSAoQk9PTClib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJl
ZilleGNlcHRpb25WYWx1ZQogCiAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJh
Y2tEYXRhICopY2FsbGJhY2tEYXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUmVmKWNhbGxlZVZhbHVl
IHRoaXNWYWx1ZTooSlNWYWx1ZVJlZil0aGlzVmFsdWUgYXJndW1lbnRDb3VudDooc2l6ZV90KWFy
Z3VtZW50Q291bnQgYXJndW1lbnRzOihjb25zdCBKU1ZhbHVlUmVmICopYXJndW1lbnRzCiB7Ci0g
ICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJl
YWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIFtzZWxmIHJldGFpbl07Ci0gICAg
Q2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2Fw
aURhdGE7CisgICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhy
ZWFkLm1fYXBpRGF0YTsKICAgICAqY2FsbGJhY2tEYXRhID0gKENhbGxiYWNrRGF0YSl7IHByZXZT
dGFjaywgc2VsZiwgW3NlbGYuZXhjZXB0aW9uIHJldGFpbl0sIGNhbGxlZVZhbHVlLCB0aGlzVmFs
dWUsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgbmlsIH07Ci0gICAgdGhyZWFkRGF0YS5tX2Fw
aURhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgdGhyZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0
YTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IG5pbDsKIH0KIAogLSAodm9pZCllbmRDYWxsYmFja1dp
dGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEKIHsKLSAgICBXVEZUaHJlYWREYXRh
JiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhy
ZWFkOjpjdXJyZW50KCk7CiAgICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNl
cnZlZEV4Y2VwdGlvbjsKICAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVs
ZWFzZV07CiAgICAgW2NhbGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKLSAg
ICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YS0+bmV4dDsKKyAgICB0aHJlYWQu
bV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0OwogICAgIFtzZWxmIHJlbGVhc2VdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGY2NWVmODQxYTdjMWUwMDZhMmVh
YjcxNTI0ZmRkZThhNmFhMmEyNjcuLjNkNGJiZTM2ZTYzMzg1OTFhMzg4Y2M2NTRmYjA1ODc4ODNk
YWI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNDAsNyArMTQwLDcg
QEAgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFuY2VUaHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wg
aXNWYWxpZFRocmVhZFN0YXRlKFZNKiB2bSkKIHsKLSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1Rh
YmxlKCkgIT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpCisgICAgaWYgKHZt
LT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IFdURjo6VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3Ry
aW5nVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHZtLT5pc1NoYXJl
ZEluc3RhbmNlKCkgJiYgIWlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0YXRlKHZtKSkKQEAg
LTIwMjMsNyArMjAyMyw3IEBAIEhlYXA6OlRpY2tldCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihH
Q1JlcXVlc3QgcmVxdWVzdCkKICAgICBzdG9wSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBBU1NF
UlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgUkVMRUFTRV9B
U1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFi
bGUoKSA9PSBXVEY6OlRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAg
IAogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOwogICAgIC8vIFdlIG1heSBi
ZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBUaGF0IG9ubHkgd29ya3MgaWYgdGhlIGNvbGxlY3Rv
ciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDViMzAyNjRjN2Y0MTFlMzhkNTgwZjU1ZDVkN2QxZDY4
OWIzNjAxZWIuLjg4MjNlNmY2MDE2MTEyYjQ3MzlmYTAyOGY0MzFiYzdlOGQ3YzhiMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC00MSwxNCAr
NDEsMTMgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJs
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGluZ1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGJvb2wgY2hlY2tTeW50YXgoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVk
RXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0Vf
QVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwogCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hl
Y2tTeW50YXgoZXhlYyk7CkBAIC02NCw3ICs2Myw3IEBAIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhj
CiBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJz
ZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJu
ICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAt
NzQsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJU
KHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhy
ZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dy
YW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qs
IEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5
emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtOTIsNyArOTEsNyBA
QCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0
ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2
bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRU
aHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlKTsKQEAgLTE2Nyw3
ICsxNjYsNyBAQCBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdAogSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxl
TmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9
PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29s
bGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVh
dGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTE3
OCw3ICsxNzcsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cgogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdU
YWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZv
ckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjA1LDcgKzIwNCw3IEBAIHN0YXRpYyBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0
ZSogZXhlYywKIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5h
dG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAg
cmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVy
KTsKQEAgLTIxNiw3ICsyMTUsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0Nv
bGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0
ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjM0LDcgKzIzMyw3IEBAIEpTSW50
ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU1ZhbHVlCiBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJU
KGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJp
bmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAg
IFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVh
ZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVh
dGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpT
VmEKIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBU
aHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VS
VCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBy
ZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVz
dEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVLZXksIHNjcmlwdEZldGNoZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCA5OTI1NmQ2NTg5MzQ5
MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2Li5kNTUyZDBiMWY2Mjg3MTVhMjYzNmFiNzczN2Vk
ZmM2MTk3MzRjMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50
QXRvbWljU3RyaW5nVGFibGUoVk0qIHZtKQogewogICAgIC8vIENoZWNrIHRoZSBpZGVudGlmaWVy
IHRhYmxlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgdGhyZWFkc3BlY2lmaWMgbWF0Y2hlcyB0aGUK
ICAgICAvLyB2bSdzIGlkZW50aWZpZXIgdGFibGUuCi0gICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0t
PmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRo
cmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogfQogCiB2b2lkIElkZW50aWZp
ZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAKaW5kZXggOWVmMTQzYWQ0OGU3MWQyOGIxN2JhNDE2ZmEzYjE0YmNiZGI3NDVhYS4uODUwNzNi
NmQyOTViNTk5NjNhMjEzZDUyNDU1Yjg0YjRhZDE2NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTc1LDgg
Kzc1LDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICAgICAgRGlzYWxsb3dWTVJl
ZW50cnk6OmluaXRpYWxpemUoKTsKICNlbmRpZgogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1w
bGVyKCk7Ci0gICAgICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRh
KCk7Ci0gICAgICAgIHRocmVhZERhdGEuc2V0U2F2ZWRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5z
dGFjaygpLm9yaWdpbigpKTsKKyAgICAgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJl
bnQoKTsKKyAgICAgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygp
Lm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgV2FzbTo6VGh1
bmtzOjppbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNw
cAppbmRleCBiYTZjNDRhNWRmNTE0ZGU1MTdjOWEyNTg3NTYxYTk4YTlkOTI0MTBlLi5jMmM4Mjc2
YWMzMjkwZWYxNmM5ZmNlNGFmYTg0YTM5ZjYwMGNiMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTEyNyw5ICsxMjcsOSBAQCB2b2lkIEpTTG9jazo6ZGlk
QWNxdWlyZUxvY2soKQogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFk
JiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBBU1NFUlQoIW1fZW50cnlBdG9taWNT
dHJpbmdUYWJsZSk7Ci0gICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gdGhyZWFkRGF0YS5z
ZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV92bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7Cisg
ICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gdGhyZWFkLnNldEN1cnJlbnRBdG9taWNTdHJp
bmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBBU1NFUlQobV9lbnRyeUF0
b21pY1N0cmluZ1RhYmxlKTsKIAogICAgIGlmIChtX3ZtLT5oZWFwLmhhc0FjY2VzcygpKQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgdm9pZCog
cCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUgY3VycmVudCBzdGFjayBwb2ludGVyLgogICAgIG1f
dm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShwKTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFj
a1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0YWNrVG9wKCkpOworICAgIG1fdm0tPnNldExhc3RT
dGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CiAKICAgICBtX3ZtLT5oZWFwLm1h
Y2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVhZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKICAg
ICB9CiAKICAgICBpZiAobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKSB7Ci0gICAgICAgIHd0ZlRo
cmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmlu
Z1RhYmxlKTsKKyAgICAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmlu
Z1RhYmxlKG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CiAgICAgICAgIG1fZW50cnlBdG9taWNT
dHJpbmdUYWJsZSA9IG51bGxwdHI7CiAgICAgfQogfQpAQCAtMjI1LDkgKzIyNSw5IEBAIHVuc2ln
bmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2NrcyogZHJvcHBlcikKIAogICAgIGRy
b3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tEcm9wRGVwdGgpOwogCi0gICAgV1RGVGhyZWFkRGF0
YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVk
U3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAg
ICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNrVG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsK
KyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIHRocmVhZC5zZXRT
YXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7
CisgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsK
IAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQgPSBtX2xvY2tDb3VudDsKICAgICB1bmxv
Y2soZHJvcHBlZExvY2tDb3VudCk7CkBAIC0yNTIsOSArMjUyLDkgQEAgdm9pZCBKU0xvY2s6Omdy
YWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3BwZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291
bnQpCiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0aDsKIAotICAgIFdURlRocmVhZERhdGEmIHRocmVh
ZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgbV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVu
dHJ5KHRocmVhZERhdGEuc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7Ci0gICAgbV92bS0+
c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBtX3ZtLT5zZXRTdGFja1BvaW50
ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOworICAgIG1f
dm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKIEpT
TG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDEyNTEwMjQzNDY0Mzc3YTQ0OWFmZWNiYzU5OWZlOTg0Mjcw
OWZlN2EuLjA2OTU5YmE0NjVlMTkyYmU2M2E4MTg4ZDlmYzIzNzdmN2NlOTY5M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTExNCw3ICsxMTQsNiBAQAogI2luY2x1ZGUg
PHd0Zi9TaW1wbGVTdGF0cy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KIApAQCAtMTc2LDcgKzE3NSw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHRvcFZNRW50cnlGcmFtZShudWxs
cHRyKQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKICAgICAsIHBy
b21pc2VEZWZlcnJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvbWlzZURlZmVycmVkVGltZXI+
KCp0aGlzKSkKLSAgICAsIG1fYXRvbWljU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3
dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJs
ZSkKKyAgICAsIG1fYXRvbWljU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxlKQog
ICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0
KQogICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKHN0
ZDo6bWFrZV91bmlxdWU8U2ltcGxlU3RhdHM+KCkpCkBAIC0yMTEsMTMgKzIxMCwxMyBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX3NoYWRvd0NoaWNr
ZW4oc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dDaGlja2VuPigpKQogewogICAgIGludGVycHJldGVy
ID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKLSAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpOworICAgIFN0YWNrQm91bmRzIHN0YWNrID0gVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKTsKICAgICB1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShPcHRpb25zOjpz
b2Z0UmVzZXJ2ZWRab25lU2l6ZSgpKTsKICAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2lu
KCkpOwogCiAgICAgLy8gTmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25z
aXN0ZW50IGhlcmUKICAgICBKU0xvY2tIb2xkZXIgbG9jayh0aGlzKTsKLSAgICBBdG9taWNTdHJp
bmdUYWJsZSogZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gd3RmVGhyZWFkRGF0YSgp
LnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2F0b21pY1N0cmluZ1RhYmxlKTsKKyAgICBB
dG9taWNTdHJpbmdUYWJsZSogZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gVGhyZWFk
OjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFi
bGUpOwogICAgIHByb3BlcnR5TmFtZXMgPSBuZXcgQ29tbW9uSWRlbnRpZmllcnModGhpcyk7CiAg
ICAgc3RydWN0dXJlU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMpKTsKICAgICBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0
cnVjdHVyZVJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CkBA
IC0yNzAsNyArMjY5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgIG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2ZVN0
ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IHNtYWxsU3RyaW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKLSAgICB3dGZU
aHJlYWREYXRhKCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4aXN0aW5nRW50cnlBdG9t
aWNTdHJpbmdUYWJsZSk7CisgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0
cmluZ1RhYmxlKGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CiAKICNpZiBFTkFCTEUo
SklUKQogICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+KCk7CkBAIC02
NzIsNyArNjcxLDcgQEAgaW5saW5lIHZvaWQgVk06OnVwZGF0ZVN0YWNrTGltaXRzKCkKICAgICB2
b2lkKiBsYXN0U29mdFN0YWNrTGltaXQgPSBtX3NvZnRTdGFja0xpbWl0OwogI2VuZGlmCiAKLSAg
ICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAg
ICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwog
ICAgIHNpemVfdCByZXNlcnZlZFpvbmVTaXplID0gT3B0aW9uczo6cmVzZXJ2ZWRab25lU2l6ZSgp
OwogICAgIC8vIFdlIHNob3VsZCBoYXZlIGFscmVhZHkgZW5zdXJlZCB0aGF0IE9wdGlvbnM6OnJl
c2VydmVkWm9uZVNpemUoKSA+PSBtaW5pbXVtUmVzZXJ2ZVpvbmVTaXplIGF0CiAgICAgLy8gb3B0
aW9ucyBpbml0aWFsaXphdGlvbiB0aW1lLCBhbmQgdGhlIG9wdGlvbiB2YWx1ZSBzaG91bGQgbm90
IGhhdmUgYmVlbiBjaGFuZ2VkIHRoZXJlYWZ0ZXIuCkBAIC04ODYsOSArODg1LDkgQEAgc2l6ZV90
IFZNOjpjb21taXR0ZWRTdGFja0J5dGVDb3VudCgpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBX
aGVuIHVzaW5nIHRoZSBDIHN0YWNrLCB3ZSBkb24ndCBrbm93IGhvdyBtYW55IHN0YWNrIHBhZ2Vz
IGFyZSBhY3R1YWxseQogICAgIC8vIGNvbW1pdHRlZC4gU28sIHdlIHVzZSB0aGUgY3VycmVudCBz
dGFjayB1c2FnZSBhcyBhbiBlc3RpbWF0ZS4KLSAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
LnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgaW50OF90KiBjdXJyZW50ID0gcmVp
bnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3VycmVudCk7Ci0gICAgaW50OF90KiBoaWdoID0gcmVp
bnRlcnByZXRfY2FzdDxpbnQ4X3QqPih3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSk7
CisgICAgaW50OF90KiBoaWdoID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihUaHJlYWQ6OmN1
cnJlbnQoKS5zdGFjaygpLm9yaWdpbigpKTsKICAgICByZXR1cm4gaGlnaCAtIGN1cnJlbnQ7CiAj
ZWxzZQogICAgIHJldHVybiBDTG9vcFN0YWNrOjpjb21taXR0ZWRCeXRlQ291bnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGVlMjMyYTdmMjFjZWNkMDFkZjdlOTMyZjhiNTJl
NzRlM2U0OGZhNmQuLjlmYjRkOGJlNDJjMWY3OGQxZWIwZTUwOWRiYTI5MzQxNmYzYmRmNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjgsNyArNjgsNiBAQAogI2luY2x1ZGUg
PHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFk
RGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMjQz
LDcgKzI0Miw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwg
cHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgLy8gV2ViQ29yZSBoYXMgYSBv
bmUtdG8tb25lIG1hcHBpbmcgb2YgdGhyZWFkcyB0byBWTXM7CiAgICAgLy8gZWl0aGVyIGNyZWF0
ZSgpIG9yIGNyZWF0ZUxlYWtlZCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlCiAgICAgLy8g
b24gYSB0aHJlYWQsIHRoaXMgaXMgdGhlICdkZWZhdWx0JyBWTSAoaXQgdXNlcyB0aGUKLSAgICAv
LyB0aHJlYWQncyBkZWZhdWx0IHN0cmluZyB1bmlxdWluZyB0YWJsZSBmcm9tIHd0ZlRocmVhZERh
dGEpLgorICAgIC8vIHRocmVhZCdzIGRlZmF1bHQgc3RyaW5nIHVuaXF1aW5nIHRhYmxlIGZyb20g
VGhyZWFkOjpjdXJyZW50KCkpLgogICAgIC8vIEFQSSBjb250ZXh0cyBjcmVhdGVkIHVzaW5nIHRo
ZSBuZXcgY29udGV4dCBncm91cCBhd2FyZSBpbnRlcmZhY2UKICAgICAvLyBjcmVhdGUgQVBJQ29u
dGV4dEdyb3VwIG9iamVjdHMgd2hpY2ggcmVxdWlyZSBsZXNzIGxvY2tpbmcgb2YgSlNDCiAgICAg
Ly8gdGhhbiB0aGUgb2xkIHNpbmdsZXRvbiBBUElTaGFyZWQgVk0gY3JlYXRlZCBmb3IgdXNlIGJ5
CkBAIC02OTEsNyArNjkwLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKIAogICAgIGJvb2wgaXNT
YWZlVG9SZWN1cnNlKHZvaWQqIHN0YWNrTGltaXQpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NF
UlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwog
ICAgICAgICB2b2lkKiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJmN1cnIpOwogICAg
ICAgICByZXR1cm4gY3VyciA+PSBzdGFja0xpbWl0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCmluZGV4IGMyZDliZGExODhjNDc3MjAy
NTZkNDAzMDY0ODI4NmVjNDVlMzFjNTkuLmQxMWE4ZmZhNjZkYjVmZTMwZmI5ZjQ5ZjQ1MzEzODM2
Yjc4ZDIzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50
cnlTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLCBtX2dsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUKCFEaXNhbGxvd1ZNUmVlbnRyeTo6aXNJbkVmZmVj
dE9uQ3VycmVudFRocmVhZCgpKTsKLSAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCku
aXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNr
KCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgaWYgKCF2bS5lbnRyeVNjb3BlKSB7CiAgICAg
ICAgIHZtLmVudHJ5U2NvcGUgPSB0aGlzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNSW5saW5lcy5oCmluZGV4IDVhNzc2MTk1MGUwY2Y2YjI4ODU2MDE5MzFhZjZiNzFhM2JlMDJk
NzguLmJjMGMyNWY5MWUyYzE3NjFhMjFjYTIwZWIwODgyYTA5M2EyMTUxOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogYm9vbCBWTTo6ZW5zdXJlU3RhY2tDYXBhY2l0eUZvcihSZWdpc3RlciogbmV3
VG9wT2ZTdGFjaykKIHsKICNpZiBFTkFCTEUoSklUKQotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRh
KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICByZXR1cm4gbmV3VG9wT2ZT
dGFjayA+PSBtX3NvZnRTdGFja0xpbWl0OwogI2Vsc2UKICAgICByZXR1cm4gZW5zdXJlU3RhY2tD
YXBhY2l0eUZvckNMb29wKG5ld1RvcE9mU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDNhMTEwOTBkMTkwOTNjY2ViZTgwOWJjNzJkM2E2YTUw
MmU5YzRiNWQuLmRiZGIwN2IyODIwYTgyMWE3ZmU2OTc2YzYxOGRjNTE4YmRhZTIwMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTMzLDcgKzMzLDYg
QEAKICNpbmNsdWRlICJZYXJyUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtODgyLDcgKzg4MSw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgaWYgKCFtX3N0YWNrTGltaXQpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAgICAgaW50OF90KiBjdXJyID0g
cmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAgICAgICAgIGludDhfdCogbGltaXQg
PSByZWludGVycHJldF9jYXN0PGludDhfdCo+KG1fc3RhY2tMaW1pdCk7CiAgICAgICAgIHJldHVy
biBjdXJyID49IGxpbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDg2MTY3MWM0YWEyODEwYzFlMzNiNTdiMzgxM2YwOGE3MGJkYjNlYi4uZTE0ZTBkYTM3
ODVlODc3OGZjYmVjOTUwYjFkMjQ1Y2NjZWQ5OGJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNyArMTIzLDYgQEAKIAkJQThBNDc0NjAxNTFBODI1
QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0
b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxh
dG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgKi87IH07CiAJCUE4
QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzU3MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4
LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcz
N0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovOyB9OwogCQlBRDg5QjZC
NzFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2NDE1MDgwMDkw
NzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQlBRDg5QjZCQTFFNjQx
NTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQxNTBGMDA5MDcw
N0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87IH07CiAJCUFERjJDRTY3MUUz
OUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIg
LyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovOyB9OwpAQCAtNTE0LDggKzUxMyw2IEBACiAJ
CUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVk1UYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVhZERhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZUaHJlYWREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNG
RiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAv
KiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2Fs
bG93Q1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQzNEExREQyQTRB
NzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTcsOCArOTk0LDYg
QEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAqLywKIAkJCQlF
NEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLywKIAkJCQlFNEEwQUQz
ODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCi0JCQkJQThBNDczN0ExNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAotCQkJCUE4QTQ3MzdCMTUxQTgyNUIw
MDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDA5LDcgKzE0MDQsNiBAQAogCQkJCUU0QTBB
RDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGUxNWQ0NWM2M2M5MGRk
ODNkYWExYTc0YjUwZjMyODc1ZTk4YTkyM2IuLjVhNzU2ODg0ZDYyN2UwYjIwYzZlYTk4ZDQwM2Fj
NDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNTAsNyArMTUwLDYgQEAgc2V0
KFdURl9IRUFERVJTCiAgICAgVmFyaWFudC5oCiAgICAgVmVjdG9yLmgKICAgICBWZWN0b3JUcmFp
dHMuaAotICAgIFdURlRocmVhZERhdGEuaAogICAgIFdhbGxUaW1lLmgKICAgICBXZWFrUHRyLmgK
ICAgICBXb3JkTG9jay5oCkBAIC0yNTQsNyArMjUzLDYgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAg
VGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKICAgICBVVUlE
LmNwcAotICAgIFdURlRocmVhZERhdGEuY3BwCiAgICAgV2FsbFRpbWUuY3BwCiAgICAgV29yZExv
Y2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFp
blRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IDE0YjM0NjczYTBi
ZDg1NzdjMTI3ZmNmMjY5YjczMjllYjZiMDA3ZjguLmFiOTIxMzRlZDhiOGUxZTEzN2NmOWU3YzYz
YmYxYzI4MjRhZmJlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwIGIvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5j
cHAKaW5kZXggY2MxYTIxYjllYTVjY2NjNmYxYWNlNGM5NzQ5ODk5YmJkYTVkN2UxMC4uZjhmZWQ4
OGIxZjdjOTkyMDk4NmE5NGU3YWI2YzU1NzFiOTIzY2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGFya2luZ0xvdC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJIYXNoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
U3RyaW5nUHJpbnRTdHJlYW0uaCIKICNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgotI2luY2x1
ZGUgIlRocmVhZGluZ1ByaW1pdGl2ZXMuaCIKKyNpbmNsdWRlICJUaHJlYWRpbmcuaCIKICNpbmNs
dWRlICJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCiAjaW5jbHVkZSAiV29yZExv
Y2suaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwIGIvU291cmNl
L1dURi93dGYvU3RhY2tTdGF0cy5jcHAKaW5kZXggMDY0ZjJmMDUyYWFmMzhiOWY4MGE2ZGQ0MTEz
MmU2NTQ2ZTQ1N2Y0Mi4uOGNiNDYyMjExZGY3YWQ1NTdlM2M3YWUyNDhlNTY1MjhiNTE4NmM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvU3RhY2tTdGF0cy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkFzc2Vy
dGlvbnMuaCIKICNpbmNsdWRlICJEYXRhTG9nLmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5o
IgogCiAvLyBEZWZpbmUgdGhlIGZvbGxvd2luZyBmbGFnIGlmIHlvdSB3YW50IHRvIGNvbGxlY3Qg
c3RhdHMgb24gZXZlcnkgc2luZ2xlCiAvLyBjaGVja3BvaW50LiBCeSBkZWZhdWx0LCB3ZSBvbmx5
IGxvZyBjaGVja3BvaW50cyB0aGF0IGVzdGFibGlzaCBuZXcKQEAgLTU5LDcgKzU4LDcgQEAgaW50
IFN0YWNrU3RhdHM6OnNfbWF4TGF5b3V0UmVlbnRyeURlcHRoID0gMDsKIAogU3RhY2tTdGF0czo6
UGVyVGhyZWFkU3RhdHM6OlBlclRocmVhZFN0YXRzKCkKIHsKLSAgICBjb25zdCBTdGFja0JvdW5k
cyYgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBjb25zdCBTdGFja0JvdW5k
cyYgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwogICAgIG1fcmVlbnRyeURlcHRo
ID0gMDsKICAgICBtX3N0YWNrU3RhcnQgPSAoY2hhciopc3RhY2sub3JpZ2luKCk7CiAgICAgbV9j
dXJyZW50Q2hlY2tQb2ludCA9IDA7CkBAIC03MCw5ICs2OSw5IEBAIFN0YWNrU3RhdHM6OlBlclRo
cmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cygpCiBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVj
a1BvaW50KCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0
YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBXVEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29u
c3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0
czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQm
IHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0
YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3Rh
Y2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFj
ay5pc0dyb3dpbmdEb3dud2FyZCgpOwogICAgIGJvb2wgbmVlZFRvTG9nID0gZmFsc2U7CkBAIC0x
MjgsOCArMTI3LDggQEAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6Q2hlY2tQb2ludCgpCiBTdGFj
a1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY0xvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhy
ZWFkRGF0YSogdGhyZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJl
YWREYXRhKCkpOwotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0
YS0+c3RhY2tTdGF0cygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygp
OwogCiAgICAgLy8gUG9wIHRvIHByZXZpb3VzIGNoZWNrcG9pbnQ6CiAgICAgdC5tX2N1cnJlbnRD
aGVja1BvaW50ID0gbV9wcmV2OwpAQCAtMTM4LDcgKzEzNyw3IEBAIFN0YWNrU3RhdHM6OkNoZWNr
UG9pbnQ6On5DaGVja1BvaW50KCkKICAgICAvLyBMb2cgdGhpcyBjaGVja3BvaW50IGlmIG5lZWRl
ZDoKICNpZiBFTkFCTEUoVkVSQk9TRV9TVEFDS19TVEFUUykKICAgICBpZiAoIW1fcHJldikgewot
ICAgICAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFjaygpOwor
ICAgICAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKICAgICAg
ICAgYm9vbCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAK
ICAgICAgICAgY2hhciogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpOwpA
QCAtMTU5LDkgKzE1OCw5IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KCkK
IHZvaWQgU3RhY2tTdGF0czo6cHJvYmUoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNM
b2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRocmVhZERhdGEq
IHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhyZWFkRGF0YSgp
KTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERhdGEtPnN0YWNr
U3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFj
aygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgU3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOworICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9vbCBpc0dyb3dp
bmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKQEAgLTIyMCw5ICsyMTks
OSBAQCBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50OjpMYXlvdXRDaGVja1BvaW50KCkKICAg
ICBTdGFja1N0YXRzOjpwcm9iZSgpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhy
ZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwot
ICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0
cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7
CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRz
OjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3Rh
Y2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rv
d253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5j
cHAKaW5kZXggZTJhMzFiZTk5NzhhOWRlNDJlYmZhMzNiMDcwNmE1MjQzM2JkNzJjYi4uMDJiMGUx
NGFhMWExMDNjNDc1ZjlkMGZlYjAyNTFmYTNmNjQ3NDQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkSG9sZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIu
Y3BwCkBAIC00Myw0ICs0Myw5IEBAIFRocmVhZEhvbGRlcjo6flRocmVhZEhvbGRlcigpCiAgICAg
bV90aHJlYWQtPmRpZEV4aXQoKTsKIH0KIAorVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6Omlu
aXRpYWxpemVDdXJyZW50KCkKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZShUaHJlYWQ6OmNyZWF0
ZUN1cnJlbnRUaHJlYWQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xk
ZXIuaAppbmRleCBiMmY4ZGU2ODg1MGM2YWZkYzc5ZWZkYWRhMDliZTZkZWZiMTgyNmE5Li5hYzQw
NGIxY2FiODY2MTc4MmM1MzNjYmYzZGFhMjRjMGNmNWYzOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRIb2xkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIu
aApAQCAtMzEsMTEgKzMxLDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK2NsYXNzIFRocmVhZDsKKwogLy8gSG9sZHMg
VGhyZWFkIGluIHRoZSB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZS4gVGhlIGRlc3RydWN0b3Igb2Yg
dGhpcyBob2xkZXIgcmVsaWFibHkgZGVzdHJveSBUaHJlYWQuCiAvLyBGb3IgcHRocmVhZCwgaXQg
ZW1wbG95cyBwdGhyZWFkcy1zcGVjaWZpYyAyLXBhc3MgZGVzdHJ1Y3Rpb24gdG8gcmVsaWFibHkg
cmVtb3ZlIFRocmVhZC4KIC8vIEZvciBXaW5kb3dzLCB3ZSB1c2UgdGhyZWFkX2xvY2FsIHRvIGRl
ZmVyIHRocmVhZCBob2xkZXIgZGVzdHJ1Y3Rpb24uIEl0IGFzc3VtZXMgcmVndWxhciBUaHJlYWRT
cGVjaWZpYwpAQCAtNTAsMjAgKzUyLDIzIEBAIGNsYXNzIFRocmVhZEhvbGRlciB7CiAgICAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZU9uY2UoKTsKIAogICAgIC8vIENyZWF0ZXMgYW5kIHB1dHMgYW4g
aW5zdGFuY2Ugb2YgVGhyZWFkSG9sZGVyIGludG8gdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2UuCi0g
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUaHJlYWQmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFRocmVhZEhvbGRlciYgaW5pdGlhbGl6ZShSZWY8VGhyZWFkPiYmKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFRocmVhZEhvbGRlciYgaW5pdGlhbGl6ZUN1cnJlbnQo
KTsKIAogICAgIC8vIFJldHVybnMgMCBpZiB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZSB3YXMgbm90
IGluaXRpYWxpemVkLgotICAgIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnQoKTsKKyAgICBz
dGF0aWMgVGhyZWFkSG9sZGVyJiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciog
Y3VycmVudE1heUJlTnVsbCgpOwogCiAgICAgVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3Ro
cmVhZC5nZXQoKTsgfQogCiAjaWYgT1MoV0lORE9XUykKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFRocmVhZEhvbGRlciogY3VycmVudER5aW5nKCk7CiAgICAgc3RhdGljIFJlZlB0cjxU
aHJlYWQ+IGdldChUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFRo
cmVhZEhvbGRlcihUaHJlYWQmIHRocmVhZCkKLSAgICAgICAgOiBtX3RocmVhZCh0aHJlYWQpCisg
ICAgVGhyZWFkSG9sZGVyKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQorICAgICAgICA6IG1fdGhyZWFk
KFdURk1vdmUodGhyZWFkKSkKICAgICAgICAgLCBtX2lzRGVzdHJveWVkT25jZShmYWxzZSkKICAg
ICB7CiAgICAgfQpAQCAtNzcsNyArODIsMzggQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKIAogICAg
IFJlZjxUaHJlYWQ+IG1fdGhyZWFkOwogICAgIGJvb2wgbV9pc0Rlc3Ryb3llZE9uY2U7Ci0gICAg
c3RhdGljIFRocmVhZFNwZWNpZmljS2V5IG1fa2V5OworICAgIHN0YXRpYyBXVEZfRVhQT1JUREFU
QSBUaHJlYWRTcGVjaWZpY0tleSBtX2tleTsKIH07CiAKK2lubGluZSBUaHJlYWRIb2xkZXIqIFRo
cmVhZEhvbGRlcjo6Y3VycmVudE1heUJlTnVsbCgpCit7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisg
ICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7Cisj
ZWxzZQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPihfcHRocmVhZF9nZXRz
cGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSkpOworI2VuZGlmCit9CisKK2lubGlu
ZSBUaHJlYWRIb2xkZXImIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpCit7CisgICAgLy8gV1JUIFdl
YkNvcmU6CisgICAgLy8gICAgVGhyZWFkSG9sZGVyIGlzIHVzZWQgb24gbWFpbiB0aHJlYWQgYmVm
b3JlIGl0IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQKKyAgICAvLyAgICBvbiBzZWNvbmRhcnkgb25l
cywgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3Igc3luY2hyb25pemF0aW9uIGhlcmUuCisgICAgLy8g
V1JUIEphdmFTY3JpcHRDb3JlOgorICAgIC8vICAgIFRocmVhZDo6Y3VycmVudCgpIGlzIGluaXRp
YWxseSBjYWxsZWQgZnJvbSBpbml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCisgICAgLy8g
ICAgdGhpcyBpcyBpbml0aWFsbHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250
ZXh0LgorI2lmICFIQVZFKEZBU1RfVExTKQorICAgIGlmIChVTkxJS0VMWShUaHJlYWRIb2xkZXI6
Om1fa2V5ID09IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSkpCisgICAgICAgIGluaXRpYWxpemVP
bmNlKCk7CisjZW5kaWYKKyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVudE1heUJlTnVsbCgp
KQorICAgICAgICByZXR1cm4gKmhvbGRlcjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlmIChhdXRv
KiBob2xkZXIgPSBjdXJyZW50RHlpbmcoKSkKKyAgICAgICAgcmV0dXJuICpob2xkZXI7CisjZW5k
aWYKKyAgICByZXR1cm4gaW5pdGlhbGl6ZUN1cnJlbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKaW5kZXggMjBlNWU4OGY3
NmRhYzJmNzYwNzMzNGE4ZWIzYWFlYWNkYWQ1Zjk2My4uYzhjOWFiOGUyMjcxMzZmM2I2N2QwOGU5
N2ZiOWNlZTI5MzA3YmEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVy
UHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNw
cApAQCAtNDEsMzYgKzQxLDQ1IEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgp
CiAgICAgdGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRo
cmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciYgVGhyZWFk
SG9sZGVyOjppbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogeworICAgIGF1dG8qIGhv
bGRlciA9IG5ldyBUaHJlYWRIb2xkZXIoV1RGTW92ZSh0aHJlYWQpKTsKKyNpZiAhSEFWRShGQVNU
X1RMUykKKyAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQg
ZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZp
bmcgdGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlk
bid0IGNhbGwKKyAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIg
YnVncyBpbiByZWxlYXNlIG1vZGUuCiAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRT
cGVjaWZpY0tleSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVh
ZFNwZWNpZmljR2V0KG1fa2V5KSk7Ci19Ci0KLXZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXpl
KFRocmVhZCYgdGhyZWFkKQotewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElk
ZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQg
dGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxl
YXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAg
ICAgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4g
cmVsZWFzZSBtb2RlLgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNp
ZmljS2V5KTsKLSAgICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIG5ldyBUaHJlYWRIb2xk
ZXIodGhyZWFkKSk7Ci0gICAgfQorICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIp
OworI2Vsc2UKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRB
X0tFWSwgaG9sZGVyKTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9L
RVksIFtdICh2b2lkKiBob2xkZXIpIHsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdURlRo
cmVhZERhdGEqPihob2xkZXIpOworICAgIH0pOworI2VuZGlmCisgICAgcmV0dXJuICpob2xkZXI7
CiB9CiAKIHZvaWQgVGhyZWFkSG9sZGVyOjpkZXN0cnVjdCh2b2lkKiBkYXRhKQogewotICAgIFRo
cmVhZEhvbGRlciogdGhyZWFkSWRlbnRpZmllckRhdGEgPSBzdGF0aWNfY2FzdDxUaHJlYWRIb2xk
ZXIqPihkYXRhKTsKLSAgICBBU1NFUlQodGhyZWFkSWRlbnRpZmllckRhdGEpOworICAgIFRocmVh
ZEhvbGRlciogaG9sZGVyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4oZGF0YSk7CisgICAg
QVNTRVJUKGhvbGRlcik7CiAKLSAgICBpZiAodGhyZWFkSWRlbnRpZmllckRhdGEtPm1faXNEZXN0
cm95ZWRPbmNlKSB7Ci0gICAgICAgIGRlbGV0ZSB0aHJlYWRJZGVudGlmaWVyRGF0YTsKKyAgICBp
ZiAoaG9sZGVyLT5tX2lzRGVzdHJveWVkT25jZSkgeworICAgICAgICBkZWxldGUgaG9sZGVyOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkSWRlbnRpZmllckRhdGEtPm1faXNE
ZXN0cm95ZWRPbmNlID0gdHJ1ZTsKKyAgICBob2xkZXItPm1faXNEZXN0cm95ZWRPbmNlID0gdHJ1
ZTsKICAgICAvLyBSZS1zZXR0aW5nIHRoZSB2YWx1ZSBmb3Iga2V5IGNhdXNlcyBhbm90aGVyIGRl
c3RydWN0KCkgY2FsbCBhZnRlciBhbGwgb3RoZXIgdGhyZWFkLXNwZWNpZmljIGRlc3RydWN0b3Jz
IHdlcmUgY2FsbGVkLgotICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCB0aHJlYWRJZGVudGlm
aWVyRGF0YSk7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgQVNTRVJUKG1fa2V5ICE9IEludmFs
aWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRl
cik7CisjZWxzZQorICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RB
VEFfS0VZLCBob2xkZXIpOworICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoV1RGX1RIUkVBRF9EQVRB
X0tFWSwgW10gKHZvaWQqIGhvbGRlcikgeworICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V1RG
VGhyZWFkRGF0YSo+KGhvbGRlcik7CisgICAgfSk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwIGIv
U291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNwcAppbmRleCBmMDZiNjJmNjhlMjAxMzYz
NWM2MzUxNWU4YzBlNGYxNWZlNDYxNmRhLi45OGIyYzI4YmVmNmU0YjQzNmFhMTUyZjE0NDM3MTg2
MDNlNTZlODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAKQEAgLTU2LDE1ICs1Niw5
IEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpCiAgICAgdGhyZWFkU3BlY2lm
aWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRocmVhZEhvbGRlciogVGhyZWFk
SG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50RHlp
bmcoKQogewogICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwot
ICAgIFRocmVhZEhvbGRlciogaG9sZGVyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhy
ZWFkU3BlY2lmaWNHZXQobV9rZXkpKTsKLSAgICBpZiAoaG9sZGVyKSB7Ci0gICAgICAgIEFTU0VS
VChob2xkZXIgIT0gSW52YWxpZFRocmVhZEhvbGRlcik7Ci0gICAgICAgIHJldHVybiBob2xkZXI7
Ci0gICAgfQotCiAgICAgLy8gQWZ0ZXIgRkxTIGlzIGRlc3Ryb3llZCwgdGhpcyBtYXAgb2ZmZXJz
IHRoZSB2YWx1ZSB1bnRpbCB0aGUgc2Vjb25kIHRocmVhZCBleGl0IGNhbGxiYWNrIGlzIGNhbGxl
ZC4KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4
KCkpOwogICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoY3VycmVudFRocmVhZCgpKTsKQEAgLTgw
LDIxICs3NCwyMSBAQCBSZWZQdHI8VGhyZWFkPiBUaHJlYWRIb2xkZXI6OmdldChUaHJlYWRJZGVu
dGlmaWVyIGlkKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFRocmVhZEhvbGRlcjo6
aW5pdGlhbGl6ZShUaHJlYWQmIHRocmVhZCkKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjpp
bml0aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogewotICAgIGlmICghY3VycmVudCgpKSB7
Ci0gICAgICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBl
dmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBI
YXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAi
ZGlkbid0IGNhbGwKLSAgICAgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBl
bm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52
YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdv
cmthcm91bmQgY29kZSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTc5MzIxMz4gaXMgZml4ZWQuCi0g
ICAgICAgIGF1dG8qIGhvbGRlciA9IG5ldyBUaHJlYWRIb2xkZXIodGhyZWFkKTsKLSAgICAgICAg
dGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0g
ICAgICAgICAgICB0aHJlYWRNYXAoKS5hZGQodGhyZWFkLmlkKCksIGhvbGRlcik7Ci0gICAgICAg
IH0KKyAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZl
cnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZpbmcg
dGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0
IGNhbGwKKyAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVn
cyBpbiByZWxlYXNlIG1vZGUuCisgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVj
aWZpY0tleSk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSBvbmNl
IDxyZGFyOi8vcHJvYmxlbS8zMTc5MzIxMz4gaXMgZml4ZWQuCisgICAgYXV0byBpZCA9IHRocmVh
ZC0+aWQoKTsKKyAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVyKFdURk1vdmUodGhy
ZWFkKSk7CisgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7CisgICAgeworICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkp
OworICAgICAgICB0aHJlYWRNYXAoKS5hZGQoaWQsIGhvbGRlcik7CiAgICAgfQorICAgIHJldHVy
biAqaG9sZGVyOwogfQogCiB2b2lkIFRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGIzZmZhN2NmNzE5M2E2MDk4MGRlNzJlMTAwZTBhNDA3ODI2
MGQ2NDIuLjJlMTEzODQ1YTVkMzc0Y2VhNWU3ZjE5YWE3NGQwY2JjNDY3MmVkODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkTWVzc2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KIAogI2lmIEhBVkUoUU9TX0NMQVNTRVMpCkBAIC05NCw2ICs5NCwxMyBAQCBjb25z
dCBjaGFyKiBUaHJlYWQ6Om5vcm1hbGl6ZVRocmVhZE5hbWUoY29uc3QgY2hhciogdGhyZWFkTmFt
ZSkKICNlbmRpZgogfQogCit2b2lkIFRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKCkKK3sKKyAg
ICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gc3RhY2soKS5vcmlnaW4oKTsKKyAgICBBdG9taWNTdHJp
bmdUYWJsZTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9
IG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlOworfQorCiB2b2lkIFRocmVhZDo6ZW50cnlQb2lu
dChOZXdUaHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogewogICAgIEZ1bmN0aW9uPHZv
aWQoKT4gZnVuY3Rpb247CkBAIC0xMDUsNyArMTEyLDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9p
bnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICAgICAgQVNTRVJUKGNv
bnRleHQtPnN0YWdlID09IE5ld1RocmVhZENvbnRleHQ6OlN0YWdlOjpFc3RhYmxpc2hlZEhhbmRs
ZSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aHJlYWQgaG9sZGVyIHdpdGggZXN0YWJsaXNo
ZWQgSUQuCi0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShjb250ZXh0LT50aHJlYWQu
Z2V0KCkpOworICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoY29udGV4dC0+dGhyZWFk
LmNvcHlSZWYoKSk7CiAKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplQ3VycmVudFRocmVhZElu
dGVybmFsKGNvbnRleHQtPm5hbWUpOwogICAgICAgICBmdW5jdGlvbiA9IFdURk1vdmUoY29udGV4
dC0+ZW50cnlQb2ludCk7CkBAIC0xMTYsNiArMTIzLDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9p
bnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICAgICAgY29udGV4dC0+
c3RhZ2UgPSBOZXdUaHJlYWRDb250ZXh0OjpTdGFnZTo6SW5pdGlhbGl6ZWQ7CiAgICAgICAgIGNv
bnRleHQtPmNvbmRpdGlvbi5zaWduYWwoKTsKICNlbmRpZgorICAgICAgICBjb250ZXh0LT50aHJl
YWQtPmluaXRpYWxpemVJblRocmVhZCgpOwogICAgIH0KIAogICAgIEFTU0VSVCghVGhyZWFkOjpj
dXJyZW50KCkuc3RhY2soKS5pc0VtcHR5KCkpOwpAQCAtMTU1LDE0ICsxNjMsNiBAQCBSZWZQdHI8
VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5jdGlvbjx2b2lkKCk+
JiYgZW50cnlQb2ludCkKICAgICByZXR1cm4gV1RGTW92ZSh0aHJlYWQpOwogfQogCi1UaHJlYWQq
IFRocmVhZDo6Y3VycmVudE1heUJlTnVsbCgpCi17Ci0gICAgVGhyZWFkSG9sZGVyKiBkYXRhID0g
VGhyZWFkSG9sZGVyOjpjdXJyZW50KCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIHJldHVybiAm
ZGF0YS0+dGhyZWFkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHN0YXRpYyBib29sIHNo
b3VsZFJlbW92ZVRocmVhZEZyb21UaHJlYWRHcm91cCgpCiB7CiAjaWYgT1MoV0lORE9XUykKQEAg
LTE5Nyw2ICsxOTcsOSBAQCB2b2lkIFRocmVhZDo6ZGlkRXhpdCgpCiAgICAgICAgICAgICB0aHJl
YWRHcm91cC0+bV90aHJlYWRzLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIH0KICAgICB9CisgICAg
aWYgKG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKQorICAgICAgICBtX2F0b21pY1N0cmlu
Z1RhYmxlRGVzdHJ1Y3RvcihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7CisKICAgICAvLyBX
ZSB3b3VsZCBsaWtlIHRvIHNheSAidGhyZWFkIGlzIGV4aXRlZCIgYWZ0ZXIgdW5yZWdpc3Rlcmlu
ZyB0aHJlYWRzIGZyb20gdGhyZWFkIGdyb3Vwcy4KICAgICAvLyBTbyB3ZSBuZWVkIHRvIHNlcGFy
YXRlIG1faXNTaHV0dGluZ0Rvd24gZnJvbSBtX2RpZEV4aXQuCiAgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKQEAgLTI3Nyw5ICsyODAsOCBAQCB2b2lkIGlu
aXRpYWxpemVUaHJlYWRpbmcoKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFs
aXplS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVLZXksIFtdIHsKLSAgICAgICAg
VGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpOwogICAgICAgICBpbml0aWFsaXplUmFuZG9t
TnVtYmVyR2VuZXJhdG9yKCk7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKTsKKyAgICAgICAgVGhy
ZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIGluaXRpYWxpemVEYXRlcygpOwogICAgICAgICBUaHJl
YWQ6OmluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZygpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApp
bmRleCBmZjUwYmZhODliNzY4YmMwODE4YzYzOTg5ZDJmZjNmNWUyYzQxOTI3Li5iOTYyNDdjOTk3
MjFlYzBjZTllYzJlMThiYmI5NTBiOGI2Zjk1OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01MCwxMiArNTEsMTIgQEAKIG5hbWVzcGFjZSBX
VEYgewogCiBjbGFzcyBBYnN0cmFjdExvY2tlcjsKK2NsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwog
Y2xhc3MgVGhyZWFkTWVzc2FnZURhdGE7CiAKLWVudW0gY2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1
bHQ7Cit1c2luZyBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSB2b2lkICgqKShBdG9taWNT
dHJpbmdUYWJsZSopOwogCi11c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Ci10eXBl
ZGVmIHZvaWQgKCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOworZW51bSBjbGFzcyBU
aHJlYWRHcm91cEFkZFJlc3VsdDsKIAogY2xhc3MgVGhyZWFkR3JvdXA7CiBjbGFzcyBUaHJlYWRI
b2xkZXI7CkBAIC02NSw2ICs2Niw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxUaHJlYWQ+IHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkR3Jv
dXA7CiAgICAgZnJpZW5kIGNsYXNzIFRocmVhZEhvbGRlcjsKKyAgICBmcmllbmQgY2xhc3MgQXRv
bWljU3RyaW5nVGFibGU7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRocmVhZCgpOwogCkBA
IC03Myw4ICs3NSw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+
IGNyZWF0ZShjb25zdCBjaGFyKiB0aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAg
ICAgLy8gUmV0dXJucyBUaHJlYWQgb2JqZWN0LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgVGhyZWFkJiBjdXJyZW50KCk7Ci0gICAgc3RhdGljIFRocmVhZCogY3VycmVudE1heUJlTnVs
bCgpOworICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8vIFJldHVybnMgVGhy
ZWFkSWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2Fy
ZXMgYWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJz
IHNob3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3Qg
ZW5zdXJlCkBAIC0xNDEsMTUgKzE0Miw1OSBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgICAgIHJldHVybiBtX3N0YWNrOwogICAgIH0K
IAorICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisgICAgQXRv
bWljU3RyaW5nVGFibGUqIHNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShBdG9taWNTdHJpbmdU
YWJsZSogYXRvbWljU3RyaW5nVGFibGUpCisgICAgeworICAgICAgICBBdG9taWNTdHJpbmdUYWJs
ZSogb2xkQXRvbWljU3RyaW5nVGFibGUgPSBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAg
ICAgICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBhdG9taWNTdHJpbmdUYWJsZTsKKyAg
ICAgICAgcmV0dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxlOworICAgIH0KKworI2lmIEVOQUJMRShT
VEFDS19TVEFUUykKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgc3RhY2tTdGF0cygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9zdGFja1N0YXRzOworICAgIH0KKyNlbmRpZgorCisg
ICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9pZCBzZXRT
YXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50cnkpCisg
ICAgeworICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQb2ludGVy
QXRWTUVudHJ5OworICAgIH0KKworICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOworICAgIH0KKworICAgIHZvaWQg
c2V0U2F2ZWRMYXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQorICAgIHsKKyAgICAgICAg
bV9zYXZlZExhc3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsKKyAgICB9CisKKyAgICB2b2lkKiBt
X2FwaURhdGEgeyBudWxscHRyIH07CisKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3Qg
bWFjaFRocmVhZCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1UaHJlYWQ7IH0KICNlbmRpZgogCiAgICAg
c3RydWN0IE5ld1RocmVhZENvbnRleHQ7CiAgICAgc3RhdGljIHZvaWQgZW50cnlQb2ludChOZXdU
aHJlYWRDb250ZXh0Kik7Ci1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIFRocmVhZCgpOwogCisg
ICAgc3RhdGljIFJlZjxUaHJlYWQ+IGNyZWF0ZUN1cnJlbnRUaHJlYWQoKTsKKyAgICB2b2lkIGlu
aXRpYWxpemVJblRocmVhZCgpOworCiAgICAgLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMg
VGhyZWFkIGVzdGFibGlzaG1lbnQgaW1wbGVtZW50YXRpb24uCiAgICAgYm9vbCBlc3RhYmxpc2hI
YW5kbGUoTmV3VGhyZWFkQ29udGV4dCopOwogCkBAIC0yMTMsNiArMjU4LDE2IEBAIGNsYXNzIFRo
cmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICNlbHNlCiAjZXJy
b3IgVW5rbm93biBTeXN0ZW0KICNlbmRpZgorCisgICAgQXRvbWljU3RyaW5nVGFibGUqIG1fY3Vy
cmVudEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OworICAgIEF0b21pY1N0cmluZ1RhYmxl
KiBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKKyAgICBBdG9taWNTdHJp
bmdUYWJsZURlc3RydWN0b3IgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgeyBudWxscHRy
IH07CisKKyNpZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCisgICAgU3RhY2tTdGF0czo6UGVyVGhyZWFk
U3RhdHMgbV9zdGFja1N0YXRzOworI2VuZGlmCisgICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiBtX3NhdmVkTGFzdFN0YWNrVG9wOwog
fTsKIAogLy8gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZHMuCkBA
IC0yMjMsNiArMjc4LDEwIEBAIGlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQo
KQogICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgpOwogfQogCitpbmxpbmUgVGhyZWFkJiBU
aHJlYWQ6OmN1cnJlbnQoKQoreworICAgIHJldHVybiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQoKS50
aHJlYWQoKTsKK30KIAogLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlbWFpbiBi
ZWNhdXNlIHRoZXkgYXJlIHVzZWQgZnJvbSBXZWJLaXQgV2luZG93cyBzdXBwb3J0IGxpYnJhcnks
CiAvLyBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLmRsbC4gV2hlbiB1cGRhdGluZyB0aGUgc3Vw
cG9ydCBsaWJyYXJ5LCB3ZSBzaG91bGQgdXNlIG5ldyBBUEkgaW5zdGVhZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IDMwYzQ5OWZkYTljYWUxZjZkZjY0YzFkNGVhYTZjYjVi
NmY5ODE3NzIuLjZlODhhYTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMzMGM2ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTQ1LDYgKzQ1LDkgQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKK3VzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKK3VzaW5nIFRo
cmVhZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCogYXJndW1lbnQpOworCiAjaWYgVVNFKFBUSFJF
QURTKQogdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUgPSBwdGhyZWFkX3Q7CiB1c2luZyBQbGF0
Zm9ybU11dGV4ID0gcHRocmVhZF9tdXRleF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMu
Y3BwCmluZGV4IDEyZDdjNzEzODYxOTJlOGY0NTU3ZTMzZjI5YjM1MjE5ODc2NWU3OGYuLmNmZWVh
YmIyMzg4ZjBmYmNlZTU0Mjg2MTA1MWJjY2Q2YTdlODFhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmdQdGhyZWFkcy5jcHAKQEAgLTI4NiwxOCArMjg2LDE2IEBAIHZvaWQgVGhyZWFkOjpkZXRhY2go
KQogICAgICAgICBkaWRCZWNvbWVEZXRhY2hlZCgpOwogfQogCi1UaHJlYWQmIFRocmVhZDo6Y3Vy
cmVudCgpCi17Ci0gICAgaWYgKFRocmVhZCogY3VycmVudCA9IGN1cnJlbnRNYXlCZU51bGwoKSkK
LSAgICAgICAgcmV0dXJuICpjdXJyZW50OwogCitSZWY8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZUN1
cnJlbnRUaHJlYWQoKQorewogICAgIC8vIE5vdCBhIFdURi1jcmVhdGVkIHRocmVhZCwgVGhyZWFk
SWRlbnRpZmllciBpcyBub3QgZXN0YWJsaXNoZWQgeWV0LgogICAgIFJlZjxUaHJlYWQ+IHRocmVh
ZCA9IGFkb3B0UmVmKCpuZXcgVGhyZWFkKCkpOwogICAgIHRocmVhZC0+ZXN0YWJsaXNoUGxhdGZv
cm1TcGVjaWZpY0hhbmRsZShwdGhyZWFkX3NlbGYoKSk7CiAgICAgdGhyZWFkLT5tX3N0YWNrID0g
U3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpOwotICAgIFRocmVhZEhvbGRl
cjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOworICAgIHRocmVhZC0+aW5pdGlhbGl6ZUluVGhy
ZWFkKCk7CiAgICAgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRFdmVuSWZOb25XVEZDcmVhdGVkKCk7
Ci0gICAgcmV0dXJuIHRocmVhZC5nZXQoKTsKKyAgICByZXR1cm4gdGhyZWFkOwogfQogCiBUaHJl
YWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCmlu
ZGV4IDA1MjNhMmU2YmI1ZjY2MjZhYzhjMDRjOTI4OWEwNWU1N2Y1ZTAxNTAuLmU5MzFkZmZiOGY0
ZGJkMDdlOGE2MjQ1ZDI3M2I2ODM4MzRiMzgxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1dpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcApA
QCAtMjQzLDExICsyNDMsOCBAQCBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ2lzdGVycykKICAgICByZXR1cm4gc2l6ZW9mKENPTlRFWFQpOwogfQogCi1U
aHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCitSZWY8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZUN1cnJl
bnRUaHJlYWQoKQogewotICAgIGlmIChUaHJlYWQqIGN1cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxs
KCkpCi0gICAgICAgIHJldHVybiAqY3VycmVudDsKLQogICAgIC8vIE5vdCBhIFdURi1jcmVhdGVk
IHRocmVhZCwgVGhyZWFkSWRlbnRpZmllciBpcyBub3QgZXN0YWJsaXNoZWQgeWV0LgogICAgIFJl
ZjxUaHJlYWQ+IHRocmVhZCA9IGFkb3B0UmVmKCpuZXcgVGhyZWFkKCkpOwogCkBAIC0yNTcsOSAr
MjU0LDkgQEAgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQogCiAgICAgdGhyZWFkLT5lc3RhYmxp
c2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKGhhbmRsZSwgY3VycmVudElEKCkpOwogICAgIHRocmVh
ZC0+bV9zdGFjayA9IFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKTsKLSAg
ICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUodGhyZWFkLmdldCgpKTsKKyAgICB0aHJlYWQtPmlu
aXRpYWxpemVJblRocmVhZCgpOwogICAgIGluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9u
V1RGQ3JlYXRlZCgpOwotICAgIHJldHVybiB0aHJlYWQuZ2V0KCk7CisgICAgcmV0dXJuIHRocmVh
ZDsKIH0KIAogVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dURlRo
cmVhZERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2U3N2QyNTg1Zjhh
NjE0NDRmOTc0ZTdjM2I4YWQxM2ExY2I2NjkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldURlRocmVhZERhdGEuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxl
Lmg+Ci0KLSNpZiBVU0UoV0VCX1RIUkVBRCkKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi0jaWYgIUhBVkUoRkFTVF9UTFMpCi1UaHJlYWRT
cGVjaWZpYzxXVEZUaHJlYWREYXRhPiogV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YTsKLSNlbmRp
ZgotCi1XVEZUaHJlYWREYXRhOjpXVEZUaHJlYWREYXRhKCkKLSAgICA6IG1fc3RhY2tCb3VuZHMo
U3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpKQotICAgICwgbV9zYXZlZExh
c3RTdGFja1RvcChzdGFjaygpLm9yaWdpbigpKQotewotICAgIEF0b21pY1N0cmluZ1RhYmxlOjpj
cmVhdGUoKnRoaXMpOwotICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gbV9kZWZhdWx0
QXRvbWljU3RyaW5nVGFibGU7Ci19Ci0KLVdURlRocmVhZERhdGE6On5XVEZUaHJlYWREYXRhKCkK
LXsKLSAgICBpZiAobV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpCi0gICAgICAgIG1fYXRv
bWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlKTsKLX0K
LQotI2lmIEhBVkUoRkFTVF9UTFMpCi1XVEZUaHJlYWREYXRhJiBXVEZUaHJlYWREYXRhOjpjcmVh
dGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0KCkKLXsKLSAgICBXVEZUaHJlYWREYXRh
KiBkYXRhID0gbmV3IFdURlRocmVhZERhdGE7Ci0gICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGly
ZWN0KFdURl9USFJFQURfREFUQV9LRVksIGRhdGEpOwotICAgIHB0aHJlYWRfa2V5X2luaXRfbnAo
V1RGX1RIUkVBRF9EQVRBX0tFWSwgW10odm9pZCogZGF0YSl7Ci0gICAgICAgIGRlbGV0ZSBzdGF0
aWNfY2FzdDxXVEZUaHJlYWREYXRhKj4oZGF0YSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICpkYXRh
OwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvV1RGVGhyZWFkRGF0YS5oIGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTVmZjgxNzY2ZDgzYzU2ZGJjYWNiNjNiYWU2
ZTI2MDhhNjJjMzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
KgotICovCi0KLSNpZm5kZWYgV1RGVGhyZWFkRGF0YV9oCi0jZGVmaW5lIFdURlRocmVhZERhdGFf
aAotCi0jaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KLSNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0
cy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotCi1uYW1lc3BhY2UgV1RGIHsK
LQotY2xhc3MgQXRvbWljU3RyaW5nVGFibGU7Ci0KLXR5cGVkZWYgdm9pZCAoKkF0b21pY1N0cmlu
Z1RhYmxlRGVzdHJ1Y3RvcikoQXRvbWljU3RyaW5nVGFibGUqKTsKLQotY2xhc3MgV1RGVGhyZWFk
RGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV1RGVGhyZWFkRGF0YSk7Ci1wdWJsaWM6
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdURlRocmVhZERhdGEoKTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgfldURlRocmVhZERhdGEoKTsKLQotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9t
aWNTdHJpbmdUYWJsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9jdXJyZW50QXRvbWljU3Ry
aW5nVGFibGU7Ci0gICAgfQotCi0gICAgQXRvbWljU3RyaW5nVGFibGUqIHNldEN1cnJlbnRBdG9t
aWNTdHJpbmdUYWJsZShBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUpCi0gICAg
ewotICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogb2xkQXRvbWljU3RyaW5nVGFibGUgPSBtX2N1
cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICAgICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUgPSBhdG9taWNTdHJpbmdUYWJsZTsKLSAgICAgICAgcmV0dXJuIG9sZEF0b21pY1N0cmluZ1Rh
YmxlOwotICAgIH0KLQotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjaygpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9zdGFja0JvdW5kczsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoU1RBQ0tfU1RB
VFMpCi0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHN0YWNrU3RhdHMoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fc3RhY2tTdGF0czsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHZvaWQq
IHNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Nh
dmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5OwotICAgIH0KLQotICAgIHZvaWQgc2V0U2F2ZWRTdGFj
a1BvaW50ZXJBdFZNRW50cnkodm9pZCogc3RhY2tQb2ludGVyQXRWTUVudHJ5KQotICAgIHsKLSAg
ICAgICAgbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHN0YWNrUG9pbnRlckF0Vk1FbnRy
eTsKLSAgICB9Ci0KLSAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNhdmVk
TGFzdFN0YWNrVG9wKHZvaWQqIGxhc3RTdGFja1RvcCkKLSAgICB7Ci0gICAgICAgIG1fc2F2ZWRM
YXN0U3RhY2tUb3AgPSBsYXN0U3RhY2tUb3A7Ci0gICAgfQotCi0gICAgdm9pZCogbV9hcGlEYXRh
IHsgbnVsbHB0ciB9OwotCi1wcml2YXRlOgotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKLSAgICBBdG9taWNTdHJpbmdUYWJsZSog
bV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07Ci0gICAgQXRvbWljU3RyaW5n
VGFibGVEZXN0cnVjdG9yIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIHsgbnVsbHB0ciB9
OwotCi0gICAgU3RhY2tCb3VuZHMgbV9zdGFja0JvdW5kczsKLSNpZiBFTkFCTEUoU1RBQ0tfU1RB
VFMpCi0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMgbV9zdGFja1N0YXRzOwotI2VuZGlm
Ci0gICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSB7IG51bGxwdHIgfTsKLSAg
ICB2b2lkKiBtX3NhdmVkTGFzdFN0YWNrVG9wOwotCi0jaWYgSEFWRShGQVNUX1RMUykKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdURlRocmVhZERhdGEmIGNyZWF0ZUFuZFJlZ2lzdGVy
Rm9yR2V0c3BlY2lmaWNEaXJlY3QoKTsKLSNlbHNlCi0gICAgc3RhdGljIFdURl9FWFBPUlREQVRB
IFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBzdGF0aWNEYXRhOwotI2VuZGlmCi0KLSAg
ICBmcmllbmQgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgpOwotICAgIGZyaWVuZCBjbGFz
cyBBdG9taWNTdHJpbmdUYWJsZTsKLX07Ci0KLWlubGluZSBXVEZUaHJlYWREYXRhJiB3dGZUaHJl
YWREYXRhKCkKLXsKLSAgICAvLyBXUlQgV2ViQ29yZToKLSAgICAvLyAgICBXVEZUaHJlYWREYXRh
IGlzIHVzZWQgb24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQK
LSAgICAvLyAgICBvbiBzZWNvbmRhcnkgb25lcywgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3Igc3lu
Y2hyb25pemF0aW9uIGhlcmUuCi0gICAgLy8gV1JUIEphdmFTY3JpcHRDb3JlOgotICAgIC8vICAg
IHd0ZlRocmVhZERhdGEoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVh
ZGluZygpLCBlbnN1cmluZwotICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBh
IHB0aHJlYWRfb25jZSBsb2NrZWQgY29udGV4dC4KLSNpZiAhSEFWRShGQVNUX1RMUykKLSAgICBp
ZiAoIVdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEpCi0gICAgICAgIFdURlRocmVhZERhdGE6OnN0
YXRpY0RhdGEgPSBuZXcgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT47Ci0gICAgcmV0dXJu
ICoqV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YTsKLSNlbHNlCi0gICAgaWYgKFdURlRocmVhZERh
dGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXVEZUaHJlYWREYXRhKj4oX3B0aHJlYWRfZ2V0c3BlY2lm
aWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVkpKSkKLSAgICAgICAgcmV0dXJuICpkYXRhOwot
ICAgIHJldHVybiBXVEZUaHJlYWREYXRhOjpjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmlj
RGlyZWN0KCk7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6
V1RGVGhyZWFkRGF0YTsKLXVzaW5nIFdURjo6d3RmVGhyZWFkRGF0YTsKLXVzaW5nIFdURjo6QXRv
bWljU3RyaW5nVGFibGU7Ci0KLSNlbmRpZiAvLyBXVEZUaHJlYWREYXRhX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBhNGUwM2RlM2FmNjU3YzY5Zjc0ZDE2MjUxZjAwMDcz
OTEzNmE1MzQ0Li4yYTA2NTEyODNhOTcyNzFlNTc2YTIyMmRkZjAyMzIwZDA2YTBkMmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC0yMyw4ICsyMywxMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogCi0jaW5jbHVkZSAiSW50
ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKKyNpbmNs
dWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4KKwogI2luY2x1ZGUgImR0b2EuaCIKIAog
bmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcApp
bmRleCAzNTIyNDg1ZDdiODQ3M2NjODBlNTI0MGE3MzJhMDU1M2M0OGJjMzQyLi4wNjNlNGVlYjdl
NTdlNWNkODViMGExNzE5NTRkMzg5MjRjMTc3OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nSW1wbC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJTdHJpbmdIYXNo
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJpbnRTdHJlYW0uaCIKICNpbmNsdWRlICJUaHJlYWRpbmcu
aCIKLSNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRG
OC5oPgogCiAjaWYgVVNFKFdFQl9USFJFQUQpCkBAIC03Miw3ICs3MSw3IEBAIHVzaW5nIFN0cmlu
Z1RhYmxlSW1wbCA9IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OwogCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBTdHJpbmdUYWJsZUltcGwmIHN0cmluZ1RhYmxlKCkKIHsKLSAgICByZXR1cm4gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCktPnRhYmxlKCk7CisgICAgcmV0dXJuIFRocmVhZDo6
Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCktPnRhYmxlKCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ1RhYmxlLmNwcAppbmRleCBmZThhNDg4NGRiN2U2NzhkZWQ2YWYzMmRkNDM3MTJl
NTk1ZjNiOTM1Li5mNmQ3OGYyYmU2ZjQ4ZjJhYTY4MmMwNWQxMGQyNDY0NjhiMGMyNGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcApAQCAtMjUsMTEgKzI1LDEx
IEBACiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi12b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVh
dGUoV1RGVGhyZWFkRGF0YSYgZGF0YSkKK3ZvaWQgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShU
aHJlYWQmIHRocmVhZCkKIHsKICNpZiBVU0UoV0VCX1RIUkVBRCkKICAgICAvLyBPbiBpT1MsIG9u
ZSBBdG9taWNTdHJpbmdUYWJsZSBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgbWFpbiBVSSB0aHJlYWQg
YW5kIHRoZSBXZWJUaHJlYWQuCkBAIC0zNywxNyArMzcsMTcgQEAgdm9pZCBBdG9taWNTdHJpbmdU
YWJsZTo6Y3JlYXRlKFdURlRocmVhZERhdGEmIGRhdGEpCiAKICAgICBib29sIGN1cnJlbnRUaHJl
YWRJc1dlYlRocmVhZCA9IGlzV2ViVGhyZWFkKCk7CiAgICAgaWYgKGN1cnJlbnRUaHJlYWRJc1dl
YlRocmVhZCB8fCBpc1VJVGhyZWFkKCkpCi0gICAgICAgIGRhdGEubV9kZWZhdWx0QXRvbWljU3Ry
aW5nVGFibGUgPSBzaGFyZWRTdHJpbmdUYWJsZTsKKyAgICAgICAgdGhyZWFkLm1fZGVmYXVsdEF0
b21pY1N0cmluZ1RhYmxlID0gc2hhcmVkU3RyaW5nVGFibGU7CiAgICAgZWxzZQotICAgICAgICBk
YXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOwor
ICAgICAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3Ry
aW5nVGFibGU7CiAKICAgICAvLyBXZSBkbyB0aGUgZm9sbG93aW5nIHNvIHRoYXQgaXRzIGRlc3Ry
dWN0aW9uIGhhcHBlbnMgb25seQogICAgIC8vIG9uY2UgLSBvbiB0aGUgbWFpbiBVSSB0aHJlYWQu
CiAgICAgaWYgKCFjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQpCi0gICAgICAgIGRhdGEubV9hdG9t
aWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKKyAg
ICAgICAgdGhyZWFkLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5n
VGFibGU6OmRlc3Ryb3k7CiAjZWxzZQotICAgIGRhdGEubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFi
bGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7Ci0gICAgZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxl
RGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OworICAgIHRocmVhZC5tX2Rl
ZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKKyAgICB0aHJl
YWQubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVz
dHJveTsKICNlbmRpZiAvLyBVU0UoV0VCX1RIUkVBRCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmdUYWJsZS5oCmluZGV4IDk0NGFlOTJiZGVjNDQzOWJmMDcwMTIxYjc4YTM1ZjVh
ODRmYzQwOWQuLmQzYmM5Y2U1ZjZlMDcyNzc1NmNjOWViYmU0ZjEyNTM3ZmFhYjJiNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKQEAgLTI0LDE5ICsyNCwxOSBAQAog
I2RlZmluZSBXVEZfQXRvbWljU3RyaW5nVGFibGVfaAogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFN0cmluZ0ltcGw7CitjbGFz
cyBUaHJlYWQ7CiAKIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkF0b21pY1N0cmlu
Z1RhYmxlKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGUoV1RGVGhyZWFkRGF0YSYpOworICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZShUaHJlYWQmKTsKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYg
dGFibGUoKSB7IHJldHVybiBtX3RhYmxlOyB9CiAKIHByaXZhdGU6CkBAIC00Niw1ICs0Niw2IEBA
IGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlIHsKIH07CiAKIH0KK3VzaW5nIFdURjo6QXRvbWljU3Ry
aW5nVGFibGU7CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316664</attachid>
            <date>2017-07-28 12:23:13 -0700</date>
            <delta_ts>2017-07-28 12:31:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170729042312.patch</filename>
            <type>text/plain</type>
            <size>66939</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi5hYzYzZjlhOWJhY2E0NmRm
Zjg5YjQ1MWZkZDg5N2Y3ZWUzNTk3NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MSBAQAogMjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVTdGFja0xp
bWl0cyk6CisgICAgICAgIChKU0M6OlZNOjpjb21taXR0ZWRTdGFja0J5dGVDb3VudCk6CisgICAg
ICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlKToK
KyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50
cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpWTTo6ZW5zdXJlU3RhY2tDYXBhY2l0eUZvcik6CisgICAgICAgICogeWFy
ci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3Ry
dWN0b3I6OmlzU2FmZVRvUmVjdXJzZSk6CisKKzIwMTctMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0IHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFu
dG9tRGlyZWN0QXJndW1lbnRzIHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzIHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tU3ByZWFkIHx8IGNhbmRpZGF0ZS0+
b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NjVkMmRlZTUwMWVjNThh
MTk5ZjUxZGVkZGUyMWM4OWI5ZWYwOWEzLi5kMTA5ZDNiYTFhOWRmZmFlOWEwYzQ5MDFiYzJiYzk1
MmM5NDRhOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA3LTI4ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERhdGEg
dG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0
Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAq
IHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAg
ICAgIChXVEY6OlN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6Cisg
ICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAg
ICAoV1RGOjpTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChX
VEY6OlN0YWNrU3RhdHM6OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0
Q2hlY2tQb2ludDo6TGF5b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRl
ci5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVy
OjpUaHJlYWRIb2xkZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlC
ZU51bGwpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAq
IHd0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgor
ICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1
cnJlbnREeWluZyk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhy
ZWFkKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpkaWRFeGl0KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1Rh
YmxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUp
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJl
YWQ6OnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpz
ZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2
ZWRMYXN0U3RhY2tUb3ApOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNr
VG9wKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6
CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChX
VEY6OlRocmVhZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dp
bi5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAg
ICAgIChXVEY6OlRocmVhZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRo
cmVhZERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJl
bW92ZWQuCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3
dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUp
OgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuaDoKKwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3
YWl0IGluIHNvbWUgcGxhdGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJl
YWRTdGFja0JvdW5kcyhQbGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyNzRk
MjliMGNjMTljMDA4YjFmYjcyZmRjNTg4MzkzMGUwMmE0MS4uZDg3MGMxM2Q3NDYwNmViYmMwMDcy
NzFlY2M2YjIxMGU1NDZjNjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA3
LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1l
cmdlIFdURlRocmVhZERhdGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAg
ICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKwogMjAxNy0w
Ny0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJRExdIFNw
bGl0LXVwIGFuZCBjbGVhbnVwIEZldGNoIElETCBmaWxlcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVt
b3ZpbmcgdW5uZWNlc3NhcnkganMgYnVpbHRpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KaW5kZXggNWIxMDBjNzVlMTViOWY0NzY2Mjk0NGFhMGZjNWJiOGRkMDlmNDZjNS4u
YmFlYjE3OGQ0ODFkYmVkZjJiZWQzZGY2ZDRlNjNmZDE4MTU2Yzk5OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE0MSwxNSArMTQxLDE1IEBAIC0gKEpTVmFsdWUg
KilnbG9iYWxPYmplY3QKIAogKyAoSlNDb250ZXh0ICopY3VycmVudENvbnRleHQKIHsKLSAgICBX
VEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNr
RGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAg
VGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVu
dHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgcmV0dXJuIGVudHJ5
ID8gZW50cnktPmNvbnRleHQgOiBuaWw7CiB9CiAKICsgKEpTVmFsdWUgKiljdXJyZW50VGhpcwog
ewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAg
Q2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWREYXRhLm1fYXBpRGF0
YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIENhbGxiYWNr
RGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICBpZiAo
IWVudHJ5KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOmVudHJ5LT50aGlzVmFsdWUgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVu
dENvbnRleHRdXTsKQEAgLTE1Nyw4ICsxNTcsOCBAQCArIChKU1ZhbHVlICopY3VycmVudFRoaXMK
IAogKyAoSlNWYWx1ZSAqKWN1cnJlbnRDYWxsZWUKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJl
YWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2Fs
bGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0
YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+Y2FsbGVl
VmFsdWUgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVudENvbnRleHRdXTsKQEAgLTE2Niw4ICsx
NjYsOCBAQCArIChKU1ZhbHVlICopY3VycmVudENhbGxlZQogCiArIChOU0FycmF5ICopY3VycmVu
dEFyZ3VtZW50cwogewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWRE
YXRhKCk7Ci0gICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWRE
YXRhLm1fYXBpRGF0YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwor
ICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0
YTsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yOTQsMjEgKzI5
NCwyMSBAQCAtIChCT09MKWJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOihKU1ZhbHVlUmVmKWV4Y2Vw
dGlvblZhbHVlCiAKIC0gKHZvaWQpYmVnaW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEg
KiljYWxsYmFja0RhdGEgY2FsbGVlVmFsdWU6KEpTVmFsdWVSZWYpY2FsbGVlVmFsdWUgdGhpc1Zh
bHVlOihKU1ZhbHVlUmVmKXRoaXNWYWx1ZSBhcmd1bWVudENvdW50OihzaXplX3QpYXJndW1lbnRD
b3VudCBhcmd1bWVudHM6KGNvbnN0IEpTVmFsdWVSZWYgKilhcmd1bWVudHMKIHsKLSAgICBXVEZU
aHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOworICAgIFRocmVhZCYgdGhy
ZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKLSAgICBDYWxsYmFj
a0RhdGEgKnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWREYXRhLm1fYXBpRGF0YTsK
KyAgICBDYWxsYmFja0RhdGEgKnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9h
cGlEYXRhOwogICAgICpjYWxsYmFja0RhdGEgPSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBz
ZWxmLCBbc2VsZi5leGNlcHRpb24gcmV0YWluXSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJn
dW1lbnRDb3VudCwgYXJndW1lbnRzLCBuaWwgfTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9
IGNhbGxiYWNrRGF0YTsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhOwogICAg
IHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQogCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6
KENhbGxiYWNrRGF0YSAqKWNhbGxiYWNrRGF0YQogewotICAgIFdURlRocmVhZERhdGEmIHRocmVh
ZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1
cnJlbnQoKTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhj
ZXB0aW9uOwogICAgIFtjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbiByZWxlYXNlXTsK
ICAgICBbY2FsbGJhY2tEYXRhLT5jdXJyZW50QXJndW1lbnRzIHJlbGVhc2VdOwotICAgIHRocmVh
ZERhdGEubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0OworICAgIHRocmVhZC5tX2FwaURh
dGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZjY1ZWY4NDFhN2MxZTAwNmEyZWFiNzE1MjRm
ZGRlOGE2YWEyYTI2Ny4uM2Q0YmJlMzZlNjMzODU5MWEzODhjYzY1NGZiMDU4Nzg4M2RhYjY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29s
IGlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0YXRlKFZNKiB2bSkKIAogYm9vbCBpc1ZhbGlk
VGhyZWFkU3RhdGUoVk0qIHZtKQogewotICAgIGlmICh2bS0+YXRvbWljU3RyaW5nVGFibGUoKSAh
PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSkKKyAgICBpZiAodm0tPmF0b21p
Y1N0cmluZ1RhYmxlKCkgIT0gV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodm0tPmlzU2hhcmVkSW5zdGFu
Y2UoKSAmJiAhaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUodm0pKQpAQCAtMjAyMyw3
ICsyMDIzLDcgQEAgSGVhcDo6VGlja2V0IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKEdDUmVxdWVz
dCByZXF1ZXN0KQogICAgIHN0b3BJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIEFTU0VSVCh2bSgp
LT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2
bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09
IFdURjo6VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgCiAgICAg
TG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CiAgICAgLy8gV2UgbWF5IGJlIGFibGUg
dG8gc3RlYWwgdGhlIGNvbm4uIFRoYXQgb25seSB3b3JrcyBpZiB0aGUgY29sbGVjdG9yIGlzIGRl
ZmluaXRlbHkgbm90IHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKaW5kZXggNWIzMDI2NGM3ZjQxMWUzOGQ1ODBmNTVkNWQ3ZDFkNjg5YjM2MDFl
Yi4uODgyM2U2ZjYwMTYxMTJiNDczOWZhMDI4ZjQzMWJjN2U4ZDdjOGIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTQxLDE0ICs0MSwxMyBA
QAogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCIKLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFk
RGF0YS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRp
b24pCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
ZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNT
dHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAKICAg
ICBQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSA9IFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgc291cmNlKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5jaGVja1N5bnRh
eChleGVjKTsKQEAgLTY0LDcgKzYzLDcgQEAgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGMKIGJvb2wg
Y2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9y
JiBlcnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBU
aHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICByZXR1cm4gISFwYXJz
ZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBhcnNlTW9kZTo6
UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CkBAIC03NCw3ICs3
Myw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1
cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxl
UHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+
KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CkBAIC05Miw3ICs5MSw3IEBAIEpTVmFs
dWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21p
Y1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKIAogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwpAQCAtMTY3LDcgKzE2Niw3
IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0
IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0CiBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2
YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVj
LT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3Ry
aW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JC
dXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOwpAQCAtMTc4LDcgKzE3
Nyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkg
PT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3Ry
aW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQ
b2ludE1vZHVsZSh2bSk7CkBAIC0yMDUsNyArMjA0LDcgQEAgc3RhdGljIEpTSW50ZXJuYWxQcm9t
aXNlKiBsb2FkTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0YXRlKiBleGVj
LAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhl
Yy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4g
bG9hZE1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOwpAQCAt
MjE2LDcgKzIxNSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9s
Rm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CkBAIC0yMzQsNyArMjMzLDcgQEAgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTVmFsdWUKIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+
dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwog
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxP
YmplY3QoKTsKQEAgLTI0NCw3ICsyNDMsNyBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYQogSlNJ
bnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6
Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVj
LT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBl
eGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5yZXF1ZXN0SW1wb3J0
TW9kdWxlKGV4ZWMsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IDk5MjU2ZDY1ODkzNDkwNmIyMjAx
Y2I1YmRlZWRlNTc3MjJlMjBlZDYuLmQ1NTJkMGIxZjYyODcxNWEyNjM2YWI3NzM3ZWRmYzYxOTcz
NGMwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRBdG9taWNT
dHJpbmdUYWJsZShWTSogdm0pCiB7CiAgICAgLy8gQ2hlY2sgdGhlIGlkZW50aWZpZXIgdGFibGUg
YWNjZXNzaWJsZSB0aHJvdWdoIHRoZSB0aHJlYWRzcGVjaWZpYyBtYXRjaGVzIHRoZQogICAgIC8v
IHZtJ3MgaWRlbnRpZmllciB0YWJsZS4KLSAgICBBU1NFUlRfVU5VU0VEKHZtLCB2bS0+YXRvbWlj
U3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpj
dXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiB9CiAKIHZvaWQgSWRlbnRpZmllcjo6Y2hl
Y2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAppbmRl
eCA5ZWYxNDNhZDQ4ZTcxZDI4YjE3YmE0MTZmYTNiMTRiY2JkYjc0NWFhLi44NTA3M2I2ZDI5NWI1
OTk2M2EyMTNkNTI0NTViODRiNGFkMTY1NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAtNzUsOCArNzUsOCBA
QCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgICAgICBEaXNhbGxvd1ZNUmVlbnRyeTo6
aW5pdGlhbGl6ZSgpOwogI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsK
LSAgICAgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAg
ICAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnN0YWNrKCku
b3JpZ2luKCkpOworICAgICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwor
ICAgICAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tUb3AodGhyZWFkLnN0YWNrKCkub3JpZ2lu
KCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBXYXNtOjpUaHVua3M6Omlu
aXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCmluZGV4
IGJhNmM0NGE1ZGY1MTRkZTUxN2M5YTI1ODc1NjFhOThhOWQ5MjQxMGUuLmMyYzgyNzZhYzMyOTBl
ZjE2YzlmY2U0YWZhODRhMzlmNjAwY2IzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcApAQCAtMTI3LDkgKzEyNyw5IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJl
TG9jaygpCiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgV1RGVGhy
ZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVh
ZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIEFTU0VSVCghbV9lbnRyeUF0b21pY1N0cmluZ1Rh
YmxlKTsKLSAgICBtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB0aHJlYWREYXRhLnNldEN1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBtX2Vu
dHJ5QXRvbWljU3RyaW5nVGFibGUgPSB0aHJlYWQuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxl
KG1fdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIEFTU0VSVChtX2VudHJ5QXRvbWljU3Ry
aW5nVGFibGUpOwogCiAgICAgaWYgKG1fdm0tPmhlYXAuaGFzQWNjZXNzKCkpCkBAIC0xNDMsNyAr
MTQzLDcgQEAgdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKICAgICB2b2lkKiBwID0gJnA7
IC8vIEEgcHJveHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCiAgICAgbV92bS0+c2V0
U3RhY2tQb2ludGVyQXRWTUVudHJ5KHApOwogCi0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRo
cmVhZERhdGEuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgbV92bS0+c2V0TGFzdFN0YWNrVG9w
KHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKIAogICAgIG1fdm0tPmhlYXAubWFjaGluZVRo
cmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAt
MjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQogICAgIH0KIAog
ICAgIGlmIChtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUpIHsKLSAgICAgICAgd3RmVGhyZWFkRGF0
YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUp
OworICAgICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUo
bV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKICAgICAgICAgbV9lbnRyeUF0b21pY1N0cmluZ1Rh
YmxlID0gbnVsbHB0cjsKICAgICB9CiB9CkBAIC0yMjUsOSArMjI1LDkgQEAgdW5zaWduZWQgSlNM
b2NrOjpkcm9wQWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyKQogCiAgICAgZHJvcHBlci0+
c2V0RHJvcERlcHRoKG1fbG9ja0Ryb3BEZXB0aCk7CiAKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJl
YWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIHRocmVhZERhdGEuc2V0U2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkobV92bS0+c3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOwotICAgIHRocmVh
ZERhdGEuc2V0U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0YWNrVG9wKCkpOworICAgIFRo
cmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgdGhyZWFkLnNldFNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKKyAgICB0
aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0YWNrVG9wKCkpOwogCiAgICAg
dW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCA9IG1fbG9ja0NvdW50OwogICAgIHVubG9jayhkcm9w
cGVkTG9ja0NvdW50KTsKQEAgLTI1Miw5ICsyNTIsOSBAQCB2b2lkIEpTTG9jazo6Z3JhYkFsbExv
Y2tzKERyb3BBbGxMb2NrcyogZHJvcHBlciwgdW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCkKIAog
ICAgIC0tbV9sb2NrRHJvcERlcHRoOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKLSAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhy
ZWFkRGF0YS5zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICBtX3ZtLT5zZXRMYXN0
U3RhY2tUb3AodGhyZWFkRGF0YS5zYXZlZExhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRo
cmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1F
bnRyeSh0aHJlYWQuc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgbV92bS0+c2V0
TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKIH0KIAogSlNMb2NrOjpE
cm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggMTI1MTAyNDM0NjQzNzdhNDQ5YWZlY2JjNTk5ZmU5ODQyNzA5ZmU3YS4u
MDY5NTliYTQ2NWUxOTJiZTYzYTgxODhkOWZjMjM3N2Y3Y2U5NjkzZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTE0LDcgKzExNCw2IEBACiAjaW5jbHVkZSA8d3RmL1Np
bXBsZVN0YXRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oPgogCkBAIC0xNzYsNyArMTc1LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgdG9wVk1FbnRyeUZyYW1lKG51bGxwdHIpCiAg
ICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwgcHJvbWlzZURl
ZmVycmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9taXNlRGVmZXJyZWRUaW1lcj4oKnRoaXMp
KQotICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxlKQorICAg
ICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVu
dCgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCiAgICAgLCBw
cm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCiAgICAg
LCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtl
X3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKQEAgLTIxMSwxMyArMjEwLDEzIEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fc2hhZG93Q2hpY2tlbihzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0NoaWNrZW4+KCkpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcg
SW50ZXJwcmV0ZXIoKnRoaXMpOwotICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CisgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5z
dGFjaygpOwogICAgIHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNl
cnZlZFpvbmVTaXplKCkpOwogICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CiAK
ICAgICAvLyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQg
aGVyZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwotICAgIEF0b21pY1N0cmluZ1RhYmxl
KiBleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3Vy
cmVudEF0b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFibGUpOworICAgIEF0b21pY1N0
cmluZ1RhYmxlKiBleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSBUaHJlYWQ6OmN1cnJl
bnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdUYWJsZSk7CiAg
ICAgcHJvcGVydHlOYW1lcyA9IG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKTsKICAgICBzdHJ1
Y3R1cmVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cykpOwogICAgIHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJl
UmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKQEAgLTI3MCw3
ICsyNjksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
bmF0aXZlU3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlLnNldCgqdGhpcywgTmF0aXZlU3RkRnVuY3Rp
b25DZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc21hbGxT
dHJpbmdzLmluaXRpYWxpemVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAotICAgIHd0ZlRocmVhZERh
dGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21pY1N0cmlu
Z1RhYmxlKTsKKyAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUoZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKQEAgLTY3Miw3ICs2
NzEsNyBAQCBpbmxpbmUgdm9pZCBWTTo6dXBkYXRlU3RhY2tMaW1pdHMoKQogICAgIHZvaWQqIGxh
c3RTb2Z0U3RhY2tMaW1pdCA9IG1fc29mdFN0YWNrTGltaXQ7CiAjZW5kaWYKIAotICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOworICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgc2l6
ZV90IHJlc2VydmVkWm9uZVNpemUgPSBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCk7CiAgICAg
Ly8gV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHRoYXQgT3B0aW9uczo6cmVzZXJ2ZWRa
b25lU2l6ZSgpID49IG1pbmltdW1SZXNlcnZlWm9uZVNpemUgYXQKICAgICAvLyBvcHRpb25zIGlu
aXRpYWxpemF0aW9uIHRpbWUsIGFuZCB0aGUgb3B0aW9uIHZhbHVlIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGNoYW5nZWQgdGhlcmVhZnRlci4KQEAgLTg4Niw5ICs4ODUsOSBAQCBzaXplX3QgVk06OmNv
bW1pdHRlZFN0YWNrQnl0ZUNvdW50KCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdoZW4gdXNp
bmcgdGhlIEMgc3RhY2ssIHdlIGRvbid0IGtub3cgaG93IG1hbnkgc3RhY2sgcGFnZXMgYXJlIGFj
dHVhbGx5CiAgICAgLy8gY29tbWl0dGVkLiBTbywgd2UgdXNlIHRoZSBjdXJyZW50IHN0YWNrIHVz
YWdlIGFzIGFuIGVzdGltYXRlLgotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5p
c0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2so
KS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICBpbnQ4X3QqIGN1cnJlbnQgPSByZWludGVycHJl
dF9jYXN0PGludDhfdCo+KCZjdXJyZW50KTsKLSAgICBpbnQ4X3QqIGhpZ2ggPSByZWludGVycHJl
dF9jYXN0PGludDhfdCo+KHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICBp
bnQ4X3QqIGhpZ2ggPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KFRocmVhZDo6Y3VycmVudCgp
LnN0YWNrKCkub3JpZ2luKCkpOwogICAgIHJldHVybiBoaWdoIC0gY3VycmVudDsKICNlbHNlCiAg
ICAgcmV0dXJuIENMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggZWUyMzJhN2YyMWNlY2QwMWRmN2U5MzJmOGI1MmU3NGUzZTQ4
ZmE2ZC4uOWZiNGQ4YmU0MmMxZjc4ZDFlYjBlNTA5ZGJhMjkzNDE2ZjNiZGY2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSA8d3RmL1N0
b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0yNDMsNyArMjQy
LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMg
RG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAvLyBXZWJDb3JlIGhhcyBhIG9uZS10by1v
bmUgbWFwcGluZyBvZiB0aHJlYWRzIHRvIFZNczsKICAgICAvLyBlaXRoZXIgY3JlYXRlKCkgb3Ig
Y3JlYXRlTGVha2VkKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UKICAgICAvLyBvbiBhIHRo
cmVhZCwgdGhpcyBpcyB0aGUgJ2RlZmF1bHQnIFZNIChpdCB1c2VzIHRoZQotICAgIC8vIHRocmVh
ZCdzIGRlZmF1bHQgc3RyaW5nIHVuaXF1aW5nIHRhYmxlIGZyb20gd3RmVGhyZWFkRGF0YSkuCisg
ICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUgZnJvbSBUaHJlYWQ6
OmN1cnJlbnQoKSkuCiAgICAgLy8gQVBJIGNvbnRleHRzIGNyZWF0ZWQgdXNpbmcgdGhlIG5ldyBj
b250ZXh0IGdyb3VwIGF3YXJlIGludGVyZmFjZQogICAgIC8vIGNyZWF0ZSBBUElDb250ZXh0R3Jv
dXAgb2JqZWN0cyB3aGljaCByZXF1aXJlIGxlc3MgbG9ja2luZyBvZiBKU0MKICAgICAvLyB0aGFu
IHRoZSBvbGQgc2luZ2xldG9uIEFQSVNoYXJlZCBWTSBjcmVhdGVkIGZvciB1c2UgYnkKQEAgLTY5
MSw3ICs2OTAsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4s
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAgICAgYm9vbCBpc1NhZmVUb1Jl
Y3Vyc2Uodm9pZCogc3RhY2tMaW1pdCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCh3dGZU
aHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICAgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgICAg
IHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmY3Vycik7CiAgICAgICAgIHJl
dHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKaW5kZXggYzJkOWJkYTE4OGM0NzcyMDI1NmQ0MDMw
NjQ4Mjg2ZWM0NWUzMWM1OS4uZDExYThmZmE2NmRiNWZlMzBmYjlmNDlmNDUzMTM4MzZiNzhkMjM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkKIHsKICAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZmZWN0T25DdXJy
ZW50VGhyZWFkKCkpOwotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dp
bmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dy
b3dpbmdEb3dud2FyZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICAgICAgICAgdm0u
ZW50cnlTY29wZSA9IHRoaXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1Jbmxp
bmVzLmgKaW5kZXggNWE3NzYxOTUwZTBjZjZiMjg4NTYwMTkzMWFmNmI3MWEzYmUwMmQ3OC4uYmMw
YzI1ZjkxZTJjMTc2MWEyMWNhMjBlYjA4ODJhMDkzYTIxNTE5MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBib29sIFZNOjplbnN1cmVTdGFja0NhcGFjaXR5Rm9yKFJlZ2lzdGVyKiBuZXdUb3BPZlN0
YWNrKQogewogI2lmIEVOQUJMRShKSVQpCi0gICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5z
dGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIHJldHVybiBuZXdUb3BPZlN0YWNrID49
IG1fc29mdFN0YWNrTGltaXQ7CiAjZWxzZQogICAgIHJldHVybiBlbnN1cmVTdGFja0NhcGFjaXR5
Rm9yQ0xvb3AobmV3VG9wT2ZTdGFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAKaW5kZXggM2ExMTA5MGQxOTA5M2NjZWJlODA5YmM3MmQzYTZhNTAyZTljNGI1
ZC4uZGJkYjA3YjI4MjBhODIxYTdmZTY5NzZjNjE4ZGM1MThiZGFlMjAxNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCkBAIC04ODIsNyArODgxLDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25z
dHJ1Y3RvciB7CiAgICAgewogICAgICAgICBpZiAoIW1fc3RhY2tMaW1pdCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNH
cm93aW5nRG93bndhcmQoKSk7CisgICAgICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgICAgICBpbnQ4X3QqIGN1cnIgPSByZWludGVy
cHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsKICAgICAgICAgaW50OF90KiBsaW1pdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50OF90Kj4obV9zdGFja0xpbWl0KTsKICAgICAgICAgcmV0dXJuIGN1cnIg
Pj0gbGltaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
ODYxNjcxYzRhYTI4MTBjMWUzM2I1N2IzODEzZjA4YTcwYmRiM2ViLi5lMTRlMGRhMzc4NWU4Nzc4
ZmNiZWM5NTBiMWQyNDVjY2NlZDk4YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyMyw3ICsxMjMsNiBAQAogCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIz
RkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1
bHQuY3BwICovOyB9OwogCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcz
NTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCAqLzsgfTsKIAkJQThBNDc0Njkx
NTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDczNTcxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3BwICov
OyB9OwotCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QTE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi87IH07CiAJCUFEODlCNkI3MUU2NDE1
MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8q
IE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi87IH07CiAJCUFEODlCNkJBMUU2NDE1MEYwMDkw
NzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLzsgfTsKIAkJQURGMkNFNjcxRTM5RjEwNjAw
Njg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnRDb2NvYS5jcHAgKi87IH07CkBAIC01MTQsOCArNTEzLDYgQEAKIAkJQThBNDcz
NzAxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNzEx
NTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWZWN0b3JUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8qIGNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlBNDcyN0YxNTFBODI1QTAwNDEyM0ZGIC8qIERpc2Fs
bG93Q1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dDVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4
OEIgLyogRXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwZWN0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5Nyw4ICs5OTQsNiBAQAogCQkJ
CTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAogCQkJCUU0QTBBRDM3
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0QTBBRDM4MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKLQkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCi0JCQkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd3RmOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE0MDksNyArMTQwNCw2IEBACiAJCQkJRTRBMEFEMzkxQTk2
MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQz
RDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZTE1ZDQ1YzYzYzkwZGQ4M2RhYTFh
NzRiNTBmMzI4NzVlOThhOTIzYi4uNWE3NTY4ODRkNjI3ZTBiMjBjNmVhOThkNDAzYWM0Njg0YzBi
ODY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTE1MCw3ICsxNTAsNiBAQCBzZXQoV1RGX0hF
QURFUlMKICAgICBWYXJpYW50LmgKICAgICBWZWN0b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCi0g
ICAgV1RGVGhyZWFkRGF0YS5oCiAgICAgV2FsbFRpbWUuaAogICAgIFdlYWtQdHIuaAogICAgIFdv
cmRMb2NrLmgKQEAgLTI1NCw3ICsyNTMsNiBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBUaHJlYWRp
bmcuY3BwCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAogICAgIFVVSUQuY3BwCi0g
ICAgV1RGVGhyZWFkRGF0YS5jcHAKICAgICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAK
ICAgICBXb3JrUXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggMTRiMzQ2NzNhMGJkODU3N2Mx
MjdmY2YyNjliNzMyOWViNmIwMDdmOC4uYWI5MjEzNGVkOGI4ZTFlMTM3Y2Y5ZTdjNjNiZjFjMjgy
NGFmYmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAppbmRl
eCBjYzFhMjFiOWVhNWNjY2M2ZjFhY2U0Yzk3NDk4OTliYmRhNWQ3ZTEwLi5mOGZlZDg4YjFmN2M5
OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
YXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcApAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgIkhhc2hGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdQ
cmludFN0cmVhbS5oIgogI2luY2x1ZGUgIlRocmVhZFNwZWNpZmljLmgiCi0jaW5jbHVkZSAiVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oIgorI2luY2x1ZGUgIlRocmVhZGluZy5oIgogI2luY2x1ZGUgIlZl
Y3Rvci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKICNpbmNsdWRlICJXb3JkTG9jay5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9TdGFja1N0YXRzLmNwcAppbmRleCAwNjRmMmYwNTJhYWYzOGI5ZjgwYTZkZDQxMTMyZTY1NDZl
NDU3ZjQyLi44Y2I0NjIyMTFkZjdhZDU1N2UzYzdhZTI0OGU1NjUyOGI1MTg2Yzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9T
dGFja1N0YXRzLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5o
IgogI2luY2x1ZGUgIkRhdGFMb2cuaCIKLSNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgiCiAKIC8v
IERlZmluZSB0aGUgZm9sbG93aW5nIGZsYWcgaWYgeW91IHdhbnQgdG8gY29sbGVjdCBzdGF0cyBv
biBldmVyeSBzaW5nbGUKIC8vIGNoZWNrcG9pbnQuIEJ5IGRlZmF1bHQsIHdlIG9ubHkgbG9nIGNo
ZWNrcG9pbnRzIHRoYXQgZXN0YWJsaXNoIG5ldwpAQCAtNTksNyArNTgsNyBAQCBpbnQgU3RhY2tT
dGF0czo6c19tYXhMYXlvdXRSZWVudHJ5RGVwdGggPSAwOwogCiBTdGFja1N0YXRzOjpQZXJUaHJl
YWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogewotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFj
ayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOworICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFj
ayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgbV9yZWVudHJ5RGVwdGggPSAwOwog
ICAgIG1fc3RhY2tTdGFydCA9IChjaGFyKilzdGFjay5vcmlnaW4oKTsKICAgICBtX2N1cnJlbnRD
aGVja1BvaW50ID0gMDsKQEAgLTcwLDkgKzY5LDkgQEAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3Rh
dHM6OlBlclRocmVhZFN0YXRzKCkKIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQo
KQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNf
c2hhcmVkTXV0ZXgpOwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0
PFdURlRocmVhZERhdGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJU
aHJlYWRTdGF0cyYgdCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFj
a0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFk
ID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQg
PSB0aHJlYWQuc3RhY2tTdGF0cygpOworICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRo
cmVhZC5zdGFjaygpOwogCiAgICAgYm9vbCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jv
d2luZ0Rvd253YXJkKCk7CiAgICAgYm9vbCBuZWVkVG9Mb2cgPSBmYWxzZTsKQEAgLTEyOCw4ICsx
MjcsOCBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVja1BvaW50KCkKIFN0YWNrU3RhdHM6
OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBXVEZUaHJlYWREYXRh
KiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0ZlRocmVhZERhdGEo
KSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWREYXRhLT5zdGFj
a1N0YXRzKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBT
dGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CiAKICAg
ICAvLyBQb3AgdG8gcHJldmlvdXMgY2hlY2twb2ludDoKICAgICB0Lm1fY3VycmVudENoZWNrUG9p
bnQgPSBtX3ByZXY7CkBAIC0xMzgsNyArMTM3LDcgQEAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6
fkNoZWNrUG9pbnQoKQogICAgIC8vIExvZyB0aGlzIGNoZWNrcG9pbnQgaWYgbmVlZGVkOgogI2lm
IEVOQUJMRShWRVJCT1NFX1NUQUNLX1NUQVRTKQogICAgIGlmICghbV9wcmV2KSB7Ci0gICAgICAg
IGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7CisgICAgICAg
IGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogICAgICAgICBib29s
IGlzR3Jvd2luZ0Rvd253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKIAogICAgICAg
ICBjaGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcyk7CkBAIC0xNTks
OSArMTU4LDkgQEAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogdm9pZCBT
dGFja1N0YXRzOjpwcm9iZSgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxv
Y2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhyZWFk
RGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwotICAg
IFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0cygp
OwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7Cisg
ICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRzOjpQ
ZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3RhY2tC
b3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rvd253
YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKIApAQCAtMjIwLDkgKzIxOSw5IEBAIFN0
YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6OkxheW91dENoZWNrUG9pbnQoKQogICAgIFN0YWNr
U3RhdHM6OnByb2JlKCk7CiAKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhT
dGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBXVEZUaHJlYWREYXRhKiB0aHJlYWREYXRh
ID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0ZlRocmVhZERhdGEoKSk7Ci0gICAgU3Rh
Y2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWREYXRhLT5zdGFja1N0YXRzKCk7Ci0g
ICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+c3RhY2soKTsKKyAgICBU
aHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRo
cmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKKyAgICBjb25zdCBTdGFja0JvdW5k
cyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQg
PSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRIb2xkZXIuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcAppbmRl
eCBlMmEzMWJlOTk3OGE5ZGU0MmViZmEzM2IwNzA2YTUyNDMzYmQ3MmNiLi4wMmIwZTE0YWExYTEw
M2M0NzVmOWQwZmViMDI1MWZhM2Y2NDc0NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKQEAg
LTQzLDQgKzQzLDkgQEAgVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVyKCkKICAgICBtX3RocmVh
ZC0+ZGlkRXhpdCgpOwogfQogCitUaHJlYWRIb2xkZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6
ZUN1cnJlbnQoKQoreworICAgIHJldHVybiBpbml0aWFsaXplKFRocmVhZDo6Y3JlYXRlQ3VycmVu
dFRocmVhZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRIb2xkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oCmlu
ZGV4IGIyZjhkZTY4ODUwYzZhZmRjNzllZmRhZGEwOWJlNmRlZmIxODI2YTkuLmFjNDA0YjFjYWI4
NjYxNzgyYzUzM2NiZjNkYWEyNGMwY2Y1ZjM5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZEhvbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oCkBAIC0z
MSwxMSArMzEsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFkOworCiAvLyBIb2xkcyBUaHJlYWQg
aW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLiBUaGUgZGVzdHJ1Y3RvciBvZiB0aGlzIGhv
bGRlciByZWxpYWJseSBkZXN0cm95IFRocmVhZC4KIC8vIEZvciBwdGhyZWFkLCBpdCBlbXBsb3lz
IHB0aHJlYWRzLXNwZWNpZmljIDItcGFzcyBkZXN0cnVjdGlvbiB0byByZWxpYWJseSByZW1vdmUg
VGhyZWFkLgogLy8gRm9yIFdpbmRvd3MsIHdlIHVzZSB0aHJlYWRfbG9jYWwgdG8gZGVmZXIgdGhy
ZWFkIGhvbGRlciBkZXN0cnVjdGlvbi4gSXQgYXNzdW1lcyByZWd1bGFyIFRocmVhZFNwZWNpZmlj
CkBAIC01MCwyMCArNTIsMjMgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplT25jZSgpOwogCiAgICAgLy8gQ3JlYXRlcyBhbmQgcHV0cyBhbiBpbnN0YW5j
ZSBvZiBUaHJlYWRIb2xkZXIgaW50byB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZS4KLSAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKFRocmVhZCYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgVGhyZWFkSG9sZGVyJiBpbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSG9sZGVyJiBpbml0aWFsaXplQ3VycmVudCgpOwogCiAg
ICAgLy8gUmV0dXJucyAwIGlmIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlIHdhcyBub3QgaW5pdGlh
bGl6ZWQuCi0gICAgc3RhdGljIFRocmVhZEhvbGRlciogY3VycmVudCgpOworICAgIHN0YXRpYyBU
aHJlYWRIb2xkZXImIGN1cnJlbnQoKTsKKyAgICBzdGF0aWMgVGhyZWFkSG9sZGVyKiBjdXJyZW50
TWF5QmVOdWxsKCk7CiAKICAgICBUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJuIG1fdGhyZWFkLmdl
dCgpOyB9CiAKICNpZiBPUyhXSU5ET1dTKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
VGhyZWFkSG9sZGVyKiBjdXJyZW50RHlpbmcoKTsKICAgICBzdGF0aWMgUmVmUHRyPFRocmVhZD4g
Z2V0KFRocmVhZElkZW50aWZpZXIpOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSG9s
ZGVyKFRocmVhZCYgdGhyZWFkKQotICAgICAgICA6IG1fdGhyZWFkKHRocmVhZCkKKyAgICBUaHJl
YWRIb2xkZXIoUmVmPFRocmVhZD4mJiB0aHJlYWQpCisgICAgICAgIDogbV90aHJlYWQoV1RGTW92
ZSh0aHJlYWQpKQogICAgICAgICAsIG1faXNEZXN0cm95ZWRPbmNlKGZhbHNlKQogICAgIHsKICAg
ICB9CkBAIC03Nyw3ICs4MiwzOCBAQCBjbGFzcyBUaHJlYWRIb2xkZXIgewogCiAgICAgUmVmPFRo
cmVhZD4gbV90aHJlYWQ7CiAgICAgYm9vbCBtX2lzRGVzdHJveWVkT25jZTsKLSAgICBzdGF0aWMg
VGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CisgICAgc3RhdGljIFdURl9FWFBPUlREQVRBIFRocmVh
ZFNwZWNpZmljS2V5IG1fa2V5OwogfTsKIAoraW5saW5lIFRocmVhZEhvbGRlciogVGhyZWFkSG9s
ZGVyOjpjdXJyZW50TWF5QmVOdWxsKCkKK3sKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICBBU1NF
UlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQobV9rZXkpKTsKKyNlbHNlCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KF9wdGhyZWFkX2dldHNwZWNpZmlj
X2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZKSk7CisjZW5kaWYKK30KKworaW5saW5lIFRocmVh
ZEhvbGRlciYgVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK3sKKyAgICAvLyBXUlQgV2ViQ29yZToK
KyAgICAvLyAgICBUaHJlYWRIb2xkZXIgaXMgdXNlZCBvbiBtYWluIHRocmVhZCBiZWZvcmUgaXQg
Y291bGQgcG9zc2libHkgYmUgdXNlZAorICAgIC8vICAgIG9uIHNlY29uZGFyeSBvbmVzLCBzbyB0
aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KKyAgICAvLyBXUlQgSmF2
YVNjcmlwdENvcmU6CisgICAgLy8gICAgVGhyZWFkOjpjdXJyZW50KCkgaXMgaW5pdGlhbGx5IGNh
bGxlZCBmcm9tIGluaXRpYWxpemVUaHJlYWRpbmcoKSwgZW5zdXJpbmcKKyAgICAvLyAgICB0aGlz
IGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBwdGhyZWFkX29uY2UgbG9ja2VkIGNvbnRleHQuCisj
aWYgIUhBVkUoRkFTVF9UTFMpCisgICAgaWYgKFVOTElLRUxZKFRocmVhZEhvbGRlcjo6bV9rZXkg
PT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KSkKKyAgICAgICAgaW5pdGlhbGl6ZU9uY2UoKTsK
KyNlbmRpZgorICAgIGlmIChhdXRvKiBob2xkZXIgPSBjdXJyZW50TWF5QmVOdWxsKCkpCisgICAg
ICAgIHJldHVybiAqaG9sZGVyOworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKGF1dG8qIGhvbGRl
ciA9IGN1cnJlbnREeWluZygpKQorICAgICAgICByZXR1cm4gKmhvbGRlcjsKKyNlbmRpZgorICAg
IHJldHVybiBpbml0aWFsaXplQ3VycmVudCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcAppbmRleCAyMGU1ZTg4Zjc2ZGFjMmY3
NjA3MzM0YThlYjNhYWVhY2RhZDVmOTYzLi44NTY4NDFlMzIzNmRiZWE4ZGYwMzIwODFmOWUyNjRj
MzFkZDU2NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFk
cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMuY3BwCkBAIC00
MSwzNiArNDEsNDEgQEAgdm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemVPbmNlKCkKICAgICB0
aHJlYWRTcGVjaWZpY0tleUNyZWF0ZSgmbV9rZXksIGRlc3RydWN0KTsKIH0KIAotVGhyZWFkSG9s
ZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQoKQorVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6
OmluaXRpYWxpemUoUmVmPFRocmVhZD4mJiB0aHJlYWQpCiB7CisgICAgYXV0byogaG9sZGVyID0g
bmV3IFRocmVhZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworI2lmICFIQVZFKEZBU1RfVExTKQor
ICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdo
ZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgorICAgIC8vIEhhdmluZyB0aGlz
IHJlbGVhc2UgYXNzZXJ0IGhlcmUgbWVhbnMgdGhhdCB3ZSB3aWxsIGNhdGNoICJkaWRuJ3QgY2Fs
bAorICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGlu
IHJlbGVhc2UgbW9kZS4KICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmlj
S2V5KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lm
aWNHZXQobV9rZXkpKTsKLX0KLQotdm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFk
JiB0aHJlYWQpCi17Ci0gICAgaWYgKCFjdXJyZW50KCkpIHsKLSAgICAgICAgLy8gSWRlYWxseSB3
ZSdkIGhhdmUgdGhpcyBhcyBhIHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdv
dWxkIGh1cnQgcGVyZm9ybWFuY2UuCi0gICAgICAgIC8vIEhhdmluZyB0aGlzIHJlbGVhc2UgYXNz
ZXJ0IGhlcmUgbWVhbnMgdGhhdCB3ZSB3aWxsIGNhdGNoICJkaWRuJ3QgY2FsbAotICAgICAgICAv
LyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiByZWxlYXNl
IG1vZGUuCi0gICAgICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkp
OwotICAgICAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgbmV3IFRocmVhZEhvbGRlcih0aHJl
YWQpKTsKLSAgICB9CisgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7CisjZWxz
ZQorICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZLCBo
b2xkZXIpOworICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoV1RGX1RIUkVBRF9EQVRBX0tFWSwgJmRl
c3RydWN0KTsKKyNlbmRpZgorICAgIHJldHVybiAqaG9sZGVyOwogfQogCiB2b2lkIFRocmVhZEhv
bGRlcjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKIHsKLSAgICBUaHJlYWRIb2xkZXIqIHRocmVhZElk
ZW50aWZpZXJEYXRhID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4oZGF0YSk7Ci0gICAgQVNT
RVJUKHRocmVhZElkZW50aWZpZXJEYXRhKTsKKyAgICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0
YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KGRhdGEpOworICAgIEFTU0VSVChob2xkZXIpOwogCi0g
ICAgaWYgKHRocmVhZElkZW50aWZpZXJEYXRhLT5tX2lzRGVzdHJveWVkT25jZSkgewotICAgICAg
ICBkZWxldGUgdGhyZWFkSWRlbnRpZmllckRhdGE7CisgICAgaWYgKGhvbGRlci0+bV9pc0Rlc3Ry
b3llZE9uY2UpIHsKKyAgICAgICAgZGVsZXRlIGhvbGRlcjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHRocmVhZElkZW50aWZpZXJEYXRhLT5tX2lzRGVzdHJveWVkT25jZSA9IHRydWU7
CisgICAgaG9sZGVyLT5tX2lzRGVzdHJveWVkT25jZSA9IHRydWU7CiAgICAgLy8gUmUtc2V0dGlu
ZyB0aGUgdmFsdWUgZm9yIGtleSBjYXVzZXMgYW5vdGhlciBkZXN0cnVjdCgpIGNhbGwgYWZ0ZXIg
YWxsIG90aGVyIHRocmVhZC1zcGVjaWZpYyBkZXN0cnVjdG9ycyB3ZXJlIGNhbGxlZC4KLSAgICB0
aHJlYWRTcGVjaWZpY1NldChtX2tleSwgdGhyZWFkSWRlbnRpZmllckRhdGEpOworI2lmICFIQVZF
KEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkp
OworICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOworI2Vsc2UKKyAgICBfcHRo
cmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgaG9sZGVyKTsKKyAg
ICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0cnVjdCk7Cisj
ZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRIb2xkZXJXaW4uY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNw
cAppbmRleCBmMDZiNjJmNjhlMjAxMzYzNWM2MzUxNWU4YzBlNGYxNWZlNDYxNmRhLi45OGIyYzI4
YmVmNmU0YjQzNmFhMTUyZjE0NDM3MTg2MDNlNTZlODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRl
cldpbi5jcHAKQEAgLTU2LDE1ICs1Niw5IEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXpl
T25jZSgpCiAgICAgdGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9
CiAKLVRocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciog
VGhyZWFkSG9sZGVyOjpjdXJyZW50RHlpbmcoKQogewogICAgIEFTU0VSVChtX2tleSAhPSBJbnZh
bGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgIFRocmVhZEhvbGRlciogaG9sZGVyID0gc3RhdGlj
X2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQobV9rZXkpKTsKLSAgICBpZiAo
aG9sZGVyKSB7Ci0gICAgICAgIEFTU0VSVChob2xkZXIgIT0gSW52YWxpZFRocmVhZEhvbGRlcik7
Ci0gICAgICAgIHJldHVybiBob2xkZXI7Ci0gICAgfQotCiAgICAgLy8gQWZ0ZXIgRkxTIGlzIGRl
c3Ryb3llZCwgdGhpcyBtYXAgb2ZmZXJzIHRoZSB2YWx1ZSB1bnRpbCB0aGUgc2Vjb25kIHRocmVh
ZCBleGl0IGNhbGxiYWNrIGlzIGNhbGxlZC4KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRl
eD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQo
Y3VycmVudFRocmVhZCgpKTsKQEAgLTgwLDIxICs3NCwyMSBAQCBSZWZQdHI8VGhyZWFkPiBUaHJl
YWRIb2xkZXI6OmdldChUaHJlYWRJZGVudGlmaWVyIGlkKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi12b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShUaHJlYWQmIHRocmVhZCkKK1RocmVh
ZEhvbGRlciYgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQog
ewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRo
aXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBl
cmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1l
YW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAgICAgICAgLy8gV1RGOjppbml0
aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgotICAg
ICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAgICAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSBvbmNlIDxyZGFyOi8vcHJvYmxl
bS8zMTc5MzIxMz4gaXMgZml4ZWQuCi0gICAgICAgIGF1dG8qIGhvbGRlciA9IG5ldyBUaHJlYWRI
b2xkZXIodGhyZWFkKTsKLSAgICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2Nr
ZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgICAgICAgICB0aHJlYWRNYXAoKS5hZGQodGhyZWFk
LmlkKCksIGhvbGRlcik7Ci0gICAgICAgIH0KKyAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlz
IGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJm
b3JtYW5jZS4KKyAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRo
YXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKKyAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJl
YWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiByZWxlYXNlIG1vZGUuCisgICAgQVNTRVJUKG1f
a2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGlzIHdvcmthcm91bmQgY29kZSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTc5MzIxMz4gaXMgZml4
ZWQuCisgICAgYXV0byBpZCA9IHRocmVhZC0+aWQoKTsKKyAgICBhdXRvKiBob2xkZXIgPSBuZXcg
VGhyZWFkSG9sZGVyKFdURk1vdmUodGhyZWFkKSk7CisgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9r
ZXksIGhvbGRlcik7CisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4g
bG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgICAgICB0aHJlYWRNYXAoKS5hZGQoaWQsIGhv
bGRlcik7CiAgICAgfQorICAgIHJldHVybiAqaG9sZGVyOwogfQogCiB2b2lkIFRocmVhZEhvbGRl
cjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGIzZmZhN2NmNzE5
M2E2MDk4MGRlNzJlMTAwZTBhNDA3ODI2MGQ2NDIuLjJlMTEzODQ1YTVkMzc0Y2VhNWU3ZjE5YWE3
NGQwY2JjNDY3MmVkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkTWVzc2FnZS5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogI2lmIEhBVkUoUU9TX0NMQVNTRVMp
CkBAIC05NCw2ICs5NCwxMyBAQCBjb25zdCBjaGFyKiBUaHJlYWQ6Om5vcm1hbGl6ZVRocmVhZE5h
bWUoY29uc3QgY2hhciogdGhyZWFkTmFtZSkKICNlbmRpZgogfQogCit2b2lkIFRocmVhZDo6aW5p
dGlhbGl6ZUluVGhyZWFkKCkKK3sKKyAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gc3RhY2soKS5v
cmlnaW4oKTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2N1
cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlOworfQor
CiB2b2lkIFRocmVhZDo6ZW50cnlQb2ludChOZXdUaHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250
ZXh0KQogewogICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb247CkBAIC0xMDUsNyArMTEyLDcg
QEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29u
dGV4dCkKICAgICAgICAgQVNTRVJUKGNvbnRleHQtPnN0YWdlID09IE5ld1RocmVhZENvbnRleHQ6
OlN0YWdlOjpFc3RhYmxpc2hlZEhhbmRsZSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aHJl
YWQgaG9sZGVyIHdpdGggZXN0YWJsaXNoZWQgSUQuCi0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5p
dGlhbGl6ZShjb250ZXh0LT50aHJlYWQuZ2V0KCkpOworICAgICAgICBUaHJlYWRIb2xkZXI6Omlu
aXRpYWxpemUoY29udGV4dC0+dGhyZWFkLmNvcHlSZWYoKSk7CiAKICAgICAgICAgVGhyZWFkOjpp
bml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnRleHQtPm5hbWUpOwogICAgICAgICBm
dW5jdGlvbiA9IFdURk1vdmUoY29udGV4dC0+ZW50cnlQb2ludCk7CkBAIC0xMTYsNiArMTIzLDcg
QEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29u
dGV4dCkKICAgICAgICAgY29udGV4dC0+c3RhZ2UgPSBOZXdUaHJlYWRDb250ZXh0OjpTdGFnZTo6
SW5pdGlhbGl6ZWQ7CiAgICAgICAgIGNvbnRleHQtPmNvbmRpdGlvbi5zaWduYWwoKTsKICNlbmRp
ZgorICAgICAgICBjb250ZXh0LT50aHJlYWQtPmluaXRpYWxpemVJblRocmVhZCgpOwogICAgIH0K
IAogICAgIEFTU0VSVCghVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0VtcHR5KCkpOwpAQCAt
MTU1LDE0ICsxNjMsNiBAQCBSZWZQdHI8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFy
KiBuYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgZW50cnlQb2ludCkKICAgICByZXR1cm4gV1RGTW92
ZSh0aHJlYWQpOwogfQogCi1UaHJlYWQqIFRocmVhZDo6Y3VycmVudE1heUJlTnVsbCgpCi17Ci0g
ICAgVGhyZWFkSG9sZGVyKiBkYXRhID0gVGhyZWFkSG9sZGVyOjpjdXJyZW50KCk7Ci0gICAgaWYg
KGRhdGEpCi0gICAgICAgIHJldHVybiAmZGF0YS0+dGhyZWFkKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KIHN0YXRpYyBib29sIHNob3VsZFJlbW92ZVRocmVhZEZyb21UaHJlYWRHcm91cCgp
CiB7CiAjaWYgT1MoV0lORE9XUykKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIFRocmVhZDo6ZGlk
RXhpdCgpCiAgICAgICAgICAgICB0aHJlYWRHcm91cC0+bV90aHJlYWRzLnJlbW92ZSgqdGhpcyk7
CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9y
KQorICAgICAgICBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcihtX2RlZmF1bHRBdG9taWNT
dHJpbmdUYWJsZSk7CisKICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHNheSAidGhyZWFkIGlzIGV4
aXRlZCIgYWZ0ZXIgdW5yZWdpc3RlcmluZyB0aHJlYWRzIGZyb20gdGhyZWFkIGdyb3Vwcy4KICAg
ICAvLyBTbyB3ZSBuZWVkIHRvIHNlcGFyYXRlIG1faXNTaHV0dGluZ0Rvd24gZnJvbSBtX2RpZEV4
aXQuCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKQEAg
LTI3Nyw5ICsyODAsOCBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogewogICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVLZXksIFtdIHsKLSAgICAgICAgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpOwog
ICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJhdG9yKCk7Ci0gICAgICAgIHd0ZlRo
cmVhZERhdGEoKTsKKyAgICAgICAgVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIGluaXRpYWxp
emVEYXRlcygpOwogICAgICAgICBUaHJlYWQ6OmluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZygp
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBmZjUwYmZhODliNzY4YmMwODE4YzYzOTg5ZDJm
ZjNmNWUyYzQxOTI3Li5iOTYyNDdjOTk3MjFlYzBjZTllYzJlMThiYmI5NTBiOGI2Zjk1OTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJl
Z2lzdGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tC
b3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01MCwx
MiArNTEsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBBYnN0cmFjdExvY2tlcjsKK2Ns
YXNzIEF0b21pY1N0cmluZ1RhYmxlOwogY2xhc3MgVGhyZWFkTWVzc2FnZURhdGE7CiAKLWVudW0g
Y2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1bHQ7Cit1c2luZyBBdG9taWNTdHJpbmdUYWJsZURlc3Ry
dWN0b3IgPSB2b2lkICgqKShBdG9taWNTdHJpbmdUYWJsZSopOwogCi11c2luZyBUaHJlYWRJZGVu
dGlmaWVyID0gdWludDMyX3Q7Ci10eXBlZGVmIHZvaWQgKCpUaHJlYWRGdW5jdGlvbikodm9pZCog
YXJndW1lbnQpOworZW51bSBjbGFzcyBUaHJlYWRHcm91cEFkZFJlc3VsdDsKIAogY2xhc3MgVGhy
ZWFkR3JvdXA7CiBjbGFzcyBUaHJlYWRIb2xkZXI7CkBAIC02NSw2ICs2Niw3IEBAIGNsYXNzIFRo
cmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKIHB1YmxpYzoKICAg
ICBmcmllbmQgY2xhc3MgVGhyZWFkR3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIFRocmVhZEhvbGRl
cjsKKyAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nVGFibGU7CiAKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgflRocmVhZCgpOwogCkBAIC03Myw4ICs3NSw3IEBAIGNsYXNzIFRocmVhZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IGNyZWF0ZShjb25zdCBjaGFyKiB0aHJlYWROYW1lLCBG
dW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgLy8gUmV0dXJucyBUaHJlYWQgb2JqZWN0LgotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkJiBjdXJyZW50KCk7Ci0gICAgc3RhdGlj
IFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOworICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQo
KTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFkSWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNl
ZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJl
YWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRo
cmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJlCkBAIC0xNDEsMTUgKzE0Miw1OSBAQCBjbGFz
cyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgICAg
IHJldHVybiBtX3N0YWNrOwogICAgIH0KIAorICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNT
dHJpbmdUYWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jdXJyZW50QXRvbWljU3RyaW5n
VGFibGU7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5nVGFibGUqIHNldEN1cnJlbnRBdG9taWNT
dHJpbmdUYWJsZShBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUpCisgICAgewor
ICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogb2xkQXRvbWljU3RyaW5nVGFibGUgPSBtX2N1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUg
PSBhdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgcmV0dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxl
OworICAgIH0KKworI2lmIEVOQUJMRShTVEFDS19TVEFUUykKKyAgICBTdGFja1N0YXRzOjpQZXJU
aHJlYWRTdGF0cyYgc3RhY2tTdGF0cygpCisgICAgeworICAgICAgICByZXR1cm4gbV9zdGFja1N0
YXRzOworICAgIH0KKyNlbmRpZgorCisgICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50
cnkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7
CisgICAgfQorCisgICAgdm9pZCBzZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBz
dGFja1BvaW50ZXJBdFZNRW50cnkpCisgICAgeworICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVy
QXRWTUVudHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5OworICAgIH0KKworICAgIHZvaWQqIHNh
dmVkTGFzdFN0YWNrVG9wKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NhdmVkTGFzdFN0YWNr
VG9wOworICAgIH0KKworICAgIHZvaWQgc2V0U2F2ZWRMYXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0
YWNrVG9wKQorICAgIHsKKyAgICAgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IGxhc3RTdGFja1Rv
cDsKKyAgICB9CisKKyAgICB2b2lkKiBtX2FwaURhdGEgeyBudWxscHRyIH07CisKICNpZiBPUyhE
QVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbWFjaFRocmVhZCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1U
aHJlYWQ7IH0KICNlbmRpZgogCiAgICAgc3RydWN0IE5ld1RocmVhZENvbnRleHQ7CiAgICAgc3Rh
dGljIHZvaWQgZW50cnlQb2ludChOZXdUaHJlYWRDb250ZXh0Kik7Ci1wcm90ZWN0ZWQ6Citwcml2
YXRlOgogICAgIFRocmVhZCgpOwogCisgICAgc3RhdGljIFJlZjxUaHJlYWQ+IGNyZWF0ZUN1cnJl
bnRUaHJlYWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemVJblRocmVhZCgpOworCiAgICAgLy8gSW50
ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgVGhyZWFkIGVzdGFibGlzaG1lbnQgaW1wbGVtZW50YXRp
b24uCiAgICAgYm9vbCBlc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFkQ29udGV4dCopOwogCkBAIC0y
MTMsNiArMjU4LDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKICNlbHNlCiAjZXJyb3IgVW5rbm93biBTeXN0ZW0KICNlbmRpZgorCisgICAg
QXRvbWljU3RyaW5nVGFibGUqIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9
OworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSB7IG51
bGxwdHIgfTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgbV9hdG9taWNTdHJpbmdU
YWJsZURlc3RydWN0b3IgeyBudWxscHRyIH07CisKKyNpZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCisg
ICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMgbV9zdGFja1N0YXRzOworI2VuZGlmCisgICAg
dm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSB7IG51bGxwdHIgfTsKKyAgICB2b2lk
KiBtX3NhdmVkTGFzdFN0YWNrVG9wOwogfTsKIAogLy8gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2Fs
bGVkIGZyb20gYW55IHRocmVhZHMuCkBAIC0yMjMsNiArMjc4LDEwIEBAIGlubGluZSBUaHJlYWRJ
ZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQogICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgp
OwogfQogCitpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQoreworICAgIHJldHVybiBU
aHJlYWRIb2xkZXI6OmN1cnJlbnQoKS50aHJlYWQoKTsKK30KIAogLy8gRklYTUU6IFRoZSBmb2xs
b3dpbmcgZnVuY3Rpb25zIHJlbWFpbiBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgZnJvbSBXZWJLaXQg
V2luZG93cyBzdXBwb3J0IGxpYnJhcnksCiAvLyBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLmRs
bC4gV2hlbiB1cGRhdGluZyB0aGUgc3VwcG9ydCBsaWJyYXJ5LCB3ZSBzaG91bGQgdXNlIG5ldyBB
UEkgaW5zdGVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IDMwYzQ5OWZk
YTljYWUxZjZkZjY0YzFkNGVhYTZjYjViNmY5ODE3NzIuLjZlODhhYTZhOGEwOTBkOTdlNzc3YzMx
YTNiZDJhNjZhZGMzMGM2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAg
LTQ1LDYgKzQ1LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKK3VzaW5nIFRocmVhZElkZW50aWZp
ZXIgPSB1aW50MzJfdDsKK3VzaW5nIFRocmVhZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCogYXJn
dW1lbnQpOworCiAjaWYgVVNFKFBUSFJFQURTKQogdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUg
PSBwdGhyZWFkX3Q7CiB1c2luZyBQbGF0Zm9ybU11dGV4ID0gcHRocmVhZF9tdXRleF90OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDEyZDdjNzEzODYxOTJlOGY0NTU3ZTMz
ZjI5YjM1MjE5ODc2NWU3OGYuLmNmZWVhYmIyMzg4ZjBmYmNlZTU0Mjg2MTA1MWJjY2Q2YTdlODFh
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTI4NiwxOCArMjg2LDE2
IEBAIHZvaWQgVGhyZWFkOjpkZXRhY2goKQogICAgICAgICBkaWRCZWNvbWVEZXRhY2hlZCgpOwog
fQogCi1UaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCi17Ci0gICAgaWYgKFRocmVhZCogY3VycmVu
dCA9IGN1cnJlbnRNYXlCZU51bGwoKSkKLSAgICAgICAgcmV0dXJuICpjdXJyZW50OwogCitSZWY8
VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZUN1cnJlbnRUaHJlYWQoKQorewogICAgIC8vIE5vdCBhIFdU
Ri1jcmVhdGVkIHRocmVhZCwgVGhyZWFkSWRlbnRpZmllciBpcyBub3QgZXN0YWJsaXNoZWQgeWV0
LgogICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9IGFkb3B0UmVmKCpuZXcgVGhyZWFkKCkpOwogICAg
IHRocmVhZC0+ZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRsZShwdGhyZWFkX3NlbGYoKSk7
CiAgICAgdGhyZWFkLT5tX3N0YWNrID0gU3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0Jv
dW5kcygpOwotICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOworICAg
IHRocmVhZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAgICAgaW5pdGlhbGl6ZUN1cnJlbnRUaHJl
YWRFdmVuSWZOb25XVEZDcmVhdGVkKCk7Ci0gICAgcmV0dXJuIHRocmVhZC5nZXQoKTsKKyAgICBy
ZXR1cm4gdGhyZWFkOwogfQogCiBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IDA1MjNhMmU2YmI1ZjY2MjZhYzhjMDRjOTI4OWEw
NWU1N2Y1ZTAxNTAuLmU5MzFkZmZiOGY0ZGJkMDdlOGE2MjQ1ZDI3M2I2ODM4MzRiMzgxODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nV2luLmNwcApAQCAtMjQzLDExICsyNDMsOCBAQCBzaXplX3QgVGhyZWFk
OjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKICAgICByZXR1cm4g
c2l6ZW9mKENPTlRFWFQpOwogfQogCi1UaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCitSZWY8VGhy
ZWFkPiBUaHJlYWQ6OmNyZWF0ZUN1cnJlbnRUaHJlYWQoKQogewotICAgIGlmIChUaHJlYWQqIGN1
cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxsKCkpCi0gICAgICAgIHJldHVybiAqY3VycmVudDsKLQog
ICAgIC8vIE5vdCBhIFdURi1jcmVhdGVkIHRocmVhZCwgVGhyZWFkSWRlbnRpZmllciBpcyBub3Qg
ZXN0YWJsaXNoZWQgeWV0LgogICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9IGFkb3B0UmVmKCpuZXcg
VGhyZWFkKCkpOwogCkBAIC0yNTcsOSArMjU0LDkgQEAgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQo
KQogCiAgICAgdGhyZWFkLT5lc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKGhhbmRsZSwg
Y3VycmVudElEKCkpOwogICAgIHRocmVhZC0+bV9zdGFjayA9IFN0YWNrQm91bmRzOjpjdXJyZW50
VGhyZWFkU3RhY2tCb3VuZHMoKTsKLSAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUodGhyZWFk
LmdldCgpKTsKKyAgICB0aHJlYWQtPmluaXRpYWxpemVJblRocmVhZCgpOwogICAgIGluaXRpYWxp
emVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCgpOwotICAgIHJldHVybiB0aHJlYWQu
Z2V0KCk7CisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAogVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6
OmN1cnJlbnRJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3M2U3N2QyNTg1ZjhhNjE0NDRmOTc0ZTdjM2I4YWQxM2ExY2I2NjkzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1dURlRocmVhZERhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKLQotI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+Ci0KLSNpZiBVU0UoV0VCX1RIUkVBRCkKLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi0jaWYg
IUhBVkUoRkFTVF9UTFMpCi1UaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPiogV1RGVGhyZWFk
RGF0YTo6c3RhdGljRGF0YTsKLSNlbmRpZgotCi1XVEZUaHJlYWREYXRhOjpXVEZUaHJlYWREYXRh
KCkKLSAgICA6IG1fc3RhY2tCb3VuZHMoU3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0Jv
dW5kcygpKQotICAgICwgbV9zYXZlZExhc3RTdGFja1RvcChzdGFjaygpLm9yaWdpbigpKQotewot
ICAgIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoKnRoaXMpOwotICAgIG1fY3VycmVudEF0b21p
Y1N0cmluZ1RhYmxlID0gbV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGU7Ci19Ci0KLVdURlRocmVh
ZERhdGE6On5XVEZUaHJlYWREYXRhKCkKLXsKLSAgICBpZiAobV9hdG9taWNTdHJpbmdUYWJsZURl
c3RydWN0b3IpCi0gICAgICAgIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKG1fZGVmYXVs
dEF0b21pY1N0cmluZ1RhYmxlKTsKLX0KLQotI2lmIEhBVkUoRkFTVF9UTFMpCi1XVEZUaHJlYWRE
YXRhJiBXVEZUaHJlYWREYXRhOjpjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0
KCkKLXsKLSAgICBXVEZUaHJlYWREYXRhKiBkYXRhID0gbmV3IFdURlRocmVhZERhdGE7Ci0gICAg
X3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVksIGRhdGEpOwot
ICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoV1RGX1RIUkVBRF9EQVRBX0tFWSwgW10odm9pZCogZGF0
YSl7Ci0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxXVEZUaHJlYWREYXRhKj4oZGF0YSk7Ci0g
ICAgfSk7Ci0gICAgcmV0dXJuICpkYXRhOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oIGIvU291cmNlL1dU
Ri93dGYvV1RGVGhyZWFkRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTVm
ZjgxNzY2ZDgzYzU2ZGJjYWNiNjNiYWU2ZTI2MDhhNjJjMzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
aAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpZm5kZWYgV1RGVGhyZWFkRGF0YV9o
Ci0jZGVmaW5lIFdURlRocmVhZERhdGFfaAotCi0jaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KLSNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4K
LSNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZp
Yy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgQXRvbWljU3RyaW5nVGFibGU7Ci0KLXR5
cGVkZWYgdm9pZCAoKkF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikoQXRvbWljU3RyaW5nVGFi
bGUqKTsKLQotY2xhc3MgV1RGVGhyZWFkRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V1RGVGhyZWFkRGF0YSk7Ci1wdWJsaWM6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdURlRocmVh
ZERhdGEoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfldURlRocmVhZERhdGEoKTsKLQotICAg
IEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7Ci0gICAgfQotCi0gICAgQXRvbWljU3Ry
aW5nVGFibGUqIHNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShBdG9taWNTdHJpbmdUYWJsZSog
YXRvbWljU3RyaW5nVGFibGUpCi0gICAgewotICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogb2xk
QXRvbWljU3RyaW5nVGFibGUgPSBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICAgICAg
bV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBhdG9taWNTdHJpbmdUYWJsZTsKLSAgICAgICAg
cmV0dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxlOwotICAgIH0KLQotICAgIGNvbnN0IFN0YWNrQm91
bmRzJiBzdGFjaygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zdGFja0JvdW5kczsKLSAgICB9
Ci0KLSNpZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCi0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3Rh
dHMmIHN0YWNrU3RhdHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhY2tTdGF0czsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIHZvaWQqIHNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5OwotICAgIH0K
LQotICAgIHZvaWQgc2V0U2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkodm9pZCogc3RhY2tQb2lu
dGVyQXRWTUVudHJ5KQotICAgIHsKLSAgICAgICAgbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRy
eSA9IHN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKLSAgICB9Ci0KLSAgICB2b2lkKiBzYXZlZExhc3RT
dGFja1RvcCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKLSAg
ICB9Ci0KLSAgICB2b2lkIHNldFNhdmVkTGFzdFN0YWNrVG9wKHZvaWQqIGxhc3RTdGFja1RvcCkK
LSAgICB7Ci0gICAgICAgIG1fc2F2ZWRMYXN0U3RhY2tUb3AgPSBsYXN0U3RhY2tUb3A7Ci0gICAg
fQotCi0gICAgdm9pZCogbV9hcGlEYXRhIHsgbnVsbHB0ciB9OwotCi1wcml2YXRlOgotICAgIEF0
b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsK
LSAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgeyBudWxs
cHRyIH07Ci0gICAgQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIG1fYXRvbWljU3RyaW5nVGFi
bGVEZXN0cnVjdG9yIHsgbnVsbHB0ciB9OwotCi0gICAgU3RhY2tCb3VuZHMgbV9zdGFja0JvdW5k
czsKLSNpZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCi0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3Rh
dHMgbV9zdGFja1N0YXRzOwotI2VuZGlmCi0gICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0
Vk1FbnRyeSB7IG51bGxwdHIgfTsKLSAgICB2b2lkKiBtX3NhdmVkTGFzdFN0YWNrVG9wOwotCi0j
aWYgSEFWRShGQVNUX1RMUykKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdURlRocmVh
ZERhdGEmIGNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3QoKTsKLSNlbHNlCi0g
ICAgc3RhdGljIFdURl9FWFBPUlREQVRBIFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBz
dGF0aWNEYXRhOwotI2VuZGlmCi0KLSAgICBmcmllbmQgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFk
RGF0YSgpOwotICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKLX07Ci0KLWlubGlu
ZSBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCkKLXsKLSAgICAvLyBXUlQgV2ViQ29yZToK
LSAgICAvLyAgICBXVEZUaHJlYWREYXRhIGlzIHVzZWQgb24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0
IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQKLSAgICAvLyAgICBvbiBzZWNvbmRhcnkgb25lcywgc28g
dGhlcmUgaXMgbm8gbmVlZCBmb3Igc3luY2hyb25pemF0aW9uIGhlcmUuCi0gICAgLy8gV1JUIEph
dmFTY3JpcHRDb3JlOgotICAgIC8vICAgIHd0ZlRocmVhZERhdGEoKSBpcyBpbml0aWFsbHkgY2Fs
bGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygpLCBlbnN1cmluZwotICAgIC8vICAgIHRoaXMg
aXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJlYWRfb25jZSBsb2NrZWQgY29udGV4dC4KLSNp
ZiAhSEFWRShGQVNUX1RMUykKLSAgICBpZiAoIVdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEpCi0g
ICAgICAgIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEgPSBuZXcgVGhyZWFkU3BlY2lmaWM8V1RG
VGhyZWFkRGF0YT47Ci0gICAgcmV0dXJuICoqV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YTsKLSNl
bHNlCi0gICAgaWYgKFdURlRocmVhZERhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXVEZUaHJlYWRE
YXRhKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVkpKSkK
LSAgICAgICAgcmV0dXJuICpkYXRhOwotICAgIHJldHVybiBXVEZUaHJlYWREYXRhOjpjcmVhdGVB
bmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0KCk7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6V1RGVGhyZWFkRGF0YTsKLXVzaW5nIFdURjo6d3RmVGhy
ZWFkRGF0YTsKLXVzaW5nIFdURjo6QXRvbWljU3RyaW5nVGFibGU7Ci0KLSNlbmRpZiAvLyBXVEZU
aHJlYWREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBhNGUwM2Rl
M2FmNjU3YzY5Zjc0ZDE2MjUxZjAwMDczOTEzNmE1MzQ0Li4yYTA2NTEyODNhOTcyNzFlNTc2YTIy
MmRkZjAyMzIwZDA2YTBkMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBA
IC0yMyw4ICsyMywxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgogCi0jaW5jbHVkZSAiSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIgotI2luY2x1
ZGUgIk1haW5UaHJlYWQuaCIKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4K
KwogI2luY2x1ZGUgImR0b2EuaCIKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmdJbXBsLmNwcAppbmRleCAzNTIyNDg1ZDdiODQ3M2NjODBlNTI0MGE3MzJh
MDU1M2M0OGJjMzQyLi4wNjNlNGVlYjdlNTdlNWNkODViMGExNzE5NTRkMzg5MjRjMTc3OTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKQEAgLTMyLDcgKzMyLDYg
QEAKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJpbnRTdHJlYW0u
aCIKICNpbmNsdWRlICJUaHJlYWRpbmcuaCIKLSNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgiCiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCiAjaWYgVVNFKFdFQl9USFJFQUQpCkBAIC03
Miw3ICs3MSw3IEBAIHVzaW5nIFN0cmluZ1RhYmxlSW1wbCA9IEhhc2hTZXQ8U3RyaW5nSW1wbCo+
OwogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBTdHJpbmdUYWJsZUltcGwmIHN0cmluZ1RhYmxlKCkK
IHsKLSAgICByZXR1cm4gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCktPnRhYmxl
KCk7CisgICAgcmV0dXJuIFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCktPnRh
YmxlKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9y
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcAppbmRleCBmZThhNDg4
NGRiN2U2NzhkZWQ2YWYzMmRkNDM3MTJlNTk1ZjNiOTM1Li5mNmQ3OGYyYmU2ZjQ4ZjJhYTY4MmMw
NWQxMGQyNDY0NjhiMGMyNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZ1RhYmxlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1Rh
YmxlLmNwcApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi12b2lk
IEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoV1RGVGhyZWFkRGF0YSYgZGF0YSkKK3ZvaWQgQXRv
bWljU3RyaW5nVGFibGU6OmNyZWF0ZShUaHJlYWQmIHRocmVhZCkKIHsKICNpZiBVU0UoV0VCX1RI
UkVBRCkKICAgICAvLyBPbiBpT1MsIG9uZSBBdG9taWNTdHJpbmdUYWJsZSBpcyBzaGFyZWQgYmV0
d2VlbiB0aGUgbWFpbiBVSSB0aHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQuCkBAIC0zNywxNyArMzcs
MTcgQEAgdm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKFdURlRocmVhZERhdGEmIGRhdGEp
CiAKICAgICBib29sIGN1cnJlbnRUaHJlYWRJc1dlYlRocmVhZCA9IGlzV2ViVGhyZWFkKCk7CiAg
ICAgaWYgKGN1cnJlbnRUaHJlYWRJc1dlYlRocmVhZCB8fCBpc1VJVGhyZWFkKCkpCi0gICAgICAg
IGRhdGEubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBzaGFyZWRTdHJpbmdUYWJsZTsKKyAg
ICAgICAgdGhyZWFkLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gc2hhcmVkU3RyaW5nVGFi
bGU7CiAgICAgZWxzZQotICAgICAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0g
bmV3IEF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWljU3Ry
aW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CiAKICAgICAvLyBXZSBkbyB0aGUgZm9s
bG93aW5nIHNvIHRoYXQgaXRzIGRlc3RydWN0aW9uIGhhcHBlbnMgb25seQogICAgIC8vIG9uY2Ug
LSBvbiB0aGUgbWFpbiBVSSB0aHJlYWQuCiAgICAgaWYgKCFjdXJyZW50VGhyZWFkSXNXZWJUaHJl
YWQpCi0gICAgICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNT
dHJpbmdUYWJsZTo6ZGVzdHJveTsKKyAgICAgICAgdGhyZWFkLm1fYXRvbWljU3RyaW5nVGFibGVE
ZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CiAjZWxzZQotICAgIGRhdGEu
bV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7Ci0gICAg
ZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpk
ZXN0cm95OworICAgIHRocmVhZC5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9t
aWNTdHJpbmdUYWJsZTsKKyAgICB0aHJlYWQubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3Ig
PSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKICNlbmRpZiAvLyBVU0UoV0VCX1RIUkVBRCkK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oCmluZGV4IDk0NGFlOTJi
ZGVjNDQzOWJmMDcwMTIxYjc4YTM1ZjVhODRmYzQwOWQuLmQzYmM5Y2U1ZjZlMDcyNzc1NmNjOWVi
YmU0ZjEyNTM3ZmFhYjJiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxl
LmgKQEAgLTI0LDE5ICsyNCwxOSBAQAogI2RlZmluZSBXVEZfQXRvbWljU3RyaW5nVGFibGVfaAog
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
IGNsYXNzIFN0cmluZ0ltcGw7CitjbGFzcyBUaHJlYWQ7CiAKIGNsYXNzIEF0b21pY1N0cmluZ1Rh
YmxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgfkF0b21pY1N0cmluZ1RhYmxlKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVh
dGUoV1RGVGhyZWFkRGF0YSYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShUaHJlYWQmKTsKICAg
ICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgdGFibGUoKSB7IHJldHVybiBtX3RhYmxlOyB9CiAKIHBy
aXZhdGU6CkBAIC00Niw1ICs0Niw2IEBAIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlIHsKIH07CiAK
IH0KK3VzaW5nIFdURjo6QXRvbWljU3RyaW5nVGFibGU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCBiOGZhZjVhOGQ3OTEwMmYy
ZWZkZDhiZGE2NDMxYzA3N2JmZjEzYmYwLi43NzM4MjlkNWU3YjRlYjMzZDdiZTgzODA3MTZmOWEz
MzM3MjZmNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9i
YWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgot
I2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjYsNyArNjUsNyBAQCBUaHJlYWRHbG9i
YWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKICAgICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQg
aXMgb25seSBjYWxsZWQgb25jZSBwZXIgdGhyZWFkIC0gdGhpcyBtYWtlcyB0aGlzIGEgY29udmVu
aWVudAogICAgIC8vIHBvaW50IHRvIGNhbGwgbWV0aG9kcyB0aGF0IGludGVybmFsbHkgcGVyZm9y
bSBhIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIHRoYXQgaXMgbm90CiAgICAgLy8gdGhyZWFkc2Fm
ZS4KLSAgICB3dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3Ry
aW5nSW1wbDo6ZW1wdHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDYxMjJiNGYyYzUwYjY0YmE1YzdmZmM5ZGRlM2Y0
ZGE1NjI5YTAzODcuLmM4ZjA1YTFhMGFlZDYwMmNiZDhjMDk0ZTBhOTcyMDNhZjljNjA2YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0K
QEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiB7CiAgICAg
d2ViVGhyZWFkU3RhcnRlZCA9IFRSVUU7CiAKLSAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIHRvdWNo
ZXMgQXRvbWljU3RyaW5nLCB3aGljaCByZXF1aXJlcyBXVEZUaHJlYWREYXRhIGFuZCBUaHJlYWRp
bmcgaW5pdGlhbGl6YXRpb24uCisgICAgLy8gVGhyZWFkR2xvYmFsRGF0YSB0b3VjaGVzIEF0b21p
Y1N0cmluZywgd2hpY2ggcmVxdWlyZXMgVGhyZWFkaW5nIGluaXRpYWxpemF0aW9uLgogICAgIFdU
Rjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBBdG9taWNTdHJp
bmcgb24gdGhlIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwCmluZGV4IDQyNWM5MjQ4ZDg3MDQ4MjdiYjBlMDM4MjFhMmFlOGRjOGFhYzBkNzAuLjY4MWEx
ZWY3NTQ4MTAwZDFhMjk2NjA5ZTYyY2I3ZjlhZmI2MmUwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdvcmtlclRocmVh
ZDo6d29ya2VyVGhyZWFkKCkKICAgICAvLyBXZSBjYW5ub3QgbGV0IGFueSBvYmplY3RzIHN1cnZp
dmUgcGFzdCB0aHJlYWQgZXhpdCwgYmVjYXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBydW4gR0Mg
b3Igb3RoZXJ3aXNlIGRlc3Ryb3kgdGhlbS4KICAgICB3b3JrZXJHbG9iYWxTY29wZVRvRGVsZXRl
ID0gbnVsbHB0cjsKIAotICAgIC8vIENsZWFuIHVwIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEg
YmVmb3JlIFdURjo6V1RGVGhyZWFkRGF0YSBnb2VzIGF3YXkhCisgICAgLy8gQ2xlYW4gdXAgV2Vi
Q29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RGOjpUaHJlYWQgZ29lcyBhd2F5IQogICAg
IHRocmVhZEdsb2JhbERhdGEoKS5kZXN0cm95KCk7CiAKICAgICAvLyBUaGUgdGhyZWFkIG9iamVj
dCBtYXkgYmUgYWxyZWFkeSBkZXN0cm95ZWQgZnJvbSBub3RpZmljYXRpb24gbm93LCBkb24ndCB0
cnkgdG8gYWNjZXNzICJ0aGlzIi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316667</attachid>
            <date>2017-07-28 12:31:17 -0700</date>
            <delta_ts>2017-07-29 00:46:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170729043116.patch</filename>
            <type>text/plain</type>
            <size>67120</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi5hYzYzZjlhOWJhY2E0NmRm
Zjg5YjQ1MWZkZDg5N2Y3ZWUzNTk3NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MSBAQAogMjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVTdGFja0xp
bWl0cyk6CisgICAgICAgIChKU0M6OlZNOjpjb21taXR0ZWRTdGFja0J5dGVDb3VudCk6CisgICAg
ICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlKToK
KyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50
cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpWTTo6ZW5zdXJlU3RhY2tDYXBhY2l0eUZvcik6CisgICAgICAgICogeWFy
ci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3Ry
dWN0b3I6OmlzU2FmZVRvUmVjdXJzZSk6CisKKzIwMTctMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0IHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFu
dG9tRGlyZWN0QXJndW1lbnRzIHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzIHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tU3ByZWFkIHx8IGNhbmRpZGF0ZS0+
b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NjVkMmRlZTUwMWVjNThh
MTk5ZjUxZGVkZGUyMWM4OWI5ZWYwOWEzLi5kMTA5ZDNiYTFhOWRmZmFlOWEwYzQ5MDFiYzJiYzk1
MmM5NDRhOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA3LTI4ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERhdGEg
dG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0
Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAq
IHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAg
ICAgIChXVEY6OlN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6Cisg
ICAgICAgIChXVEY6OlN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAg
ICAoV1RGOjpTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChX
VEY6OlN0YWNrU3RhdHM6OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0
Q2hlY2tQb2ludDo6TGF5b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRl
ci5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVy
OjpUaHJlYWRIb2xkZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlC
ZU51bGwpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAq
IHd0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgor
ICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1
cnJlbnREeWluZyk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICog
d3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhy
ZWFkKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpkaWRFeGl0KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1Rh
YmxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUp
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJl
YWQ6OnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpz
ZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2
ZWRMYXN0U3RhY2tUb3ApOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNr
VG9wKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6
CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChX
VEY6OlRocmVhZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dp
bi5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAg
ICAgIChXVEY6OlRocmVhZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRo
cmVhZERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJl
bW92ZWQuCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3
dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUp
OgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuaDoKKwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3
YWl0IGluIHNvbWUgcGxhdGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJl
YWRTdGFja0JvdW5kcyhQbGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyNzRk
MjliMGNjMTljMDA4YjFmYjcyZmRjNTg4MzkzMGUwMmE0MS4uZDg3MGMxM2Q3NDYwNmViYmMwMDcy
NzFlY2M2YjIxMGU1NDZjNjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA3
LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1l
cmdlIFdURlRocmVhZERhdGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAg
ICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKwogMjAxNy0w
Ny0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJRExdIFNw
bGl0LXVwIGFuZCBjbGVhbnVwIEZldGNoIElETCBmaWxlcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVt
b3ZpbmcgdW5uZWNlc3NhcnkganMgYnVpbHRpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHQubW0KaW5kZXggNWIxMDBjNzVlMTViOWY0NzY2Mjk0NGFhMGZjNWJiOGRkMDlmNDZjNS4u
YmFlYjE3OGQ0ODFkYmVkZjJiZWQzZGY2ZDRlNjNmZDE4MTU2Yzk5OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE0MSwxNSArMTQxLDE1IEBAIC0gKEpTVmFsdWUg
KilnbG9iYWxPYmplY3QKIAogKyAoSlNDb250ZXh0ICopY3VycmVudENvbnRleHQKIHsKLSAgICBX
VEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNr
RGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAg
VGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVu
dHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgcmV0dXJuIGVudHJ5
ID8gZW50cnktPmNvbnRleHQgOiBuaWw7CiB9CiAKICsgKEpTVmFsdWUgKiljdXJyZW50VGhpcwog
ewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAg
Q2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWREYXRhLm1fYXBpRGF0
YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIENhbGxiYWNr
RGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICBpZiAo
IWVudHJ5KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhKU1ZhbHVlUmVmOmVudHJ5LT50aGlzVmFsdWUgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVu
dENvbnRleHRdXTsKQEAgLTE1Nyw4ICsxNTcsOCBAQCArIChKU1ZhbHVlICopY3VycmVudFRoaXMK
IAogKyAoSlNWYWx1ZSAqKWN1cnJlbnRDYWxsZWUKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJl
YWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2Fs
bGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0
YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+Y2FsbGVl
VmFsdWUgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVudENvbnRleHRdXTsKQEAgLTE2Niw4ICsx
NjYsOCBAQCArIChKU1ZhbHVlICopY3VycmVudENhbGxlZQogCiArIChOU0FycmF5ICopY3VycmVu
dEFyZ3VtZW50cwogewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWRE
YXRhKCk7Ci0gICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWRE
YXRhLm1fYXBpRGF0YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwor
ICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0
YTsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yOTQsMjEgKzI5
NCwyMSBAQCAtIChCT09MKWJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOihKU1ZhbHVlUmVmKWV4Y2Vw
dGlvblZhbHVlCiAKIC0gKHZvaWQpYmVnaW5DYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEg
KiljYWxsYmFja0RhdGEgY2FsbGVlVmFsdWU6KEpTVmFsdWVSZWYpY2FsbGVlVmFsdWUgdGhpc1Zh
bHVlOihKU1ZhbHVlUmVmKXRoaXNWYWx1ZSBhcmd1bWVudENvdW50OihzaXplX3QpYXJndW1lbnRD
b3VudCBhcmd1bWVudHM6KGNvbnN0IEpTVmFsdWVSZWYgKilhcmd1bWVudHMKIHsKLSAgICBXVEZU
aHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOworICAgIFRocmVhZCYgdGhy
ZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKLSAgICBDYWxsYmFj
a0RhdGEgKnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWREYXRhLm1fYXBpRGF0YTsK
KyAgICBDYWxsYmFja0RhdGEgKnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9h
cGlEYXRhOwogICAgICpjYWxsYmFja0RhdGEgPSAoQ2FsbGJhY2tEYXRhKXsgcHJldlN0YWNrLCBz
ZWxmLCBbc2VsZi5leGNlcHRpb24gcmV0YWluXSwgY2FsbGVlVmFsdWUsIHRoaXNWYWx1ZSwgYXJn
dW1lbnRDb3VudCwgYXJndW1lbnRzLCBuaWwgfTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9
IGNhbGxiYWNrRGF0YTsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhOwogICAg
IHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQogCiAtICh2b2lkKWVuZENhbGxiYWNrV2l0aERhdGE6
KENhbGxiYWNrRGF0YSAqKWNhbGxiYWNrRGF0YQogewotICAgIFdURlRocmVhZERhdGEmIHRocmVh
ZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1
cnJlbnQoKTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IGNhbGxiYWNrRGF0YS0+cHJlc2VydmVkRXhj
ZXB0aW9uOwogICAgIFtjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbiByZWxlYXNlXTsK
ICAgICBbY2FsbGJhY2tEYXRhLT5jdXJyZW50QXJndW1lbnRzIHJlbGVhc2VdOwotICAgIHRocmVh
ZERhdGEubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0OworICAgIHRocmVhZC5tX2FwaURh
dGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZjY1ZWY4NDFhN2MxZTAwNmEyZWFiNzE1MjRm
ZGRlOGE2YWEyYTI2Ny4uM2Q0YmJlMzZlNjMzODU5MWEzODhjYzY1NGZiMDU4Nzg4M2RhYjY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29s
IGlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0YXRlKFZNKiB2bSkKIAogYm9vbCBpc1ZhbGlk
VGhyZWFkU3RhdGUoVk0qIHZtKQogewotICAgIGlmICh2bS0+YXRvbWljU3RyaW5nVGFibGUoKSAh
PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSkKKyAgICBpZiAodm0tPmF0b21p
Y1N0cmluZ1RhYmxlKCkgIT0gV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodm0tPmlzU2hhcmVkSW5zdGFu
Y2UoKSAmJiAhaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUodm0pKQpAQCAtMjAyMyw3
ICsyMDIzLDcgQEAgSGVhcDo6VGlja2V0IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKEdDUmVxdWVz
dCByZXF1ZXN0KQogICAgIHN0b3BJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIEFTU0VSVCh2bSgp
LT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2
bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09
IFdURjo6VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgCiAgICAg
TG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CiAgICAgLy8gV2UgbWF5IGJlIGFibGUg
dG8gc3RlYWwgdGhlIGNvbm4uIFRoYXQgb25seSB3b3JrcyBpZiB0aGUgY29sbGVjdG9yIGlzIGRl
ZmluaXRlbHkgbm90IHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKaW5kZXggNWIzMDI2NGM3ZjQxMWUzOGQ1ODBmNTVkNWQ3ZDFkNjg5YjM2MDFl
Yi4uODgyM2U2ZjYwMTYxMTJiNDczOWZhMDI4ZjQzMWJjN2U4ZDdjOGIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTQxLDE0ICs0MSwxMyBA
QAogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCIKLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFk
RGF0YS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRp
b24pCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
ZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNT
dHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAKICAg
ICBQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSA9IFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgc291cmNlKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5jaGVja1N5bnRh
eChleGVjKTsKQEAgLTY0LDcgKzYzLDcgQEAgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSogcmV0dXJuZWRFeGMKIGJvb2wg
Y2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9y
JiBlcnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBU
aHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICByZXR1cm4gISFwYXJz
ZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6
Tm90U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBhcnNlTW9kZTo6
UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CkBAIC03NCw3ICs3
Myw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1
cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxl
UHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+
KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CkBAIC05Miw3ICs5MSw3IEBAIEpTVmFs
dWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21p
Y1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKIAogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwpAQCAtMTY3LDcgKzE2Niw3
IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0
IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0CiBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2
YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVj
LT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3Ry
aW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JC
dXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOwpAQCAtMTc4LDcgKzE3
Nyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkg
PT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3Ry
aW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQ
b2ludE1vZHVsZSh2bSk7CkBAIC0yMDUsNyArMjA0LDcgQEAgc3RhdGljIEpTSW50ZXJuYWxQcm9t
aXNlKiBsb2FkTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0YXRlKiBleGVj
LAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhl
Yy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4g
bG9hZE1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOwpAQCAt
MjE2LDcgKzIxNSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9s
Rm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CkBAIC0yMzQsNyArMjMzLDcgQEAgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTVmFsdWUKIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+
dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwog
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxP
YmplY3QoKTsKQEAgLTI0NCw3ICsyNDMsNyBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYQogSlNJ
bnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6
Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVj
LT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBl
eGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5yZXF1ZXN0SW1wb3J0
TW9kdWxlKGV4ZWMsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IDk5MjU2ZDY1ODkzNDkwNmIyMjAx
Y2I1YmRlZWRlNTc3MjJlMjBlZDYuLmQ1NTJkMGIxZjYyODcxNWEyNjM2YWI3NzM3ZWRmYzYxOTcz
NGMwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRBdG9taWNT
dHJpbmdUYWJsZShWTSogdm0pCiB7CiAgICAgLy8gQ2hlY2sgdGhlIGlkZW50aWZpZXIgdGFibGUg
YWNjZXNzaWJsZSB0aHJvdWdoIHRoZSB0aHJlYWRzcGVjaWZpYyBtYXRjaGVzIHRoZQogICAgIC8v
IHZtJ3MgaWRlbnRpZmllciB0YWJsZS4KLSAgICBBU1NFUlRfVU5VU0VEKHZtLCB2bS0+YXRvbWlj
U3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpj
dXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiB9CiAKIHZvaWQgSWRlbnRpZmllcjo6Y2hl
Y2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAppbmRl
eCA5ZWYxNDNhZDQ4ZTcxZDI4YjE3YmE0MTZmYTNiMTRiY2JkYjc0NWFhLi44NTA3M2I2ZDI5NWI1
OTk2M2EyMTNkNTI0NTViODRiNGFkMTY1NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAtNzUsOCArNzUsOCBA
QCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgICAgICBEaXNhbGxvd1ZNUmVlbnRyeTo6
aW5pdGlhbGl6ZSgpOwogI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsK
LSAgICAgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAg
ICAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnN0YWNrKCku
b3JpZ2luKCkpOworICAgICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwor
ICAgICAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tUb3AodGhyZWFkLnN0YWNrKCkub3JpZ2lu
KCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBXYXNtOjpUaHVua3M6Omlu
aXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCmluZGV4
IGJhNmM0NGE1ZGY1MTRkZTUxN2M5YTI1ODc1NjFhOThhOWQ5MjQxMGUuLmMyYzgyNzZhYzMyOTBl
ZjE2YzlmY2U0YWZhODRhMzlmNjAwY2IzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcApAQCAtMTI3LDkgKzEyNyw5IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJl
TG9jaygpCiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgV1RGVGhy
ZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVh
ZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIEFTU0VSVCghbV9lbnRyeUF0b21pY1N0cmluZ1Rh
YmxlKTsKLSAgICBtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB0aHJlYWREYXRhLnNldEN1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBtX2Vu
dHJ5QXRvbWljU3RyaW5nVGFibGUgPSB0aHJlYWQuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxl
KG1fdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIEFTU0VSVChtX2VudHJ5QXRvbWljU3Ry
aW5nVGFibGUpOwogCiAgICAgaWYgKG1fdm0tPmhlYXAuaGFzQWNjZXNzKCkpCkBAIC0xNDMsNyAr
MTQzLDcgQEAgdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKICAgICB2b2lkKiBwID0gJnA7
IC8vIEEgcHJveHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCiAgICAgbV92bS0+c2V0
U3RhY2tQb2ludGVyQXRWTUVudHJ5KHApOwogCi0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRo
cmVhZERhdGEuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgbV92bS0+c2V0TGFzdFN0YWNrVG9w
KHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKIAogICAgIG1fdm0tPmhlYXAubWFjaGluZVRo
cmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAt
MjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQogICAgIH0KIAog
ICAgIGlmIChtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUpIHsKLSAgICAgICAgd3RmVGhyZWFkRGF0
YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUp
OworICAgICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUo
bV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKICAgICAgICAgbV9lbnRyeUF0b21pY1N0cmluZ1Rh
YmxlID0gbnVsbHB0cjsKICAgICB9CiB9CkBAIC0yMjUsOSArMjI1LDkgQEAgdW5zaWduZWQgSlNM
b2NrOjpkcm9wQWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyKQogCiAgICAgZHJvcHBlci0+
c2V0RHJvcERlcHRoKG1fbG9ja0Ryb3BEZXB0aCk7CiAKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJl
YWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIHRocmVhZERhdGEuc2V0U2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkobV92bS0+c3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOwotICAgIHRocmVh
ZERhdGEuc2V0U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0YWNrVG9wKCkpOworICAgIFRo
cmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgdGhyZWFkLnNldFNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKKyAgICB0
aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0YWNrVG9wKCkpOwogCiAgICAg
dW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCA9IG1fbG9ja0NvdW50OwogICAgIHVubG9jayhkcm9w
cGVkTG9ja0NvdW50KTsKQEAgLTI1Miw5ICsyNTIsOSBAQCB2b2lkIEpTTG9jazo6Z3JhYkFsbExv
Y2tzKERyb3BBbGxMb2NrcyogZHJvcHBlciwgdW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCkKIAog
ICAgIC0tbV9sb2NrRHJvcERlcHRoOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKLSAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhy
ZWFkRGF0YS5zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICBtX3ZtLT5zZXRMYXN0
U3RhY2tUb3AodGhyZWFkRGF0YS5zYXZlZExhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRo
cmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1F
bnRyeSh0aHJlYWQuc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgbV92bS0+c2V0
TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKIH0KIAogSlNMb2NrOjpE
cm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggMTI1MTAyNDM0NjQzNzdhNDQ5YWZlY2JjNTk5ZmU5ODQyNzA5ZmU3YS4u
MDY5NTliYTQ2NWUxOTJiZTYzYTgxODhkOWZjMjM3N2Y3Y2U5NjkzZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTE0LDcgKzExNCw2IEBACiAjaW5jbHVkZSA8d3RmL1Np
bXBsZVN0YXRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oPgogCkBAIC0xNzYsNyArMTc1LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgdG9wVk1FbnRyeUZyYW1lKG51bGxwdHIpCiAg
ICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwgcHJvbWlzZURl
ZmVycmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9taXNlRGVmZXJyZWRUaW1lcj4oKnRoaXMp
KQotICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxlKQorICAg
ICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVu
dCgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCiAgICAgLCBw
cm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCiAgICAg
LCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtl
X3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKQEAgLTIxMSwxMyArMjEwLDEzIEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fc2hhZG93Q2hpY2tlbihzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0NoaWNrZW4+KCkpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcg
SW50ZXJwcmV0ZXIoKnRoaXMpOwotICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CisgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5z
dGFjaygpOwogICAgIHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNl
cnZlZFpvbmVTaXplKCkpOwogICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CiAK
ICAgICAvLyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQg
aGVyZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwotICAgIEF0b21pY1N0cmluZ1RhYmxl
KiBleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3Vy
cmVudEF0b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFibGUpOworICAgIEF0b21pY1N0
cmluZ1RhYmxlKiBleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSBUaHJlYWQ6OmN1cnJl
bnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdUYWJsZSk7CiAg
ICAgcHJvcGVydHlOYW1lcyA9IG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKTsKICAgICBzdHJ1
Y3R1cmVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cykpOwogICAgIHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJl
UmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKQEAgLTI3MCw3
ICsyNjksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
bmF0aXZlU3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlLnNldCgqdGhpcywgTmF0aXZlU3RkRnVuY3Rp
b25DZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc21hbGxT
dHJpbmdzLmluaXRpYWxpemVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAotICAgIHd0ZlRocmVhZERh
dGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21pY1N0cmlu
Z1RhYmxlKTsKKyAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUoZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKQEAgLTY3Miw3ICs2
NzEsNyBAQCBpbmxpbmUgdm9pZCBWTTo6dXBkYXRlU3RhY2tMaW1pdHMoKQogICAgIHZvaWQqIGxh
c3RTb2Z0U3RhY2tMaW1pdCA9IG1fc29mdFN0YWNrTGltaXQ7CiAjZW5kaWYKIAotICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOworICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgc2l6
ZV90IHJlc2VydmVkWm9uZVNpemUgPSBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCk7CiAgICAg
Ly8gV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHRoYXQgT3B0aW9uczo6cmVzZXJ2ZWRa
b25lU2l6ZSgpID49IG1pbmltdW1SZXNlcnZlWm9uZVNpemUgYXQKICAgICAvLyBvcHRpb25zIGlu
aXRpYWxpemF0aW9uIHRpbWUsIGFuZCB0aGUgb3B0aW9uIHZhbHVlIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGNoYW5nZWQgdGhlcmVhZnRlci4KQEAgLTg4Niw5ICs4ODUsOSBAQCBzaXplX3QgVk06OmNv
bW1pdHRlZFN0YWNrQnl0ZUNvdW50KCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdoZW4gdXNp
bmcgdGhlIEMgc3RhY2ssIHdlIGRvbid0IGtub3cgaG93IG1hbnkgc3RhY2sgcGFnZXMgYXJlIGFj
dHVhbGx5CiAgICAgLy8gY29tbWl0dGVkLiBTbywgd2UgdXNlIHRoZSBjdXJyZW50IHN0YWNrIHVz
YWdlIGFzIGFuIGVzdGltYXRlLgotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5p
c0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2so
KS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICBpbnQ4X3QqIGN1cnJlbnQgPSByZWludGVycHJl
dF9jYXN0PGludDhfdCo+KCZjdXJyZW50KTsKLSAgICBpbnQ4X3QqIGhpZ2ggPSByZWludGVycHJl
dF9jYXN0PGludDhfdCo+KHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICBp
bnQ4X3QqIGhpZ2ggPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KFRocmVhZDo6Y3VycmVudCgp
LnN0YWNrKCkub3JpZ2luKCkpOwogICAgIHJldHVybiBoaWdoIC0gY3VycmVudDsKICNlbHNlCiAg
ICAgcmV0dXJuIENMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggZWUyMzJhN2YyMWNlY2QwMWRmN2U5MzJmOGI1MmU3NGUzZTQ4
ZmE2ZC4uOWZiNGQ4YmU0MmMxZjc4ZDFlYjBlNTA5ZGJhMjkzNDE2ZjNiZGY2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSA8d3RmL1N0
b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0yNDMsNyArMjQy
LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMg
RG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAvLyBXZWJDb3JlIGhhcyBhIG9uZS10by1v
bmUgbWFwcGluZyBvZiB0aHJlYWRzIHRvIFZNczsKICAgICAvLyBlaXRoZXIgY3JlYXRlKCkgb3Ig
Y3JlYXRlTGVha2VkKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UKICAgICAvLyBvbiBhIHRo
cmVhZCwgdGhpcyBpcyB0aGUgJ2RlZmF1bHQnIFZNIChpdCB1c2VzIHRoZQotICAgIC8vIHRocmVh
ZCdzIGRlZmF1bHQgc3RyaW5nIHVuaXF1aW5nIHRhYmxlIGZyb20gd3RmVGhyZWFkRGF0YSkuCisg
ICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUgZnJvbSBUaHJlYWQ6
OmN1cnJlbnQoKSkuCiAgICAgLy8gQVBJIGNvbnRleHRzIGNyZWF0ZWQgdXNpbmcgdGhlIG5ldyBj
b250ZXh0IGdyb3VwIGF3YXJlIGludGVyZmFjZQogICAgIC8vIGNyZWF0ZSBBUElDb250ZXh0R3Jv
dXAgb2JqZWN0cyB3aGljaCByZXF1aXJlIGxlc3MgbG9ja2luZyBvZiBKU0MKICAgICAvLyB0aGFu
IHRoZSBvbGQgc2luZ2xldG9uIEFQSVNoYXJlZCBWTSBjcmVhdGVkIGZvciB1c2UgYnkKQEAgLTY5
MSw3ICs2OTAsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4s
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAgICAgYm9vbCBpc1NhZmVUb1Jl
Y3Vyc2Uodm9pZCogc3RhY2tMaW1pdCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCh3dGZU
aHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICAgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgICAg
IHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmY3Vycik7CiAgICAgICAgIHJl
dHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKaW5kZXggYzJkOWJkYTE4OGM0NzcyMDI1NmQ0MDMw
NjQ4Mjg2ZWM0NWUzMWM1OS4uZDExYThmZmE2NmRiNWZlMzBmYjlmNDlmNDUzMTM4MzZiNzhkMjM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkKIHsKICAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZmZWN0T25DdXJy
ZW50VGhyZWFkKCkpOwotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dp
bmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dy
b3dpbmdEb3dud2FyZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICAgICAgICAgdm0u
ZW50cnlTY29wZSA9IHRoaXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1Jbmxp
bmVzLmgKaW5kZXggNWE3NzYxOTUwZTBjZjZiMjg4NTYwMTkzMWFmNmI3MWEzYmUwMmQ3OC4uYmMw
YzI1ZjkxZTJjMTc2MWEyMWNhMjBlYjA4ODJhMDkzYTIxNTE5MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBib29sIFZNOjplbnN1cmVTdGFja0NhcGFjaXR5Rm9yKFJlZ2lzdGVyKiBuZXdUb3BPZlN0
YWNrKQogewogI2lmIEVOQUJMRShKSVQpCi0gICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5z
dGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIHJldHVybiBuZXdUb3BPZlN0YWNrID49
IG1fc29mdFN0YWNrTGltaXQ7CiAjZWxzZQogICAgIHJldHVybiBlbnN1cmVTdGFja0NhcGFjaXR5
Rm9yQ0xvb3AobmV3VG9wT2ZTdGFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAKaW5kZXggM2ExMTA5MGQxOTA5M2NjZWJlODA5YmM3MmQzYTZhNTAyZTljNGI1
ZC4uZGJkYjA3YjI4MjBhODIxYTdmZTY5NzZjNjE4ZGM1MThiZGFlMjAxNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCkBAIC04ODIsNyArODgxLDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25z
dHJ1Y3RvciB7CiAgICAgewogICAgICAgICBpZiAoIW1fc3RhY2tMaW1pdCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNH
cm93aW5nRG93bndhcmQoKSk7CisgICAgICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgICAgICBpbnQ4X3QqIGN1cnIgPSByZWludGVy
cHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsKICAgICAgICAgaW50OF90KiBsaW1pdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50OF90Kj4obV9zdGFja0xpbWl0KTsKICAgICAgICAgcmV0dXJuIGN1cnIg
Pj0gbGltaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
ODYxNjcxYzRhYTI4MTBjMWUzM2I1N2IzODEzZjA4YTcwYmRiM2ViLi5lMTRlMGRhMzc4NWU4Nzc4
ZmNiZWM5NTBiMWQyNDVjY2NlZDk4YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyMyw3ICsxMjMsNiBAQAogCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIz
RkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1
bHQuY3BwICovOyB9OwogCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcz
NTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCAqLzsgfTsKIAkJQThBNDc0Njkx
NTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDczNTcxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3BwICov
OyB9OwotCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QTE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi87IH07CiAJCUFEODlCNkI3MUU2NDE1
MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8q
IE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi87IH07CiAJCUFEODlCNkJBMUU2NDE1MEYwMDkw
NzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLzsgfTsKIAkJQURGMkNFNjcxRTM5RjEwNjAw
Njg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnRDb2NvYS5jcHAgKi87IH07CkBAIC01MTQsOCArNTEzLDYgQEAKIAkJQThBNDcz
NzAxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNzEx
NTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWZWN0b3JUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8qIGNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlBNDcyN0YxNTFBODI1QTAwNDEyM0ZGIC8qIERpc2Fs
bG93Q1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dDVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4
OEIgLyogRXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwZWN0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5Nyw4ICs5OTQsNiBAQAogCQkJ
CTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAogCQkJCUU0QTBBRDM3
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0QTBBRDM4MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKLQkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCi0JCQkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd3RmOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE0MDksNyArMTQwNCw2IEBACiAJCQkJRTRBMEFEMzkxQTk2
MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQz
RDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZTE1ZDQ1YzYzYzkwZGQ4M2RhYTFh
NzRiNTBmMzI4NzVlOThhOTIzYi4uNWE3NTY4ODRkNjI3ZTBiMjBjNmVhOThkNDAzYWM0Njg0YzBi
ODY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTE1MCw3ICsxNTAsNiBAQCBzZXQoV1RGX0hF
QURFUlMKICAgICBWYXJpYW50LmgKICAgICBWZWN0b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCi0g
ICAgV1RGVGhyZWFkRGF0YS5oCiAgICAgV2FsbFRpbWUuaAogICAgIFdlYWtQdHIuaAogICAgIFdv
cmRMb2NrLmgKQEAgLTI1NCw3ICsyNTMsNiBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBUaHJlYWRp
bmcuY3BwCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAogICAgIFVVSUQuY3BwCi0g
ICAgV1RGVGhyZWFkRGF0YS5jcHAKICAgICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAK
ICAgICBXb3JrUXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggMTRiMzQ2NzNhMGJkODU3N2Mx
MjdmY2YyNjliNzMyOWViNmIwMDdmOC4uYWI5MjEzNGVkOGI4ZTFlMTM3Y2Y5ZTdjNjNiZjFjMjgy
NGFmYmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAppbmRl
eCBjYzFhMjFiOWVhNWNjY2M2ZjFhY2U0Yzk3NDk4OTliYmRhNWQ3ZTEwLi5mOGZlZDg4YjFmN2M5
OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
YXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcApAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgIkhhc2hGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdQ
cmludFN0cmVhbS5oIgogI2luY2x1ZGUgIlRocmVhZFNwZWNpZmljLmgiCi0jaW5jbHVkZSAiVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oIgorI2luY2x1ZGUgIlRocmVhZGluZy5oIgogI2luY2x1ZGUgIlZl
Y3Rvci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKICNpbmNsdWRlICJXb3JkTG9jay5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9TdGFja1N0YXRzLmNwcAppbmRleCAwNjRmMmYwNTJhYWYzOGI5ZjgwYTZkZDQxMTMyZTY1NDZl
NDU3ZjQyLi44Y2I0NjIyMTFkZjdhZDU1N2UzYzdhZTI0OGU1NjUyOGI1MTg2Yzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9T
dGFja1N0YXRzLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5o
IgogI2luY2x1ZGUgIkRhdGFMb2cuaCIKLSNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgiCiAKIC8v
IERlZmluZSB0aGUgZm9sbG93aW5nIGZsYWcgaWYgeW91IHdhbnQgdG8gY29sbGVjdCBzdGF0cyBv
biBldmVyeSBzaW5nbGUKIC8vIGNoZWNrcG9pbnQuIEJ5IGRlZmF1bHQsIHdlIG9ubHkgbG9nIGNo
ZWNrcG9pbnRzIHRoYXQgZXN0YWJsaXNoIG5ldwpAQCAtNTksNyArNTgsNyBAQCBpbnQgU3RhY2tT
dGF0czo6c19tYXhMYXlvdXRSZWVudHJ5RGVwdGggPSAwOwogCiBTdGFja1N0YXRzOjpQZXJUaHJl
YWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogewotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFj
ayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOworICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFj
ayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgbV9yZWVudHJ5RGVwdGggPSAwOwog
ICAgIG1fc3RhY2tTdGFydCA9IChjaGFyKilzdGFjay5vcmlnaW4oKTsKICAgICBtX2N1cnJlbnRD
aGVja1BvaW50ID0gMDsKQEAgLTcwLDkgKzY5LDkgQEAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3Rh
dHM6OlBlclRocmVhZFN0YXRzKCkKIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQo
KQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNf
c2hhcmVkTXV0ZXgpOwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0
PFdURlRocmVhZERhdGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJU
aHJlYWRTdGF0cyYgdCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFj
a0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFk
ID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQg
PSB0aHJlYWQuc3RhY2tTdGF0cygpOworICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRo
cmVhZC5zdGFjaygpOwogCiAgICAgYm9vbCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jv
d2luZ0Rvd253YXJkKCk7CiAgICAgYm9vbCBuZWVkVG9Mb2cgPSBmYWxzZTsKQEAgLTEyOCw4ICsx
MjcsOCBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVja1BvaW50KCkKIFN0YWNrU3RhdHM6
OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBXVEZUaHJlYWREYXRh
KiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0ZlRocmVhZERhdGEo
KSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWREYXRhLT5zdGFj
a1N0YXRzKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBT
dGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CiAKICAg
ICAvLyBQb3AgdG8gcHJldmlvdXMgY2hlY2twb2ludDoKICAgICB0Lm1fY3VycmVudENoZWNrUG9p
bnQgPSBtX3ByZXY7CkBAIC0xMzgsNyArMTM3LDcgQEAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6
fkNoZWNrUG9pbnQoKQogICAgIC8vIExvZyB0aGlzIGNoZWNrcG9pbnQgaWYgbmVlZGVkOgogI2lm
IEVOQUJMRShWRVJCT1NFX1NUQUNLX1NUQVRTKQogICAgIGlmICghbV9wcmV2KSB7Ci0gICAgICAg
IGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7CisgICAgICAg
IGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogICAgICAgICBib29s
IGlzR3Jvd2luZ0Rvd253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKIAogICAgICAg
ICBjaGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcyk7CkBAIC0xNTks
OSArMTU4LDkgQEAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogdm9pZCBT
dGFja1N0YXRzOjpwcm9iZSgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxv
Y2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhyZWFk
RGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwotICAg
IFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0cygp
OwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7Cisg
ICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRzOjpQ
ZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3RhY2tC
b3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rvd253
YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKIApAQCAtMjIwLDkgKzIxOSw5IEBAIFN0
YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6OkxheW91dENoZWNrUG9pbnQoKQogICAgIFN0YWNr
U3RhdHM6OnByb2JlKCk7CiAKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhT
dGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBXVEZUaHJlYWREYXRhKiB0aHJlYWREYXRh
ID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0ZlRocmVhZERhdGEoKSk7Ci0gICAgU3Rh
Y2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWREYXRhLT5zdGFja1N0YXRzKCk7Ci0g
ICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+c3RhY2soKTsKKyAgICBU
aHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRo
cmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKKyAgICBjb25zdCBTdGFja0JvdW5k
cyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQg
PSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRIb2xkZXIuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcAppbmRl
eCBlMmEzMWJlOTk3OGE5ZGU0MmViZmEzM2IwNzA2YTUyNDMzYmQ3MmNiLi4wMmIwZTE0YWExYTEw
M2M0NzVmOWQwZmViMDI1MWZhM2Y2NDc0NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKQEAg
LTQzLDQgKzQzLDkgQEAgVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVyKCkKICAgICBtX3RocmVh
ZC0+ZGlkRXhpdCgpOwogfQogCitUaHJlYWRIb2xkZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6
ZUN1cnJlbnQoKQoreworICAgIHJldHVybiBpbml0aWFsaXplKFRocmVhZDo6Y3JlYXRlQ3VycmVu
dFRocmVhZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRIb2xkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oCmlu
ZGV4IGIyZjhkZTY4ODUwYzZhZmRjNzllZmRhZGEwOWJlNmRlZmIxODI2YTkuLmI1MmM1YTZhZTdi
ODE5MWNhNWY0MWFkZjczNWIwYmEzYmJlYjQwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZEhvbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oCkBAIC0y
OSwxMyArMjksMTYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZu
ZGVmIFRocmVhZEhvbGRlcl9oCisjZGVmaW5lIFRocmVhZEhvbGRlcl9oCiAKKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFkOworCiAvLyBI
b2xkcyBUaHJlYWQgaW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLiBUaGUgZGVzdHJ1Y3Rv
ciBvZiB0aGlzIGhvbGRlciByZWxpYWJseSBkZXN0cm95IFRocmVhZC4KIC8vIEZvciBwdGhyZWFk
LCBpdCBlbXBsb3lzIHB0aHJlYWRzLXNwZWNpZmljIDItcGFzcyBkZXN0cnVjdGlvbiB0byByZWxp
YWJseSByZW1vdmUgVGhyZWFkLgogLy8gRm9yIFdpbmRvd3MsIHdlIHVzZSB0aHJlYWRfbG9jYWwg
dG8gZGVmZXIgdGhyZWFkIGhvbGRlciBkZXN0cnVjdGlvbi4gSXQgYXNzdW1lcyByZWd1bGFyIFRo
cmVhZFNwZWNpZmljCkBAIC01MCwyMCArNTMsMjMgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKICAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplT25jZSgpOwogCiAgICAgLy8gQ3JlYXRlcyBhbmQgcHV0
cyBhbiBpbnN0YW5jZSBvZiBUaHJlYWRIb2xkZXIgaW50byB0aHJlYWQtc3BlY2lmaWMgc3RvcmFn
ZS4KLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFRocmVhZCYpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgVGhyZWFkSG9sZGVyJiBpbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSG9sZGVyJiBpbml0aWFsaXplQ3Vy
cmVudCgpOwogCiAgICAgLy8gUmV0dXJucyAwIGlmIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlIHdh
cyBub3QgaW5pdGlhbGl6ZWQuCi0gICAgc3RhdGljIFRocmVhZEhvbGRlciogY3VycmVudCgpOwor
ICAgIHN0YXRpYyBUaHJlYWRIb2xkZXImIGN1cnJlbnQoKTsKKyAgICBzdGF0aWMgVGhyZWFkSG9s
ZGVyKiBjdXJyZW50TWF5QmVOdWxsKCk7CiAKICAgICBUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJu
IG1fdGhyZWFkLmdldCgpOyB9CiAKICNpZiBPUyhXSU5ET1dTKQorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgVGhyZWFkSG9sZGVyKiBjdXJyZW50RHlpbmcoKTsKICAgICBzdGF0aWMgUmVm
UHRyPFRocmVhZD4gZ2V0KFRocmVhZElkZW50aWZpZXIpOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgVGhyZWFkSG9sZGVyKFRocmVhZCYgdGhyZWFkKQotICAgICAgICA6IG1fdGhyZWFkKHRocmVh
ZCkKKyAgICBUaHJlYWRIb2xkZXIoUmVmPFRocmVhZD4mJiB0aHJlYWQpCisgICAgICAgIDogbV90
aHJlYWQoV1RGTW92ZSh0aHJlYWQpKQogICAgICAgICAsIG1faXNEZXN0cm95ZWRPbmNlKGZhbHNl
KQogICAgIHsKICAgICB9CkBAIC03Nyw3ICs4MywzOSBAQCBjbGFzcyBUaHJlYWRIb2xkZXIgewog
CiAgICAgUmVmPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgYm9vbCBtX2lzRGVzdHJveWVkT25jZTsK
LSAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CisgICAgc3RhdGljIFdURl9FWFBP
UlREQVRBIFRocmVhZFNwZWNpZmljS2V5IG1fa2V5OwogfTsKIAoraW5saW5lIFRocmVhZEhvbGRl
ciogVGhyZWFkSG9sZGVyOjpjdXJyZW50TWF5QmVOdWxsKCkKK3sKKyNpZiAhSEFWRShGQVNUX1RM
UykKKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQobV9rZXkp
KTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KF9wdGhyZWFk
X2dldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZKSk7CisjZW5kaWYKK30KKwor
aW5saW5lIFRocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK3sKKyAgICAvLyBX
UlQgV2ViQ29yZToKKyAgICAvLyAgICBUaHJlYWRIb2xkZXIgaXMgdXNlZCBvbiBtYWluIHRocmVh
ZCBiZWZvcmUgaXQgY291bGQgcG9zc2libHkgYmUgdXNlZAorICAgIC8vICAgIG9uIHNlY29uZGFy
eSBvbmVzLCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KKyAg
ICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6CisgICAgLy8gICAgVGhyZWFkOjpjdXJyZW50KCkgaXMg
aW5pdGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVUaHJlYWRpbmcoKSwgZW5zdXJpbmcKKyAg
ICAvLyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBwdGhyZWFkX29uY2UgbG9ja2Vk
IGNvbnRleHQuCisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgaWYgKFVOTElLRUxZKFRocmVhZEhv
bGRlcjo6bV9rZXkgPT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KSkKKyAgICAgICAgaW5pdGlh
bGl6ZU9uY2UoKTsKKyNlbmRpZgorICAgIGlmIChhdXRvKiBob2xkZXIgPSBjdXJyZW50TWF5QmVO
dWxsKCkpCisgICAgICAgIHJldHVybiAqaG9sZGVyOworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYg
KGF1dG8qIGhvbGRlciA9IGN1cnJlbnREeWluZygpKQorICAgICAgICByZXR1cm4gKmhvbGRlcjsK
KyNlbmRpZgorICAgIHJldHVybiBpbml0aWFsaXplQ3VycmVudCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVEYKKyNlbmRpZiAvLyBUaHJlYWRIb2xkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9s
ZGVyUHRocmVhZHMuY3BwCmluZGV4IDIwZTVlODhmNzZkYWMyZjc2MDczMzRhOGViM2FhZWFjZGFk
NWY5NjMuLjg1Njg0MWUzMjM2ZGJlYThkZjAzMjA4MWY5ZTI2NGMzMWRkNTY0MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKQEAgLTQxLDM2ICs0MSw0MSBAQCB2b2lk
IFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKQogICAgIHRocmVhZFNwZWNpZmljS2V5Q3Jl
YXRlKCZtX2tleSwgZGVzdHJ1Y3QpOwogfQogCi1UaHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6
Y3VycmVudCgpCitUaHJlYWRIb2xkZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShSZWY8VGhy
ZWFkPiYmIHRocmVhZCkKIHsKKyAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVyKFdU
Rk1vdmUodGhyZWFkKSk7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgLy8gSWRlYWxseSB3ZSdk
IGhhdmUgdGhpcyBhcyBhIHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxk
IGh1cnQgcGVyZm9ybWFuY2UuCisgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVy
ZSBtZWFucyB0aGF0IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCisgICAgLy8gV1RGOjppbml0
aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgogICAg
IEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPih0aHJlYWRTcGVjaWZpY0dldChtX2tleSkpOwotfQot
Ci12b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShUaHJlYWQmIHRocmVhZCkKLXsKLSAgICBp
ZiAoIWN1cnJlbnQoKSkgewotICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEg
cmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5j
ZS4KLSAgICAgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0
IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCi0gICAgICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAgICAgQVNT
RVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgICAgIHRocmVhZFNw
ZWNpZmljU2V0KG1fa2V5LCBuZXcgVGhyZWFkSG9sZGVyKHRocmVhZCkpOwotICAgIH0KKyAgICB0
aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKKyNlbHNlCisgICAgX3B0aHJlYWRfc2V0
c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVksIGhvbGRlcik7CisgICAgcHRocmVh
ZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCAmZGVzdHJ1Y3QpOworI2VuZGlmCisg
ICAgcmV0dXJuICpob2xkZXI7CiB9CiAKIHZvaWQgVGhyZWFkSG9sZGVyOjpkZXN0cnVjdCh2b2lk
KiBkYXRhKQogewotICAgIFRocmVhZEhvbGRlciogdGhyZWFkSWRlbnRpZmllckRhdGEgPSBzdGF0
aWNfY2FzdDxUaHJlYWRIb2xkZXIqPihkYXRhKTsKLSAgICBBU1NFUlQodGhyZWFkSWRlbnRpZmll
ckRhdGEpOworICAgIFRocmVhZEhvbGRlciogaG9sZGVyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9s
ZGVyKj4oZGF0YSk7CisgICAgQVNTRVJUKGhvbGRlcik7CiAKLSAgICBpZiAodGhyZWFkSWRlbnRp
ZmllckRhdGEtPm1faXNEZXN0cm95ZWRPbmNlKSB7Ci0gICAgICAgIGRlbGV0ZSB0aHJlYWRJZGVu
dGlmaWVyRGF0YTsKKyAgICBpZiAoaG9sZGVyLT5tX2lzRGVzdHJveWVkT25jZSkgeworICAgICAg
ICBkZWxldGUgaG9sZGVyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkSWRl
bnRpZmllckRhdGEtPm1faXNEZXN0cm95ZWRPbmNlID0gdHJ1ZTsKKyAgICBob2xkZXItPm1faXNE
ZXN0cm95ZWRPbmNlID0gdHJ1ZTsKICAgICAvLyBSZS1zZXR0aW5nIHRoZSB2YWx1ZSBmb3Iga2V5
IGNhdXNlcyBhbm90aGVyIGRlc3RydWN0KCkgY2FsbCBhZnRlciBhbGwgb3RoZXIgdGhyZWFkLXNw
ZWNpZmljIGRlc3RydWN0b3JzIHdlcmUgY2FsbGVkLgotICAgIHRocmVhZFNwZWNpZmljU2V0KG1f
a2V5LCB0aHJlYWRJZGVudGlmaWVyRGF0YSk7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgQVNT
RVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgdGhyZWFkU3BlY2lm
aWNTZXQobV9rZXksIGhvbGRlcik7CisjZWxzZQorICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2Rp
cmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZLCBob2xkZXIpOworICAgIHB0aHJlYWRfa2V5X2luaXRf
bnAoV1RGX1RIUkVBRF9EQVRBX0tFWSwgJmRlc3RydWN0KTsKKyNlbmRpZgogfQogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwCmluZGV4IGYwNmI2MmY2OGUy
MDEzNjM1YzYzNTE1ZThjMGU0ZjE1ZmU0NjE2ZGEuLjk4YjJjMjhiZWY2ZTRiNDM2YWExNTJmMTQ0
MzcxODYwM2U1NmU4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldp
bi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNwcApAQCAtNTYsMTUg
KzU2LDkgQEAgdm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemVPbmNlKCkKICAgICB0aHJlYWRT
cGVjaWZpY0tleUNyZWF0ZSgmbV9rZXksIGRlc3RydWN0KTsKIH0KIAotVGhyZWFkSG9sZGVyKiBU
aHJlYWRIb2xkZXI6OmN1cnJlbnQoKQorVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJl
bnREeWluZygpCiB7CiAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tl
eSk7Ci0gICAgVGhyZWFkSG9sZGVyKiBob2xkZXIgPSBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIq
Pih0aHJlYWRTcGVjaWZpY0dldChtX2tleSkpOwotICAgIGlmIChob2xkZXIpIHsKLSAgICAgICAg
QVNTRVJUKGhvbGRlciAhPSBJbnZhbGlkVGhyZWFkSG9sZGVyKTsKLSAgICAgICAgcmV0dXJuIGhv
bGRlcjsKLSAgICB9Ci0KICAgICAvLyBBZnRlciBGTFMgaXMgZGVzdHJveWVkLCB0aGlzIG1hcCBv
ZmZlcnMgdGhlIHZhbHVlIHVudGlsIHRoZSBzZWNvbmQgdGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMg
Y2FsbGVkLgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFw
TXV0ZXgoKSk7CiAgICAgcmV0dXJuIHRocmVhZE1hcCgpLmdldChjdXJyZW50VGhyZWFkKCkpOwpA
QCAtODAsMjEgKzc0LDIxIEBAIFJlZlB0cjxUaHJlYWQ+IFRocmVhZEhvbGRlcjo6Z2V0KFRocmVh
ZElkZW50aWZpZXIgaWQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgVGhyZWFkSG9s
ZGVyOjppbml0aWFsaXplKFRocmVhZCYgdGhyZWFkKQorVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xk
ZXI6OmluaXRpYWxpemUoUmVmPFRocmVhZD4mJiB0aHJlYWQpCiB7Ci0gICAgaWYgKCFjdXJyZW50
KCkpIHsKLSAgICAgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhpcyBhcyBhIHJlbGVhc2UgYXNz
ZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1cnQgcGVyZm9ybWFuY2UuCi0gICAgICAg
IC8vIEhhdmluZyB0aGlzIHJlbGVhc2UgYXNzZXJ0IGhlcmUgbWVhbnMgdGhhdCB3ZSB3aWxsIGNh
dGNoICJkaWRuJ3QgY2FsbAotICAgICAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBz
b29uIGVub3VnaCIgYnVncyBpbiByZWxlYXNlIG1vZGUuCi0gICAgICAgIEFTU0VSVChtX2tleSAh
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgd29ya2Fyb3VuZCBjb2RlIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhl
ZC4KLSAgICAgICAgYXV0byogaG9sZGVyID0gbmV3IFRocmVhZEhvbGRlcih0aHJlYWQpOwotICAg
ICAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcih0aHJlYWRNYXBNdXRleCgp
KTsKLSAgICAgICAgICAgIHRocmVhZE1hcCgpLmFkZCh0aHJlYWQuaWQoKSwgaG9sZGVyKTsKLSAg
ICAgICAgfQorICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2Vy
dCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgorICAgIC8vIEhh
dmluZyB0aGlzIHJlbGVhc2UgYXNzZXJ0IGhlcmUgbWVhbnMgdGhhdCB3ZSB3aWxsIGNhdGNoICJk
aWRuJ3QgY2FsbAorICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHNvb24gZW5vdWdo
IiBidWdzIGluIHJlbGVhc2UgbW9kZS4KKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVh
ZFNwZWNpZmljS2V5KTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2Rl
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KKyAgICBhdXRvIGlkID0g
dGhyZWFkLT5pZCgpOworICAgIGF1dG8qIGhvbGRlciA9IG5ldyBUaHJlYWRIb2xkZXIoV1RGTW92
ZSh0aHJlYWQpKTsKKyAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKKyAgICB7
CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0
ZXgoKSk7CisgICAgICAgIHRocmVhZE1hcCgpLmFkZChpZCwgaG9sZGVyKTsKICAgICB9CisgICAg
cmV0dXJuICpob2xkZXI7CiB9CiAKIHZvaWQgVGhyZWFkSG9sZGVyOjpkZXN0cnVjdCh2b2lkKiBk
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggYjNmZmE3Y2Y3MTkzYTYwOTgwZGU3MmUxMDBlMGE0
MDc4MjYwZDY0Mi4uMmUxMTM4NDVhNWQzNzRjZWE1ZTdmMTlhYTc0ZDBjYmM0NjcyZWQ4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZEhv
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgogCiAjaWYgSEFWRShRT1NfQ0xBU1NFUykKQEAgLTk0LDYgKzk0LDEzIEBA
IGNvbnN0IGNoYXIqIFRocmVhZDo6bm9ybWFsaXplVGhyZWFkTmFtZShjb25zdCBjaGFyKiB0aHJl
YWROYW1lKQogI2VuZGlmCiB9CiAKK3ZvaWQgVGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQoKQor
eworICAgIG1fc2F2ZWRMYXN0U3RhY2tUb3AgPSBzdGFjaygpLm9yaWdpbigpOworICAgIEF0b21p
Y1N0cmluZ1RhYmxlOjpjcmVhdGUoKnRoaXMpOworICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlID0gbV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGU7Cit9CisKIHZvaWQgVGhyZWFkOjplbnRy
eVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRleHQpCiB7CiAgICAgRnVuY3Rp
b248dm9pZCgpPiBmdW5jdGlvbjsKQEAgLTEwNSw3ICsxMTIsNyBAQCB2b2lkIFRocmVhZDo6ZW50
cnlQb2ludChOZXdUaHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogICAgICAgICBBU1NF
UlQoY29udGV4dC0+c3RhZ2UgPT0gTmV3VGhyZWFkQ29udGV4dDo6U3RhZ2U6OkVzdGFibGlzaGVk
SGFuZGxlKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIHRocmVhZCBob2xkZXIgd2l0aCBlc3Rh
Ymxpc2hlZCBJRC4KLSAgICAgICAgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKGNvbnRleHQtPnRo
cmVhZC5nZXQoKSk7CisgICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShjb250ZXh0LT50
aHJlYWQuY29weVJlZigpKTsKIAogICAgICAgICBUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VGhy
ZWFkSW50ZXJuYWwoY29udGV4dC0+bmFtZSk7CiAgICAgICAgIGZ1bmN0aW9uID0gV1RGTW92ZShj
b250ZXh0LT5lbnRyeVBvaW50KTsKQEAgLTExNiw2ICsxMjMsNyBAQCB2b2lkIFRocmVhZDo6ZW50
cnlQb2ludChOZXdUaHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogICAgICAgICBjb250
ZXh0LT5zdGFnZSA9IE5ld1RocmVhZENvbnRleHQ6OlN0YWdlOjpJbml0aWFsaXplZDsKICAgICAg
ICAgY29udGV4dC0+Y29uZGl0aW9uLnNpZ25hbCgpOwogI2VuZGlmCisgICAgICAgIGNvbnRleHQt
PnRocmVhZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFUaHJl
YWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzRW1wdHkoKSk7CkBAIC0xNTUsMTQgKzE2Myw2IEBAIFJl
ZlB0cjxUaHJlYWQ+IFRocmVhZDo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBlbnRyeVBvaW50KQogICAgIHJldHVybiBXVEZNb3ZlKHRocmVhZCk7CiB9CiAKLVRo
cmVhZCogVGhyZWFkOjpjdXJyZW50TWF5QmVOdWxsKCkKLXsKLSAgICBUaHJlYWRIb2xkZXIqIGRh
dGEgPSBUaHJlYWRIb2xkZXI6OmN1cnJlbnQoKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgcmV0
dXJuICZkYXRhLT50aHJlYWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogc3RhdGljIGJv
b2wgc2hvdWxkUmVtb3ZlVGhyZWFkRnJvbVRocmVhZEdyb3VwKCkKIHsKICNpZiBPUyhXSU5ET1dT
KQpAQCAtMTk3LDYgKzE5Nyw5IEBAIHZvaWQgVGhyZWFkOjpkaWRFeGl0KCkKICAgICAgICAgICAg
IHRocmVhZEdyb3VwLT5tX3RocmVhZHMucmVtb3ZlKCp0aGlzKTsKICAgICAgICAgfQogICAgIH0K
KyAgICBpZiAobV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpCisgICAgICAgIG1fYXRvbWlj
U3RyaW5nVGFibGVEZXN0cnVjdG9yKG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlKTsKKwogICAg
IC8vIFdlIHdvdWxkIGxpa2UgdG8gc2F5ICJ0aHJlYWQgaXMgZXhpdGVkIiBhZnRlciB1bnJlZ2lz
dGVyaW5nIHRocmVhZHMgZnJvbSB0aHJlYWQgZ3JvdXBzLgogICAgIC8vIFNvIHdlIG5lZWQgdG8g
c2VwYXJhdGUgbV9pc1NodXR0aW5nRG93biBmcm9tIG1fZGlkRXhpdC4KICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwpAQCAtMjc3LDkgKzI4MCw4IEBAIHZv
aWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGlu
aXRpYWxpemVLZXk7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10gewotICAg
ICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemVPbmNlKCk7CiAgICAgICAgIGluaXRpYWxpemVS
YW5kb21OdW1iZXJHZW5lcmF0b3IoKTsKLSAgICAgICAgd3RmVGhyZWFkRGF0YSgpOworICAgICAg
ICBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICAgICAgaW5pdGlhbGl6ZURhdGVzKCk7CiAgICAgICAg
IFRocmVhZDo6aW5pdGlhbGl6ZVBsYXRmb3JtVGhyZWFkaW5nKCk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5oCmluZGV4IGZmNTBiZmE4OWI3NjhiYzA4MThjNjM5ODlkMmZmM2Y1ZTJjNDE5MjcuLjE3YjMz
MDBmOWNlZGJiZmUwNTA0MWUxNzk4M2M5Njg0MzM1NWRhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC0z
OSw2ICszOSw4IEBACiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgorI2luY2x1ZGUg
PHd0Zi9TdGFja1N0YXRzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEhvbGRlci5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtNTAsMTIgKzUyLDEyIEBACiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgQWJzdHJhY3RM
b2NrZXI7CitjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKIGNsYXNzIFRocmVhZE1lc3NhZ2VEYXRh
OwogCi1lbnVtIGNsYXNzIFRocmVhZEdyb3VwQWRkUmVzdWx0OwordXNpbmcgQXRvbWljU3RyaW5n
VGFibGVEZXN0cnVjdG9yID0gdm9pZCAoKikoQXRvbWljU3RyaW5nVGFibGUqKTsKIAotdXNpbmcg
VGhyZWFkSWRlbnRpZmllciA9IHVpbnQzMl90OwotdHlwZWRlZiB2b2lkICgqVGhyZWFkRnVuY3Rp
b24pKHZvaWQqIGFyZ3VtZW50KTsKK2VudW0gY2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1bHQ7CiAK
IGNsYXNzIFRocmVhZEdyb3VwOwogY2xhc3MgVGhyZWFkSG9sZGVyOwpAQCAtNjUsNiArNjcsNyBA
QCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiBw
dWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFRocmVhZEdyb3VwOwogICAgIGZyaWVuZCBjbGFzcyBU
aHJlYWRIb2xkZXI7CisgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIH5UaHJlYWQoKTsKIApAQCAtNzMsOCArNzYsNyBAQCBjbGFzcyBU
aHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiBjcmVhdGUoY29uc3QgY2hhciogdGhy
ZWFkTmFtZSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFkIG9i
amVjdC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwot
ICAgIHN0YXRpYyBUaHJlYWQqIGN1cnJlbnRNYXlCZU51bGwoKTsKKyAgICBzdGF0aWMgVGhyZWFk
JiBjdXJyZW50KCk7CiAKICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHku
IEl0IGlzIHVzZWZ1bCBpZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAg
Ly8gb2YgdGhyZWFkcy4gQXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRp
bmcgdGhpcyBUaHJlYWRJZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQpAQCAtMTQxLDE1ICsxNDMs
NTkgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4g
ewogICAgICAgICByZXR1cm4gbV9zdGFjazsKICAgICB9CiAKKyAgICBBdG9taWNTdHJpbmdUYWJs
ZSogYXRvbWljU3RyaW5nVGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0
b21pY1N0cmluZ1RhYmxlOworICAgIH0KKworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBzZXRDdXJy
ZW50QXRvbWljU3RyaW5nVGFibGUoQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxl
KQorICAgIHsKKyAgICAgICAgQXRvbWljU3RyaW5nVGFibGUqIG9sZEF0b21pY1N0cmluZ1RhYmxl
ID0gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7CisgICAgICAgIG1fY3VycmVudEF0b21pY1N0
cmluZ1RhYmxlID0gYXRvbWljU3RyaW5nVGFibGU7CisgICAgICAgIHJldHVybiBvbGRBdG9taWNT
dHJpbmdUYWJsZTsKKyAgICB9CisKKyNpZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCisgICAgU3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHMmIHN0YWNrU3RhdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc3RhY2tTdGF0czsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQqIHNhdmVkU3RhY2tQb2lu
dGVyQXRWTUVudHJ5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NhdmVkU3RhY2tQb2ludGVy
QXRWTUVudHJ5OworICAgIH0KKworICAgIHZvaWQgc2V0U2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50
cnkodm9pZCogc3RhY2tQb2ludGVyQXRWTUVudHJ5KQorICAgIHsKKyAgICAgICAgbV9zYXZlZFN0
YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICB9CisKKyAg
ICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9zYXZl
ZExhc3RTdGFja1RvcDsKKyAgICB9CisKKyAgICB2b2lkIHNldFNhdmVkTGFzdFN0YWNrVG9wKHZv
aWQqIGxhc3RTdGFja1RvcCkKKyAgICB7CisgICAgICAgIG1fc2F2ZWRMYXN0U3RhY2tUb3AgPSBs
YXN0U3RhY2tUb3A7CisgICAgfQorCisgICAgdm9pZCogbV9hcGlEYXRhIHsgbnVsbHB0ciB9Owor
CiAjaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9ydF90IG1hY2hUaHJlYWQoKSB7IHJldHVybiBt
X3BsYXRmb3JtVGhyZWFkOyB9CiAjZW5kaWYKIAogICAgIHN0cnVjdCBOZXdUaHJlYWRDb250ZXh0
OwogICAgIHN0YXRpYyB2b2lkIGVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCopOwotcHJvdGVj
dGVkOgorcHJpdmF0ZToKICAgICBUaHJlYWQoKTsKIAorICAgIHN0YXRpYyBSZWY8VGhyZWFkPiBj
cmVhdGVDdXJyZW50VGhyZWFkKCk7CisgICAgdm9pZCBpbml0aWFsaXplSW5UaHJlYWQoKTsKKwog
ICAgIC8vIEludGVybmFsIHBsYXRmb3JtLXNwZWNpZmljIFRocmVhZCBlc3RhYmxpc2htZW50IGlt
cGxlbWVudGF0aW9uLgogICAgIGJvb2wgZXN0YWJsaXNoSGFuZGxlKE5ld1RocmVhZENvbnRleHQq
KTsKIApAQCAtMjEzLDYgKzI1OSwxNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAjZWxzZQogI2Vycm9yIFVua25vd24gU3lzdGVtCiAjZW5k
aWYKKworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSB7
IG51bGxwdHIgfTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9kZWZhdWx0QXRvbWljU3RyaW5n
VGFibGUgeyBudWxscHRyIH07CisgICAgQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIG1fYXRv
bWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIHsgbnVsbHB0ciB9OworCisjaWYgRU5BQkxFKFNUQUNL
X1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzIG1fc3RhY2tTdGF0czsKKyNl
bmRpZgorICAgIHZvaWQqIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgeyBudWxscHRyIH07
CisgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKIH07CiAKIC8vIFRoaXMgZnVuY3Rpb24g
Y2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWRzLgpAQCAtMjIzLDYgKzI3OSwxMCBAQCBpbmxp
bmUgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKICAgICByZXR1cm4gVGhyZWFkOjpj
dXJyZW50SUQoKTsKIH0KIAoraW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKK3sKKyAg
ICByZXR1cm4gVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkudGhyZWFkKCk7Cit9CiAKIC8vIEZJWE1F
OiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZW1haW4gYmVjYXVzZSB0aGV5IGFyZSB1c2VkIGZy
b20gV2ViS2l0IFdpbmRvd3Mgc3VwcG9ydCBsaWJyYXJ5LAogLy8gV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy5kbGwuIFdoZW4gdXBkYXRpbmcgdGhlIHN1cHBvcnQgbGlicmFyeSwgd2Ugc2hvdWxk
IHVzZSBuZXcgQVBJIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAppbmRl
eCAzMGM0OTlmZGE5Y2FlMWY2ZGY2NGMxZDRlYWE2Y2I1YjZmOTgxNzcyLi42ZTg4YWE2YThhMDkw
ZDk3ZTc3N2MzMWEzYmQyYTY2YWRjMzBjNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit1c2luZyBUaHJl
YWRJZGVudGlmaWVyID0gdWludDMyX3Q7Cit1c2luZyBUaHJlYWRGdW5jdGlvbiA9IHZvaWQgKCop
KHZvaWQqIGFyZ3VtZW50KTsKKwogI2lmIFVTRShQVEhSRUFEUykKIHVzaW5nIFBsYXRmb3JtVGhy
ZWFkSGFuZGxlID0gcHRocmVhZF90OwogdXNpbmcgUGxhdGZvcm1NdXRleCA9IHB0aHJlYWRfbXV0
ZXhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCAxMmQ3YzcxMzg2MTky
ZThmNDU1N2UzM2YyOWIzNTIxOTg3NjVlNzhmLi5jZmVlYWJiMjM4OGYwZmJjZWU1NDI4NjEwNTFi
Y2NkNmE3ZTgxYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0yODYs
MTggKzI4NiwxNiBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICAgICAgZGlkQmVjb21lRGV0
YWNoZWQoKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQotewotICAgIGlmIChUaHJl
YWQqIGN1cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxsKCkpCi0gICAgICAgIHJldHVybiAqY3VycmVu
dDsKIAorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkKK3sKICAgICAv
LyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90IGVzdGFi
bGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVh
ZCgpKTsKICAgICB0aHJlYWQtPmVzdGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUocHRocmVh
ZF9zZWxmKCkpOwogICAgIHRocmVhZC0+bV9zdGFjayA9IFN0YWNrQm91bmRzOjpjdXJyZW50VGhy
ZWFkU3RhY2tCb3VuZHMoKTsKLSAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUodGhyZWFkLmdl
dCgpKTsKKyAgICB0aHJlYWQtPmluaXRpYWxpemVJblRocmVhZCgpOwogICAgIGluaXRpYWxpemVD
dXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCgpOwotICAgIHJldHVybiB0aHJlYWQuZ2V0
KCk7CisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAogVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1
cnJlbnRJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwIGIv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAppbmRleCAwNTIzYTJlNmJiNWY2NjI2YWM4
YzA0YzkyODlhMDVlNTdmNWUwMTUwLi5lOTMxZGZmYjhmNGRiZDA3ZThhNjI0NWQyNzNiNjgzODM0
YjM4MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKQEAgLTI0MywxMSArMjQzLDggQEAgc2l6
ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAg
ICAgcmV0dXJuIHNpemVvZihDT05URVhUKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQo
KQorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkKIHsKLSAgICBpZiAo
VGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJlTnVsbCgpKQotICAgICAgICByZXR1cm4gKmN1
cnJlbnQ7Ci0KICAgICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRocmVhZElkZW50aWZp
ZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9w
dFJlZigqbmV3IFRocmVhZCgpKTsKIApAQCAtMjU3LDkgKzI1NCw5IEBAIFRocmVhZCYgVGhyZWFk
OjpjdXJyZW50KCkKIAogICAgIHRocmVhZC0+ZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRs
ZShoYW5kbGUsIGN1cnJlbnRJRCgpKTsKICAgICB0aHJlYWQtPm1fc3RhY2sgPSBTdGFja0JvdW5k
czo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7Ci0gICAgVGhyZWFkSG9sZGVyOjppbml0aWFs
aXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsKICAg
ICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5vbldURkNyZWF0ZWQoKTsKLSAgICByZXR1
cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0aHJlYWQ7CiB9CiAKIFRocmVhZElkZW50aWZp
ZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhy
ZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlNzdkMjU4NWY4YTYxNDQ0Zjk3NGU3YzNiOGFkMTNhMWNi
NjY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgiCi0KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgotCi0jaWYgVVNFKFdFQl9USFJF
QUQpCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotI2lmICFIQVZFKEZBU1RfVExTKQotVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4q
IFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7Ci0jZW5kaWYKLQotV1RGVGhyZWFkRGF0YTo6V1RG
VGhyZWFkRGF0YSgpCi0gICAgOiBtX3N0YWNrQm91bmRzKFN0YWNrQm91bmRzOjpjdXJyZW50VGhy
ZWFkU3RhY2tCb3VuZHMoKSkKLSAgICAsIG1fc2F2ZWRMYXN0U3RhY2tUb3Aoc3RhY2soKS5vcmln
aW4oKSkKLXsKLSAgICBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKCp0aGlzKTsKLSAgICBtX2N1
cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlOwotfQot
Ci1XVEZUaHJlYWREYXRhOjp+V1RGVGhyZWFkRGF0YSgpCi17Ci0gICAgaWYgKG1fYXRvbWljU3Ry
aW5nVGFibGVEZXN0cnVjdG9yKQotICAgICAgICBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3Rv
cihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7Ci19Ci0KLSNpZiBIQVZFKEZBU1RfVExTKQot
V1RGVGhyZWFkRGF0YSYgV1RGVGhyZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVj
aWZpY0RpcmVjdCgpCi17Ci0gICAgV1RGVGhyZWFkRGF0YSogZGF0YSA9IG5ldyBXVEZUaHJlYWRE
YXRhOwotICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZ
LCBkYXRhKTsKLSAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVksIFtd
KHZvaWQqIGRhdGEpewotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V1RGVGhyZWFkRGF0YSo+
KGRhdGEpOwotICAgIH0pOwotICAgIHJldHVybiAqZGF0YTsKLX0KLSNlbmRpZgotCi19IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaCBi
L1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmE1ZmY4MTc2NmQ4M2M1NmRiY2FjYjYzYmFlNmUyNjA4YTYyYzMwMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZU
aHJlYWREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaWZuZGVmIFdURlRo
cmVhZERhdGFfaAotI2RlZmluZSBXVEZUaHJlYWREYXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9GYXN0
VExTLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNr
Qm91bmRzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KLSNpbmNsdWRlIDx3dGYvVGhy
ZWFkU3BlY2lmaWMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEF0b21pY1N0cmluZ1Rh
YmxlOwotCi10eXBlZGVmIHZvaWQgKCpBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpKEF0b21p
Y1N0cmluZ1RhYmxlKik7Ci0KLWNsYXNzIFdURlRocmVhZERhdGEgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdURlRocmVhZERhdGEpOwotcHVibGljOgotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBXVEZUaHJlYWREYXRhKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIH5XVEZUaHJlYWREYXRh
KCk7Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwotICAgIH0KLQotICAg
IEF0b21pY1N0cmluZ1RhYmxlKiBzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoQXRvbWljU3Ry
aW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKQotICAgIHsKLSAgICAgICAgQXRvbWljU3RyaW5n
VGFibGUqIG9sZEF0b21pY1N0cmluZ1RhYmxlID0gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7
Ci0gICAgICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gYXRvbWljU3RyaW5nVGFibGU7
Ci0gICAgICAgIHJldHVybiBvbGRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICB9Ci0KLSAgICBjb25z
dCBTdGFja0JvdW5kcyYgc3RhY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhY2tCb3Vu
ZHM7Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQotICAgIFN0YWNrU3RhdHM6OlBl
clRocmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0YWNr
U3RhdHM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1F
bnRyeSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRy
eTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KHZvaWQq
IHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKLSAgICB7Ci0gICAgICAgIG1fc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgfQotCi0gICAgdm9pZCog
c2F2ZWRMYXN0U3RhY2tUb3AoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3Rh
Y2tUb3A7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTYXZlZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0
U3RhY2tUb3ApCi0gICAgewotICAgICAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gbGFzdFN0YWNr
VG9wOwotICAgIH0KLQotICAgIHZvaWQqIG1fYXBpRGF0YSB7IG51bGxwdHIgfTsKLQotcHJpdmF0
ZToKLSAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgeyBu
dWxscHRyIH07Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIG1fZGVmYXVsdEF0b21pY1N0cmluZ1Rh
YmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciBtX2F0b21p
Y1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciB7IG51bGxwdHIgfTsKLQotICAgIFN0YWNrQm91bmRzIG1f
c3RhY2tCb3VuZHM7Ci0jaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQotICAgIFN0YWNrU3RhdHM6OlBl
clRocmVhZFN0YXRzIG1fc3RhY2tTdGF0czsKLSNlbmRpZgotICAgIHZvaWQqIG1fc2F2ZWRTdGFj
a1BvaW50ZXJBdFZNRW50cnkgeyBudWxscHRyIH07Ci0gICAgdm9pZCogbV9zYXZlZExhc3RTdGFj
a1RvcDsKLQotI2lmIEhBVkUoRkFTVF9UTFMpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBXVEZUaHJlYWREYXRhJiBjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0KCk7
Ci0jZWxzZQotICAgIHN0YXRpYyBXVEZfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZpYzxXVEZUaHJl
YWREYXRhPiogc3RhdGljRGF0YTsKLSNlbmRpZgotCi0gICAgZnJpZW5kIFdURlRocmVhZERhdGEm
IHd0ZlRocmVhZERhdGEoKTsKLSAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nVGFibGU7Ci19
OwotCi1pbmxpbmUgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgpCi17Ci0gICAgLy8gV1JU
IFdlYkNvcmU6Ci0gICAgLy8gICAgV1RGVGhyZWFkRGF0YSBpcyB1c2VkIG9uIG1haW4gdGhyZWFk
IGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkCi0gICAgLy8gICAgb24gc2Vjb25kYXJ5
IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXphdGlvbiBoZXJlLgotICAg
IC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKLSAgICAvLyAgICB3dGZUaHJlYWREYXRhKCkgaXMgaW5p
dGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVUaHJlYWRpbmcoKSwgZW5zdXJpbmcKLSAgICAv
LyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBwdGhyZWFkX29uY2UgbG9ja2VkIGNv
bnRleHQuCi0jaWYgIUhBVkUoRkFTVF9UTFMpCi0gICAgaWYgKCFXVEZUaHJlYWREYXRhOjpzdGF0
aWNEYXRhKQotICAgICAgICBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhID0gbmV3IFRocmVhZFNw
ZWNpZmljPFdURlRocmVhZERhdGE+OwotICAgIHJldHVybiAqKldURlRocmVhZERhdGE6OnN0YXRp
Y0RhdGE7Ci0jZWxzZQotICAgIGlmIChXVEZUaHJlYWREYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8
V1RGVGhyZWFkRGF0YSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RB
VEFfS0VZKSkpCi0gICAgICAgIHJldHVybiAqZGF0YTsKLSAgICByZXR1cm4gV1RGVGhyZWFkRGF0
YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpOwotI2VuZGlmCi19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OldURlRocmVhZERhdGE7Ci11c2luZyBX
VEY6Ond0ZlRocmVhZERhdGE7Ci11c2luZyBXVEY6OkF0b21pY1N0cmluZ1RhYmxlOwotCi0jZW5k
aWYgLy8gV1RGVGhyZWFkRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5k
ZXggYTRlMDNkZTNhZjY1N2M2OWY3NGQxNjI1MWYwMDA3MzkxMzZhNTM0NC4uMmEwNjUxMjgzYTk3
MjcxZTU3NmEyMjJkZGYwMjMyMGQwNmEwZDJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJBdG9taWNTdHJpbmcuaCIKIAotI2luY2x1ZGUgIkludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24u
aCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmg+CisKICNpbmNsdWRlICJkdG9hLmgiCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKaW5kZXggMzUyMjQ4NWQ3Yjg0NzNjYzgw
ZTUyNDBhNzMyYTA1NTNjNDhiYzM0Mi4uMDYzZTRlZWI3ZTU3ZTVjZDg1YjBhMTcxOTU0ZDM4OTI0
YzE3Nzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlN0cmluZ1By
aW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkaW5nLmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFk
RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIAogI2lmIFVTRShXRUJfVEhS
RUFEKQpAQCAtNzIsNyArNzEsNyBAQCB1c2luZyBTdHJpbmdUYWJsZUltcGwgPSBIYXNoU2V0PFN0
cmluZ0ltcGwqPjsKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgU3RyaW5nVGFibGVJbXBsJiBzdHJp
bmdUYWJsZSgpCiB7Ci0gICAgcmV0dXJuIHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpLT50YWJsZSgpOworICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdU
YWJsZSgpLT50YWJsZSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
VGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKaW5k
ZXggZmU4YTQ4ODRkYjdlNjc4ZGVkNmFmMzJkZDQzNzEyZTU5NWYzYjkzNS4uZjZkNzhmMmJlNmY0
OGYyYWE2ODJjMDVkMTBkMjQ2NDY4YjBjMjRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmdUYWJsZS5jcHAKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9XVEZU
aHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIAotdm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKFdURlRocmVhZERhdGEmIGRhdGEp
Cit2b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoVGhyZWFkJiB0aHJlYWQpCiB7CiAjaWYg
VVNFKFdFQl9USFJFQUQpCiAgICAgLy8gT24gaU9TLCBvbmUgQXRvbWljU3RyaW5nVGFibGUgaXMg
c2hhcmVkIGJldHdlZW4gdGhlIG1haW4gVUkgdGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFkLgpAQCAt
MzcsMTcgKzM3LDE3IEBAIHZvaWQgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShXVEZUaHJlYWRE
YXRhJiBkYXRhKQogCiAgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQgPSBpc1dlYlRo
cmVhZCgpOwogICAgIGlmIChjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQgfHwgaXNVSVRocmVhZCgp
KQotICAgICAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gc2hhcmVkU3RyaW5n
VGFibGU7CisgICAgICAgIHRocmVhZC5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IHNoYXJl
ZFN0cmluZ1RhYmxlOwogICAgIGVsc2UKLSAgICAgICAgZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJp
bmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgdGhyZWFkLm1fZGVmYXVs
dEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOwogCiAgICAgLy8gV2Ug
ZG8gdGhlIGZvbGxvd2luZyBzbyB0aGF0IGl0cyBkZXN0cnVjdGlvbiBoYXBwZW5zIG9ubHkKICAg
ICAvLyBvbmNlIC0gb24gdGhlIG1haW4gVUkgdGhyZWFkLgogICAgIGlmICghY3VycmVudFRocmVh
ZElzV2ViVGhyZWFkKQotICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9y
ID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisgICAgICAgIHRocmVhZC5tX2F0b21pY1N0
cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OwogI2Vsc2UK
LSAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1Rh
YmxlOwotICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJp
bmdUYWJsZTo6ZGVzdHJveTsKKyAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUg
PSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAgdGhyZWFkLm1fYXRvbWljU3RyaW5nVGFibGVE
ZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CiAjZW5kaWYgLy8gVVNFKFdF
Ql9USFJFQUQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaAppbmRl
eCA5NDRhZTkyYmRlYzQ0MzliZjA3MDEyMWI3OGEzNWY1YTg0ZmM0MDlkLi5kM2JjOWNlNWY2ZTA3
Mjc3NTZjYzllYmJlNGYxMjUzN2ZhYWIyYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmdUYWJsZS5oCkBAIC0yNCwxOSArMjQsMTkgQEAKICNkZWZpbmUgV1RGX0F0b21pY1N0cmlu
Z1RhYmxlX2gKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRo
cmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCiBjbGFzcyBTdHJpbmdJbXBsOworY2xhc3MgVGhyZWFkOwogCiBjbGFzcyBBdG9t
aWNTdHJpbmdUYWJsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BdG9taWNTdHJpbmdUYWJsZSgpOwogCi0gICAgc3RhdGlj
IHZvaWQgY3JlYXRlKFdURlRocmVhZERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGUoVGhy
ZWFkJik7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHRhYmxlKCkgeyByZXR1cm4gbV90YWJs
ZTsgfQogCiBwcml2YXRlOgpAQCAtNDYsNSArNDYsNiBAQCBjbGFzcyBBdG9taWNTdHJpbmdUYWJs
ZSB7CiB9OwogCiB9Cit1c2luZyBXVEY6OkF0b21pY1N0cmluZ1RhYmxlOwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYjhmYWY1
YThkNzkxMDJmMmVmZGQ4YmRhNjQzMWMwNzdiZmYxM2JmMC4uNzczODI5ZDVlN2I0ZWIzM2Q3YmU4
MzgwNzE2ZjlhMzMzNzI2ZjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY2LDcgKzY1LDcgQEAg
VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgLy8gYW55IG90aGVyIHRo
cmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhp
cyBhIGNvbnZlbmllbnQKICAgICAvLyBwb2ludCB0byBjYWxsIG1ldGhvZHMgdGhhdCBpbnRlcm5h
bGx5IHBlcmZvcm0gYSBvbmUtdGltZSBpbml0aWFsaXphdGlvbiB0aGF0IGlzIG5vdAogICAgIC8v
IHRocmVhZHNhZmUuCi0gICAgd3RmVGhyZWFkRGF0YSgpOworICAgIFRocmVhZDo6Y3VycmVudCgp
OwogICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCA2MTIyYjRmMmM1MGI2NGJhNWM3
ZmZjOWRkZTNmNGRhNTYyOWEwMzg3Li5jOGYwNWExYTBhZWQ2MDJjYmQ4YzA5NGUwYTk3MjAzYWY5
YzYwNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tCkBAIC03MDIsNyArNzAyLDcgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQo
KQogewogICAgIHdlYlRocmVhZFN0YXJ0ZWQgPSBUUlVFOwogCi0gICAgLy8gVGhyZWFkR2xvYmFs
RGF0YSB0b3VjaGVzIEF0b21pY1N0cmluZywgd2hpY2ggcmVxdWlyZXMgV1RGVGhyZWFkRGF0YSBh
bmQgVGhyZWFkaW5nIGluaXRpYWxpemF0aW9uLgorICAgIC8vIFRocmVhZEdsb2JhbERhdGEgdG91
Y2hlcyBBdG9taWNTdHJpbmcsIHdoaWNoIHJlcXVpcmVzIFRocmVhZGluZyBpbml0aWFsaXphdGlv
bi4KICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIC8vIEluaXRpYWxpemUg
QXRvbWljU3RyaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcAppbmRleCA0MjVjOTI0OGQ4NzA0ODI3YmIwZTAzODIxYTJhZThkYzhhYWMw
ZDcwLi42ODFhMWVmNzU0ODEwMGQxYTI5NjYwOWU2MmNiN2Y5YWZiNjJlMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBX
b3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAgICAgLy8gV2UgY2Fubm90IGxldCBhbnkgb2Jq
ZWN0cyBzdXJ2aXZlIHBhc3QgdGhyZWFkIGV4aXQsIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdp
bGwgcnVuIEdDIG9yIG90aGVyd2lzZSBkZXN0cm95IHRoZW0uCiAgICAgd29ya2VyR2xvYmFsU2Nv
cGVUb0RlbGV0ZSA9IG51bGxwdHI7CiAKLSAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpUaHJlYWRH
bG9iYWxEYXRhIGJlZm9yZSBXVEY6OldURlRocmVhZERhdGEgZ29lcyBhd2F5IQorICAgIC8vIENs
ZWFuIHVwIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEgYmVmb3JlIFdURjo6VGhyZWFkIGdvZXMg
YXdheSEKICAgICB0aHJlYWRHbG9iYWxEYXRhKCkuZGVzdHJveSgpOwogCiAgICAgLy8gVGhlIHRo
cmVhZCBvYmplY3QgbWF5IGJlIGFscmVhZHkgZGVzdHJveWVkIGZyb20gbm90aWZpY2F0aW9uIG5v
dywgZG9uJ3QgdHJ5IHRvIGFjY2VzcyAidGhpcyIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316706</attachid>
            <date>2017-07-29 00:46:16 -0700</date>
            <delta_ts>2017-07-29 07:51:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170729164615.patch</filename>
            <type>text/plain</type>
            <size>69383</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi4wY2YwNGJmMjY0YzY4NzAx
ZTk2OTg2OGVhYmUxMmI0ZTliNTNlZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2su
aDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAg
ICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNv
bW1pdHRlZFN0YWNrQnl0ZUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
IChKU0M6OlZNOjppc1NhZmVUb1JlY3Vyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFj
a0NhcGFjaXR5Rm9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlKToKKwog
MjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBBU1NFUlRJT04gRkFJTEVEOiBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgY2FuZGlkYXRlLT5vcCgpID09
IFBoYW50b21TcHJlYWQgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhT
cHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNDY1ZDJkZWU1MDFlYzU4YTE5OWY1MWRlZGRlMjFjODliOWVmMDlhMy4uMDVm
OGYxZDU0M2QxZjE5NzJkMmQzODc2NzYyNWM5ODNjYjA2NzllNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBA
QAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL0xvY2tBbGdvcml0aG0uaDoKKyAgICAgICAgKiB3dGYvTG9ja0FsZ29yaXRobUlubGluZXMu
aDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90
LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNr
U3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6CisgICAgICAgIChXVEY6OlN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0
YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6
OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5
b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRlci5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9U
aHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpUaHJlYWRIb2xkZXIp
OgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwpOgorICAgICAg
ICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgorICAgICAgICAoV1RGOjpU
aHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnREeWluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRo
cmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZy5j
cHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0
KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RG
OjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRTYXZlZFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3Ap
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNrVG9wKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6
OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3Vy
cmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJlbW92ZWQuCisgICAgICAg
ICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
VGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaDoK
KwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3YWl0IGluIHNvbWUgcGxh
dGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJlYWRTdGFja0JvdW5kcyhQ
bGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyNzRkMjliMGNjMTljMDA4YjFm
YjcyZmRjNTg4MzkzMGUwMmE0MS4uMzY3MzRmOTg0YWI0NzIyZDQ4ZmYyOTRjM2M0YTMwZTNkM2Rm
NGIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA3LTI5ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERh
dGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6
OndvcmtlclRocmVhZCk6CisKIDIwMTctMDctMjggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBbV2ViSURMXSBTcGxpdC11cCBhbmQgY2xlYW51cCBGZXRjaCBJREwgZmls
ZXMgaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIHVubmVjZXNzYXJ5IGpzIGJ1aWx0aW5zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDViMTAwYzc1ZTE1YjlmNDc2
NjI5NDRhYTBmYzViYjhkZDA5ZjQ2YzUuLmJhZWIxNzhkNDgxZGJlZGYyYmVkM2RmNmQ0ZTYzZmQx
ODE1NmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBAIC0xNDEs
MTUgKzE0MSwxNSBAQCAtIChKU1ZhbHVlICopZ2xvYmFsT2JqZWN0CiAKICsgKEpTQ29udGV4dCAq
KWN1cnJlbnRDb250ZXh0CiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRo
cmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRo
cmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50
KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9h
cGlEYXRhOwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5jb250ZXh0IDogbmlsOwogfQogCiAr
IChKU1ZhbHVlICopY3VycmVudFRoaXMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRh
ID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tE
YXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6
OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRo
cmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+dGhpc1ZhbHVlIGlu
Q29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNTcsOCArMTU3LDggQEAg
KyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiAKICsgKEpTVmFsdWUgKiljdXJyZW50Q2FsbGVlCiB7
Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBD
YWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRh
OworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tE
YXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwogICAgIGlmICgh
ZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aEpTVmFsdWVSZWY6ZW50cnktPmNhbGxlZVZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJl
bnRDb250ZXh0XV07CkBAIC0xNjYsOCArMTY2LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRDYWxs
ZWUKIAogKyAoTlNBcnJheSAqKWN1cnJlbnRBcmd1bWVudHMKIHsKLSAgICBXVEZUaHJlYWREYXRh
JiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkg
PSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJl
YWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxi
YWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAKICAgICBpZiAoIWVudHJ5KQogICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtMjk0LDIxICsyOTQsMjEgQEAgLSAoQk9PTClib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb25WYWx1ZQogCiAtICh2b2lkKWJlZ2luQ2FsbGJh
Y2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tEYXRhIGNhbGxlZVZhbHVlOihKU1Zh
bHVlUmVmKWNhbGxlZVZhbHVlIHRoaXNWYWx1ZTooSlNWYWx1ZVJlZil0aGlzVmFsdWUgYXJndW1l
bnRDb3VudDooc2l6ZV90KWFyZ3VtZW50Q291bnQgYXJndW1lbnRzOihjb25zdCBKU1ZhbHVlUmVm
ICopYXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVh
ZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIFtz
ZWxmIHJldGFpbl07Ci0gICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2FsbGJhY2tEYXRh
ICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAo
Q2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICAqY2FsbGJhY2tEYXRhID0gKENh
bGxiYWNrRGF0YSl7IHByZXZTdGFjaywgc2VsZiwgW3NlbGYuZXhjZXB0aW9uIHJldGFpbl0sIGNh
bGxlZVZhbHVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgbmlsIH07Ci0g
ICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgdGhyZWFkLm1fYXBp
RGF0YSA9IGNhbGxiYWNrRGF0YTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IG5pbDsKIH0KIAogLSAo
dm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFja0RhdGEKIHsK
LSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOworICAgIFRo
cmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgc2VsZi5leGNlcHRpb24gPSBj
YWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsKICAgICBbY2FsbGJhY2tEYXRhLT5wcmVz
ZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07CiAgICAgW2NhbGxiYWNrRGF0YS0+Y3VycmVudEFyZ3Vt
ZW50cyByZWxlYXNlXTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YS0+
bmV4dDsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0OwogICAgIFtz
ZWxmIHJlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGY2
NWVmODQxYTdjMWUwMDZhMmVhYjcxNTI0ZmRkZThhNmFhMmEyNjcuLjNkNGJiZTM2ZTYzMzg1OTFh
Mzg4Y2M2NTRmYjA1ODc4ODNkYWI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFuY2VUaHJlYWRTdGF0
ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKFZNKiB2bSkKIHsKLSAgICBpZiAo
dm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpCisgICAgaWYgKHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IFdURjo6VGhyZWFkOjpj
dXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKHZtLT5pc1NoYXJlZEluc3RhbmNlKCkgJiYgIWlzVmFsaWRTaGFyZWRJbnN0YW5jZVRo
cmVhZFN0YXRlKHZtKSkKQEAgLTIwMjMsNyArMjAyMyw3IEBAIEhlYXA6OlRpY2tldCBIZWFwOjpy
ZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVzdCkKICAgICBzdG9wSWZOZWNlc3Nhcnko
KTsKICAgICAKICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2so
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZU
aHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0o
KS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSBXVEY6OlRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0
cmluZ1RhYmxlKCkpOwogICAgIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2sp
OwogICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBUaGF0IG9ubHkgd29y
a3MgaWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDViMzAyNjRjN2Y0MTFl
MzhkNTgwZjU1ZDVkN2QxZDY4OWIzNjAxZWIuLjg4MjNlNmY2MDE2MTEyYjQ3MzlmYTAyOGY0MzFi
YzdlOGQ3YzhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCkBAIC00MSwxNCArNDEsMTMgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRl
ICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGluZ1Njb3BlLmgi
Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGJv
b2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9
PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dyYW0gPSBQ
cm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNPYmplY3QqIGVy
cm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7CkBAIC02NCw3ICs2Myw3IEBAIGJvb2wg
Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
VmFsdWUqIHJldHVybmVkRXhjCiBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNv
dXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAg
ICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpD
bGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZXJyb3IpOwpAQCAtNzQsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0
YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9
IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZp
ZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAgSlNQYXJzZXJT
dHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJz
ZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3Ip
OwpAQCAtOTIsNyArOTEsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNT
dHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVu
dCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxl
Y3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUo
c291cmNlKTsKQEAgLTE2Nyw3ICsxNjYsNyBAQCBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdAogSlNJ
bnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRo
cmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJl
dHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBzY3Jp
cHRGZXRjaGVyKTsKQEAgLTE3OCw3ICsxNzcsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFu
ZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cgog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRo
cmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBTeW1ib2wqIGtl
eSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjA1LDcgKzIwNCw3
IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBKU0xvY2tIb2xk
ZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywKIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50
VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5h
bWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsyMTUsNyBAQCBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
SlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBT
eW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjM0
LDcgKzIzMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiBKU1ZhbHVlIGxpbmtBbmRFdmFs
dWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwot
ICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZU
aHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhl
Yy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0
cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgSlNW
YWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVLZXksIEpTVmEKIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWlj
U3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRU
aHJlYWQoKSk7CiAKICAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5tb2R1
bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVLZXksIHNjcmlwdEZl
dGNoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApp
bmRleCA5OTI1NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2Li5kNTUyZDBiMWY2
Mjg3MTVhMjYzNmFiNzczN2VkZmM2MTk3MzRjMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSWRlbnRp
Zmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoVk0qIHZtKQogewogICAgIC8vIENo
ZWNrIHRoZSBpZGVudGlmaWVyIHRhYmxlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgdGhyZWFkc3Bl
Y2lmaWMgbWF0Y2hlcyB0aGUKICAgICAvLyB2bSdzIGlkZW50aWZpZXIgdGFibGUuCi0gICAgQVNT
RVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZtLT5hdG9taWNT
dHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwog
fQogCiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEV4ZWNT
dGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggOWVmMTQzYWQ0OGU3MWQyOGIxN2JhNDE2ZmEzYjE0
YmNiZGI3NDVhYS4uODUwNzNiNmQyOTViNTk5NjNhMjEzZDUyNDU1Yjg0YjRhZDE2NTUxYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAg
ICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUoKTsKICNlbmRpZgogICAgICAgICBp
bml0aWFsaXplU3VwZXJTYW1wbGVyKCk7Ci0gICAgICAgIFdURlRocmVhZERhdGEmIHRocmVhZERh
dGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHRocmVhZERhdGEuc2V0U2F2ZWRMYXN0U3Rh
Y2tUb3AodGhyZWFkRGF0YS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAgICAgVGhyZWFkJiB0aHJl
YWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNr
VG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBiYTZjNDRhNWRmNTE0ZGU1MTdjOWEyNTg3NTYxYTk4
YTlkOTI0MTBlLi5jMmM4Mjc2YWMzMjkwZWYxNmM5ZmNlNGFmYTg0YTM5ZjYwMGNiMzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTEyNyw5ICsxMjcsOSBA
QCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIGlmICghbV92bSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWRE
YXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBBU1NF
UlQoIW1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0gICAgbV9lbnRyeUF0b21pY1N0cmluZ1Rh
YmxlID0gdGhyZWFkRGF0YS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV92bS0+YXRvbWlj
U3RyaW5nVGFibGUoKSk7CisgICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gdGhyZWFkLnNl
dEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAg
ICBBU1NFUlQobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogICAgIGlmIChtX3ZtLT5oZWFw
Lmhhc0FjY2VzcygpKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJl
TG9jaygpCiAgICAgdm9pZCogcCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUgY3VycmVudCBzdGFj
ayBwb2ludGVyLgogICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShwKTsKIAotICAg
IG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0YWNrVG9wKCkpOwor
ICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CiAK
ICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVhZCgpOwogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTTG9jazo6d2ls
bFJlbGVhc2VMb2NrKCkKICAgICB9CiAKICAgICBpZiAobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxl
KSB7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUo
bV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0
Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CiAgICAg
ICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IG51bGxwdHI7CiAgICAgfQogfQpAQCAtMjI1
LDkgKzIyNSw5IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2Nrcyog
ZHJvcHBlcikKIAogICAgIGRyb3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tEcm9wRGVwdGgpOwog
Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICB0
aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSgpKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNrVG9wKG1fdm0t
Pmxhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OworICAgIHRocmVhZC5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3ZtLT5zdGFja1Bv
aW50ZXJBdFZNRW50cnkoKSk7CisgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKG1fdm0t
Pmxhc3RTdGFja1RvcCgpKTsKIAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQgPSBtX2xv
Y2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CkBAIC0yNTIsOSArMjUyLDkg
QEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3BwZXIsIHVuc2ln
bmVkIGRyb3BwZWRMb2NrQ291bnQpCiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0aDsKIAotICAgIFdU
RlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgbV92bS0+c2V0
U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZERhdGEuc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50
cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEuc2F2ZWRMYXN0U3Rh
Y2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBt
X3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5KCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3Rh
Y2tUb3AoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0qIHZt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBjOTFkYWVjYmNkZDY1
YTk2ZDYzM2YzMzE1M2Q1NGE5NDlhZDY1NzNiLi5kZWEwNTAyOGNkNzM1ZWI2MzkxNzQ3MGMxNTIy
YjE4MjQ1ZGU1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAt
MjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMjUxMDI0MzQ2NDM3N2E0NDlhZmVjYmM1OTlm
ZTk4NDI3MDlmZTdhLi4wNjk1OWJhNDY1ZTE5MmJlNjNhODE4OGQ5ZmMyMzc3ZjdjZTk2OTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTQsNyArMTE0LDYgQEAKICNp
bmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVh
ZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKQEAgLTE3Niw3ICsxNzUsNyBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB0b3BWTUVudHJ5RnJh
bWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCiAg
ICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFByb21pc2VEZWZlcnJl
ZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZh
dWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3Ry
aW5nVGFibGUpCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8g
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdU
YWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcg
QXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGlu
ZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQpAQCAtMjExLDEzICsyMTAsMTMg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9zaGFk
b3dDaGlja2VuKHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKSkKIHsKICAgICBpbnRl
cnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Ci0gICAgU3RhY2tCb3VuZHMgc3RhY2sg
PSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBTdGFja0JvdW5kcyBzdGFjayA9IFRocmVh
ZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9uZVNpemUoT3B0
aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNrVG9wKHN0YWNr
Lm9yaWdpbigpKTsKIAogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2ZXJ5dGhp
bmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7Ci0gICAgQXRv
bWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IHd0ZlRocmVh
ZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJpbmdUYWJsZSk7
CisgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9
IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2F0b21pY1N0
cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0eU5hbWVzID0gbmV3IENvbW1vbklkZW50aWZpZXJzKHRo
aXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwpAQCAtMjcwLDcgKzI2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBO
YXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRoaXMpOwogCi0g
ICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0Vu
dHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRB
dG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOwogCiAjaWYg
RU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8SklUVGh1bmtzPigp
OwpAQCAtNjcyLDcgKzY3MSw3IEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVTdGFja0xpbWl0cygp
CiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tMaW1pdDsKICNlbmRp
ZgogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNr
KCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3Rh
Y2soKTsKICAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSA9IE9wdGlvbnM6OnJlc2VydmVkWm9u
ZVNpemUoKTsKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGVuc3VyZWQgdGhhdCBPcHRp
b25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11bVJlc2VydmVab25lU2l6ZSBhdAogICAg
IC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwgYW5kIHRoZSBvcHRpb24gdmFsdWUgc2hv
dWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFmdGVyLgpAQCAtODg2LDkgKzg4NSw5IEBA
IHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQogI2lmIEVOQUJMRShKSVQpCiAg
ICAgLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjaywgd2UgZG9uJ3Qga25vdyBob3cgbWFueSBzdGFj
ayBwYWdlcyBhcmUgYWN0dWFsbHkKICAgICAvLyBjb21taXR0ZWQuIFNvLCB3ZSB1c2UgdGhlIGN1
cnJlbnQgc3RhY2sgdXNhZ2UgYXMgYW4gZXN0aW1hdGUuCi0gICAgQVNTRVJUKHd0ZlRocmVhZERh
dGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGludDhfdCogY3VycmVu
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1cnJlbnQpOwotICAgIGludDhfdCogaGln
aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4od3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkub3Jp
Z2luKCkpOworICAgIGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oVGhy
ZWFkOjpjdXJyZW50KCkuc3RhY2soKS5vcmlnaW4oKSk7CiAgICAgcmV0dXJuIGhpZ2ggLSBjdXJy
ZW50OwogI2Vsc2UKICAgICByZXR1cm4gQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0ZUNvdW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBlZTIzMmE3ZjIxY2VjZDAxZGY3ZTkz
MmY4YjUyZTc0ZTNlNDhmYTZkLi45ZmI0ZDhiZTQyYzFmNzhkMWViMGU1MDlkYmEyOTM0MTZmM2Jk
ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY4LDcgKzY4LDYgQEAKICNp
bmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykK
QEAgLTI0Myw3ICsyNDIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIC8vIFdlYkNvcmUg
aGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVhZHMgdG8gVk1zOwogICAgIC8vIGVpdGhl
ciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWQoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZQog
ICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRoZSAnZGVmYXVsdCcgVk0gKGl0IHVzZXMgdGhl
Ci0gICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUgZnJvbSB3dGZU
aHJlYWREYXRhKS4KKyAgICAvLyB0aHJlYWQncyBkZWZhdWx0IHN0cmluZyB1bmlxdWluZyB0YWJs
ZSBmcm9tIFRocmVhZDo6Y3VycmVudCgpKS4KICAgICAvLyBBUEkgY29udGV4dHMgY3JlYXRlZCB1
c2luZyB0aGUgbmV3IGNvbnRleHQgZ3JvdXAgYXdhcmUgaW50ZXJmYWNlCiAgICAgLy8gY3JlYXRl
IEFQSUNvbnRleHRHcm91cCBvYmplY3RzIHdoaWNoIHJlcXVpcmUgbGVzcyBsb2NraW5nIG9mIEpT
QwogICAgIC8vIHRoYW4gdGhlIG9sZCBzaW5nbGV0b24gQVBJU2hhcmVkIFZNIGNyZWF0ZWQgZm9y
IHVzZSBieQpAQCAtNjkxLDcgKzY5MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAKICAgICBi
b29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwor
ICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2Fy
ZCgpKTsKICAgICAgICAgdm9pZCogY3VyciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZjdXJy
KTsKICAgICAgICAgcmV0dXJuIGN1cnIgPj0gc3RhY2tMaW1pdDsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRleCBjMmQ5YmRhMTg4
YzQ3NzIwMjU2ZDQwMzA2NDgyODZlYzQ1ZTMxYzU5Li5kMTFhOGZmYTY2ZGI1ZmUzMGZiOWY0OWY0
NTMxMzgzNmI3OGQyMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUVudHJ5U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
RW50cnlTY29wZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2Nv
cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICwgbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVCghRGlzYWxsb3dWTVJlZW50cnk6Omlz
SW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5z
dGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0uZW50cnlTY29wZSkg
ewogICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTUlubGluZXMuaAppbmRleCA1YTc3NjE5NTBlMGNmNmIyODg1NjAxOTMxYWY2Yjcx
YTNiZTAyZDc4Li5iYzBjMjVmOTFlMmMxNzYxYTIxY2EyMGViMDg4MmEwOTNhMjE1MTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgVk06OmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoUmVnaXN0
ZXIqIG5ld1RvcE9mU3RhY2spCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBBU1NFUlQod3RmVGhy
ZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgcmV0dXJuIG5l
d1RvcE9mU3RhY2sgPj0gbV9zb2Z0U3RhY2tMaW1pdDsKICNlbHNlCiAgICAgcmV0dXJuIGVuc3Vy
ZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChuZXdUb3BPZlN0YWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCAzYTExMDkwZDE5MDkzY2NlYmU4MDliYzcy
ZDNhNmE1MDJlOWM0YjVkLi43MjIyY2MwNDRmMGFkYzk4NzgwYTk5ZjA2YTNlNDliYjQyM2RlYjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBAIC0zMiw4
ICszMiw4IEBACiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1ZGUgIllhcnJQ
YXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERh
dGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtODgyLDcgKzg4Miw3IEBAIGNsYXNz
IFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgaWYgKCFtX3N0YWNrTGlt
aXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERh
dGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAgICAgaW50OF90
KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAgICAgICAgIGludDhf
dCogbGltaXQgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KG1fc3RhY2tMaW1pdCk7CiAgICAg
ICAgIHJldHVybiBjdXJyID49IGxpbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZDg2MTY3MWM0YWEyODEwYzFlMzNiNTdiMzgxM2YwOGE3MGJkYjNlYi4u
ZTE0ZTBkYTM3ODVlODc3OGZjYmVjOTUwYjFkMjQ1Y2NjZWQ5OGJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNyArMTIzLDYgQEAKIAkJQThBNDc0
NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1MUE4MjVCMDA0MTIzRkYg
LyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZG
IC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgKi87
IH07CiAJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzU3MTUxQTgyNUIwMDQxMjNG
RiAvKiBVVEY4LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRo
cmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovOyB9Owog
CQlBRDg5QjZCNzFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2
NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQx
NTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87IH07CiAJCUFE
RjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2NTFFMzlGMTA2
MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovOyB9OwpAQCAtNTE0LDggKzUx
Myw2IEBACiAJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1UYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVhZERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYg
LyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZU
aHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgy
NjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Y29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QTQ3MjdGMTUxQTgyNUEw
MDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERpc2FsbG93Q1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQz
NEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTcs
OCArOTk0LDYgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAq
LywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLywKIAkJ
CQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCi0JCQkJQThBNDcz
N0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAotCQkJCUE4QTQ3MzdC
MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDA5LDcgKzE0MDQsNiBAQAog
CQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRo
cmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGUxNWQ0
NWM2M2M5MGRkODNkYWExYTc0YjUwZjMyODc1ZTk4YTkyM2IuLjVhNzU2ODg0ZDYyN2UwYjIwYzZl
YTk4ZDQwM2FjNDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNTAsNyArMTUw
LDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVmFyaWFudC5oCiAgICAgVmVjdG9yLmgKICAgICBW
ZWN0b3JUcmFpdHMuaAotICAgIFdURlRocmVhZERhdGEuaAogICAgIFdhbGxUaW1lLmgKICAgICBX
ZWFrUHRyLmgKICAgICBXb3JkTG9jay5oCkBAIC0yNTQsNyArMjUzLDYgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAK
ICAgICBVVUlELmNwcAotICAgIFdURlRocmVhZERhdGEuY3BwCiAgICAgV2FsbFRpbWUuY3BwCiAg
ICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTG9ja0FsZ29yaXRobS5oIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5oCmlu
ZGV4IDQ1MTQ4NTQ3N2FjZjY1NjRiODI4NzdkM2U2NTllOTAyNzhjODk1MWUuLmI4ZTk4N2I5MDgx
NTBmMjY2NzYwMGZhNDMxZjdiOTIwNGVmM2I4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0xvY2tBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtLmgKQEAg
LTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3Rm
L0NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlubGluZXMuaCBi
L1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgKaW5kZXggODQzOGQyZTkyYWFk
MzFlZmQ0NTk5ODNiOWM1MmMwOWEwNjlmZDBkYS4uMGNiZTVmYTVmYWM4MTBkOWNkZjFjOTM4Mzdm
MzAxZTJlNjhmYzRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgogI2luY2x1ZGUg
PHd0Zi9QYXJraW5nTG90Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAvLyBJdCdz
IGEgZ29vZCBpZGVhIHRvIGF2b2lkIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiB0b28gbWFueSBw
bGFjZXMsIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKIC8vIHRoZSBsb2NrIGFsZ29y
aXRobSBzbG93IHBhdGggd2l0aG91dCByZWNvbXBpbGluZyB0aGUgd29ybGQuIFJpZ2h0IG5vdyB0
aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0d28KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRleCAxNGIzNDY3
M2EwYmQ4NTc3YzEyN2ZjZjI2OWI3MzI5ZWI2YjAwN2Y4Li5hYjkyMTM0ZWQ4YjhlMWUxMzdjZjll
N2M2M2JmMWMyODI0YWZiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdM
b3QuY3BwCmluZGV4IGNjMWEyMWI5ZWE1Y2NjYzZmMWFjZTRjOTc0OTg5OWJiZGE1ZDdlMTAuLmY4
ZmVkODhiMWY3Yzk5MjA5ODZhOTRlN2FiNmM1NTcxYjkyM2NlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3Qu
Y3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMuaCIKLSNp
bmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisjaW5jbHVkZSAiVGhyZWFkaW5nLmgiCiAj
aW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgogI2luY2x1ZGUgIldv
cmRMb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCmluZGV4IDA2NGYyZjA1MmFhZjM4YjlmODBhNmRk
NDExMzJlNjU0NmU0NTdmNDIuLjhjYjQ2MjIxMWRmN2FkNTU3ZTNjN2FlMjQ4ZTU2NTI4YjUxODZj
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJB
c3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YUxvZy5oIgotI2luY2x1ZGUgIldURlRocmVhZERh
dGEuaCIKIAogLy8gRGVmaW5lIHRoZSBmb2xsb3dpbmcgZmxhZyBpZiB5b3Ugd2FudCB0byBjb2xs
ZWN0IHN0YXRzIG9uIGV2ZXJ5IHNpbmdsZQogLy8gY2hlY2twb2ludC4gQnkgZGVmYXVsdCwgd2Ug
b25seSBsb2cgY2hlY2twb2ludHMgdGhhdCBlc3RhYmxpc2ggbmV3CkBAIC01OSw3ICs1OCw3IEBA
IGludCBTdGFja1N0YXRzOjpzX21heExheW91dFJlZW50cnlEZXB0aCA9IDA7CiAKIFN0YWNrU3Rh
dHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cygpCiB7Ci0gICAgY29uc3QgU3RhY2tC
b3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAgY29uc3QgU3RhY2tC
b3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKICAgICBtX3JlZW50cnlE
ZXB0aCA9IDA7CiAgICAgbV9zdGFja1N0YXJ0ID0gKGNoYXIqKXN0YWNrLm9yaWdpbigpOwogICAg
IG1fY3VycmVudENoZWNrUG9pbnQgPSAwOwpAQCAtNzAsOSArNjksOSBAQCBTdGFja1N0YXRzOjpQ
ZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6
Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2soU3Rh
Y2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhyZWFkRGF0YSA9
IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwotICAgIFN0YWNr
U3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0cygpOwotICAg
IGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7CisgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJl
YWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMm
IHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rvd253YXJkID0g
c3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKICAgICBib29sIG5lZWRUb0xvZyA9IGZhbHNlOwpA
QCAtMTI4LDggKzEyNyw4IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQoKQog
U3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogewogICAgIHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdU
RlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3Rm
VGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVh
ZERhdGEtPnN0YWNrU3RhdHMoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVu
dCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3Rh
dHMoKTsKIAogICAgIC8vIFBvcCB0byBwcmV2aW91cyBjaGVja3BvaW50OgogICAgIHQubV9jdXJy
ZW50Q2hlY2tQb2ludCA9IG1fcHJldjsKQEAgLTEzOCw3ICsxMzcsNyBAQCBTdGFja1N0YXRzOjpD
aGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiAgICAgLy8gTG9nIHRoaXMgY2hlY2twb2ludCBpZiBu
ZWVkZWQ6CiAjaWYgRU5BQkxFKFZFUkJPU0VfU1RBQ0tfU1RBVFMpCiAgICAgaWYgKCFtX3ByZXYp
IHsKLSAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+c3RhY2so
KTsKKyAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAg
ICAgICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgp
OwogCiAgICAgICAgIGNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlz
KTsKQEAgLTE1OSw5ICsxNTgsOSBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2lu
dCgpCiB2b2lkIFN0YWNrU3RhdHM6OnByb2JlKCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBXVEZUaHJlYWRE
YXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0ZlRocmVhZERh
dGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWREYXRhLT5z
dGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+
c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIFN0
YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKKyAgICBj
b25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAgIGJvb2wgaXNH
cm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCkBAIC0yMjAsOSAr
MjE5LDkgQEAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hlY2tQb2ludCgp
CiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKIAogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNM
b2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRocmVhZERhdGEq
IHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhyZWFkRGF0YSgp
KTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERhdGEtPnN0YWNr
U3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFj
aygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgU3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOworICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9vbCBpc0dyb3dp
bmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xk
ZXIuY3BwCmluZGV4IGUyYTMxYmU5OTc4YTlkZTQyZWJmYTMzYjA3MDZhNTI0MzNiZDcyY2IuLjAy
YjBlMTRhYTFhMTAzYzQ3NWY5ZDBmZWIwMjUxZmEzZjY0NzQ0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9s
ZGVyLmNwcApAQCAtNDMsNCArNDMsOSBAQCBUaHJlYWRIb2xkZXI6On5UaHJlYWRIb2xkZXIoKQog
ICAgIG1fdGhyZWFkLT5kaWRFeGl0KCk7CiB9CiAKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVy
Ojppbml0aWFsaXplQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemUoVGhyZWFkOjpj
cmVhdGVDdXJyZW50VGhyZWFkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oIGIvU291cmNlL1dURi93dGYvVGhyZWFk
SG9sZGVyLmgKaW5kZXggYjJmOGRlNjg4NTBjNmFmZGM3OWVmZGFkYTA5YmU2ZGVmYjE4MjZhOS4u
YTRjOTNiMGJlNzYxMmY5YmRiY2MzMmIwZjgwN2RlNGJkOGUzZGI5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9s
ZGVyLmgKQEAgLTI5LDEzICsyOSwxNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21h
IG9uY2UKKyNpZm5kZWYgVGhyZWFkSG9sZGVyX2gKKyNkZWZpbmUgVGhyZWFkSG9sZGVyX2gKIAor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCitjbGFzcyBUaHJl
YWQ7CisKIC8vIEhvbGRzIFRocmVhZCBpbiB0aGUgdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2UuIFRo
ZSBkZXN0cnVjdG9yIG9mIHRoaXMgaG9sZGVyIHJlbGlhYmx5IGRlc3Ryb3kgVGhyZWFkLgogLy8g
Rm9yIHB0aHJlYWQsIGl0IGVtcGxveXMgcHRocmVhZHMtc3BlY2lmaWMgMi1wYXNzIGRlc3RydWN0
aW9uIHRvIHJlbGlhYmx5IHJlbW92ZSBUaHJlYWQuCiAvLyBGb3IgV2luZG93cywgd2UgdXNlIHRo
cmVhZF9sb2NhbCB0byBkZWZlciB0aHJlYWQgaG9sZGVyIGRlc3RydWN0aW9uLiBJdCBhc3N1bWVz
IHJlZ3VsYXIgVGhyZWFkU3BlY2lmaWMKQEAgLTQ3LDIzICs1MCwyNiBAQCBjbGFzcyBUaHJlYWRI
b2xkZXIgewogCiAgICAgLy8gT25lIHRpbWUgaW5pdGlhbGl6YXRpb24gZm9yIHRoaXMgY2xhc3Mg
YXMgYSB3aG9sZS4KICAgICAvLyBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgaW5p
dGlhbGl6ZSgpIGFuZCBpdCBpcyBub3QgdGhyZWFkLXNhZmUuCi0gICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZU9uY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZU9uY2UoKTsKIAogICAgIC8vIENyZWF0ZXMgYW5kIHB1dHMgYW4gaW5zdGFuY2Ugb2YgVGhy
ZWFkSG9sZGVyIGludG8gdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2UuCi0gICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZShUaHJlYWQmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFRocmVh
ZEhvbGRlciYgaW5pdGlhbGl6ZShSZWY8VGhyZWFkPiYmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFRocmVhZEhvbGRlciYgaW5pdGlhbGl6ZUN1cnJlbnQoKTsKIAogICAgIC8vIFJl
dHVybnMgMCBpZiB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZSB3YXMgbm90IGluaXRpYWxpemVkLgot
ICAgIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnQoKTsKKyAgICBzdGF0aWMgVGhyZWFkSG9s
ZGVyJiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciogY3VycmVudE1heUJlTnVs
bCgpOwogCiAgICAgVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQog
CiAjaWYgT1MoV0lORE9XUykKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFRocmVhZEhv
bGRlciogY3VycmVudER5aW5nKCk7CiAgICAgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IGdldChUaHJl
YWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFRocmVhZEhvbGRlcihUaHJl
YWQmIHRocmVhZCkKLSAgICAgICAgOiBtX3RocmVhZCh0aHJlYWQpCisgICAgVGhyZWFkSG9sZGVy
KFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQorICAgICAgICA6IG1fdGhyZWFkKFdURk1vdmUodGhyZWFk
KSkKICAgICAgICAgLCBtX2lzRGVzdHJveWVkT25jZShmYWxzZSkKICAgICB7CiAgICAgfQpAQCAt
NzcsNyArODMsMzkgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKIAogICAgIFJlZjxUaHJlYWQ+IG1f
dGhyZWFkOwogICAgIGJvb2wgbV9pc0Rlc3Ryb3llZE9uY2U7Ci0gICAgc3RhdGljIFRocmVhZFNw
ZWNpZmljS2V5IG1fa2V5OworICAgIHN0YXRpYyBXVEZfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZp
Y0tleSBtX2tleTsKIH07CiAKK2lubGluZSBUaHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3Vy
cmVudE1heUJlTnVsbCgpCit7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgQVNTRVJUKG1fa2V5
ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRo
cmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7CisjZWxzZQorICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3Qo
V1RGX1RIUkVBRF9EQVRBX0tFWSkpOworI2VuZGlmCit9CisKK2lubGluZSBUaHJlYWRIb2xkZXIm
IFRocmVhZEhvbGRlcjo6Y3VycmVudCgpCit7CisgICAgLy8gV1JUIFdlYkNvcmU6CisgICAgLy8g
ICAgVGhyZWFkSG9sZGVyIGlzIHVzZWQgb24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBv
c3NpYmx5IGJlIHVzZWQKKyAgICAvLyAgICBvbiBzZWNvbmRhcnkgb25lcywgc28gdGhlcmUgaXMg
bm8gbmVlZCBmb3Igc3luY2hyb25pemF0aW9uIGhlcmUuCisgICAgLy8gV1JUIEphdmFTY3JpcHRD
b3JlOgorICAgIC8vICAgIFRocmVhZDo6Y3VycmVudCgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJv
bSBpbml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCisgICAgLy8gICAgdGhpcyBpcyBpbml0
aWFsbHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgorI2lmICFIQVZF
KEZBU1RfVExTKQorICAgIGlmIChVTkxJS0VMWShUaHJlYWRIb2xkZXI6Om1fa2V5ID09IEludmFs
aWRUaHJlYWRTcGVjaWZpY0tleSkpCisgICAgICAgIGluaXRpYWxpemVPbmNlKCk7CisjZW5kaWYK
KyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVudE1heUJlTnVsbCgpKQorICAgICAgICByZXR1
cm4gKmhvbGRlcjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlmIChhdXRvKiBob2xkZXIgPSBjdXJy
ZW50RHlpbmcoKSkKKyAgICAgICAgcmV0dXJuICpob2xkZXI7CisjZW5kaWYKKyAgICByZXR1cm4g
aW5pdGlhbGl6ZUN1cnJlbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCisjZW5kaWYgLy8g
VGhyZWFkSG9sZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0
aHJlYWRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcAppbmRl
eCAyMGU1ZTg4Zjc2ZGFjMmY3NjA3MzM0YThlYjNhYWVhY2RhZDVmOTYzLi44NTY4NDFlMzIzNmRi
ZWE4ZGYwMzIwODFmOWUyNjRjMzFkZDU2NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVy
UHRocmVhZHMuY3BwCkBAIC00MSwzNiArNDEsNDEgQEAgdm9pZCBUaHJlYWRIb2xkZXI6OmluaXRp
YWxpemVPbmNlKCkKICAgICB0aHJlYWRTcGVjaWZpY0tleUNyZWF0ZSgmbV9rZXksIGRlc3RydWN0
KTsKIH0KIAotVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQoKQorVGhyZWFkSG9s
ZGVyJiBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoUmVmPFRocmVhZD4mJiB0aHJlYWQpCiB7Cisg
ICAgYXV0byogaG9sZGVyID0gbmV3IFRocmVhZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworI2lm
ICFIQVZFKEZBU1RfVExTKQorICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxl
YXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgor
ICAgIC8vIEhhdmluZyB0aGlzIHJlbGVhc2UgYXNzZXJ0IGhlcmUgbWVhbnMgdGhhdCB3ZSB3aWxs
IGNhdGNoICJkaWRuJ3QgY2FsbAorICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHNv
b24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KICAgICBBU1NFUlQobV9rZXkgIT0gSW52
YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9s
ZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQobV9rZXkpKTsKLX0KLQotdm9pZCBUaHJlYWRIb2xkZXI6
OmluaXRpYWxpemUoVGhyZWFkJiB0aHJlYWQpCi17Ci0gICAgaWYgKCFjdXJyZW50KCkpIHsKLSAg
ICAgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhpcyBhcyBhIHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5
d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1cnQgcGVyZm9ybWFuY2UuCi0gICAgICAgIC8vIEhhdmlu
ZyB0aGlzIHJlbGVhc2UgYXNzZXJ0IGhlcmUgbWVhbnMgdGhhdCB3ZSB3aWxsIGNhdGNoICJkaWRu
J3QgY2FsbAotICAgICAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3Vn
aCIgYnVncyBpbiByZWxlYXNlIG1vZGUuCi0gICAgICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlk
VGhyZWFkU3BlY2lmaWNLZXkpOwotICAgICAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgbmV3
IFRocmVhZEhvbGRlcih0aHJlYWQpKTsKLSAgICB9CisgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9r
ZXksIGhvbGRlcik7CisjZWxzZQorICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZf
VEhSRUFEX0RBVEFfS0VZLCBob2xkZXIpOworICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoV1RGX1RI
UkVBRF9EQVRBX0tFWSwgJmRlc3RydWN0KTsKKyNlbmRpZgorICAgIHJldHVybiAqaG9sZGVyOwog
fQogCiB2b2lkIFRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKIHsKLSAgICBUaHJl
YWRIb2xkZXIqIHRocmVhZElkZW50aWZpZXJEYXRhID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVy
Kj4oZGF0YSk7Ci0gICAgQVNTRVJUKHRocmVhZElkZW50aWZpZXJEYXRhKTsKKyAgICBUaHJlYWRI
b2xkZXIqIGhvbGRlciA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KGRhdGEpOworICAgIEFT
U0VSVChob2xkZXIpOwogCi0gICAgaWYgKHRocmVhZElkZW50aWZpZXJEYXRhLT5tX2lzRGVzdHJv
eWVkT25jZSkgewotICAgICAgICBkZWxldGUgdGhyZWFkSWRlbnRpZmllckRhdGE7CisgICAgaWYg
KGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9uY2UpIHsKKyAgICAgICAgZGVsZXRlIGhvbGRlcjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRocmVhZElkZW50aWZpZXJEYXRhLT5tX2lzRGVz
dHJveWVkT25jZSA9IHRydWU7CisgICAgaG9sZGVyLT5tX2lzRGVzdHJveWVkT25jZSA9IHRydWU7
CiAgICAgLy8gUmUtc2V0dGluZyB0aGUgdmFsdWUgZm9yIGtleSBjYXVzZXMgYW5vdGhlciBkZXN0
cnVjdCgpIGNhbGwgYWZ0ZXIgYWxsIG90aGVyIHRocmVhZC1zcGVjaWZpYyBkZXN0cnVjdG9ycyB3
ZXJlIGNhbGxlZC4KLSAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgdGhyZWFkSWRlbnRpZmll
ckRhdGEpOworI2lmICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlk
VGhyZWFkU3BlY2lmaWNLZXkpOworICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIp
OworI2Vsc2UKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRB
X0tFWSwgaG9sZGVyKTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9L
RVksICZkZXN0cnVjdCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyV2luLmNwcAppbmRleCBmMDZiNjJmNjhlMjAxMzYzNWM2MzUxNWU4YzBlNGYx
NWZlNDYxNmRhLi45OGIyYzI4YmVmNmU0YjQzNmFhMTUyZjE0NDM3MTg2MDNlNTZlODQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAKQEAgLTU2LDE1ICs1Niw5IEBAIHZvaWQgVGhyZWFk
SG9sZGVyOjppbml0aWFsaXplT25jZSgpCiAgICAgdGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1f
a2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50
KCkKK1RocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50RHlpbmcoKQogewogICAgIEFT
U0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgIFRocmVhZEhvbGRl
ciogaG9sZGVyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQo
bV9rZXkpKTsKLSAgICBpZiAoaG9sZGVyKSB7Ci0gICAgICAgIEFTU0VSVChob2xkZXIgIT0gSW52
YWxpZFRocmVhZEhvbGRlcik7Ci0gICAgICAgIHJldHVybiBob2xkZXI7Ci0gICAgfQotCiAgICAg
Ly8gQWZ0ZXIgRkxTIGlzIGRlc3Ryb3llZCwgdGhpcyBtYXAgb2ZmZXJzIHRoZSB2YWx1ZSB1bnRp
bCB0aGUgc2Vjb25kIHRocmVhZCBleGl0IGNhbGxiYWNrIGlzIGNhbGxlZC4KICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgIHJldHVy
biB0aHJlYWRNYXAoKS5nZXQoY3VycmVudFRocmVhZCgpKTsKQEAgLTgwLDIxICs3NCwyMSBAQCBS
ZWZQdHI8VGhyZWFkPiBUaHJlYWRIb2xkZXI6OmdldChUaHJlYWRJZGVudGlmaWVyIGlkKQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShUaHJl
YWQmIHRocmVhZCkKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFJlZjxU
aHJlYWQ+JiYgdGhyZWFkKQogewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElk
ZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQg
dGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxl
YXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAg
ICAgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4g
cmVsZWFzZSBtb2RlLgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNp
ZmljS2V5KTsKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSBv
bmNlIDxyZGFyOi8vcHJvYmxlbS8zMTc5MzIxMz4gaXMgZml4ZWQuCi0gICAgICAgIGF1dG8qIGhv
bGRlciA9IG5ldyBUaHJlYWRIb2xkZXIodGhyZWFkKTsKLSAgICAgICAgdGhyZWFkU3BlY2lmaWNT
ZXQobV9rZXksIGhvbGRlcik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgICAgICAgICB0aHJl
YWRNYXAoKS5hZGQodGhyZWFkLmlkKCksIGhvbGRlcik7Ci0gICAgICAgIH0KKyAgICAvLyBJZGVh
bGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRo
YXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFz
c2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKKyAgICAvLyBX
VEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiByZWxlYXNlIG1v
ZGUuCisgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSBvbmNlIDxyZGFyOi8vcHJvYmxl
bS8zMTc5MzIxMz4gaXMgZml4ZWQuCisgICAgYXV0byBpZCA9IHRocmVhZC0+aWQoKTsKKyAgICBh
dXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVyKFdURk1vdmUodGhyZWFkKSk7CisgICAgdGhy
ZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7CisgICAgeworICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgICAgICB0aHJl
YWRNYXAoKS5hZGQoaWQsIGhvbGRlcik7CiAgICAgfQorICAgIHJldHVybiAqaG9sZGVyOwogfQog
CiB2b2lkIFRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3Bw
CmluZGV4IGIzZmZhN2NmNzE5M2E2MDk4MGRlNzJlMTAwZTBhNDA3ODI2MGQ2NDIuLjJlMTEzODQ1
YTVkMzc0Y2VhNWU3ZjE5YWE3NGQwY2JjNDY3MmVkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcApAQCAt
MzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkTWVzc2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+
Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogI2lm
IEhBVkUoUU9TX0NMQVNTRVMpCkBAIC05NCw2ICs5NCwxMyBAQCBjb25zdCBjaGFyKiBUaHJlYWQ6
Om5vcm1hbGl6ZVRocmVhZE5hbWUoY29uc3QgY2hhciogdGhyZWFkTmFtZSkKICNlbmRpZgogfQog
Cit2b2lkIFRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKCkKK3sKKyAgICBtX3NhdmVkTGFzdFN0
YWNrVG9wID0gc3RhY2soKS5vcmlnaW4oKTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRl
KCp0aGlzKTsKKyAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVmYXVsdEF0b21p
Y1N0cmluZ1RhYmxlOworfQorCiB2b2lkIFRocmVhZDo6ZW50cnlQb2ludChOZXdUaHJlYWRDb250
ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogewogICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb247
CkBAIC0xMDUsNyArMTEyLDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29u
dGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICAgICAgQVNTRVJUKGNvbnRleHQtPnN0YWdlID09
IE5ld1RocmVhZENvbnRleHQ6OlN0YWdlOjpFc3RhYmxpc2hlZEhhbmRsZSk7CiAKICAgICAgICAg
Ly8gSW5pdGlhbGl6ZSB0aHJlYWQgaG9sZGVyIHdpdGggZXN0YWJsaXNoZWQgSUQuCi0gICAgICAg
IFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShjb250ZXh0LT50aHJlYWQuZ2V0KCkpOworICAgICAg
ICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoY29udGV4dC0+dGhyZWFkLmNvcHlSZWYoKSk7CiAK
ICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnRleHQt
Pm5hbWUpOwogICAgICAgICBmdW5jdGlvbiA9IFdURk1vdmUoY29udGV4dC0+ZW50cnlQb2ludCk7
CkBAIC0xMTYsNiArMTIzLDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29u
dGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICAgICAgY29udGV4dC0+c3RhZ2UgPSBOZXdUaHJl
YWRDb250ZXh0OjpTdGFnZTo6SW5pdGlhbGl6ZWQ7CiAgICAgICAgIGNvbnRleHQtPmNvbmRpdGlv
bi5zaWduYWwoKTsKICNlbmRpZgorICAgICAgICBjb250ZXh0LT50aHJlYWQtPmluaXRpYWxpemVJ
blRocmVhZCgpOwogICAgIH0KIAogICAgIEFTU0VSVCghVGhyZWFkOjpjdXJyZW50KCkuc3RhY2so
KS5pc0VtcHR5KCkpOwpAQCAtMTU1LDE0ICsxNjMsNiBAQCBSZWZQdHI8VGhyZWFkPiBUaHJlYWQ6
OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgZW50cnlQb2ludCkK
ICAgICByZXR1cm4gV1RGTW92ZSh0aHJlYWQpOwogfQogCi1UaHJlYWQqIFRocmVhZDo6Y3VycmVu
dE1heUJlTnVsbCgpCi17Ci0gICAgVGhyZWFkSG9sZGVyKiBkYXRhID0gVGhyZWFkSG9sZGVyOjpj
dXJyZW50KCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIHJldHVybiAmZGF0YS0+dGhyZWFkKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHN0YXRpYyBib29sIHNob3VsZFJlbW92ZVRocmVh
ZEZyb21UaHJlYWRHcm91cCgpCiB7CiAjaWYgT1MoV0lORE9XUykKQEAgLTE5Nyw2ICsxOTcsOSBA
QCB2b2lkIFRocmVhZDo6ZGlkRXhpdCgpCiAgICAgICAgICAgICB0aHJlYWRHcm91cC0+bV90aHJl
YWRzLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKG1fYXRvbWljU3Ry
aW5nVGFibGVEZXN0cnVjdG9yKQorICAgICAgICBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3Rv
cihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7CisKICAgICAvLyBXZSB3b3VsZCBsaWtlIHRv
IHNheSAidGhyZWFkIGlzIGV4aXRlZCIgYWZ0ZXIgdW5yZWdpc3RlcmluZyB0aHJlYWRzIGZyb20g
dGhyZWFkIGdyb3Vwcy4KICAgICAvLyBTbyB3ZSBuZWVkIHRvIHNlcGFyYXRlIG1faXNTaHV0dGlu
Z0Rvd24gZnJvbSBtX2RpZEV4aXQuCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcihtX211dGV4KTsKQEAgLTI3Nyw5ICsyODAsOCBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmcoKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplS2V5OwogICAgIHN0
ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVLZXksIFtdIHsKLSAgICAgICAgVGhyZWFkSG9sZGVyOjpp
bml0aWFsaXplT25jZSgpOwogICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJhdG9y
KCk7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKTsKKyAgICAgICAgVGhyZWFkOjpjdXJyZW50KCk7
CiAgICAgICAgIGluaXRpYWxpemVEYXRlcygpOwogICAgICAgICBUaHJlYWQ6OmluaXRpYWxpemVQ
bGF0Zm9ybVRocmVhZGluZygpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBmZjUwYmZhODli
NzY4YmMwODE4YzYzOTg5ZDJmZjNmNWUyYzQxOTI3Li4xN2IzMzAwZjljZWRiYmZlMDUwNDFlMTc5
ODNjOTY4NDMzNTVkYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtMzksNiArMzksOCBAQAogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUwLDEyICs1MiwxMiBA
QAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIEFic3RyYWN0TG9ja2VyOworY2xhc3MgQXRvbWlj
U3RyaW5nVGFibGU7CiBjbGFzcyBUaHJlYWRNZXNzYWdlRGF0YTsKIAotZW51bSBjbGFzcyBUaHJl
YWRHcm91cEFkZFJlc3VsdDsKK3VzaW5nIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IHZv
aWQgKCopKEF0b21pY1N0cmluZ1RhYmxlKik7CiAKLXVzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1
aW50MzJfdDsKLXR5cGVkZWYgdm9pZCAoKlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7
CitlbnVtIGNsYXNzIFRocmVhZEdyb3VwQWRkUmVzdWx0OwogCiBjbGFzcyBUaHJlYWRHcm91cDsK
IGNsYXNzIFRocmVhZEhvbGRlcjsKQEAgLTY1LDYgKzY3LDcgQEAgY2xhc3MgVGhyZWFkIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogcHVibGljOgogICAgIGZyaWVuZCBj
bGFzcyBUaHJlYWRHcm91cDsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkSG9sZGVyOworICAgIGZy
aWVuZCBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+
VGhyZWFkKCk7CiAKQEAgLTczLDggKzc2LDcgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPFRocmVhZD4gY3JlYXRlKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUsIEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKICAgICAvLyBSZXR1cm5zIFRocmVhZCBvYmplY3QuCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKLSAgICBzdGF0aWMgVGhyZWFkKiBj
dXJyZW50TWF5QmVOdWxsKCk7CisgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCiAgICAg
Ly8gUmV0dXJucyBUaHJlYWRJZGVudGlmaWVyIGRpcmVjdGx5LiBJdCBpcyB1c2VmdWwgaWYgdGhl
IHVzZXIgb25seSBjYXJlcyBhYm91dCBpZGVudGl0eQogICAgIC8vIG9mIHRocmVhZHMuIEF0IHRo
YXQgdGltZSwgdXNlcnMgc2hvdWxkIGtub3cgdGhhdCBob2xkaW5nIHRoaXMgVGhyZWFkSWRlbnRp
ZmllciBkb2VzIG5vdCBlbnN1cmUKQEAgLTE0MSwxNSArMTQzLDU5IEBAIGNsYXNzIFRocmVhZCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAgICAgcmV0dXJuIG1f
c3RhY2s7CiAgICAgfQogCisgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAg
ICB9CisKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxl
KEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSkKKyAgICB7CisgICAgICAgIEF0
b21pY1N0cmluZ1RhYmxlKiBvbGRBdG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0
cmluZ1RhYmxlOworICAgICAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0
cmluZ1RhYmxlOworICAgICAgICByZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7CisgICAgfQor
CisjaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRz
JiBzdGFja1N0YXRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YWNrU3RhdHM7CisgICAg
fQorI2VuZGlmCisKKyAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSkKKyAgICB7CisgICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkg
PSBzdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9pZCogc2F2ZWRMYXN0U3Rh
Y2tUb3AoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CisgICAg
fQorCisgICAgdm9pZCBzZXRTYXZlZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCisg
ICAgeworICAgICAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOworICAgIH0K
KworICAgIHZvaWQqIG1fYXBpRGF0YSB7IG51bGxwdHIgfTsKKwogI2lmIE9TKERBUldJTikKICAg
ICBtYWNoX3BvcnRfdCBtYWNoVGhyZWFkKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVRocmVhZDsgfQog
I2VuZGlmCiAKICAgICBzdHJ1Y3QgTmV3VGhyZWFkQ29udGV4dDsKICAgICBzdGF0aWMgdm9pZCBl
bnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqKTsKLXByb3RlY3RlZDoKK3ByaXZhdGU6CiAgICAg
VGhyZWFkKCk7CiAKKyAgICBzdGF0aWMgUmVmPFRocmVhZD4gY3JlYXRlQ3VycmVudFRocmVhZCgp
OworICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhyZWFkKCk7CisKICAgICAvLyBJbnRlcm5hbCBwbGF0
Zm9ybS1zcGVjaWZpYyBUaHJlYWQgZXN0YWJsaXNobWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICBi
b29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0Kik7CiAKQEAgLTIxMyw2ICsyNTks
MTYgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4g
ewogI2Vsc2UKICNlcnJvciBVbmtub3duIFN5c3RlbQogI2VuZGlmCisKKyAgICBBdG9taWNTdHJp
bmdUYWJsZSogbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07CisgICAgQXRv
bWljU3RyaW5nVGFibGUqIG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9Owor
ICAgIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1
Y3RvciB7IG51bGxwdHIgfTsKKworI2lmIEVOQUJMRShTVEFDS19TVEFUUykKKyAgICBTdGFja1N0
YXRzOjpQZXJUaHJlYWRTdGF0cyBtX3N0YWNrU3RhdHM7CisjZW5kaWYKKyAgICB2b2lkKiBtX3Nh
dmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5IHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fc2F2ZWRM
YXN0U3RhY2tUb3A7CiB9OwogCiAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBh
bnkgdGhyZWFkcy4KQEAgLTIyMyw2ICsyNzksMTAgQEAgaW5saW5lIFRocmVhZElkZW50aWZpZXIg
Y3VycmVudFRocmVhZCgpCiAgICAgcmV0dXJuIFRocmVhZDo6Y3VycmVudElEKCk7CiB9CiAKK2lu
bGluZSBUaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCit7CisgICAgcmV0dXJuIFRocmVhZEhvbGRl
cjo6Y3VycmVudCgpLnRocmVhZCgpOworfQogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBmdW5j
dGlvbnMgcmVtYWluIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBmcm9tIFdlYktpdCBXaW5kb3dzIHN1
cHBvcnQgbGlicmFyeSwKIC8vIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMuZGxsLiBXaGVuIHVw
ZGF0aW5nIHRoZSBzdXBwb3J0IGxpYnJhcnksIHdlIHNob3VsZCB1c2UgbmV3IEFQSSBpbnN0ZWFk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggMzBjNDk5ZmRhOWNhZTFmNmRm
NjRjMWQ0ZWFhNmNiNWI2Zjk4MTc3Mi4uNmU4OGFhNmE4YTA5MGQ5N2U3NzdjMzFhM2JkMmE2NmFk
YzMwYzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtNDUsNiArNDUs
OSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAordXNpbmcgVGhyZWFkSWRlbnRpZmllciA9IHVpbnQz
Ml90OwordXNpbmcgVGhyZWFkRnVuY3Rpb24gPSB2b2lkICgqKSh2b2lkKiBhcmd1bWVudCk7CisK
ICNpZiBVU0UoUFRIUkVBRFMpCiB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRf
dDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmdQdGhyZWFkcy5jcHAKaW5kZXggMTJkN2M3MTM4NjE5MmU4ZjQ1NTdlMzNmMjliMzUyMTk4
NzY1ZTc4Zi4uY2ZlZWFiYjIzODhmMGZiY2VlNTQyODYxMDUxYmNjZDZhN2U4MWE3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAtMjg2LDE4ICsyODYsMTYgQEAgdm9pZCBU
aHJlYWQ6OmRldGFjaCgpCiAgICAgICAgIGRpZEJlY29tZURldGFjaGVkKCk7CiB9CiAKLVRocmVh
ZCYgVGhyZWFkOjpjdXJyZW50KCkKLXsKLSAgICBpZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVu
dE1heUJlTnVsbCgpKQotICAgICAgICByZXR1cm4gKmN1cnJlbnQ7CiAKK1JlZjxUaHJlYWQ+IFRo
cmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCgpCit7CiAgICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQg
dGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCiAgICAgUmVm
PFRocmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAgICAgdGhyZWFkLT5l
c3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfc2VsZigpKTsKICAgICB0aHJl
YWQtPm1fc3RhY2sgPSBTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7Ci0g
ICAgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFkLT5p
bml0aWFsaXplSW5UaHJlYWQoKTsKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5v
bldURkNyZWF0ZWQoKTsKLSAgICByZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0aHJl
YWQ7CiB9CiAKIFRocmVhZElkZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1dpbi5jcHAKaW5kZXggMDUyM2EyZTZiYjVmNjYyNmFjOGMwNGM5Mjg5YTA1ZTU3ZjVlMDE1
MC4uZTkzMWRmZmI4ZjRkYmQwN2U4YTYyNDVkMjczYjY4MzgzNGIzODE4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmdXaW4uY3BwCkBAIC0yNDMsMTEgKzI0Myw4IEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lz
dGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgIHJldHVybiBzaXplb2YoQ09O
VEVYVCk7CiB9CiAKLVRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKK1JlZjxUaHJlYWQ+IFRocmVh
ZDo6Y3JlYXRlQ3VycmVudFRocmVhZCgpCiB7Ci0gICAgaWYgKFRocmVhZCogY3VycmVudCA9IGN1
cnJlbnRNYXlCZU51bGwoKSkKLSAgICAgICAgcmV0dXJuICpjdXJyZW50OwotCiAgICAgLy8gTm90
IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hl
ZCB5ZXQuCiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7
CiAKQEAgLTI1Nyw5ICsyNTQsOSBAQCBUaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCiAKICAgICB0
aHJlYWQtPmVzdGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUoaGFuZGxlLCBjdXJyZW50SUQo
KSk7CiAgICAgdGhyZWFkLT5tX3N0YWNrID0gU3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFj
a0JvdW5kcygpOwotICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOwor
ICAgIHRocmVhZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAgICAgaW5pdGlhbGl6ZUN1cnJlbnRU
aHJlYWRFdmVuSWZOb25XVEZDcmVhdGVkKCk7Ci0gICAgcmV0dXJuIHRocmVhZC5nZXQoKTsKKyAg
ICByZXR1cm4gdGhyZWFkOwogfQogCiBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElE
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwIGIvU291cmNl
L1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDczZTc3ZDI1ODVmOGE2MTQ0NGY5NzRlN2MzYjhhZDEzYTFjYjY2OTMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFk
RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nVGFibGUuaD4KLQotI2lmIFVTRShXRUJfVEhSRUFEKQotI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLSNpZiAhSEFWRShGQVNU
X1RMUykKLVRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWREYXRhOjpzdGF0
aWNEYXRhOwotI2VuZGlmCi0KLVdURlRocmVhZERhdGE6OldURlRocmVhZERhdGEoKQotICAgIDog
bV9zdGFja0JvdW5kcyhTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCkpCi0g
ICAgLCBtX3NhdmVkTGFzdFN0YWNrVG9wKHN0YWNrKCkub3JpZ2luKCkpCi17Ci0gICAgQXRvbWlj
U3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZTsKLX0KLQotV1RGVGhyZWFkRGF0YTo6fldU
RlRocmVhZERhdGEoKQotewotICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikK
LSAgICAgICAgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3Ry
aW5nVGFibGUpOwotfQotCi0jaWYgSEFWRShGQVNUX1RMUykKLVdURlRocmVhZERhdGEmIFdURlRo
cmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3QoKQotewotICAg
IFdURlRocmVhZERhdGEqIGRhdGEgPSBuZXcgV1RGVGhyZWFkRGF0YTsKLSAgICBfcHRocmVhZF9z
ZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgZGF0YSk7Ci0gICAgcHRocmVh
ZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCBbXSh2b2lkKiBkYXRhKXsKLSAgICAg
ICAgZGVsZXRlIHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihkYXRhKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gKmRhdGE7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9XVEZU
aHJlYWREYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNWZmODE3NjZkODNj
NTZkYmNhY2I2M2JhZTZlMjYwOGE2MmMzMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2lmbmRlZiBXVEZUaHJlYWREYXRhX2gKLSNkZWZpbmUg
V1RGVGhyZWFkRGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgotI2luY2x1ZGUg
PHd0Zi9TdGFja1N0YXRzLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KLW5h
bWVzcGFjZSBXVEYgewotCi1jbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKLQotdHlwZWRlZiB2b2lk
ICgqQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKShBdG9taWNTdHJpbmdUYWJsZSopOwotCi1j
bGFzcyBXVEZUaHJlYWREYXRhIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXVEZUaHJlYWRE
YXRhKTsKLXB1YmxpYzoKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwotCi0gICAgQXRvbWljU3Ry
aW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2N1
cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICB9Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSog
c2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJp
bmdUYWJsZSkKLSAgICB7Ci0gICAgICAgIEF0b21pY1N0cmluZ1RhYmxlKiBvbGRBdG9taWNTdHJp
bmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwotICAgICAgICBtX2N1cnJlbnRB
dG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0cmluZ1RhYmxlOwotICAgICAgICByZXR1cm4gb2xk
QXRvbWljU3RyaW5nVGFibGU7Ci0gICAgfQotCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNr
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0YWNrQm91bmRzOwotICAgIH0KLQotI2lmIEVO
QUJMRShTVEFDS19TVEFUUykKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgc3RhY2tT
dGF0cygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zdGFja1N0YXRzOwotICAgIH0KLSNlbmRp
ZgotCi0gICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50
cnkpCi0gICAgewotICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQ
b2ludGVyQXRWTUVudHJ5OwotICAgIH0KLQotICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOwotICAgIH0KLQotICAg
IHZvaWQgc2V0U2F2ZWRMYXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQotICAgIHsKLSAg
ICAgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsKLSAgICB9Ci0KLSAgICB2
b2lkKiBtX2FwaURhdGEgeyBudWxscHRyIH07Ci0KLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5n
VGFibGUqIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21p
Y1N0cmluZ1RhYmxlKiBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKLSAg
ICBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0
b3IgeyBudWxscHRyIH07Ci0KLSAgICBTdGFja0JvdW5kcyBtX3N0YWNrQm91bmRzOwotI2lmIEVO
QUJMRShTVEFDS19TVEFUUykKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyBtX3N0YWNr
U3RhdHM7Ci0jZW5kaWYKLSAgICB2b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5IHsg
bnVsbHB0ciB9OwotICAgIHZvaWQqIG1fc2F2ZWRMYXN0U3RhY2tUb3A7Ci0KLSNpZiBIQVZFKEZB
U1RfVExTKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgV1RGVGhyZWFkRGF0YSYgY3Jl
YXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpOwotI2Vsc2UKLSAgICBzdGF0aWMg
V1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIHN0YXRpY0RhdGE7
Ci0jZW5kaWYKLQotICAgIGZyaWVuZCBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCk7Ci0g
ICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwotfTsKLQotaW5saW5lIFdURlRocmVh
ZERhdGEmIHd0ZlRocmVhZERhdGEoKQotewotICAgIC8vIFdSVCBXZWJDb3JlOgotICAgIC8vICAg
IFdURlRocmVhZERhdGEgaXMgdXNlZCBvbiBtYWluIHRocmVhZCBiZWZvcmUgaXQgY291bGQgcG9z
c2libHkgYmUgdXNlZAotICAgIC8vICAgIG9uIHNlY29uZGFyeSBvbmVzLCBzbyB0aGVyZSBpcyBu
byBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KLSAgICAvLyBXUlQgSmF2YVNjcmlwdENv
cmU6Ci0gICAgLy8gICAgd3RmVGhyZWFkRGF0YSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJvbSBp
bml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCi0gICAgLy8gICAgdGhpcyBpcyBpbml0aWFs
bHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgotI2lmICFIQVZFKEZB
U1RfVExTKQotICAgIGlmICghV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSkKLSAgICAgICAgV1RG
VGhyZWFkRGF0YTo6c3RhdGljRGF0YSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRh
PjsKLSAgICByZXR1cm4gKipXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwotI2Vsc2UKLSAgICBp
ZiAoV1RGVGhyZWFkRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihfcHRo
cmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSkpKQotICAgICAgICBy
ZXR1cm4gKmRhdGE7Ci0gICAgcmV0dXJuIFdURlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVy
Rm9yR2V0c3BlY2lmaWNEaXJlY3QoKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotdXNpbmcgV1RGOjpXVEZUaHJlYWREYXRhOwotdXNpbmcgV1RGOjp3dGZUaHJlYWREYXRhOwot
dXNpbmcgV1RGOjpBdG9taWNTdHJpbmdUYWJsZTsKLQotI2VuZGlmIC8vIFdURlRocmVhZERhdGFf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGE0ZTAzZGUzYWY2NTdjNjlm
NzRkMTYyNTFmMDAwNzM5MTM2YTUzNDQuLjJhMDY1MTI4M2E5NzI3MWU1NzZhMjIyZGRmMDIzMjBk
MDZhMGQyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTIzLDggKzIz
LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAK
LSNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiTWFpblRo
cmVhZC5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgorCiAjaW5jbHVk
ZSAiZHRvYS5oIgogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZ0ltcGwuY3BwCmluZGV4IDM1MjI0ODVkN2I4NDczY2M4MGU1MjQwYTczMmEwNTUzYzQ4YmMz
NDIuLjA2M2U0ZWViN2U1N2U1Y2Q4NWIwYTE3MTk1NGQzODkyNGMxNzc5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJTdHJpbmdQcmludFN0cmVhbS5oIgogI2luY2x1
ZGUgIlRocmVhZGluZy5oIgotI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKICNpbmNsdWRlIDx3
dGYvdW5pY29kZS9VVEY4Lmg+CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKQEAgLTcyLDcgKzcxLDcg
QEAgdXNpbmcgU3RyaW5nVGFibGVJbXBsID0gSGFzaFNldDxTdHJpbmdJbXBsKj47CiAKIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIFN0cmluZ1RhYmxlSW1wbCYgc3RyaW5nVGFibGUoKQogewotICAgIHJl
dHVybiB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKS0+dGFibGUoKTsKKyAgICBy
ZXR1cm4gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKS0+dGFibGUoKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwCmluZGV4IGZlOGE0ODg0ZGI3ZTY3OGRl
ZDZhZjMyZGQ0MzcxMmU1OTVmM2I5MzUuLmY2ZDc4ZjJiZTZmNDhmMmFhNjgyYzA1ZDEwZDI0NjQ2
OGIwYzI0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwCkBA
IC0yNSwxMSArMjUsMTEgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQgQXRvbWljU3Ry
aW5nVGFibGU6OmNyZWF0ZShXVEZUaHJlYWREYXRhJiBkYXRhKQordm9pZCBBdG9taWNTdHJpbmdU
YWJsZTo6Y3JlYXRlKFRocmVhZCYgdGhyZWFkKQogewogI2lmIFVTRShXRUJfVEhSRUFEKQogICAg
IC8vIE9uIGlPUywgb25lIEF0b21pY1N0cmluZ1RhYmxlIGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSBt
YWluIFVJIHRocmVhZCBhbmQgdGhlIFdlYlRocmVhZC4KQEAgLTM3LDE3ICszNywxNyBAQCB2b2lk
IEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoV1RGVGhyZWFkRGF0YSYgZGF0YSkKIAogICAgIGJv
b2wgY3VycmVudFRocmVhZElzV2ViVGhyZWFkID0gaXNXZWJUaHJlYWQoKTsKICAgICBpZiAoY3Vy
cmVudFRocmVhZElzV2ViVGhyZWFkIHx8IGlzVUlUaHJlYWQoKSkKLSAgICAgICAgZGF0YS5tX2Rl
ZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IHNoYXJlZFN0cmluZ1RhYmxlOworICAgICAgICB0aHJl
YWQubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBzaGFyZWRTdHJpbmdUYWJsZTsKICAgICBl
bHNlCi0gICAgICAgIGRhdGEubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWlj
U3RyaW5nVGFibGU7CisgICAgICAgIHRocmVhZC5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9
IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKIAogICAgIC8vIFdlIGRvIHRoZSBmb2xsb3dpbmcgc28g
dGhhdCBpdHMgZGVzdHJ1Y3Rpb24gaGFwcGVucyBvbmx5CiAgICAgLy8gb25jZSAtIG9uIHRoZSBt
YWluIFVJIHRocmVhZC4KICAgICBpZiAoIWN1cnJlbnRUaHJlYWRJc1dlYlRocmVhZCkKLSAgICAg
ICAgZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxl
OjpkZXN0cm95OworICAgICAgICB0aHJlYWQubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3Ig
PSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKICNlbHNlCi0gICAgZGF0YS5tX2RlZmF1bHRB
dG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKLSAgICBkYXRhLm1fYXRv
bWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7Cisg
ICAgdGhyZWFkLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1Rh
YmxlOworICAgIHRocmVhZC5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0
cmluZ1RhYmxlOjpkZXN0cm95OwogI2VuZGlmIC8vIFVTRShXRUJfVEhSRUFEKQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKaW5kZXggOTQ0YWU5MmJkZWM0NDM5YmYw
NzAxMjFiNzhhMzVmNWE4NGZjNDA5ZC4uZDNiYzljZTVmNmUwNzI3NzU2Y2M5ZWJiZTRmMTI1Mzdm
YWFiMmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJs
ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaApAQCAtMjQs
MTkgKzI0LDE5IEBACiAjZGVmaW5lIFdURl9BdG9taWNTdHJpbmdUYWJsZV9oCiAKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU3Ry
aW5nSW1wbDsKK2NsYXNzIFRocmVhZDsKIAogY2xhc3MgQXRvbWljU3RyaW5nVGFibGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB+QXRvbWljU3RyaW5nVGFibGUoKTsKIAotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShXVEZUaHJl
YWREYXRhJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlKFRocmVhZCYpOwogICAgIEhhc2hTZXQ8
U3RyaW5nSW1wbCo+JiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGU7IH0KIAogcHJpdmF0ZToKQEAg
LTQ2LDUgKzQ2LDYgQEAgY2xhc3MgQXRvbWljU3RyaW5nVGFibGUgewogfTsKIAogfQordXNpbmcg
V1RGOjpBdG9taWNTdHJpbmdUYWJsZTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggOGEwMjMwYmFiZjk1Y2JhOTdmOWE4Zjg2MjgxOWFi
NDBkMTdmY2U0Mi4uNjNiMWUwZTU3NDExZDA2MzNjNDE5OGY0YWUwOTM1M2EwMzU1MTI3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VR
dWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IGI4ZmFmNWE4ZDc5MTAyZjJlZmRkOGJk
YTY0MzFjMDc3YmZmMTNiZjAuLjc3MzgyOWQ1ZTdiNGViMzNkN2JlODM4MDcxNmY5YTMzMzcyNmY0
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02Niw3ICs2NSw3IEBAIFRocmVhZEdsb2JhbERhdGE6
OlRocmVhZEdsb2JhbERhdGEoKQogICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5
IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlzIG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CiAg
ICAgLy8gcG9pbnQgdG8gY2FsbCBtZXRob2RzIHRoYXQgaW50ZXJuYWxseSBwZXJmb3JtIGEgb25l
LXRpbWUgaW5pdGlhbGl6YXRpb24gdGhhdCBpcyBub3QKICAgICAvLyB0aHJlYWRzYWZlLgotICAg
IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBTdHJpbmdJbXBs
OjplbXB0eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWQubW0KaW5kZXggNjEyMmI0ZjJjNTBiNjRiYTVjN2ZmYzlkZGUzZjRkYTU2Mjlh
MDM4Ny4uYzhmMDVhMWEwYWVkNjAyY2JkOGMwOTRlMGE5NzIwM2FmOWM2MDZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzAy
LDcgKzcwMiw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKIHsKICAgICB3ZWJUaHJl
YWRTdGFydGVkID0gVFJVRTsKIAotICAgIC8vIFRocmVhZEdsb2JhbERhdGEgdG91Y2hlcyBBdG9t
aWNTdHJpbmcsIHdoaWNoIHJlcXVpcmVzIFdURlRocmVhZERhdGEgYW5kIFRocmVhZGluZyBpbml0
aWFsaXphdGlvbi4KKyAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIHRvdWNoZXMgQXRvbWljU3RyaW5n
LCB3aGljaCByZXF1aXJlcyBUaHJlYWRpbmcgaW5pdGlhbGl6YXRpb24uCiAgICAgV1RGOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CiAKICAgICAvLyBJbml0aWFsaXplIEF0b21pY1N0cmluZyBvbiB0
aGUgbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5k
ZXggNDI1YzkyNDhkODcwNDgyN2JiMGUwMzgyMWEyYWU4ZGM4YWFjMGQ3MC4uNjgxYTFlZjc1NDgx
MDBkMWEyOTY2MDllNjJjYjdmOWFmYjYyZTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3Jr
ZXJUaHJlYWQoKQogICAgIC8vIFdlIGNhbm5vdCBsZXQgYW55IG9iamVjdHMgc3Vydml2ZSBwYXN0
IHRocmVhZCBleGl0LCBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIHJ1biBHQyBvciBvdGhl
cndpc2UgZGVzdHJveSB0aGVtLgogICAgIHdvcmtlckdsb2JhbFNjb3BlVG9EZWxldGUgPSBudWxs
cHRyOwogCi0gICAgLy8gQ2xlYW4gdXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUg
V1RGOjpXVEZUaHJlYWREYXRhIGdvZXMgYXdheSEKKyAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpU
aHJlYWRHbG9iYWxEYXRhIGJlZm9yZSBXVEY6OlRocmVhZCBnb2VzIGF3YXkhCiAgICAgdGhyZWFk
R2xvYmFsRGF0YSgpLmRlc3Ryb3koKTsKIAogICAgIC8vIFRoZSB0aHJlYWQgb2JqZWN0IG1heSBi
ZSBhbHJlYWR5IGRlc3Ryb3llZCBmcm9tIG5vdGlmaWNhdGlvbiBub3csIGRvbid0IHRyeSB0byBh
Y2Nlc3MgInRoaXMiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316709</attachid>
            <date>2017-07-29 07:51:42 -0700</date>
            <delta_ts>2017-07-29 08:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170729235141.patch</filename>
            <type>text/plain</type>
            <size>70026</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi4wY2YwNGJmMjY0YzY4NzAx
ZTk2OTg2OGVhYmUxMmI0ZTliNTNlZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2su
aDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAg
ICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNv
bW1pdHRlZFN0YWNrQnl0ZUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
IChKU0M6OlZNOjppc1NhZmVUb1JlY3Vyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFj
a0NhcGFjaXR5Rm9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlKToKKwog
MjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBBU1NFUlRJT04gRkFJTEVEOiBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgY2FuZGlkYXRlLT5vcCgpID09
IFBoYW50b21TcHJlYWQgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhT
cHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNDY1ZDJkZWU1MDFlYzU4YTE5OWY1MWRlZGRlMjFjODliOWVmMDlhMy4uMDVm
OGYxZDU0M2QxZjE5NzJkMmQzODc2NzYyNWM5ODNjYjA2NzllNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBA
QAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL0xvY2tBbGdvcml0aG0uaDoKKyAgICAgICAgKiB3dGYvTG9ja0FsZ29yaXRobUlubGluZXMu
aDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90
LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNr
U3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6CisgICAgICAgIChXVEY6OlN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0
YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6
OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5
b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRlci5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9U
aHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpUaHJlYWRIb2xkZXIp
OgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwpOgorICAgICAg
ICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgorICAgICAgICAoV1RGOjpU
aHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnREeWluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRo
cmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZy5j
cHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0
KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RG
OjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRTYXZlZFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3Ap
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNrVG9wKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6
OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3Vy
cmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJlbW92ZWQuCisgICAgICAg
ICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
VGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaDoK
KwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3YWl0IGluIHNvbWUgcGxh
dGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJlYWRTdGFja0JvdW5kcyhQ
bGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyNzRkMjliMGNjMTljMDA4YjFm
YjcyZmRjNTg4MzkzMGUwMmE0MS4uNTEyZTQ4YWRiNTY0Mzc5ZDAxZTYyZTFhOWEzMTlkMGNiOTM0
MGJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA3LTI5ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERh
dGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisKIDIwMTctMDctMjggIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBTcGxpdC11cCBhbmQgY2xlYW51cCBGZXRj
aCBJREwgZmlsZXMgaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIHVubmVjZXNzYXJ5IGpzIGJ1
aWx0aW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDViMTAwYzc1
ZTE1YjlmNDc2NjI5NDRhYTBmYzViYjhkZDA5ZjQ2YzUuLmJhZWIxNzhkNDgxZGJlZGYyYmVkM2Rm
NmQ0ZTYzZmQxODE1NmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
CkBAIC0xNDEsMTUgKzE0MSwxNSBAQCAtIChKU1ZhbHVlICopZ2xvYmFsT2JqZWN0CiAKICsgKEpT
Q29udGV4dCAqKWN1cnJlbnRDb250ZXh0CiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0
YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0
aHJlYWQubV9hcGlEYXRhOwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5jb250ZXh0IDogbmls
OwogfQogCiArIChKU1ZhbHVlICopY3VycmVudFRoaXMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0
aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAo
Q2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQg
PSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+dGhp
c1ZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNTcsOCAr
MTU3LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiAKICsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEu
bV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAg
Q2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwog
ICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnktPmNhbGxlZVZhbHVlIGluQ29udGV4dDpbSlNDb250
ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNjYsOCArMTY2LDggQEAgKyAoSlNWYWx1ZSAqKWN1
cnJlbnRDYWxsZWUKIAogKyAoTlNBcnJheSAqKWN1cnJlbnRBcmd1bWVudHMKIHsKLSAgICBXVEZU
aHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0
YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5
ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAKICAgICBpZiAoIWVudHJ5KQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjk0LDIxICsyOTQsMjEgQEAgLSAoQk9PTClib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb25WYWx1ZQogCiAtICh2b2lkKWJl
Z2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tEYXRhIGNhbGxlZVZh
bHVlOihKU1ZhbHVlUmVmKWNhbGxlZVZhbHVlIHRoaXNWYWx1ZTooSlNWYWx1ZVJlZil0aGlzVmFs
dWUgYXJndW1lbnRDb3VudDooc2l6ZV90KWFyZ3VtZW50Q291bnQgYXJndW1lbnRzOihjb25zdCBK
U1ZhbHVlUmVmICopYXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OwogICAgIFtzZWxmIHJldGFpbl07Ci0gICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2Fs
bGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgQ2FsbGJhY2tEYXRhICpwcmV2
U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICAqY2FsbGJhY2tE
YXRhID0gKENhbGxiYWNrRGF0YSl7IHByZXZTdGFjaywgc2VsZiwgW3NlbGYuZXhjZXB0aW9uIHJl
dGFpbl0sIGNhbGxlZVZhbHVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywg
bmlsIH07Ci0gICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgdGhy
ZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IG5pbDsK
IH0KIAogLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFj
a0RhdGEKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgp
OworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgc2VsZi5leGNl
cHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsKICAgICBbY2FsbGJhY2tE
YXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07CiAgICAgW2NhbGxiYWNrRGF0YS0+Y3Vy
cmVudEFyZ3VtZW50cyByZWxlYXNlXTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9IGNhbGxi
YWNrRGF0YS0+bmV4dDsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0
OwogICAgIFtzZWxmIHJlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IGY2NWVmODQxYTdjMWUwMDZhMmVhYjcxNTI0ZmRkZThhNmFhMmEyNjcuLjNkNGJiZTM2
ZTYzMzg1OTFhMzg4Y2M2NTRmYjA1ODc4ODNkYWI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFuY2VU
aHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKFZNKiB2bSkKIHsK
LSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpCisgICAgaWYgKHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IFdURjo6
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKHZtLT5pc1NoYXJlZEluc3RhbmNlKCkgJiYgIWlzVmFsaWRTaGFyZWRJ
bnN0YW5jZVRocmVhZFN0YXRlKHZtKSkKQEAgLTIwMjMsNyArMjAyMyw3IEBAIEhlYXA6OlRpY2tl
dCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVzdCkKICAgICBzdG9wSWZO
ZWNlc3NhcnkoKTsKICAgICAKICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSBXVEY6OlRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Ro
cmVhZExvY2spOwogICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBUaGF0
IG9ubHkgd29ya3MgaWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDViMzAy
NjRjN2Y0MTFlMzhkNTgwZjU1ZDVkN2QxZDY4OWIzNjAxZWIuLjg4MjNlNmY2MDE2MTEyYjQ3Mzlm
YTAyOGY0MzFiYzdlOGQ3YzhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCkBAIC00MSwxNCArNDEsMTMgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGlu
Z1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHBy
b2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7CkBAIC02NCw3ICs2Myw3
IEBAIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjCiBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtNzQsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxl
U3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJF
cnJvciYgZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9n
cmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2Us
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwpAQCAtOTIsNyArOTEsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2
bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVh
ZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmlsaW5n
IHByb2ZpbGUoc291cmNlKTsKQEAgLTE2Nyw3ICsxNjYsNyBAQCBzdGF0aWMgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4
ZWNTdAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMt
PnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsK
IAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5h
bWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTE3OCw3ICsxNzcsNyBAQCBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBT
eW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjA1
LDcgKzIwNCw3IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBK
U0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywKIEpTSW50ZXJuYWxQcm9taXNlKiBs
b2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52
bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5
T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywg
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsyMTUsNyBAQCBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERh
dGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNT
dHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7
CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0p
OwpAQCAtMjM0LDcgKzIzMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiBKU1ZhbHVlIGxp
bmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CkBAIC0yNDQsNyArMjQz
LDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmEKIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZt
KCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpLT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVLZXks
IHNjcmlwdEZldGNoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmNwcAppbmRleCA5OTI1NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2Li5k
NTUyZDBiMWY2Mjg3MTVhMjYzNmFiNzczN2VkZmM2MTk3MzRjMGM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoVk0qIHZtKQogewog
ICAgIC8vIENoZWNrIHRoZSBpZGVudGlmaWVyIHRhYmxlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUg
dGhyZWFkc3BlY2lmaWMgbWF0Y2hlcyB0aGUKICAgICAvLyB2bSdzIGlkZW50aWZpZXIgdGFibGUu
Ci0gICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZt
LT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwogfQogCiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggOWVmMTQzYWQ0OGU3MWQyOGIxN2Jh
NDE2ZmEzYjE0YmNiZGI3NDVhYS4uODUwNzNiNmQyOTViNTk5NjNhMjEzZDUyNDU1Yjg0YjRhZDE2
NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCkKICAgICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUoKTsKICNlbmRpZgog
ICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7Ci0gICAgICAgIFdURlRocmVhZERhdGEm
IHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHRocmVhZERhdGEuc2V0U2F2
ZWRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkLnNldFNhdmVk
TGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBiYTZjNDRhNWRmNTE0ZGU1MTdjOWEy
NTg3NTYxYTk4YTlkOTI0MTBlLi5jMmM4Mjc2YWMzMjkwZWYxNmM5ZmNlNGFmYTg0YTM5ZjYwMGNi
MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTEyNyw5
ICsxMjcsOSBAQCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIGlmICghbV92bSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3
dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsK
ICAgICBBU1NFUlQoIW1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0gICAgbV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlID0gdGhyZWFkRGF0YS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV92
bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0g
dGhyZWFkLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKICAgICBBU1NFUlQobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogICAgIGlmICht
X3ZtLT5oZWFwLmhhc0FjY2VzcygpKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNMb2NrOjpk
aWRBY3F1aXJlTG9jaygpCiAgICAgdm9pZCogcCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUgY3Vy
cmVudCBzdGFjayBwb2ludGVyLgogICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShw
KTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0YWNr
VG9wKCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tU
b3AoKSk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVh
ZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpT
TG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKICAgICB9CiAKICAgICBpZiAobV9lbnRyeUF0b21pY1N0
cmluZ1RhYmxlKSB7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICAgICAgVGhyZWFkOjpjdXJy
ZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fZW50cnlBdG9taWNTdHJpbmdUYWJs
ZSk7CiAgICAgICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IG51bGxwdHI7CiAgICAgfQog
fQpAQCAtMjI1LDkgKzIyNSw5IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BB
bGxMb2NrcyogZHJvcHBlcikKIAogICAgIGRyb3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tEcm9w
RGVwdGgpOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0
YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6
Y3VycmVudCgpOworICAgIHRocmVhZC5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3Zt
LT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKIAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291
bnQgPSBtX2xvY2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CkBAIC0yNTIs
OSArMjUyLDkgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3Bw
ZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0aDsK
IAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAg
bV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZERhdGEuc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQo
KTsKKyAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9j
a3MoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBjOTFk
YWVjYmNkZDY1YTk2ZDYzM2YzMzE1M2Q1NGE5NDlhZDY1NzNiLi5kZWEwNTAyOGNkNzM1ZWI2Mzkx
NzQ3MGMxNTIyYjE4MjQ1ZGU1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xv
Y2suaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMjUxMDI0MzQ2NDM3N2E0NDlh
ZmVjYmM1OTlmZTk4NDI3MDlmZTdhLi4wNjk1OWJhNDY1ZTE5MmJlNjNhODE4OGQ5ZmMyMzc3Zjdj
ZTk2OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTQsNyArMTE0
LDYgQEAKICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKQEAgLTE3Niw3ICsxNzUs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB0b3BW
TUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkpCiAgICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFByb21p
c2VEZWZlcnJlZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlw
ZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcg
QXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBE
ZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9t
aWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5
TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRG
b3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQpAQCAtMjExLDEz
ICsyMTAsMTMgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9zaGFkb3dDaGlja2VuKHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKSkKIHsK
ICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Ci0gICAgU3RhY2tCb3Vu
ZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBTdGFja0JvdW5kcyBzdGFj
ayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9u
ZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNr
VG9wKHN0YWNrLm9yaWdpbigpKTsKIAogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVw
IGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7
Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJp
bmdUYWJsZSk7CisgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJp
bmdUYWJsZSA9IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSht
X2F0b21pY1N0cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0eU5hbWVzID0gbmV3IENvbW1vbklkZW50
aWZpZXJzKHRoaXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVy
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpAQCAtMjcwLDcgKzI2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRo
aXMpOwogCi0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShl
eGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVhZDo6Y3VycmVudCgpLnNl
dEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUp
OwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8SklU
VGh1bmtzPigpOwpAQCAtNjcyLDcgKzY3MSw3IEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVTdGFj
a0xpbWl0cygpCiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tMaW1p
dDsKICNlbmRpZgogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKTsKICAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSA9IE9wdGlvbnM6OnJl
c2VydmVkWm9uZVNpemUoKTsKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGVuc3VyZWQg
dGhhdCBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11bVJlc2VydmVab25lU2l6
ZSBhdAogICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwgYW5kIHRoZSBvcHRpb24g
dmFsdWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFmdGVyLgpAQCAtODg2LDkg
Kzg4NSw5IEBAIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQogI2lmIEVOQUJM
RShKSVQpCiAgICAgLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjaywgd2UgZG9uJ3Qga25vdyBob3cg
bWFueSBzdGFjayBwYWdlcyBhcmUgYWN0dWFsbHkKICAgICAvLyBjb21taXR0ZWQuIFNvLCB3ZSB1
c2UgdGhlIGN1cnJlbnQgc3RhY2sgdXNhZ2UgYXMgYW4gZXN0aW1hdGUuCi0gICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGludDhf
dCogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1cnJlbnQpOwotICAgIGlu
dDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4od3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCkub3JpZ2luKCkpOworICAgIGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
OF90Kj4oVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5vcmlnaW4oKSk7CiAgICAgcmV0dXJuIGhp
Z2ggLSBjdXJyZW50OwogI2Vsc2UKICAgICByZXR1cm4gQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0
ZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBlZTIzMmE3ZjIxY2Vj
ZDAxZGY3ZTkzMmY4YjUyZTc0ZTNlNDhmYTZkLi45ZmI0ZDhiZTQyYzFmNzhkMWViMGU1MDlkYmEy
OTM0MTZmM2JkZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY4LDcgKzY4
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3Ry
eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdFWFBf
VFJBQ0lORykKQEAgLTI0Myw3ICsyNDIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIC8v
IFdlYkNvcmUgaGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVhZHMgdG8gVk1zOwogICAg
IC8vIGVpdGhlciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWQoKSBzaG91bGQgb25seSBiZSBjYWxs
ZWQgb25jZQogICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRoZSAnZGVmYXVsdCcgVk0gKGl0
IHVzZXMgdGhlCi0gICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUg
ZnJvbSB3dGZUaHJlYWREYXRhKS4KKyAgICAvLyB0aHJlYWQncyBkZWZhdWx0IHN0cmluZyB1bmlx
dWluZyB0YWJsZSBmcm9tIFRocmVhZDo6Y3VycmVudCgpKS4KICAgICAvLyBBUEkgY29udGV4dHMg
Y3JlYXRlZCB1c2luZyB0aGUgbmV3IGNvbnRleHQgZ3JvdXAgYXdhcmUgaW50ZXJmYWNlCiAgICAg
Ly8gY3JlYXRlIEFQSUNvbnRleHRHcm91cCBvYmplY3RzIHdoaWNoIHJlcXVpcmUgbGVzcyBsb2Nr
aW5nIG9mIEpTQwogICAgIC8vIHRoYW4gdGhlIG9sZCBzaW5nbGV0b24gQVBJU2hhcmVkIFZNIGNy
ZWF0ZWQgZm9yIHVzZSBieQpAQCAtNjkxLDcgKzY5MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253
YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dp
bmdEb3dud2FyZCgpKTsKICAgICAgICAgdm9pZCogY3VyciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCZjdXJyKTsKICAgICAgICAgcmV0dXJuIGN1cnIgPj0gc3RhY2tMaW1pdDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRleCBj
MmQ5YmRhMTg4YzQ3NzIwMjU2ZDQwMzA2NDgyODZlYzQ1ZTMxYzU5Li5kMTFhOGZmYTY2ZGI1ZmUz
MGZiOWY0OWY0NTMxMzgzNmI3OGQyMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVk1FbnRyeVNjb3BlOjpW
TUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICwg
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVCghRGlzYWxsb3dWTVJl
ZW50cnk6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHd0ZlRocmVh
ZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0uZW50
cnlTY29wZSkgewogICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAppbmRleCA1YTc3NjE5NTBlMGNmNmIyODg1NjAx
OTMxYWY2YjcxYTNiZTAyZDc4Li5iYzBjMjVmOTFlMmMxNzYxYTIxY2EyMGViMDg4MmEwOTNhMjE1
MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgVk06OmVuc3VyZVN0YWNrQ2FwYWNpdHlG
b3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBBU1NF
UlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAg
cmV0dXJuIG5ld1RvcE9mU3RhY2sgPj0gbV9zb2Z0U3RhY2tMaW1pdDsKICNlbHNlCiAgICAgcmV0
dXJuIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChuZXdUb3BPZlN0YWNrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCAzYTExMDkwZDE5MDkzY2Nl
YmU4MDliYzcyZDNhNmE1MDJlOWM0YjVkLi43MjIyY2MwNDRmMGFkYzk4NzgwYTk5ZjA2YTNlNDli
YjQyM2RlYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1
ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtODgyLDcgKzg4Miw3
IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgaWYgKCFt
X3N0YWNrTGltaXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAg
ICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAgICAg
ICAgIGludDhfdCogbGltaXQgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KG1fc3RhY2tMaW1p
dCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IGxpbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDg2MTY3MWM0YWEyODEwYzFlMzNiNTdiMzgxM2YwOGE3
MGJkYjNlYi4uZTE0ZTBkYTM3ODVlODc3OGZjYmVjOTUwYjFkMjQ1Y2NjZWQ5OGJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNyArMTIzLDYgQEAK
IAkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1MUE4MjVC
MDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJQThBNDc0NjMxNTFBODI1
QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklD
VS5jcHAgKi87IH07CiAJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzU3MTUxQTgy
NUIwMDQxMjNGRiAvKiBVVEY4LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3Bw
ICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
ODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9
OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5
QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87
IH07CiAJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2
NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovOyB9OwpAQCAt
NTE0LDggKzUxMyw2IEBACiAJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yVHJhaXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRh
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1UYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVh
ZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM3QjE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3
NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QTQ3MjdG
MTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc2FsbG93Q1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05OTcsOCArOTk0LDYgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29y
ZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCi0J
CQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAotCQkJ
CUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDA5LDcgKzE0
MDQsNiBAQAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNv
Y29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUxNWQ0NWM2M2M5MGRkODNkYWExYTc0YjUwZjMyODc1ZTk4YTkyM2IuLjVhNzU2ODg0ZDYy
N2UwYjIwYzZlYTk4ZDQwM2FjNDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0x
NTAsNyArMTUwLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVmFyaWFudC5oCiAgICAgVmVjdG9y
LmgKICAgICBWZWN0b3JUcmFpdHMuaAotICAgIFdURlRocmVhZERhdGEuaAogICAgIFdhbGxUaW1l
LmgKICAgICBXZWFrUHRyLmgKICAgICBXb3JkTG9jay5oCkBAIC0yNTQsNyArMjUzLDYgQEAgc2V0
KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZS5jcHAKICAgICBVVUlELmNwcAotICAgIFdURlRocmVhZERhdGEuY3BwCiAgICAgV2FsbFRp
bWUuY3BwCiAgICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5oIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29y
aXRobS5oCmluZGV4IDQ1MTQ4NTQ3N2FjZjY1NjRiODI4NzdkM2U2NTllOTAyNzhjODk1MWUuLmI4
ZTk4N2I5MDgxNTBmMjY2NzYwMGZhNDMxZjdiOTIwNGVmM2I4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3Jp
dGhtLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlu
bGluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgKaW5kZXggODQz
OGQyZTkyYWFkMzFlZmQ0NTk5ODNiOWM1MmMwOWEwNjlmZDBkYS4uMGNiZTVmYTVmYWM4MTBkOWNk
ZjFjOTM4MzdmMzAxZTJlNjhmYzRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9ja0Fs
Z29yaXRobUlubGluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5l
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXJraW5nTG90Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiAvLyBJdCdzIGEgZ29vZCBpZGVhIHRvIGF2b2lkIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiB0
b28gbWFueSBwbGFjZXMsIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKIC8vIHRoZSBs
b2NrIGFsZ29yaXRobSBzbG93IHBhdGggd2l0aG91dCByZWNvbXBpbGluZyB0aGUgd29ybGQuIFJp
Z2h0IG5vdyB0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0d28KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRl
eCAxNGIzNDY3M2EwYmQ4NTc3YzEyN2ZjZjI2OWI3MzI5ZWI2YjAwN2Y4Li5hYjkyMTM0ZWQ4Yjhl
MWUxMzdjZjllN2M2M2JmMWMyODI0YWZiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuY3BwCmluZGV4IGNjMWEyMWI5ZWE1Y2NjYzZmMWFjZTRjOTc0OTg5OWJiZGE1
ZDdlMTAuLmY4ZmVkODhiMWY3Yzk5MjA5ODZhOTRlN2FiNmM1NTcxYjkyM2NlMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bh
cmtpbmdMb3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lm
aWMuaCIKLSNpbmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisjaW5jbHVkZSAiVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgogI2lu
Y2x1ZGUgIldvcmRMb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCmluZGV4IDA2NGYyZjA1MmFhZjM4
YjlmODBhNmRkNDExMzJlNjU0NmU0NTdmNDIuLjhjYjQ2MjIxMWRmN2FkNTU3ZTNjN2FlMjQ4ZTU2
NTI4YjUxODZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNp
bmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YUxvZy5oIgotI2luY2x1ZGUgIldU
RlRocmVhZERhdGEuaCIKIAogLy8gRGVmaW5lIHRoZSBmb2xsb3dpbmcgZmxhZyBpZiB5b3Ugd2Fu
dCB0byBjb2xsZWN0IHN0YXRzIG9uIGV2ZXJ5IHNpbmdsZQogLy8gY2hlY2twb2ludC4gQnkgZGVm
YXVsdCwgd2Ugb25seSBsb2cgY2hlY2twb2ludHMgdGhhdCBlc3RhYmxpc2ggbmV3CkBAIC01OSw3
ICs1OCw3IEBAIGludCBTdGFja1N0YXRzOjpzX21heExheW91dFJlZW50cnlEZXB0aCA9IDA7CiAK
IFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cygpCiB7Ci0gICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKICAgICBt
X3JlZW50cnlEZXB0aCA9IDA7CiAgICAgbV9zdGFja1N0YXJ0ID0gKGNoYXIqKXN0YWNrLm9yaWdp
bigpOwogICAgIG1fY3VycmVudENoZWNrUG9pbnQgPSAwOwpAQCAtNzAsOSArNjksOSBAQCBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogU3RhY2tTdGF0czo6Q2hl
Y2tQb2ludDo6Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhy
ZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwot
ICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0
cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7
CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRz
OjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3Rh
Y2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rv
d253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKICAgICBib29sIG5lZWRUb0xvZyA9
IGZhbHNlOwpAQCAtMTI4LDggKzEyNyw4IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNr
UG9pbnQoKQogU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogewogICAgIHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgp
OwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERh
dGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYg
dCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVh
ZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFk
LnN0YWNrU3RhdHMoKTsKIAogICAgIC8vIFBvcCB0byBwcmV2aW91cyBjaGVja3BvaW50OgogICAg
IHQubV9jdXJyZW50Q2hlY2tQb2ludCA9IG1fcHJldjsKQEAgLTEzOCw3ICsxMzcsNyBAQCBTdGFj
a1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiAgICAgLy8gTG9nIHRoaXMgY2hlY2tw
b2ludCBpZiBuZWVkZWQ6CiAjaWYgRU5BQkxFKFZFUkJPU0VfU1RBQ0tfU1RBVFMpCiAgICAgaWYg
KCFtX3ByZXYpIHsKLSAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0
YS0+c3RhY2soKTsKKyAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0
YWNrKCk7CiAgICAgICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdE
b3dud2FyZCgpOwogCiAgICAgICAgIGNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPih0aGlzKTsKQEAgLTE1OSw5ICsxNTgsOSBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+
Q2hlY2tQb2ludCgpCiB2b2lkIFN0YWNrU3RhdHM6OnByb2JlKCkKIHsKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBX
VEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0
ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJl
YWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhy
ZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMo
KTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAg
IGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCkBA
IC0yMjAsOSArMjE5LDkgQEAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hl
Y2tQb2ludCgpCiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKIAogICAgIHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRo
cmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhy
ZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERh
dGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWRE
YXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Cisg
ICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwor
ICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9v
bCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXIuY3BwCmluZGV4IGUyYTMxYmU5OTc4YTlkZTQyZWJmYTMzYjA3MDZhNTI0MzNi
ZDcyY2IuLjAyYjBlMTRhYTFhMTAzYzQ3NWY5ZDBmZWIwMjUxZmEzZjY0NzQ0OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmNwcApAQCAtNDMsNCArNDMsOSBAQCBUaHJlYWRIb2xkZXI6On5UaHJlYWRI
b2xkZXIoKQogICAgIG1fdGhyZWFkLT5kaWRFeGl0KCk7CiB9CiAKK1RocmVhZEhvbGRlciYgVGhy
ZWFkSG9sZGVyOjppbml0aWFsaXplQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemUo
VGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oIGIvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyLmgKaW5kZXggYjJmOGRlNjg4NTBjNmFmZGM3OWVmZGFkYTA5YmU2ZGVm
YjE4MjZhOS4uYTRjOTNiMGJlNzYxMmY5YmRiY2MzMmIwZjgwN2RlNGJkOGUzZGI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmgKQEAgLTI5LDEzICsyOSwxNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgVGhyZWFkSG9sZGVyX2gKKyNkZWZpbmUgVGhyZWFkSG9s
ZGVyX2gKIAorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lm
aWMuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCitj
bGFzcyBUaHJlYWQ7CisKIC8vIEhvbGRzIFRocmVhZCBpbiB0aGUgdGhyZWFkLXNwZWNpZmljIHN0
b3JhZ2UuIFRoZSBkZXN0cnVjdG9yIG9mIHRoaXMgaG9sZGVyIHJlbGlhYmx5IGRlc3Ryb3kgVGhy
ZWFkLgogLy8gRm9yIHB0aHJlYWQsIGl0IGVtcGxveXMgcHRocmVhZHMtc3BlY2lmaWMgMi1wYXNz
IGRlc3RydWN0aW9uIHRvIHJlbGlhYmx5IHJlbW92ZSBUaHJlYWQuCiAvLyBGb3IgV2luZG93cywg
d2UgdXNlIHRocmVhZF9sb2NhbCB0byBkZWZlciB0aHJlYWQgaG9sZGVyIGRlc3RydWN0aW9uLiBJ
dCBhc3N1bWVzIHJlZ3VsYXIgVGhyZWFkU3BlY2lmaWMKQEAgLTQ3LDIzICs1MCwyNiBAQCBjbGFz
cyBUaHJlYWRIb2xkZXIgewogCiAgICAgLy8gT25lIHRpbWUgaW5pdGlhbGl6YXRpb24gZm9yIHRo
aXMgY2xhc3MgYXMgYSB3aG9sZS4KICAgICAvLyBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBi
ZWZvcmUgaW5pdGlhbGl6ZSgpIGFuZCBpdCBpcyBub3QgdGhyZWFkLXNhZmUuCi0gICAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZU9uY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZU9uY2UoKTsKIAogICAgIC8vIENyZWF0ZXMgYW5kIHB1dHMgYW4gaW5zdGFu
Y2Ugb2YgVGhyZWFkSG9sZGVyIGludG8gdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2UuCi0gICAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZShUaHJlYWQmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFRocmVhZEhvbGRlciYgaW5pdGlhbGl6ZShSZWY8VGhyZWFkPiYmKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFRocmVhZEhvbGRlciYgaW5pdGlhbGl6ZUN1cnJlbnQoKTsKIAog
ICAgIC8vIFJldHVybnMgMCBpZiB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZSB3YXMgbm90IGluaXRp
YWxpemVkLgotICAgIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnQoKTsKKyAgICBzdGF0aWMg
VGhyZWFkSG9sZGVyJiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciogY3VycmVu
dE1heUJlTnVsbCgpOwogCiAgICAgVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3RocmVhZC5n
ZXQoKTsgfQogCiAjaWYgT1MoV0lORE9XUykKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFRocmVhZEhvbGRlciogY3VycmVudER5aW5nKCk7CiAgICAgc3RhdGljIFJlZlB0cjxUaHJlYWQ+
IGdldChUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFRocmVhZEhv
bGRlcihUaHJlYWQmIHRocmVhZCkKLSAgICAgICAgOiBtX3RocmVhZCh0aHJlYWQpCisgICAgVGhy
ZWFkSG9sZGVyKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQorICAgICAgICA6IG1fdGhyZWFkKFdURk1v
dmUodGhyZWFkKSkKICAgICAgICAgLCBtX2lzRGVzdHJveWVkT25jZShmYWxzZSkKICAgICB7CiAg
ICAgfQpAQCAtNzcsNyArODMsMzkgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKIAogICAgIFJlZjxU
aHJlYWQ+IG1fdGhyZWFkOwogICAgIGJvb2wgbV9pc0Rlc3Ryb3llZE9uY2U7Ci0gICAgc3RhdGlj
IFRocmVhZFNwZWNpZmljS2V5IG1fa2V5OworICAgIHN0YXRpYyBXVEZfRVhQT1JUREFUQSBUaHJl
YWRTcGVjaWZpY0tleSBtX2tleTsKIH07CiAKK2lubGluZSBUaHJlYWRIb2xkZXIqIFRocmVhZEhv
bGRlcjo6Y3VycmVudE1heUJlTnVsbCgpCit7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgQVNT
RVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7CisjZWxzZQor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPihfcHRocmVhZF9nZXRzcGVjaWZp
Y19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSkpOworI2VuZGlmCit9CisKK2lubGluZSBUaHJl
YWRIb2xkZXImIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpCit7CisgICAgLy8gV1JUIFdlYkNvcmU6
CisgICAgLy8gICAgVGhyZWFkSG9sZGVyIGlzIHVzZWQgb24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0
IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQKKyAgICAvLyAgICBvbiBzZWNvbmRhcnkgb25lcywgc28g
dGhlcmUgaXMgbm8gbmVlZCBmb3Igc3luY2hyb25pemF0aW9uIGhlcmUuCisgICAgLy8gV1JUIEph
dmFTY3JpcHRDb3JlOgorICAgIC8vICAgIFRocmVhZDo6Y3VycmVudCgpIGlzIGluaXRpYWxseSBj
YWxsZWQgZnJvbSBpbml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCisgICAgLy8gICAgdGhp
cyBpcyBpbml0aWFsbHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0Lgor
I2lmICFIQVZFKEZBU1RfVExTKQorICAgIGlmIChVTkxJS0VMWShUaHJlYWRIb2xkZXI6Om1fa2V5
ID09IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSkpCisgICAgICAgIGluaXRpYWxpemVPbmNlKCk7
CisjZW5kaWYKKyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVudE1heUJlTnVsbCgpKQorICAg
ICAgICByZXR1cm4gKmhvbGRlcjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlmIChhdXRvKiBob2xk
ZXIgPSBjdXJyZW50RHlpbmcoKSkKKyAgICAgICAgcmV0dXJuICpob2xkZXI7CisjZW5kaWYKKyAg
ICByZXR1cm4gaW5pdGlhbGl6ZUN1cnJlbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCisj
ZW5kaWYgLy8gVGhyZWFkSG9sZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZEhvbGRlclB0aHJlYWRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRz
LmNwcAppbmRleCAyMGU1ZTg4Zjc2ZGFjMmY3NjA3MzM0YThlYjNhYWVhY2RhZDVmOTYzLi44NTY4
NDFlMzIzNmRiZWE4ZGYwMzIwODFmOWUyNjRjMzFkZDU2NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkSG9sZGVyUHRocmVhZHMuY3BwCkBAIC00MSwzNiArNDEsNDEgQEAgdm9pZCBUaHJlYWRIb2xk
ZXI6OmluaXRpYWxpemVPbmNlKCkKICAgICB0aHJlYWRTcGVjaWZpY0tleUNyZWF0ZSgmbV9rZXks
IGRlc3RydWN0KTsKIH0KIAotVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQoKQor
VGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoUmVmPFRocmVhZD4mJiB0aHJl
YWQpCiB7CisgICAgYXV0byogaG9sZGVyID0gbmV3IFRocmVhZEhvbGRlcihXVEZNb3ZlKHRocmVh
ZCkpOworI2lmICFIQVZFKEZBU1RfVExTKQorICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoaXMg
YXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBlcmZv
cm1hbmNlLgorICAgIC8vIEhhdmluZyB0aGlzIHJlbGVhc2UgYXNzZXJ0IGhlcmUgbWVhbnMgdGhh
dCB3ZSB3aWxsIGNhdGNoICJkaWRuJ3QgY2FsbAorICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KICAgICBBU1NFUlQobV9r
ZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQobV9rZXkpKTsKLX0KLQotdm9pZCBUaHJl
YWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFkJiB0aHJlYWQpCi17Ci0gICAgaWYgKCFjdXJyZW50
KCkpIHsKLSAgICAgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhpcyBhcyBhIHJlbGVhc2UgYXNz
ZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1cnQgcGVyZm9ybWFuY2UuCi0gICAgICAg
IC8vIEhhdmluZyB0aGlzIHJlbGVhc2UgYXNzZXJ0IGhlcmUgbWVhbnMgdGhhdCB3ZSB3aWxsIGNh
dGNoICJkaWRuJ3QgY2FsbAotICAgICAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBz
b29uIGVub3VnaCIgYnVncyBpbiByZWxlYXNlIG1vZGUuCi0gICAgICAgIEFTU0VSVChtX2tleSAh
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgICAgICB0aHJlYWRTcGVjaWZpY1NldCht
X2tleSwgbmV3IFRocmVhZEhvbGRlcih0aHJlYWQpKTsKLSAgICB9CisgICAgdGhyZWFkU3BlY2lm
aWNTZXQobV9rZXksIGhvbGRlcik7CisjZWxzZQorICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2Rp
cmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZLCBob2xkZXIpOworICAgIHB0aHJlYWRfa2V5X2luaXRf
bnAoV1RGX1RIUkVBRF9EQVRBX0tFWSwgJmRlc3RydWN0KTsKKyNlbmRpZgorICAgIHJldHVybiAq
aG9sZGVyOwogfQogCiB2b2lkIFRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKIHsK
LSAgICBUaHJlYWRIb2xkZXIqIHRocmVhZElkZW50aWZpZXJEYXRhID0gc3RhdGljX2Nhc3Q8VGhy
ZWFkSG9sZGVyKj4oZGF0YSk7Ci0gICAgQVNTRVJUKHRocmVhZElkZW50aWZpZXJEYXRhKTsKKyAg
ICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KGRhdGEp
OworICAgIEFTU0VSVChob2xkZXIpOwogCi0gICAgaWYgKHRocmVhZElkZW50aWZpZXJEYXRhLT5t
X2lzRGVzdHJveWVkT25jZSkgewotICAgICAgICBkZWxldGUgdGhyZWFkSWRlbnRpZmllckRhdGE7
CisgICAgaWYgKGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9uY2UpIHsKKyAgICAgICAgZGVsZXRlIGhv
bGRlcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRocmVhZElkZW50aWZpZXJEYXRh
LT5tX2lzRGVzdHJveWVkT25jZSA9IHRydWU7CisgICAgaG9sZGVyLT5tX2lzRGVzdHJveWVkT25j
ZSA9IHRydWU7CiAgICAgLy8gUmUtc2V0dGluZyB0aGUgdmFsdWUgZm9yIGtleSBjYXVzZXMgYW5v
dGhlciBkZXN0cnVjdCgpIGNhbGwgYWZ0ZXIgYWxsIG90aGVyIHRocmVhZC1zcGVjaWZpYyBkZXN0
cnVjdG9ycyB3ZXJlIGNhbGxlZC4KLSAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgdGhyZWFk
SWRlbnRpZmllckRhdGEpOworI2lmICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAh
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5
LCBob2xkZXIpOworI2Vsc2UKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RI
UkVBRF9EQVRBX0tFWSwgaG9sZGVyKTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJF
QURfREFUQV9LRVksICZkZXN0cnVjdCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwIGIvU291cmNl
L1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNwcAppbmRleCBmMDZiNjJmNjhlMjAxMzYzNWM2MzUx
NWU4YzBlNGYxNWZlNDYxNmRhLi45OGIyYzI4YmVmNmU0YjQzNmFhMTUyZjE0NDM3MTg2MDNlNTZl
ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAKQEAgLTU2LDE1ICs1Niw5IEBAIHZv
aWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpCiAgICAgdGhyZWFkU3BlY2lmaWNLZXlD
cmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRocmVhZEhvbGRlciogVGhyZWFkSG9sZGVy
OjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50RHlpbmcoKQog
ewogICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgIFRo
cmVhZEhvbGRlciogaG9sZGVyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3Bl
Y2lmaWNHZXQobV9rZXkpKTsKLSAgICBpZiAoaG9sZGVyKSB7Ci0gICAgICAgIEFTU0VSVChob2xk
ZXIgIT0gSW52YWxpZFRocmVhZEhvbGRlcik7Ci0gICAgICAgIHJldHVybiBob2xkZXI7Ci0gICAg
fQotCiAgICAgLy8gQWZ0ZXIgRkxTIGlzIGRlc3Ryb3llZCwgdGhpcyBtYXAgb2ZmZXJzIHRoZSB2
YWx1ZSB1bnRpbCB0aGUgc2Vjb25kIHRocmVhZCBleGl0IGNhbGxiYWNrIGlzIGNhbGxlZC4KICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwog
ICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoY3VycmVudFRocmVhZCgpKTsKQEAgLTgwLDIxICs3
NCwyMSBAQCBSZWZQdHI8VGhyZWFkPiBUaHJlYWRIb2xkZXI6OmdldChUaHJlYWRJZGVudGlmaWVy
IGlkKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlh
bGl6ZShUaHJlYWQmIHRocmVhZCkKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjppbml0aWFs
aXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAg
ICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdo
ZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcg
dGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0
IGNhbGwKLSAgICAgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2gi
IGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRo
cmVhZFNwZWNpZmljS2V5KTsKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91
bmQgY29kZSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTc5MzIxMz4gaXMgZml4ZWQuCi0gICAgICAg
IGF1dG8qIGhvbGRlciA9IG5ldyBUaHJlYWRIb2xkZXIodGhyZWFkKTsKLSAgICAgICAgdGhyZWFk
U3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgICAg
ICAgICB0aHJlYWRNYXAoKS5hZGQodGhyZWFkLmlkKCksIGhvbGRlcik7Ci0gICAgICAgIH0KKyAg
ICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVy
ZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZpbmcgdGhpcyBy
ZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwK
KyAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiBy
ZWxlYXNlIG1vZGUuCisgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tl
eSk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSBvbmNlIDxyZGFy
Oi8vcHJvYmxlbS8zMTc5MzIxMz4gaXMgZml4ZWQuCisgICAgYXV0byBpZCA9IHRocmVhZC0+aWQo
KTsKKyAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVyKFdURk1vdmUodGhyZWFkKSk7
CisgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7CisgICAgeworICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAg
ICAgICB0aHJlYWRNYXAoKS5hZGQoaWQsIGhvbGRlcik7CiAgICAgfQorICAgIHJldHVybiAqaG9s
ZGVyOwogfQogCiB2b2lkIFRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuY3BwCmluZGV4IGIzZmZhN2NmNzE5M2E2MDk4MGRlNzJlMTAwZTBhNDA3ODI2MGQ2NDIu
LjJlMTEzODQ1YTVkMzc0Y2VhNWU3ZjE5YWE3NGQwY2JjNDY3MmVkODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkTWVzc2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmlt
aXRpdmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KIAogI2lmIEhBVkUoUU9TX0NMQVNTRVMpCkBAIC05NCw2ICs5NCwxMyBAQCBjb25zdCBjaGFy
KiBUaHJlYWQ6Om5vcm1hbGl6ZVRocmVhZE5hbWUoY29uc3QgY2hhciogdGhyZWFkTmFtZSkKICNl
bmRpZgogfQogCit2b2lkIFRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKCkKK3sKKyAgICBtX3Nh
dmVkTGFzdFN0YWNrVG9wID0gc3RhY2soKS5vcmlnaW4oKTsKKyAgICBBdG9taWNTdHJpbmdUYWJs
ZTo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVm
YXVsdEF0b21pY1N0cmluZ1RhYmxlOworfQorCiB2b2lkIFRocmVhZDo6ZW50cnlQb2ludChOZXdU
aHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogewogICAgIEZ1bmN0aW9uPHZvaWQoKT4g
ZnVuY3Rpb247CkBAIC0xMDUsNyArMTEyLDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3
VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICAgICAgQVNTRVJUKGNvbnRleHQt
PnN0YWdlID09IE5ld1RocmVhZENvbnRleHQ6OlN0YWdlOjpFc3RhYmxpc2hlZEhhbmRsZSk7CiAK
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aHJlYWQgaG9sZGVyIHdpdGggZXN0YWJsaXNoZWQgSUQu
Ci0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShjb250ZXh0LT50aHJlYWQuZ2V0KCkp
OworICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoY29udGV4dC0+dGhyZWFkLmNvcHlS
ZWYoKSk7CiAKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFs
KGNvbnRleHQtPm5hbWUpOwogICAgICAgICBmdW5jdGlvbiA9IFdURk1vdmUoY29udGV4dC0+ZW50
cnlQb2ludCk7CkBAIC0xMTYsNiArMTIzLDcgQEAgdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3
VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAgICAgICAgY29udGV4dC0+c3RhZ2Ug
PSBOZXdUaHJlYWRDb250ZXh0OjpTdGFnZTo6SW5pdGlhbGl6ZWQ7CiAgICAgICAgIGNvbnRleHQt
PmNvbmRpdGlvbi5zaWduYWwoKTsKICNlbmRpZgorICAgICAgICBjb250ZXh0LT50aHJlYWQtPmlu
aXRpYWxpemVJblRocmVhZCgpOwogICAgIH0KIAogICAgIEFTU0VSVCghVGhyZWFkOjpjdXJyZW50
KCkuc3RhY2soKS5pc0VtcHR5KCkpOwpAQCAtMTU1LDE0ICsxNjMsNiBAQCBSZWZQdHI8VGhyZWFk
PiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgZW50
cnlQb2ludCkKICAgICByZXR1cm4gV1RGTW92ZSh0aHJlYWQpOwogfQogCi1UaHJlYWQqIFRocmVh
ZDo6Y3VycmVudE1heUJlTnVsbCgpCi17Ci0gICAgVGhyZWFkSG9sZGVyKiBkYXRhID0gVGhyZWFk
SG9sZGVyOjpjdXJyZW50KCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIHJldHVybiAmZGF0YS0+
dGhyZWFkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHN0YXRpYyBib29sIHNob3VsZFJl
bW92ZVRocmVhZEZyb21UaHJlYWRHcm91cCgpCiB7CiAjaWYgT1MoV0lORE9XUykKQEAgLTE5Nyw2
ICsxOTcsOSBAQCB2b2lkIFRocmVhZDo6ZGlkRXhpdCgpCiAgICAgICAgICAgICB0aHJlYWRHcm91
cC0+bV90aHJlYWRzLnJlbW92ZSgqdGhpcyk7CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKG1f
YXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKQorICAgICAgICBtX2F0b21pY1N0cmluZ1RhYmxl
RGVzdHJ1Y3RvcihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7CisKICAgICAvLyBXZSB3b3Vs
ZCBsaWtlIHRvIHNheSAidGhyZWFkIGlzIGV4aXRlZCIgYWZ0ZXIgdW5yZWdpc3RlcmluZyB0aHJl
YWRzIGZyb20gdGhyZWFkIGdyb3Vwcy4KICAgICAvLyBTbyB3ZSBuZWVkIHRvIHNlcGFyYXRlIG1f
aXNTaHV0dGluZ0Rvd24gZnJvbSBtX2RpZEV4aXQuCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6
bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKQEAgLTI3Nyw5ICsyODAsOCBAQCB2b2lkIGluaXRpYWxp
emVUaHJlYWRpbmcoKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplS2V5
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVLZXksIFtdIHsKLSAgICAgICAgVGhyZWFk
SG9sZGVyOjppbml0aWFsaXplT25jZSgpOwogICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVy
R2VuZXJhdG9yKCk7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKTsKKyAgICAgICAgVGhyZWFkOjpj
dXJyZW50KCk7CiAgICAgICAgIGluaXRpYWxpemVEYXRlcygpOwogICAgICAgICBUaHJlYWQ6Omlu
aXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZygpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBm
ZjUwYmZhODliNzY4YmMwODE4YzYzOTg5ZDJmZjNmNWUyYzQxOTI3Li4xN2IzMzAwZjljZWRiYmZl
MDUwNDFlMTc5ODNjOTY4NDMzNTVkYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtMzksNiArMzksOCBA
QAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tT
dGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUwLDEy
ICs1MiwxMiBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIEFic3RyYWN0TG9ja2VyOworY2xh
c3MgQXRvbWljU3RyaW5nVGFibGU7CiBjbGFzcyBUaHJlYWRNZXNzYWdlRGF0YTsKIAotZW51bSBj
bGFzcyBUaHJlYWRHcm91cEFkZFJlc3VsdDsKK3VzaW5nIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1
Y3RvciA9IHZvaWQgKCopKEF0b21pY1N0cmluZ1RhYmxlKik7CiAKLXVzaW5nIFRocmVhZElkZW50
aWZpZXIgPSB1aW50MzJfdDsKLXR5cGVkZWYgdm9pZCAoKlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBh
cmd1bWVudCk7CitlbnVtIGNsYXNzIFRocmVhZEdyb3VwQWRkUmVzdWx0OwogCiBjbGFzcyBUaHJl
YWRHcm91cDsKIGNsYXNzIFRocmVhZEhvbGRlcjsKQEAgLTY1LDYgKzY3LDcgQEAgY2xhc3MgVGhy
ZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogcHVibGljOgogICAg
IGZyaWVuZCBjbGFzcyBUaHJlYWRHcm91cDsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkSG9sZGVy
OworICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKIAogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB+VGhyZWFkKCk7CiAKQEAgLTczLDggKzc2LDcgQEAgY2xhc3MgVGhyZWFkIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVmUHRyPFRocmVhZD4gY3JlYXRlKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUsIEZ1
bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICAvLyBSZXR1cm5zIFRocmVhZCBvYmplY3QuCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKLSAgICBzdGF0aWMg
VGhyZWFkKiBjdXJyZW50TWF5QmVOdWxsKCk7CisgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgp
OwogCiAgICAgLy8gUmV0dXJucyBUaHJlYWRJZGVudGlmaWVyIGRpcmVjdGx5LiBJdCBpcyB1c2Vm
dWwgaWYgdGhlIHVzZXIgb25seSBjYXJlcyBhYm91dCBpZGVudGl0eQogICAgIC8vIG9mIHRocmVh
ZHMuIEF0IHRoYXQgdGltZSwgdXNlcnMgc2hvdWxkIGtub3cgdGhhdCBob2xkaW5nIHRoaXMgVGhy
ZWFkSWRlbnRpZmllciBkb2VzIG5vdCBlbnN1cmUKQEAgLTE0MSwxNSArMTQzLDU5IEBAIGNsYXNz
IFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAgICAg
cmV0dXJuIG1fc3RhY2s7CiAgICAgfQogCisgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0
cmluZ1RhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdU
YWJsZTsKKyAgICB9CisKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0
cmluZ1RhYmxlKEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSkKKyAgICB7Cisg
ICAgICAgIEF0b21pY1N0cmluZ1RhYmxlKiBvbGRBdG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVu
dEF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9
IGF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICByZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7
CisgICAgfQorCisjaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRo
cmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YWNrU3Rh
dHM7CisgICAgfQorI2VuZGlmCisKKyAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRy
eSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsK
KyAgICB9CisKKyAgICB2b2lkIHNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0
YWNrUG9pbnRlckF0Vk1FbnRyeSkKKyAgICB7CisgICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJB
dFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9pZCogc2F2
ZWRMYXN0U3RhY2tUb3AoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tU
b3A7CisgICAgfQorCisgICAgdm9pZCBzZXRTYXZlZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3Rh
Y2tUb3ApCisgICAgeworICAgICAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9w
OworICAgIH0KKworICAgIHZvaWQqIG1fYXBpRGF0YSB7IG51bGxwdHIgfTsKKwogI2lmIE9TKERB
UldJTikKICAgICBtYWNoX3BvcnRfdCBtYWNoVGhyZWFkKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVRo
cmVhZDsgfQogI2VuZGlmCiAKICAgICBzdHJ1Y3QgTmV3VGhyZWFkQ29udGV4dDsKICAgICBzdGF0
aWMgdm9pZCBlbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqKTsKLXByb3RlY3RlZDoKK3ByaXZh
dGU6CiAgICAgVGhyZWFkKCk7CiAKKyAgICBzdGF0aWMgUmVmPFRocmVhZD4gY3JlYXRlQ3VycmVu
dFRocmVhZCgpOworICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhyZWFkKCk7CisKICAgICAvLyBJbnRl
cm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQgZXN0YWJsaXNobWVudCBpbXBsZW1lbnRhdGlv
bi4KICAgICBib29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0Kik7CiAKQEAgLTIx
Myw2ICsyNTksMTYgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFRocmVhZD4gewogI2Vsc2UKICNlcnJvciBVbmtub3duIFN5c3RlbQogI2VuZGlmCisKKyAgICBB
dG9taWNTdHJpbmdUYWJsZSogbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07
CisgICAgQXRvbWljU3RyaW5nVGFibGUqIG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlIHsgbnVs
bHB0ciB9OworICAgIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciBtX2F0b21pY1N0cmluZ1Rh
YmxlRGVzdHJ1Y3RvciB7IG51bGxwdHIgfTsKKworI2lmIEVOQUJMRShTVEFDS19TVEFUUykKKyAg
ICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyBtX3N0YWNrU3RhdHM7CisjZW5kaWYKKyAgICB2
b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5IHsgbnVsbHB0ciB9OworICAgIHZvaWQq
IG1fc2F2ZWRMYXN0U3RhY2tUb3A7CiB9OwogCiAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxs
ZWQgZnJvbSBhbnkgdGhyZWFkcy4KQEAgLTIyMyw2ICsyNzksMTAgQEAgaW5saW5lIFRocmVhZElk
ZW50aWZpZXIgY3VycmVudFRocmVhZCgpCiAgICAgcmV0dXJuIFRocmVhZDo6Y3VycmVudElEKCk7
CiB9CiAKK2lubGluZSBUaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCit7CisgICAgcmV0dXJuIFRo
cmVhZEhvbGRlcjo6Y3VycmVudCgpLnRocmVhZCgpOworfQogCiAvLyBGSVhNRTogVGhlIGZvbGxv
d2luZyBmdW5jdGlvbnMgcmVtYWluIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBmcm9tIFdlYktpdCBX
aW5kb3dzIHN1cHBvcnQgbGlicmFyeSwKIC8vIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMuZGxs
LiBXaGVuIHVwZGF0aW5nIHRoZSBzdXBwb3J0IGxpYnJhcnksIHdlIHNob3VsZCB1c2UgbmV3IEFQ
SSBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggMzBjNDk5ZmRh
OWNhZTFmNmRmNjRjMWQ0ZWFhNmNiNWI2Zjk4MTc3Mi4uNmU4OGFhNmE4YTA5MGQ5N2U3NzdjMzFh
M2JkMmE2NmFkYzMwYzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAt
NDUsNiArNDUsOSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAordXNpbmcgVGhyZWFkSWRlbnRpZmll
ciA9IHVpbnQzMl90OwordXNpbmcgVGhyZWFkRnVuY3Rpb24gPSB2b2lkICgqKSh2b2lkKiBhcmd1
bWVudCk7CisKICNpZiBVU0UoUFRIUkVBRFMpCiB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9
IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKaW5kZXggMTJkN2M3MTM4NjE5MmU4ZjQ1NTdlMzNm
MjliMzUyMTk4NzY1ZTc4Zi4uY2ZlZWFiYjIzODhmMGZiY2VlNTQyODYxMDUxYmNjZDZhN2U4MWE3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAtMjg2LDE4ICsyODYsMTYg
QEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiAgICAgICAgIGRpZEJlY29tZURldGFjaGVkKCk7CiB9
CiAKLVRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKLXsKLSAgICBpZiAoVGhyZWFkKiBjdXJyZW50
ID0gY3VycmVudE1heUJlTnVsbCgpKQotICAgICAgICByZXR1cm4gKmN1cnJlbnQ7CiAKK1JlZjxU
aHJlYWQ+IFRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCgpCit7CiAgICAgLy8gTm90IGEgV1RG
LWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQu
CiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAgICAg
dGhyZWFkLT5lc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfc2VsZigpKTsK
ICAgICB0aHJlYWQtPm1fc3RhY2sgPSBTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91
bmRzKCk7Ci0gICAgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAg
dGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVh
ZEV2ZW5JZk5vbldURkNyZWF0ZWQoKTsKLSAgICByZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJl
dHVybiB0aHJlYWQ7CiB9CiAKIFRocmVhZElkZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggMDUyM2EyZTZiYjVmNjYyNmFjOGMwNGM5Mjg5YTA1
ZTU3ZjVlMDE1MC4uZTkzMWRmZmI4ZjRkYmQwN2U4YTYyNDVkMjczYjY4MzgzNGIzODE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0yNDMsMTEgKzI0Myw4IEBAIHNpemVfdCBUaHJlYWQ6
OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgIHJldHVybiBz
aXplb2YoQ09OVEVYVCk7CiB9CiAKLVRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKK1JlZjxUaHJl
YWQ+IFRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCgpCiB7Ci0gICAgaWYgKFRocmVhZCogY3Vy
cmVudCA9IGN1cnJlbnRNYXlCZU51bGwoKSkKLSAgICAgICAgcmV0dXJuICpjdXJyZW50OwotCiAg
ICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBl
c3RhYmxpc2hlZCB5ZXQuCiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBU
aHJlYWQoKSk7CiAKQEAgLTI1Nyw5ICsyNTQsOSBAQCBUaHJlYWQmIFRocmVhZDo6Y3VycmVudCgp
CiAKICAgICB0aHJlYWQtPmVzdGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUoaGFuZGxlLCBj
dXJyZW50SUQoKSk7CiAgICAgdGhyZWFkLT5tX3N0YWNrID0gU3RhY2tCb3VuZHM6OmN1cnJlbnRU
aHJlYWRTdGFja0JvdW5kcygpOwotICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSh0aHJlYWQu
Z2V0KCkpOworICAgIHRocmVhZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAgICAgaW5pdGlhbGl6
ZUN1cnJlbnRUaHJlYWRFdmVuSWZOb25XVEZDcmVhdGVkKCk7Ci0gICAgcmV0dXJuIHRocmVhZC5n
ZXQoKTsKKyAgICByZXR1cm4gdGhyZWFkOwogfQogCiBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6
Y3VycmVudElEKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3Bw
IGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDczZTc3ZDI1ODVmOGE2MTQ0NGY5NzRlN2MzYjhhZDEzYTFjYjY2OTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYv
V1RGVGhyZWFkRGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5oIgotCi0jaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KLQotI2lmIFVTRShXRUJfVEhSRUFEKQotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLSNpZiAh
SEFWRShGQVNUX1RMUykKLVRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWRE
YXRhOjpzdGF0aWNEYXRhOwotI2VuZGlmCi0KLVdURlRocmVhZERhdGE6OldURlRocmVhZERhdGEo
KQotICAgIDogbV9zdGFja0JvdW5kcyhTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91
bmRzKCkpCi0gICAgLCBtX3NhdmVkTGFzdFN0YWNrVG9wKHN0YWNrKCkub3JpZ2luKCkpCi17Ci0g
ICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgbV9jdXJyZW50QXRvbWlj
U3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZTsKLX0KLQotV1RGVGhyZWFk
RGF0YTo6fldURlRocmVhZERhdGEoKQotewotICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVz
dHJ1Y3RvcikKLSAgICAgICAgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0
QXRvbWljU3RyaW5nVGFibGUpOwotfQotCi0jaWYgSEFWRShGQVNUX1RMUykKLVdURlRocmVhZERh
dGEmIFdURlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3Qo
KQotewotICAgIFdURlRocmVhZERhdGEqIGRhdGEgPSBuZXcgV1RGVGhyZWFkRGF0YTsKLSAgICBf
cHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgZGF0YSk7Ci0g
ICAgcHRocmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCBbXSh2b2lkKiBkYXRh
KXsKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihkYXRhKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gKmRhdGE7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmggYi9Tb3VyY2UvV1RG
L3d0Zi9XVEZUaHJlYWREYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNWZm
ODE3NjZkODNjNTZkYmNhY2I2M2JhZTZlMjYwOGE2MmMzMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2lmbmRlZiBXVEZUaHJlYWREYXRhX2gK
LSNkZWZpbmUgV1RGVGhyZWFkRGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgotI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgot
I2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmlj
Lmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKLQotdHlw
ZWRlZiB2b2lkICgqQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKShBdG9taWNTdHJpbmdUYWJs
ZSopOwotCi1jbGFzcyBXVEZUaHJlYWREYXRhIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
VEZUaHJlYWREYXRhKTsKLXB1YmxpYzoKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFk
RGF0YSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwotCi0gICAg
QXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICB9Ci0KLSAgICBBdG9taWNTdHJp
bmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEF0b21pY1N0cmluZ1RhYmxlKiBh
dG9taWNTdHJpbmdUYWJsZSkKLSAgICB7Ci0gICAgICAgIEF0b21pY1N0cmluZ1RhYmxlKiBvbGRB
dG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwotICAgICAgICBt
X2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0cmluZ1RhYmxlOwotICAgICAgICBy
ZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7Ci0gICAgfQotCi0gICAgY29uc3QgU3RhY2tCb3Vu
ZHMmIHN0YWNrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0YWNrQm91bmRzOwotICAgIH0K
LQotI2lmIEVOQUJMRShTVEFDS19TVEFUUykKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0
cyYgc3RhY2tTdGF0cygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zdGFja1N0YXRzOwotICAg
IH0KLSNlbmRpZgotCi0gICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgfQot
Ci0gICAgdm9pZCBzZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50
ZXJBdFZNRW50cnkpCi0gICAgewotICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5
ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5OwotICAgIH0KLQotICAgIHZvaWQqIHNhdmVkTGFzdFN0
YWNrVG9wKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOwotICAg
IH0KLQotICAgIHZvaWQgc2V0U2F2ZWRMYXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQot
ICAgIHsKLSAgICAgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsKLSAgICB9
Ci0KLSAgICB2b2lkKiBtX2FwaURhdGEgeyBudWxscHRyIH07Ci0KLXByaXZhdGU6Ci0gICAgQXRv
bWljU3RyaW5nVGFibGUqIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9Owot
ICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxw
dHIgfTsKLSAgICBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgbV9hdG9taWNTdHJpbmdUYWJs
ZURlc3RydWN0b3IgeyBudWxscHRyIH07Ci0KLSAgICBTdGFja0JvdW5kcyBtX3N0YWNrQm91bmRz
OwotI2lmIEVOQUJMRShTVEFDS19TVEFUUykKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0
cyBtX3N0YWNrU3RhdHM7Ci0jZW5kaWYKLSAgICB2b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5IHsgbnVsbHB0ciB9OwotICAgIHZvaWQqIG1fc2F2ZWRMYXN0U3RhY2tUb3A7Ci0KLSNp
ZiBIQVZFKEZBU1RfVExTKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgV1RGVGhyZWFk
RGF0YSYgY3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpOwotI2Vsc2UKLSAg
ICBzdGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIHN0
YXRpY0RhdGE7Ci0jZW5kaWYKLQotICAgIGZyaWVuZCBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWRE
YXRhKCk7Ci0gICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwotfTsKLQotaW5saW5l
IFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKQotewotICAgIC8vIFdSVCBXZWJDb3JlOgot
ICAgIC8vICAgIFdURlRocmVhZERhdGEgaXMgdXNlZCBvbiBtYWluIHRocmVhZCBiZWZvcmUgaXQg
Y291bGQgcG9zc2libHkgYmUgdXNlZAotICAgIC8vICAgIG9uIHNlY29uZGFyeSBvbmVzLCBzbyB0
aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KLSAgICAvLyBXUlQgSmF2
YVNjcmlwdENvcmU6Ci0gICAgLy8gICAgd3RmVGhyZWFkRGF0YSgpIGlzIGluaXRpYWxseSBjYWxs
ZWQgZnJvbSBpbml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCi0gICAgLy8gICAgdGhpcyBp
cyBpbml0aWFsbHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgotI2lm
ICFIQVZFKEZBU1RfVExTKQotICAgIGlmICghV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSkKLSAg
ICAgICAgV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxXVEZU
aHJlYWREYXRhPjsKLSAgICByZXR1cm4gKipXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwotI2Vs
c2UKLSAgICBpZiAoV1RGVGhyZWFkRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdURlRocmVhZERh
dGEqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSkpKQot
ICAgICAgICByZXR1cm4gKmRhdGE7Ci0gICAgcmV0dXJuIFdURlRocmVhZERhdGE6OmNyZWF0ZUFu
ZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3QoKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotdXNpbmcgV1RGOjpXVEZUaHJlYWREYXRhOwotdXNpbmcgV1RGOjp3dGZUaHJl
YWREYXRhOwotdXNpbmcgV1RGOjpBdG9taWNTdHJpbmdUYWJsZTsKLQotI2VuZGlmIC8vIFdURlRo
cmVhZERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGE0ZTAzZGUz
YWY2NTdjNjlmNzRkMTYyNTFmMDAwNzM5MTM2YTUzNDQuLjJhMDY1MTI4M2E5NzI3MWU1NzZhMjIy
ZGRmMDIzMjBkMDZhMGQyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAg
LTIzLDggKzIzLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXRvbWljU3Ry
aW5nLmgiCiAKLSNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCi0jaW5jbHVk
ZSAiTWFpblRocmVhZC5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgor
CiAjaW5jbHVkZSAiZHRvYS5oIgogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZ0ltcGwuY3BwCmluZGV4IDM1MjI0ODVkN2I4NDczY2M4MGU1MjQwYTczMmEw
NTUzYzQ4YmMzNDIuLjA2M2U0ZWViN2U1N2U1Y2Q4NWIwYTE3MTk1NGQzODkyNGMxNzc5NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJTdHJpbmdQcmludFN0cmVhbS5o
IgogI2luY2x1ZGUgIlRocmVhZGluZy5oIgotI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKQEAgLTcy
LDcgKzcxLDcgQEAgdXNpbmcgU3RyaW5nVGFibGVJbXBsID0gSGFzaFNldDxTdHJpbmdJbXBsKj47
CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFN0cmluZ1RhYmxlSW1wbCYgc3RyaW5nVGFibGUoKQog
ewotICAgIHJldHVybiB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKS0+dGFibGUo
KTsKKyAgICByZXR1cm4gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKS0+dGFi
bGUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwCmluZGV4IGZlOGE0ODg0
ZGI3ZTY3OGRlZDZhZjMyZGQ0MzcxMmU1OTVmM2I5MzUuLmY2ZDc4ZjJiZTZmNDhmMmFhNjgyYzA1
ZDEwZDI0NjQ2OGIwYzI0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFi
bGUuY3BwCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQg
QXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShXVEZUaHJlYWREYXRhJiBkYXRhKQordm9pZCBBdG9t
aWNTdHJpbmdUYWJsZTo6Y3JlYXRlKFRocmVhZCYgdGhyZWFkKQogewogI2lmIFVTRShXRUJfVEhS
RUFEKQogICAgIC8vIE9uIGlPUywgb25lIEF0b21pY1N0cmluZ1RhYmxlIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBtYWluIFVJIHRocmVhZCBhbmQgdGhlIFdlYlRocmVhZC4KQEAgLTM3LDE3ICszNywx
NyBAQCB2b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoV1RGVGhyZWFkRGF0YSYgZGF0YSkK
IAogICAgIGJvb2wgY3VycmVudFRocmVhZElzV2ViVGhyZWFkID0gaXNXZWJUaHJlYWQoKTsKICAg
ICBpZiAoY3VycmVudFRocmVhZElzV2ViVGhyZWFkIHx8IGlzVUlUaHJlYWQoKSkKLSAgICAgICAg
ZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IHNoYXJlZFN0cmluZ1RhYmxlOworICAg
ICAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBzaGFyZWRTdHJpbmdUYWJs
ZTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBu
ZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAgICAgIHRocmVhZC5tX2RlZmF1bHRBdG9taWNTdHJp
bmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKIAogICAgIC8vIFdlIGRvIHRoZSBmb2xs
b3dpbmcgc28gdGhhdCBpdHMgZGVzdHJ1Y3Rpb24gaGFwcGVucyBvbmx5CiAgICAgLy8gb25jZSAt
IG9uIHRoZSBtYWluIFVJIHRocmVhZC4KICAgICBpZiAoIWN1cnJlbnRUaHJlYWRJc1dlYlRocmVh
ZCkKLSAgICAgICAgZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0
cmluZ1RhYmxlOjpkZXN0cm95OworICAgICAgICB0aHJlYWQubV9hdG9taWNTdHJpbmdUYWJsZURl
c3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKICNlbHNlCi0gICAgZGF0YS5t
X2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKLSAgICBk
YXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRl
c3Ryb3k7CisgICAgdGhyZWFkLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21p
Y1N0cmluZ1RhYmxlOworICAgIHRocmVhZC5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9
IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OwogI2VuZGlmIC8vIFVTRShXRUJfVEhSRUFEKQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKaW5kZXggOTQ0YWU5MmJk
ZWM0NDM5YmYwNzAxMjFiNzhhMzVmNWE4NGZjNDA5ZC4uZDNiYzljZTVmNmUwNzI3NzU2Y2M5ZWJi
ZTRmMTI1MzdmYWFiMmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmdUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUu
aApAQCAtMjQsMTkgKzI0LDE5IEBACiAjZGVmaW5lIFdURl9BdG9taWNTdHJpbmdUYWJsZV9oCiAK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAog
Y2xhc3MgU3RyaW5nSW1wbDsKK2NsYXNzIFRocmVhZDsKIAogY2xhc3MgQXRvbWljU3RyaW5nVGFi
bGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+QXRvbWljU3RyaW5nVGFibGUoKTsKIAotICAgIHN0YXRpYyB2b2lkIGNyZWF0
ZShXVEZUaHJlYWREYXRhJik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlKFRocmVhZCYpOwogICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGU7IH0KIAogcHJp
dmF0ZToKQEAgLTQ2LDUgKzQ2LDYgQEAgY2xhc3MgQXRvbWljU3RyaW5nVGFibGUgewogfTsKIAog
fQordXNpbmcgV1RGOjpBdG9taWNTdHJpbmdUYWJsZTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggOGEwMjMwYmFiZjk1Y2JhOTdmOWE4
Zjg2MjgxOWFiNDBkMTdmY2U0Mi4uNjNiMWUwZTU3NDExZDA2MzNjNDE5OGY0YWUwOTM1M2EwMzU1
MTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IGI4ZmFmNWE4ZDc5MTAy
ZjJlZmRkOGJkYTY0MzFjMDc3YmZmMTNiZjAuLjc3MzgyOWQ1ZTdiNGViMzNkN2JlODM4MDcxNmY5
YTMzMzcyNmY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEds
b2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02Niw3ICs2NSw3IEBAIFRocmVhZEds
b2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQogICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFu
ZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlzIG1ha2VzIHRoaXMgYSBjb252
ZW5pZW50CiAgICAgLy8gcG9pbnQgdG8gY2FsbCBtZXRob2RzIHRoYXQgaW50ZXJuYWxseSBwZXJm
b3JtIGEgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gdGhhdCBpcyBub3QKICAgICAvLyB0aHJlYWRz
YWZlLgotICAgIHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBT
dHJpbmdJbXBsOjplbXB0eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5oCmluZGV4IDY2ZThlOTkxZTEyOTYyYjU0ZmQ3NDM5MmQ5NTJlNzMyOGZkNjQwOTAuLmVj
MjcxMWI1MjA3MjUyMzMyNGE2ZmYwNDdjMzZiZDM4NzAwZThhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKFZJREVP
VE9PTEJPWCkKIAogI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4KKyNpbmNsdWRlIDxmdW5j
dGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDYxMjJiNGYyYzUwYjY0YmE1Yzdm
ZmM5ZGRlM2Y0ZGE1NjI5YTAzODcuLmM4ZjA1YTFhMGFlZDYwMmNiZDhjMDk0ZTBhOTcyMDNhZjlj
NjA2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0KQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgp
CiB7CiAgICAgd2ViVGhyZWFkU3RhcnRlZCA9IFRSVUU7CiAKLSAgICAvLyBUaHJlYWRHbG9iYWxE
YXRhIHRvdWNoZXMgQXRvbWljU3RyaW5nLCB3aGljaCByZXF1aXJlcyBXVEZUaHJlYWREYXRhIGFu
ZCBUaHJlYWRpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgLy8gVGhyZWFkR2xvYmFsRGF0YSB0b3Vj
aGVzIEF0b21pY1N0cmluZywgd2hpY2ggcmVxdWlyZXMgVGhyZWFkaW5nIGluaXRpYWxpemF0aW9u
LgogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBB
dG9taWNTdHJpbmcgb24gdGhlIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwCmluZGV4IDQyNWM5MjQ4ZDg3MDQ4MjdiYjBlMDM4MjFhMmFlOGRjOGFhYzBk
NzAuLjY4MWExZWY3NTQ4MTAwZDFhMjk2NjA5ZTYyY2I3ZjlhZmI2MmUwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdv
cmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKICAgICAvLyBXZSBjYW5ub3QgbGV0IGFueSBvYmpl
Y3RzIHN1cnZpdmUgcGFzdCB0aHJlYWQgZXhpdCwgYmVjYXVzZSBubyBvdGhlciB0aHJlYWQgd2ls
bCBydW4gR0Mgb3Igb3RoZXJ3aXNlIGRlc3Ryb3kgdGhlbS4KICAgICB3b3JrZXJHbG9iYWxTY29w
ZVRvRGVsZXRlID0gbnVsbHB0cjsKIAotICAgIC8vIENsZWFuIHVwIFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGEgYmVmb3JlIFdURjo6V1RGVGhyZWFkRGF0YSBnb2VzIGF3YXkhCisgICAgLy8gQ2xl
YW4gdXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RGOjpUaHJlYWQgZ29lcyBh
d2F5IQogICAgIHRocmVhZEdsb2JhbERhdGEoKS5kZXN0cm95KCk7CiAKICAgICAvLyBUaGUgdGhy
ZWFkIG9iamVjdCBtYXkgYmUgYWxyZWFkeSBkZXN0cm95ZWQgZnJvbSBub3RpZmljYXRpb24gbm93
LCBkb24ndCB0cnkgdG8gYWNjZXNzICJ0aGlzIi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316710</attachid>
            <date>2017-07-29 08:30:08 -0700</date>
            <delta_ts>2017-07-29 08:43:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170730003007.patch</filename>
            <type>text/plain</type>
            <size>70051</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi4wY2YwNGJmMjY0YzY4NzAx
ZTk2OTg2OGVhYmUxMmI0ZTliNTNlZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2su
aDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAg
ICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNv
bW1pdHRlZFN0YWNrQnl0ZUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
IChKU0M6OlZNOjppc1NhZmVUb1JlY3Vyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFj
a0NhcGFjaXR5Rm9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlKToKKwog
MjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBBU1NFUlRJT04gRkFJTEVEOiBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgY2FuZGlkYXRlLT5vcCgpID09
IFBoYW50b21TcHJlYWQgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhT
cHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNDY1ZDJkZWU1MDFlYzU4YTE5OWY1MWRlZGRlMjFjODliOWVmMDlhMy4uMDVm
OGYxZDU0M2QxZjE5NzJkMmQzODc2NzYyNWM5ODNjYjA2NzllNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBA
QAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL0xvY2tBbGdvcml0aG0uaDoKKyAgICAgICAgKiB3dGYvTG9ja0FsZ29yaXRobUlubGluZXMu
aDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90
LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNr
U3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6CisgICAgICAgIChXVEY6OlN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0
YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6
OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5
b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRlci5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9U
aHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpUaHJlYWRIb2xkZXIp
OgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwpOgorICAgICAg
ICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgorICAgICAgICAoV1RGOjpU
aHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnREeWluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRo
cmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZy5j
cHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0
KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RG
OjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRTYXZlZFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3Ap
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNrVG9wKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6
OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3Vy
cmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJlbW92ZWQuCisgICAgICAg
ICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
VGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaDoK
KwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3YWl0IGluIHNvbWUgcGxh
dGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJlYWRTdGFja0JvdW5kcyhQ
bGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyNzRkMjliMGNjMTljMDA4YjFm
YjcyZmRjNTg4MzkzMGUwMmE0MS4uNTEyZTQ4YWRiNTY0Mzc5ZDAxZTYyZTFhOWEzMTlkMGNiOTM0
MGJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA3LTI5ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERh
dGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisKIDIwMTctMDctMjggIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBTcGxpdC11cCBhbmQgY2xlYW51cCBGZXRj
aCBJREwgZmlsZXMgaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIHVubmVjZXNzYXJ5IGpzIGJ1
aWx0aW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDViMTAwYzc1
ZTE1YjlmNDc2NjI5NDRhYTBmYzViYjhkZDA5ZjQ2YzUuLmJhZWIxNzhkNDgxZGJlZGYyYmVkM2Rm
NmQ0ZTYzZmQxODE1NmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
CkBAIC0xNDEsMTUgKzE0MSwxNSBAQCAtIChKU1ZhbHVlICopZ2xvYmFsT2JqZWN0CiAKICsgKEpT
Q29udGV4dCAqKWN1cnJlbnRDb250ZXh0CiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0
YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0
aHJlYWQubV9hcGlEYXRhOwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5jb250ZXh0IDogbmls
OwogfQogCiArIChKU1ZhbHVlICopY3VycmVudFRoaXMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0
aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAo
Q2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQg
PSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+dGhp
c1ZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNTcsOCAr
MTU3LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiAKICsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEu
bV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAg
Q2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwog
ICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnktPmNhbGxlZVZhbHVlIGluQ29udGV4dDpbSlNDb250
ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNjYsOCArMTY2LDggQEAgKyAoSlNWYWx1ZSAqKWN1
cnJlbnRDYWxsZWUKIAogKyAoTlNBcnJheSAqKWN1cnJlbnRBcmd1bWVudHMKIHsKLSAgICBXVEZU
aHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0
YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5
ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAKICAgICBpZiAoIWVudHJ5KQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjk0LDIxICsyOTQsMjEgQEAgLSAoQk9PTClib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb25WYWx1ZQogCiAtICh2b2lkKWJl
Z2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tEYXRhIGNhbGxlZVZh
bHVlOihKU1ZhbHVlUmVmKWNhbGxlZVZhbHVlIHRoaXNWYWx1ZTooSlNWYWx1ZVJlZil0aGlzVmFs
dWUgYXJndW1lbnRDb3VudDooc2l6ZV90KWFyZ3VtZW50Q291bnQgYXJndW1lbnRzOihjb25zdCBK
U1ZhbHVlUmVmICopYXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OwogICAgIFtzZWxmIHJldGFpbl07Ci0gICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2Fs
bGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgQ2FsbGJhY2tEYXRhICpwcmV2
U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICAqY2FsbGJhY2tE
YXRhID0gKENhbGxiYWNrRGF0YSl7IHByZXZTdGFjaywgc2VsZiwgW3NlbGYuZXhjZXB0aW9uIHJl
dGFpbl0sIGNhbGxlZVZhbHVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywg
bmlsIH07Ci0gICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgdGhy
ZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IG5pbDsK
IH0KIAogLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFj
a0RhdGEKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgp
OworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgc2VsZi5leGNl
cHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsKICAgICBbY2FsbGJhY2tE
YXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07CiAgICAgW2NhbGxiYWNrRGF0YS0+Y3Vy
cmVudEFyZ3VtZW50cyByZWxlYXNlXTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9IGNhbGxi
YWNrRGF0YS0+bmV4dDsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0
OwogICAgIFtzZWxmIHJlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IGY2NWVmODQxYTdjMWUwMDZhMmVhYjcxNTI0ZmRkZThhNmFhMmEyNjcuLjNkNGJiZTM2
ZTYzMzg1OTFhMzg4Y2M2NTRmYjA1ODc4ODNkYWI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFuY2VU
aHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKFZNKiB2bSkKIHsK
LSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpCisgICAgaWYgKHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IFdURjo6
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKHZtLT5pc1NoYXJlZEluc3RhbmNlKCkgJiYgIWlzVmFsaWRTaGFyZWRJ
bnN0YW5jZVRocmVhZFN0YXRlKHZtKSkKQEAgLTIwMjMsNyArMjAyMyw3IEBAIEhlYXA6OlRpY2tl
dCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVzdCkKICAgICBzdG9wSWZO
ZWNlc3NhcnkoKTsKICAgICAKICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSBXVEY6OlRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Ro
cmVhZExvY2spOwogICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBUaGF0
IG9ubHkgd29ya3MgaWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDViMzAy
NjRjN2Y0MTFlMzhkNTgwZjU1ZDVkN2QxZDY4OWIzNjAxZWIuLjg4MjNlNmY2MDE2MTEyYjQ3Mzlm
YTAyOGY0MzFiYzdlOGQ3YzhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCkBAIC00MSwxNCArNDEsMTMgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGlu
Z1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHBy
b2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7CkBAIC02NCw3ICs2Myw3
IEBAIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjCiBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtNzQsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxl
U3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJF
cnJvciYgZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9n
cmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2Us
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwpAQCAtOTIsNyArOTEsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2
bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVh
ZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmlsaW5n
IHByb2ZpbGUoc291cmNlKTsKQEAgLTE2Nyw3ICsxNjYsNyBAQCBzdGF0aWMgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4
ZWNTdAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMt
PnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsK
IAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5h
bWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTE3OCw3ICsxNzcsNyBAQCBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBT
eW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjA1
LDcgKzIwNCw3IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBK
U0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywKIEpTSW50ZXJuYWxQcm9taXNlKiBs
b2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52
bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5
T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywg
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsyMTUsNyBAQCBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERh
dGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNT
dHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7
CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0p
OwpAQCAtMjM0LDcgKzIzMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiBKU1ZhbHVlIGxp
bmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CkBAIC0yNDQsNyArMjQz
LDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmEKIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZt
KCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpLT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVLZXks
IHNjcmlwdEZldGNoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmNwcAppbmRleCA5OTI1NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2Li5k
NTUyZDBiMWY2Mjg3MTVhMjYzNmFiNzczN2VkZmM2MTk3MzRjMGM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoVk0qIHZtKQogewog
ICAgIC8vIENoZWNrIHRoZSBpZGVudGlmaWVyIHRhYmxlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUg
dGhyZWFkc3BlY2lmaWMgbWF0Y2hlcyB0aGUKICAgICAvLyB2bSdzIGlkZW50aWZpZXIgdGFibGUu
Ci0gICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZt
LT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwogfQogCiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggOWVmMTQzYWQ0OGU3MWQyOGIxN2Jh
NDE2ZmEzYjE0YmNiZGI3NDVhYS4uODUwNzNiNmQyOTViNTk5NjNhMjEzZDUyNDU1Yjg0YjRhZDE2
NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCkKICAgICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUoKTsKICNlbmRpZgog
ICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7Ci0gICAgICAgIFdURlRocmVhZERhdGEm
IHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHRocmVhZERhdGEuc2V0U2F2
ZWRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkLnNldFNhdmVk
TGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBiYTZjNDRhNWRmNTE0ZGU1MTdjOWEy
NTg3NTYxYTk4YTlkOTI0MTBlLi5jMmM4Mjc2YWMzMjkwZWYxNmM5ZmNlNGFmYTg0YTM5ZjYwMGNi
MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTEyNyw5
ICsxMjcsOSBAQCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIGlmICghbV92bSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3
dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsK
ICAgICBBU1NFUlQoIW1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0gICAgbV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlID0gdGhyZWFkRGF0YS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV92
bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0g
dGhyZWFkLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKICAgICBBU1NFUlQobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogICAgIGlmICht
X3ZtLT5oZWFwLmhhc0FjY2VzcygpKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNMb2NrOjpk
aWRBY3F1aXJlTG9jaygpCiAgICAgdm9pZCogcCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUgY3Vy
cmVudCBzdGFjayBwb2ludGVyLgogICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShw
KTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0YWNr
VG9wKCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tU
b3AoKSk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVh
ZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpT
TG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKICAgICB9CiAKICAgICBpZiAobV9lbnRyeUF0b21pY1N0
cmluZ1RhYmxlKSB7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICAgICAgVGhyZWFkOjpjdXJy
ZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fZW50cnlBdG9taWNTdHJpbmdUYWJs
ZSk7CiAgICAgICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IG51bGxwdHI7CiAgICAgfQog
fQpAQCAtMjI1LDkgKzIyNSw5IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BB
bGxMb2NrcyogZHJvcHBlcikKIAogICAgIGRyb3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tEcm9w
RGVwdGgpOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0
YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6
Y3VycmVudCgpOworICAgIHRocmVhZC5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3Zt
LT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKIAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291
bnQgPSBtX2xvY2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CkBAIC0yNTIs
OSArMjUyLDkgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3Bw
ZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0aDsK
IAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAg
bV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZERhdGEuc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQo
KTsKKyAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9j
a3MoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBjOTFk
YWVjYmNkZDY1YTk2ZDYzM2YzMzE1M2Q1NGE5NDlhZDY1NzNiLi5kZWEwNTAyOGNkNzM1ZWI2Mzkx
NzQ3MGMxNTIyYjE4MjQ1ZGU1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xv
Y2suaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMjUxMDI0MzQ2NDM3N2E0NDlh
ZmVjYmM1OTlmZTk4NDI3MDlmZTdhLi4wNjk1OWJhNDY1ZTE5MmJlNjNhODE4OGQ5ZmMyMzc3Zjdj
ZTk2OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTQsNyArMTE0
LDYgQEAKICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKQEAgLTE3Niw3ICsxNzUs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB0b3BW
TUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkpCiAgICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFByb21p
c2VEZWZlcnJlZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlw
ZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcg
QXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBE
ZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9t
aWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5
TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRG
b3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQpAQCAtMjExLDEz
ICsyMTAsMTMgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9zaGFkb3dDaGlja2VuKHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKSkKIHsK
ICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Ci0gICAgU3RhY2tCb3Vu
ZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBTdGFja0JvdW5kcyBzdGFj
ayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9u
ZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNr
VG9wKHN0YWNrLm9yaWdpbigpKTsKIAogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVw
IGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7
Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJp
bmdUYWJsZSk7CisgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJp
bmdUYWJsZSA9IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSht
X2F0b21pY1N0cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0eU5hbWVzID0gbmV3IENvbW1vbklkZW50
aWZpZXJzKHRoaXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVy
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpAQCAtMjcwLDcgKzI2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRo
aXMpOwogCi0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShl
eGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVhZDo6Y3VycmVudCgpLnNl
dEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUp
OwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8SklU
VGh1bmtzPigpOwpAQCAtNjcyLDcgKzY3MSw3IEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVTdGFj
a0xpbWl0cygpCiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tMaW1p
dDsKICNlbmRpZgogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKTsKICAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSA9IE9wdGlvbnM6OnJl
c2VydmVkWm9uZVNpemUoKTsKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGVuc3VyZWQg
dGhhdCBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11bVJlc2VydmVab25lU2l6
ZSBhdAogICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwgYW5kIHRoZSBvcHRpb24g
dmFsdWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFmdGVyLgpAQCAtODg2LDkg
Kzg4NSw5IEBAIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQogI2lmIEVOQUJM
RShKSVQpCiAgICAgLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjaywgd2UgZG9uJ3Qga25vdyBob3cg
bWFueSBzdGFjayBwYWdlcyBhcmUgYWN0dWFsbHkKICAgICAvLyBjb21taXR0ZWQuIFNvLCB3ZSB1
c2UgdGhlIGN1cnJlbnQgc3RhY2sgdXNhZ2UgYXMgYW4gZXN0aW1hdGUuCi0gICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGludDhf
dCogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1cnJlbnQpOwotICAgIGlu
dDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4od3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCkub3JpZ2luKCkpOworICAgIGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
OF90Kj4oVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5vcmlnaW4oKSk7CiAgICAgcmV0dXJuIGhp
Z2ggLSBjdXJyZW50OwogI2Vsc2UKICAgICByZXR1cm4gQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0
ZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBlZTIzMmE3ZjIxY2Vj
ZDAxZGY3ZTkzMmY4YjUyZTc0ZTNlNDhmYTZkLi45ZmI0ZDhiZTQyYzFmNzhkMWViMGU1MDlkYmEy
OTM0MTZmM2JkZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY4LDcgKzY4
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3Ry
eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdFWFBf
VFJBQ0lORykKQEAgLTI0Myw3ICsyNDIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIC8v
IFdlYkNvcmUgaGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVhZHMgdG8gVk1zOwogICAg
IC8vIGVpdGhlciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWQoKSBzaG91bGQgb25seSBiZSBjYWxs
ZWQgb25jZQogICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRoZSAnZGVmYXVsdCcgVk0gKGl0
IHVzZXMgdGhlCi0gICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUg
ZnJvbSB3dGZUaHJlYWREYXRhKS4KKyAgICAvLyB0aHJlYWQncyBkZWZhdWx0IHN0cmluZyB1bmlx
dWluZyB0YWJsZSBmcm9tIFRocmVhZDo6Y3VycmVudCgpKS4KICAgICAvLyBBUEkgY29udGV4dHMg
Y3JlYXRlZCB1c2luZyB0aGUgbmV3IGNvbnRleHQgZ3JvdXAgYXdhcmUgaW50ZXJmYWNlCiAgICAg
Ly8gY3JlYXRlIEFQSUNvbnRleHRHcm91cCBvYmplY3RzIHdoaWNoIHJlcXVpcmUgbGVzcyBsb2Nr
aW5nIG9mIEpTQwogICAgIC8vIHRoYW4gdGhlIG9sZCBzaW5nbGV0b24gQVBJU2hhcmVkIFZNIGNy
ZWF0ZWQgZm9yIHVzZSBieQpAQCAtNjkxLDcgKzY5MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253
YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dp
bmdEb3dud2FyZCgpKTsKICAgICAgICAgdm9pZCogY3VyciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCZjdXJyKTsKICAgICAgICAgcmV0dXJuIGN1cnIgPj0gc3RhY2tMaW1pdDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRleCBj
MmQ5YmRhMTg4YzQ3NzIwMjU2ZDQwMzA2NDgyODZlYzQ1ZTMxYzU5Li5kMTFhOGZmYTY2ZGI1ZmUz
MGZiOWY0OWY0NTMxMzgzNmI3OGQyMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVk1FbnRyeVNjb3BlOjpW
TUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICwg
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVCghRGlzYWxsb3dWTVJl
ZW50cnk6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHd0ZlRocmVh
ZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0uZW50
cnlTY29wZSkgewogICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAppbmRleCA1YTc3NjE5NTBlMGNmNmIyODg1NjAx
OTMxYWY2YjcxYTNiZTAyZDc4Li5iYzBjMjVmOTFlMmMxNzYxYTIxY2EyMGViMDg4MmEwOTNhMjE1
MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgVk06OmVuc3VyZVN0YWNrQ2FwYWNpdHlG
b3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBBU1NF
UlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAg
cmV0dXJuIG5ld1RvcE9mU3RhY2sgPj0gbV9zb2Z0U3RhY2tMaW1pdDsKICNlbHNlCiAgICAgcmV0
dXJuIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChuZXdUb3BPZlN0YWNrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCAzYTExMDkwZDE5MDkzY2Nl
YmU4MDliYzcyZDNhNmE1MDJlOWM0YjVkLi43MjIyY2MwNDRmMGFkYzk4NzgwYTk5ZjA2YTNlNDli
YjQyM2RlYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1
ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtODgyLDcgKzg4Miw3
IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgaWYgKCFt
X3N0YWNrTGltaXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAg
ICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAgICAg
ICAgIGludDhfdCogbGltaXQgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KG1fc3RhY2tMaW1p
dCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IGxpbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDg2MTY3MWM0YWEyODEwYzFlMzNiNTdiMzgxM2YwOGE3
MGJkYjNlYi4uZTE0ZTBkYTM3ODVlODc3OGZjYmVjOTUwYjFkMjQ1Y2NjZWQ5OGJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNyArMTIzLDYgQEAK
IAkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1MUE4MjVC
MDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJQThBNDc0NjMxNTFBODI1
QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklD
VS5jcHAgKi87IH07CiAJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzU3MTUxQTgy
NUIwMDQxMjNGRiAvKiBVVEY4LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3Bw
ICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
ODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9
OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5
QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87
IH07CiAJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2
NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovOyB9OwpAQCAt
NTE0LDggKzUxMyw2IEBACiAJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yVHJhaXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRh
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1UYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVh
ZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM3QjE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3
NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QTQ3MjdG
MTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc2FsbG93Q1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05OTcsOCArOTk0LDYgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29y
ZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCi0J
CQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAotCQkJ
CUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDA5LDcgKzE0
MDQsNiBAQAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNv
Y29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUxNWQ0NWM2M2M5MGRkODNkYWExYTc0YjUwZjMyODc1ZTk4YTkyM2IuLjVhNzU2ODg0ZDYy
N2UwYjIwYzZlYTk4ZDQwM2FjNDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0x
NTAsNyArMTUwLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVmFyaWFudC5oCiAgICAgVmVjdG9y
LmgKICAgICBWZWN0b3JUcmFpdHMuaAotICAgIFdURlRocmVhZERhdGEuaAogICAgIFdhbGxUaW1l
LmgKICAgICBXZWFrUHRyLmgKICAgICBXb3JkTG9jay5oCkBAIC0yNTQsNyArMjUzLDYgQEAgc2V0
KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZS5jcHAKICAgICBVVUlELmNwcAotICAgIFdURlRocmVhZERhdGEuY3BwCiAgICAgV2FsbFRp
bWUuY3BwCiAgICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5oIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29y
aXRobS5oCmluZGV4IDQ1MTQ4NTQ3N2FjZjY1NjRiODI4NzdkM2U2NTllOTAyNzhjODk1MWUuLmI4
ZTk4N2I5MDgxNTBmMjY2NzYwMGZhNDMxZjdiOTIwNGVmM2I4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3Jp
dGhtLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlu
bGluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgKaW5kZXggODQz
OGQyZTkyYWFkMzFlZmQ0NTk5ODNiOWM1MmMwOWEwNjlmZDBkYS4uMGNiZTVmYTVmYWM4MTBkOWNk
ZjFjOTM4MzdmMzAxZTJlNjhmYzRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9ja0Fs
Z29yaXRobUlubGluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5l
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXJraW5nTG90Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiAvLyBJdCdzIGEgZ29vZCBpZGVhIHRvIGF2b2lkIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiB0
b28gbWFueSBwbGFjZXMsIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKIC8vIHRoZSBs
b2NrIGFsZ29yaXRobSBzbG93IHBhdGggd2l0aG91dCByZWNvbXBpbGluZyB0aGUgd29ybGQuIFJp
Z2h0IG5vdyB0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0d28KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRl
eCAxNGIzNDY3M2EwYmQ4NTc3YzEyN2ZjZjI2OWI3MzI5ZWI2YjAwN2Y4Li5hYjkyMTM0ZWQ4Yjhl
MWUxMzdjZjllN2M2M2JmMWMyODI0YWZiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuY3BwCmluZGV4IGNjMWEyMWI5ZWE1Y2NjYzZmMWFjZTRjOTc0OTg5OWJiZGE1
ZDdlMTAuLmY4ZmVkODhiMWY3Yzk5MjA5ODZhOTRlN2FiNmM1NTcxYjkyM2NlMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bh
cmtpbmdMb3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lm
aWMuaCIKLSNpbmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisjaW5jbHVkZSAiVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgogI2lu
Y2x1ZGUgIldvcmRMb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCmluZGV4IDA2NGYyZjA1MmFhZjM4
YjlmODBhNmRkNDExMzJlNjU0NmU0NTdmNDIuLjhjYjQ2MjIxMWRmN2FkNTU3ZTNjN2FlMjQ4ZTU2
NTI4YjUxODZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNp
bmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YUxvZy5oIgotI2luY2x1ZGUgIldU
RlRocmVhZERhdGEuaCIKIAogLy8gRGVmaW5lIHRoZSBmb2xsb3dpbmcgZmxhZyBpZiB5b3Ugd2Fu
dCB0byBjb2xsZWN0IHN0YXRzIG9uIGV2ZXJ5IHNpbmdsZQogLy8gY2hlY2twb2ludC4gQnkgZGVm
YXVsdCwgd2Ugb25seSBsb2cgY2hlY2twb2ludHMgdGhhdCBlc3RhYmxpc2ggbmV3CkBAIC01OSw3
ICs1OCw3IEBAIGludCBTdGFja1N0YXRzOjpzX21heExheW91dFJlZW50cnlEZXB0aCA9IDA7CiAK
IFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cygpCiB7Ci0gICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKICAgICBt
X3JlZW50cnlEZXB0aCA9IDA7CiAgICAgbV9zdGFja1N0YXJ0ID0gKGNoYXIqKXN0YWNrLm9yaWdp
bigpOwogICAgIG1fY3VycmVudENoZWNrUG9pbnQgPSAwOwpAQCAtNzAsOSArNjksOSBAQCBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogU3RhY2tTdGF0czo6Q2hl
Y2tQb2ludDo6Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhy
ZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwot
ICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0
cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7
CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRz
OjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3Rh
Y2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rv
d253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKICAgICBib29sIG5lZWRUb0xvZyA9
IGZhbHNlOwpAQCAtMTI4LDggKzEyNyw4IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNr
UG9pbnQoKQogU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogewogICAgIHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgp
OwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERh
dGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYg
dCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVh
ZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFk
LnN0YWNrU3RhdHMoKTsKIAogICAgIC8vIFBvcCB0byBwcmV2aW91cyBjaGVja3BvaW50OgogICAg
IHQubV9jdXJyZW50Q2hlY2tQb2ludCA9IG1fcHJldjsKQEAgLTEzOCw3ICsxMzcsNyBAQCBTdGFj
a1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiAgICAgLy8gTG9nIHRoaXMgY2hlY2tw
b2ludCBpZiBuZWVkZWQ6CiAjaWYgRU5BQkxFKFZFUkJPU0VfU1RBQ0tfU1RBVFMpCiAgICAgaWYg
KCFtX3ByZXYpIHsKLSAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0
YS0+c3RhY2soKTsKKyAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0
YWNrKCk7CiAgICAgICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdE
b3dud2FyZCgpOwogCiAgICAgICAgIGNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPih0aGlzKTsKQEAgLTE1OSw5ICsxNTgsOSBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+
Q2hlY2tQb2ludCgpCiB2b2lkIFN0YWNrU3RhdHM6OnByb2JlKCkKIHsKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBX
VEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0
ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJl
YWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhy
ZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMo
KTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAg
IGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCkBA
IC0yMjAsOSArMjE5LDkgQEAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hl
Y2tQb2ludCgpCiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKIAogICAgIHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRo
cmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhy
ZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERh
dGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWRE
YXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Cisg
ICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwor
ICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9v
bCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXIuY3BwCmluZGV4IGUyYTMxYmU5OTc4YTlkZTQyZWJmYTMzYjA3MDZhNTI0MzNi
ZDcyY2IuLjAyYjBlMTRhYTFhMTAzYzQ3NWY5ZDBmZWIwMjUxZmEzZjY0NzQ0OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmNwcApAQCAtNDMsNCArNDMsOSBAQCBUaHJlYWRIb2xkZXI6On5UaHJlYWRI
b2xkZXIoKQogICAgIG1fdGhyZWFkLT5kaWRFeGl0KCk7CiB9CiAKK1RocmVhZEhvbGRlciYgVGhy
ZWFkSG9sZGVyOjppbml0aWFsaXplQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemUo
VGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oIGIvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyLmgKaW5kZXggYjJmOGRlNjg4NTBjNmFmZGM3OWVmZGFkYTA5YmU2ZGVm
YjE4MjZhOS4uZTRmZTY2ODY0MWM4NzFkMTI2Y2FiZjJlZmY2OGE4NzgwMWU1NmY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmgKQEAgLTI5LDEzICsyOSwxNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgVGhyZWFkSG9sZGVyX2gKKyNkZWZpbmUgVGhyZWFkSG9s
ZGVyX2gKIAorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFkOworCiAvLyBIb2xkcyBUaHJlYWQg
aW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLiBUaGUgZGVzdHJ1Y3RvciBvZiB0aGlzIGhv
bGRlciByZWxpYWJseSBkZXN0cm95IFRocmVhZC4KIC8vIEZvciBwdGhyZWFkLCBpdCBlbXBsb3lz
IHB0aHJlYWRzLXNwZWNpZmljIDItcGFzcyBkZXN0cnVjdGlvbiB0byByZWxpYWJseSByZW1vdmUg
VGhyZWFkLgogLy8gRm9yIFdpbmRvd3MsIHdlIHVzZSB0aHJlYWRfbG9jYWwgdG8gZGVmZXIgdGhy
ZWFkIGhvbGRlciBkZXN0cnVjdGlvbi4gSXQgYXNzdW1lcyByZWd1bGFyIFRocmVhZFNwZWNpZmlj
CkBAIC00NywyMyArNTEsMjYgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKIAogICAgIC8vIE9uZSB0
aW1lIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIGNsYXNzIGFzIGEgd2hvbGUuCiAgICAgLy8gVGhp
cyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGluaXRpYWxpemUoKSBhbmQgaXQgaXMgbm90
IHRocmVhZC1zYWZlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CiAKICAgICAvLyBD
cmVhdGVzIGFuZCBwdXRzIGFuIGluc3RhbmNlIG9mIFRocmVhZEhvbGRlciBpbnRvIHRocmVhZC1z
cGVjaWZpYyBzdG9yYWdlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVGhyZWFkJik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXImIGluaXRpYWxpemUoUmVm
PFRocmVhZD4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXIm
IGluaXRpYWxpemVDdXJyZW50KCk7CiAKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkLXNwZWNp
ZmljIHN0b3JhZ2Ugd2FzIG5vdCBpbml0aWFsaXplZC4KLSAgICBzdGF0aWMgVGhyZWFkSG9sZGVy
KiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciYgY3VycmVudCgpOworICAgIHN0
YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnRNYXlCZU51bGwoKTsKIAogICAgIFRocmVhZCYgdGhy
ZWFkKCkgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KIAogI2lmIE9TKFdJTkRPV1MpCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnREeWluZygpOwog
ICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiBnZXQoVGhyZWFkSWRlbnRpZmllcik7CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBUaHJlYWRIb2xkZXIoVGhyZWFkJiB0aHJlYWQpCi0gICAgICAgIDog
bV90aHJlYWQodGhyZWFkKQorICAgIFRocmVhZEhvbGRlcihSZWY8VGhyZWFkPiYmIHRocmVhZCkK
KyAgICAgICAgOiBtX3RocmVhZChXVEZNb3ZlKHRocmVhZCkpCiAgICAgICAgICwgbV9pc0Rlc3Ry
b3llZE9uY2UoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTc3LDcgKzg0LDM5IEBAIGNsYXNzIFRo
cmVhZEhvbGRlciB7CiAKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZDsKICAgICBib29sIG1faXNE
ZXN0cm95ZWRPbmNlOwotICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpY0tleSBtX2tleTsKKyAgICBz
dGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CiB9OwogCitpbmxp
bmUgVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwoKQoreworI2lm
ICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lm
aWNLZXkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPih0aHJlYWRTcGVj
aWZpY0dldChtX2tleSkpOworI2Vsc2UKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9s
ZGVyKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVkpKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQo
KQoreworICAgIC8vIFdSVCBXZWJDb3JlOgorICAgIC8vICAgIFRocmVhZEhvbGRlciBpcyB1c2Vk
IG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkCisgICAgLy8g
ICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXph
dGlvbiBoZXJlLgorICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKKyAgICAvLyAgICBUaHJlYWQ6
OmN1cnJlbnQoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygp
LCBlbnN1cmluZworICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJl
YWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICBpZiAoVU5M
SUtFTFkoVGhyZWFkSG9sZGVyOjptX2tleSA9PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpKQor
ICAgICAgICBpbml0aWFsaXplT25jZSgpOworI2VuZGlmCisgICAgaWYgKGF1dG8qIGhvbGRlciA9
IGN1cnJlbnRNYXlCZU51bGwoKSkKKyAgICAgICAgcmV0dXJuICpob2xkZXI7CisjaWYgT1MoV0lO
RE9XUykKKyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVudER5aW5nKCkpCisgICAgICAgIHJl
dHVybiAqaG9sZGVyOworI2VuZGlmCisgICAgcmV0dXJuIGluaXRpYWxpemVDdXJyZW50KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgorI2VuZGlmIC8vIFRocmVhZEhvbGRlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKaW5kZXggMjBlNWU4OGY3NmRhYzJmNzYwNzMz
NGE4ZWIzYWFlYWNkYWQ1Zjk2My4uODU2ODQxZTMyMzZkYmVhOGRmMDMyMDgxZjllMjY0YzMxZGQ1
NjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcApAQCAtNDEsMzYg
KzQxLDQxIEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpCiAgICAgdGhyZWFk
U3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRocmVhZEhvbGRlciog
VGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjppbml0
aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogeworICAgIGF1dG8qIGhvbGRlciA9IG5ldyBU
aHJlYWRIb2xkZXIoV1RGTW92ZSh0aHJlYWQpKTsKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICAv
LyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwg
YnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZpbmcgdGhpcyByZWxl
YXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKKyAg
ICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiByZWxl
YXNlIG1vZGUuCiAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0
KG1fa2V5KSk7Ci19Ci0KLXZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFRocmVhZCYgdGhy
ZWFkKQotewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElkZWFsbHkgd2UnZCBo
YXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBo
dXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBo
ZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAgICAgICAgLy8gV1RG
Ojppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2Rl
LgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAg
ICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIG5ldyBUaHJlYWRIb2xkZXIodGhyZWFkKSk7
Ci0gICAgfQorICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOworI2Vsc2UKKyAg
ICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgaG9sZGVy
KTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0cnVj
dCk7CisjZW5kaWYKKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xkZXI6
OmRlc3RydWN0KHZvaWQqIGRhdGEpCiB7Ci0gICAgVGhyZWFkSG9sZGVyKiB0aHJlYWRJZGVudGlm
aWVyRGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KGRhdGEpOwotICAgIEFTU0VSVCh0
aHJlYWRJZGVudGlmaWVyRGF0YSk7CisgICAgVGhyZWFkSG9sZGVyKiBob2xkZXIgPSBzdGF0aWNf
Y2FzdDxUaHJlYWRIb2xkZXIqPihkYXRhKTsKKyAgICBBU1NFUlQoaG9sZGVyKTsKIAotICAgIGlm
ICh0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UpIHsKLSAgICAgICAgZGVs
ZXRlIHRocmVhZElkZW50aWZpZXJEYXRhOworICAgIGlmIChob2xkZXItPm1faXNEZXN0cm95ZWRP
bmNlKSB7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOworICAg
IGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOwogICAgIC8vIFJlLXNldHRpbmcgdGhl
IHZhbHVlIGZvciBrZXkgY2F1c2VzIGFub3RoZXIgZGVzdHJ1Y3QoKSBjYWxsIGFmdGVyIGFsbCBv
dGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQuCi0gICAgdGhyZWFk
U3BlY2lmaWNTZXQobV9rZXksIHRocmVhZElkZW50aWZpZXJEYXRhKTsKKyNpZiAhSEFWRShGQVNU
X1RMUykKKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAg
ICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKKyNlbHNlCisgICAgX3B0aHJlYWRf
c2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVksIGhvbGRlcik7CisgICAgcHRo
cmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCAmZGVzdHJ1Y3QpOworI2VuZGlm
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkSG9sZGVyV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAKaW5k
ZXggZjA2YjYyZjY4ZTIwMTM2MzVjNjM1MTVlOGMwZTRmMTVmZTQ2MTZkYS4uOThiMmMyOGJlZjZl
NGI0MzZhYTE1MmYxNDQzNzE4NjAzZTU2ZTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4u
Y3BwCkBAIC01NiwxNSArNTYsOSBAQCB2b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2Uo
KQogICAgIHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKCZtX2tleSwgZGVzdHJ1Y3QpOwogfQogCi1U
aHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpCitUaHJlYWRIb2xkZXIqIFRocmVh
ZEhvbGRlcjo6Y3VycmVudER5aW5nKCkKIHsKICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRo
cmVhZFNwZWNpZmljS2V5KTsKLSAgICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0YXRpY19jYXN0
PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7Ci0gICAgaWYgKGhvbGRl
cikgewotICAgICAgICBBU1NFUlQoaG9sZGVyICE9IEludmFsaWRUaHJlYWRIb2xkZXIpOwotICAg
ICAgICByZXR1cm4gaG9sZGVyOwotICAgIH0KLQogICAgIC8vIEFmdGVyIEZMUyBpcyBkZXN0cm95
ZWQsIHRoaXMgbWFwIG9mZmVycyB0aGUgdmFsdWUgdW50aWwgdGhlIHNlY29uZCB0aHJlYWQgZXhp
dCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICByZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGN1cnJl
bnRUaHJlYWQoKSk7CkBAIC04MCwyMSArNzQsMjEgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkSG9s
ZGVyOjpnZXQoVGhyZWFkSWRlbnRpZmllciBpZCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFkJiB0aHJlYWQpCitUaHJlYWRIb2xk
ZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShSZWY8VGhyZWFkPiYmIHRocmVhZCkKIHsKLSAg
ICBpZiAoIWN1cnJlbnQoKSkgewotICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFz
IGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3Jt
YW5jZS4KLSAgICAgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0
aGF0IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCi0gICAgICAgIC8vIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAgICAg
QVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3
OTMyMTM+IGlzIGZpeGVkLgotICAgICAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVy
KHRocmVhZCk7Ci0gICAgICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOwotICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRo
cmVhZE1hcE11dGV4KCkpOwotICAgICAgICAgICAgdGhyZWFkTWFwKCkuYWRkKHRocmVhZC5pZCgp
LCBob2xkZXIpOwotICAgICAgICB9CisgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhpcyBhcyBh
IHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1cnQgcGVyZm9ybWFu
Y2UuCisgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0IHdl
IHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCisgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5n
KCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgorICAgIEFTU0VSVChtX2tleSAh
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3
b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3OTMyMTM+IGlzIGZpeGVkLgor
ICAgIGF1dG8gaWQgPSB0aHJlYWQtPmlkKCk7CisgICAgYXV0byogaG9sZGVyID0gbmV3IFRocmVh
ZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBo
b2xkZXIpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tl
cih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICAgICAgdGhyZWFkTWFwKCkuYWRkKGlkLCBob2xkZXIp
OwogICAgIH0KKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xkZXI6OmRl
c3RydWN0KHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
Y3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBiM2ZmYTdjZjcxOTNhNjA5
ODBkZTcyZTEwMGUwYTQwNzgyNjBkNjQyLi4yZTExMzg0NWE1ZDM3NGNlYTVlN2YxOWFhNzRkMGNi
YzQ2NzJlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvVGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZE1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJl
YWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKICNpZiBIQVZFKFFPU19DTEFTU0VTKQpAQCAt
OTQsNiArOTQsMTMgQEAgY29uc3QgY2hhciogVGhyZWFkOjpub3JtYWxpemVUaHJlYWROYW1lKGNv
bnN0IGNoYXIqIHRocmVhZE5hbWUpCiAjZW5kaWYKIH0KIAordm9pZCBUaHJlYWQ6OmluaXRpYWxp
emVJblRocmVhZCgpCit7CisgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IHN0YWNrKCkub3JpZ2lu
KCk7CisgICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jdXJyZW50
QXRvbWljU3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZTsKK30KKwogdm9p
ZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkK
IHsKICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uOwpAQCAtMTA1LDcgKzExMiw3IEBAIHZv
aWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRleHQp
CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5zdGFnZSA9PSBOZXdUaHJlYWRDb250ZXh0OjpTdGFn
ZTo6RXN0YWJsaXNoZWRIYW5kbGUpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhyZWFkIGhv
bGRlciB3aXRoIGVzdGFibGlzaGVkIElELgotICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxp
emUoY29udGV4dC0+dGhyZWFkLmdldCgpKTsKKyAgICAgICAgVGhyZWFkSG9sZGVyOjppbml0aWFs
aXplKGNvbnRleHQtPnRocmVhZC5jb3B5UmVmKCkpOwogCiAgICAgICAgIFRocmVhZDo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5uYW1lKTsKICAgICAgICAgZnVuY3Rp
b24gPSBXVEZNb3ZlKGNvbnRleHQtPmVudHJ5UG9pbnQpOwpAQCAtMTE2LDYgKzEyMyw3IEBAIHZv
aWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRleHQp
CiAgICAgICAgIGNvbnRleHQtPnN0YWdlID0gTmV3VGhyZWFkQ29udGV4dDo6U3RhZ2U6OkluaXRp
YWxpemVkOwogICAgICAgICBjb250ZXh0LT5jb25kaXRpb24uc2lnbmFsKCk7CiAjZW5kaWYKKyAg
ICAgICAgY29udGV4dC0+dGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsKICAgICB9CiAKICAg
ICBBU1NFUlQoIVRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNFbXB0eSgpKTsKQEAgLTE1NSwx
NCArMTYzLDYgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciogbmFt
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGVudHJ5UG9pbnQpCiAgICAgcmV0dXJuIFdURk1vdmUodGhy
ZWFkKTsKIH0KIAotVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQotewotICAgIFRo
cmVhZEhvbGRlciogZGF0YSA9IFRocmVhZEhvbGRlcjo6Y3VycmVudCgpOwotICAgIGlmIChkYXRh
KQotICAgICAgICByZXR1cm4gJmRhdGEtPnRocmVhZCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBzdGF0aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRGcm9tVGhyZWFkR3JvdXAoKQogewog
I2lmIE9TKFdJTkRPV1MpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBUaHJlYWQ6OmRpZEV4aXQo
KQogICAgICAgICAgICAgdGhyZWFkR3JvdXAtPm1fdGhyZWFkcy5yZW1vdmUoKnRoaXMpOwogICAg
ICAgICB9CiAgICAgfQorICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKKyAg
ICAgICAgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3RyaW5n
VGFibGUpOworCiAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBzYXkgInRocmVhZCBpcyBleGl0ZWQi
IGFmdGVyIHVucmVnaXN0ZXJpbmcgdGhyZWFkcyBmcm9tIHRocmVhZCBncm91cHMuCiAgICAgLy8g
U28gd2UgbmVlZCB0byBzZXBhcmF0ZSBtX2lzU2h1dHRpbmdEb3duIGZyb20gbV9kaWRFeGl0Lgog
ICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CkBAIC0yNzcs
OSArMjgwLDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKIHsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXpl
S2V5LCBbXSB7Ci0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKTsKICAgICAg
ICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwotICAgICAgICB3dGZUaHJlYWRE
YXRhKCk7CisgICAgICAgIFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICBpbml0aWFsaXplRGF0
ZXMoKTsKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmgKaW5kZXggZmY1MGJmYTg5Yjc2OGJjMDgxOGM2Mzk4OWQyZmYzZjVl
MmM0MTkyNy4uMTdiMzMwMGY5Y2VkYmJmZTA1MDQxZTE3OTgzYzk2ODQzMzU1ZGFmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3Rl
cnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRz
Lmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkSG9s
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC01MCwxMiArNTIsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBj
bGFzcyBBYnN0cmFjdExvY2tlcjsKK2NsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogY2xhc3MgVGhy
ZWFkTWVzc2FnZURhdGE7CiAKLWVudW0gY2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1bHQ7Cit1c2lu
ZyBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSB2b2lkICgqKShBdG9taWNTdHJpbmdUYWJs
ZSopOwogCi11c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Ci10eXBlZGVmIHZvaWQg
KCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOworZW51bSBjbGFzcyBUaHJlYWRHcm91
cEFkZFJlc3VsdDsKIAogY2xhc3MgVGhyZWFkR3JvdXA7CiBjbGFzcyBUaHJlYWRIb2xkZXI7CkBA
IC02NSw2ICs2Nyw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkR3JvdXA7CiAgICAg
ZnJpZW5kIGNsYXNzIFRocmVhZEhvbGRlcjsKKyAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5n
VGFibGU7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRocmVhZCgpOwogCkBAIC03Myw4ICs3
Niw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+
IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IGNyZWF0ZShj
b25zdCBjaGFyKiB0aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgLy8gUmV0
dXJucyBUaHJlYWQgb2JqZWN0LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFk
JiBjdXJyZW50KCk7Ci0gICAgc3RhdGljIFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOworICAg
IHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFkSWRlbnRp
ZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJvdXQg
aWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3VsZCBr
bm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJlCkBA
IC0xNDEsMTUgKzE0Myw1OSBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8VGhyZWFkPiB7CiAgICAgICAgIHJldHVybiBtX3N0YWNrOwogICAgIH0KIAorICAgIEF0
b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5n
VGFibGUqIHNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShBdG9taWNTdHJpbmdUYWJsZSogYXRv
bWljU3RyaW5nVGFibGUpCisgICAgeworICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogb2xkQXRv
bWljU3RyaW5nVGFibGUgPSBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgbV9j
dXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBhdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgcmV0
dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxlOworICAgIH0KKworI2lmIEVOQUJMRShTVEFDS19TVEFU
UykKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgc3RhY2tTdGF0cygpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9zdGFja1N0YXRzOworICAgIH0KKyNlbmRpZgorCisgICAgdm9pZCog
c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2
ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9pZCBzZXRTYXZlZFN0YWNr
UG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50cnkpCisgICAgeworICAg
ICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5
OworICAgIH0KKworICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOworICAgIH0KKworICAgIHZvaWQgc2V0U2F2ZWRM
YXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQorICAgIHsKKyAgICAgICAgbV9zYXZlZExh
c3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsKKyAgICB9CisKKyAgICB2b2lkKiBtX2FwaURhdGEg
eyBudWxscHRyIH07CisKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbWFjaFRocmVh
ZCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1UaHJlYWQ7IH0KICNlbmRpZgogCiAgICAgc3RydWN0IE5l
d1RocmVhZENvbnRleHQ7CiAgICAgc3RhdGljIHZvaWQgZW50cnlQb2ludChOZXdUaHJlYWRDb250
ZXh0Kik7Ci1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIFRocmVhZCgpOwogCisgICAgc3RhdGlj
IFJlZjxUaHJlYWQ+IGNyZWF0ZUN1cnJlbnRUaHJlYWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemVJ
blRocmVhZCgpOworCiAgICAgLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgVGhyZWFkIGVz
dGFibGlzaG1lbnQgaW1wbGVtZW50YXRpb24uCiAgICAgYm9vbCBlc3RhYmxpc2hIYW5kbGUoTmV3
VGhyZWFkQ29udGV4dCopOwogCkBAIC0yMTMsNiArMjU5LDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICNlbHNlCiAjZXJyb3IgVW5rbm93
biBTeXN0ZW0KICNlbmRpZgorCisgICAgQXRvbWljU3RyaW5nVGFibGUqIG1fY3VycmVudEF0b21p
Y1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2RlZmF1
bHRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZURl
c3RydWN0b3IgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgeyBudWxscHRyIH07CisKKyNp
ZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCisgICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMgbV9z
dGFja1N0YXRzOworI2VuZGlmCisgICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRy
eSB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiBtX3NhdmVkTGFzdFN0YWNrVG9wOwogfTsKIAogLy8g
VGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZHMuCkBAIC0yMjMsNiAr
Mjc5LDEwIEBAIGlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQogICAgIHJl
dHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgpOwogfQogCitpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1
cnJlbnQoKQoreworICAgIHJldHVybiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQoKS50aHJlYWQoKTsK
K30KIAogLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlbWFpbiBiZWNhdXNlIHRo
ZXkgYXJlIHVzZWQgZnJvbSBXZWJLaXQgV2luZG93cyBzdXBwb3J0IGxpYnJhcnksCiAvLyBXZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zLmRsbC4gV2hlbiB1cGRhdGluZyB0aGUgc3VwcG9ydCBsaWJy
YXJ5LCB3ZSBzaG91bGQgdXNlIG5ldyBBUEkgaW5zdGVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oCmluZGV4IDMwYzQ5OWZkYTljYWUxZjZkZjY0YzFkNGVhYTZjYjViNmY5ODE3NzIu
LjZlODhhYTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMzMGM2ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTQ1LDYgKzQ1LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7
CiAKK3VzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKK3VzaW5nIFRocmVhZEZ1bmN0
aW9uID0gdm9pZCAoKikodm9pZCogYXJndW1lbnQpOworCiAjaWYgVVNFKFBUSFJFQURTKQogdXNp
bmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUgPSBwdGhyZWFkX3Q7CiB1c2luZyBQbGF0Zm9ybU11dGV4
ID0gcHRocmVhZF9tdXRleF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
UHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4
IDEyZDdjNzEzODYxOTJlOGY0NTU3ZTMzZjI5YjM1MjE5ODc2NWU3OGYuLmNmZWVhYmIyMzg4ZjBm
YmNlZTU0Mjg2MTA1MWJjY2Q2YTdlODFhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAKQEAgLTI4NiwxOCArMjg2LDE2IEBAIHZvaWQgVGhyZWFkOjpkZXRhY2goKQogICAgICAg
ICBkaWRCZWNvbWVEZXRhY2hlZCgpOwogfQogCi1UaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCi17
Ci0gICAgaWYgKFRocmVhZCogY3VycmVudCA9IGN1cnJlbnRNYXlCZU51bGwoKSkKLSAgICAgICAg
cmV0dXJuICpjdXJyZW50OwogCitSZWY8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZUN1cnJlbnRUaHJl
YWQoKQorewogICAgIC8vIE5vdCBhIFdURi1jcmVhdGVkIHRocmVhZCwgVGhyZWFkSWRlbnRpZmll
ciBpcyBub3QgZXN0YWJsaXNoZWQgeWV0LgogICAgIFJlZjxUaHJlYWQ+IHRocmVhZCA9IGFkb3B0
UmVmKCpuZXcgVGhyZWFkKCkpOwogICAgIHRocmVhZC0+ZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZp
Y0hhbmRsZShwdGhyZWFkX3NlbGYoKSk7CiAgICAgdGhyZWFkLT5tX3N0YWNrID0gU3RhY2tCb3Vu
ZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpOwotICAgIFRocmVhZEhvbGRlcjo6aW5pdGlh
bGl6ZSh0aHJlYWQuZ2V0KCkpOworICAgIHRocmVhZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAg
ICAgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRFdmVuSWZOb25XVEZDcmVhdGVkKCk7Ci0gICAgcmV0
dXJuIHRocmVhZC5nZXQoKTsKKyAgICByZXR1cm4gdGhyZWFkOwogfQogCiBUaHJlYWRJZGVudGlm
aWVyIFRocmVhZDo6Y3VycmVudElEKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IDA1MjNh
MmU2YmI1ZjY2MjZhYzhjMDRjOTI4OWEwNWU1N2Y1ZTAxNTAuLmU5MzFkZmZiOGY0ZGJkMDdlOGE2
MjQ1ZDI3M2I2ODM4MzRiMzgxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1dpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcApAQCAtMjQzLDEx
ICsyNDMsOCBAQCBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ2lzdGVycykKICAgICByZXR1cm4gc2l6ZW9mKENPTlRFWFQpOwogfQogCi1UaHJlYWQmIFRo
cmVhZDo6Y3VycmVudCgpCitSZWY8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZUN1cnJlbnRUaHJlYWQo
KQogewotICAgIGlmIChUaHJlYWQqIGN1cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAqY3VycmVudDsKLQogICAgIC8vIE5vdCBhIFdURi1jcmVhdGVkIHRocmVhZCwg
VGhyZWFkSWRlbnRpZmllciBpcyBub3QgZXN0YWJsaXNoZWQgeWV0LgogICAgIFJlZjxUaHJlYWQ+
IHRocmVhZCA9IGFkb3B0UmVmKCpuZXcgVGhyZWFkKCkpOwogCkBAIC0yNTcsOSArMjU0LDkgQEAg
VGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQogCiAgICAgdGhyZWFkLT5lc3RhYmxpc2hQbGF0Zm9y
bVNwZWNpZmljSGFuZGxlKGhhbmRsZSwgY3VycmVudElEKCkpOwogICAgIHRocmVhZC0+bV9zdGFj
ayA9IFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKTsKLSAgICBUaHJlYWRI
b2xkZXI6OmluaXRpYWxpemUodGhyZWFkLmdldCgpKTsKKyAgICB0aHJlYWQtPmluaXRpYWxpemVJ
blRocmVhZCgpOwogICAgIGluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRl
ZCgpOwotICAgIHJldHVybiB0aHJlYWQuZ2V0KCk7CisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAog
VGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2U3N2QyNTg1ZjhhNjE0NDRmOTc0
ZTdjM2I4YWQxM2ExY2I2NjkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldURlRocmVh
ZERhdGEuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+Ci0KLSNp
ZiBVU0UoV0VCX1RIUkVBRCkKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2VuZGlmCi0K
LW5hbWVzcGFjZSBXVEYgewotCi0jaWYgIUhBVkUoRkFTVF9UTFMpCi1UaHJlYWRTcGVjaWZpYzxX
VEZUaHJlYWREYXRhPiogV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YTsKLSNlbmRpZgotCi1XVEZU
aHJlYWREYXRhOjpXVEZUaHJlYWREYXRhKCkKLSAgICA6IG1fc3RhY2tCb3VuZHMoU3RhY2tCb3Vu
ZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpKQotICAgICwgbV9zYXZlZExhc3RTdGFja1Rv
cChzdGFjaygpLm9yaWdpbigpKQotewotICAgIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoKnRo
aXMpOwotICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gbV9kZWZhdWx0QXRvbWljU3Ry
aW5nVGFibGU7Ci19Ci0KLVdURlRocmVhZERhdGE6On5XVEZUaHJlYWREYXRhKCkKLXsKLSAgICBp
ZiAobV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpCi0gICAgICAgIG1fYXRvbWljU3RyaW5n
VGFibGVEZXN0cnVjdG9yKG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlKTsKLX0KLQotI2lmIEhB
VkUoRkFTVF9UTFMpCi1XVEZUaHJlYWREYXRhJiBXVEZUaHJlYWREYXRhOjpjcmVhdGVBbmRSZWdp
c3RlckZvckdldHNwZWNpZmljRGlyZWN0KCkKLXsKLSAgICBXVEZUaHJlYWREYXRhKiBkYXRhID0g
bmV3IFdURlRocmVhZERhdGE7Ci0gICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9U
SFJFQURfREFUQV9LRVksIGRhdGEpOwotICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoV1RGX1RIUkVB
RF9EQVRBX0tFWSwgW10odm9pZCogZGF0YSl7Ci0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxX
VEZUaHJlYWREYXRhKj4oZGF0YSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICpkYXRhOwotfQotI2Vu
ZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RG
VGhyZWFkRGF0YS5oIGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyYTVmZjgxNzY2ZDgzYzU2ZGJjYWNiNjNiYWU2ZTI2MDhhNjJj
MzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0K
LSNpZm5kZWYgV1RGVGhyZWFkRGF0YV9oCi0jZGVmaW5lIFdURlRocmVhZERhdGFfaAotCi0jaW5j
bHVkZSA8d3RmL0Zhc3RUTFMuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KLSNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgotI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3Mg
QXRvbWljU3RyaW5nVGFibGU7Ci0KLXR5cGVkZWYgdm9pZCAoKkF0b21pY1N0cmluZ1RhYmxlRGVz
dHJ1Y3RvcikoQXRvbWljU3RyaW5nVGFibGUqKTsKLQotY2xhc3MgV1RGVGhyZWFkRGF0YSB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV1RGVGhyZWFkRGF0YSk7Ci1wdWJsaWM6Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIFdURlRocmVhZERhdGEoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
fldURlRocmVhZERhdGEoKTsKLQotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdU
YWJsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7
Ci0gICAgfQotCi0gICAgQXRvbWljU3RyaW5nVGFibGUqIHNldEN1cnJlbnRBdG9taWNTdHJpbmdU
YWJsZShBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUpCi0gICAgewotICAgICAg
ICBBdG9taWNTdHJpbmdUYWJsZSogb2xkQXRvbWljU3RyaW5nVGFibGUgPSBtX2N1cnJlbnRBdG9t
aWNTdHJpbmdUYWJsZTsKLSAgICAgICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBhdG9t
aWNTdHJpbmdUYWJsZTsKLSAgICAgICAgcmV0dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxlOwotICAg
IH0KLQotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjaygpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9zdGFja0JvdW5kczsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCi0gICAg
U3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHN0YWNrU3RhdHMoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fc3RhY2tTdGF0czsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHZvaWQqIHNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5OwotICAgIH0KLQotICAgIHZvaWQgc2V0U2F2ZWRTdGFja1BvaW50ZXJB
dFZNRW50cnkodm9pZCogc3RhY2tQb2ludGVyQXRWTUVudHJ5KQotICAgIHsKLSAgICAgICAgbV9z
YXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKLSAgICB9
Ci0KLSAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpCi0gICAgewotICAgICAgICByZXR1cm4g
bV9zYXZlZExhc3RTdGFja1RvcDsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNhdmVkTGFzdFN0YWNr
VG9wKHZvaWQqIGxhc3RTdGFja1RvcCkKLSAgICB7Ci0gICAgICAgIG1fc2F2ZWRMYXN0U3RhY2tU
b3AgPSBsYXN0U3RhY2tUb3A7Ci0gICAgfQotCi0gICAgdm9pZCogbV9hcGlEYXRhIHsgbnVsbHB0
ciB9OwotCi1wcml2YXRlOgotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9taWNT
dHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKLSAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9kZWZhdWx0
QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07Ci0gICAgQXRvbWljU3RyaW5nVGFibGVEZXN0
cnVjdG9yIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIHsgbnVsbHB0ciB9OwotCi0gICAg
U3RhY2tCb3VuZHMgbV9zdGFja0JvdW5kczsKLSNpZiBFTkFCTEUoU1RBQ0tfU1RBVFMpCi0gICAg
U3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMgbV9zdGFja1N0YXRzOwotI2VuZGlmCi0gICAgdm9p
ZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSB7IG51bGxwdHIgfTsKLSAgICB2b2lkKiBt
X3NhdmVkTGFzdFN0YWNrVG9wOwotCi0jaWYgSEFWRShGQVNUX1RMUykKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFdURlRocmVhZERhdGEmIGNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3Bl
Y2lmaWNEaXJlY3QoKTsKLSNlbHNlCi0gICAgc3RhdGljIFdURl9FWFBPUlREQVRBIFRocmVhZFNw
ZWNpZmljPFdURlRocmVhZERhdGE+KiBzdGF0aWNEYXRhOwotI2VuZGlmCi0KLSAgICBmcmllbmQg
V1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgpOwotICAgIGZyaWVuZCBjbGFzcyBBdG9taWNT
dHJpbmdUYWJsZTsKLX07Ci0KLWlubGluZSBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCkK
LXsKLSAgICAvLyBXUlQgV2ViQ29yZToKLSAgICAvLyAgICBXVEZUaHJlYWREYXRhIGlzIHVzZWQg
b24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQKLSAgICAvLyAg
ICBvbiBzZWNvbmRhcnkgb25lcywgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3Igc3luY2hyb25pemF0
aW9uIGhlcmUuCi0gICAgLy8gV1JUIEphdmFTY3JpcHRDb3JlOgotICAgIC8vICAgIHd0ZlRocmVh
ZERhdGEoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygpLCBl
bnN1cmluZwotICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJlYWRf
b25jZSBsb2NrZWQgY29udGV4dC4KLSNpZiAhSEFWRShGQVNUX1RMUykKLSAgICBpZiAoIVdURlRo
cmVhZERhdGE6OnN0YXRpY0RhdGEpCi0gICAgICAgIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEg
PSBuZXcgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT47Ci0gICAgcmV0dXJuICoqV1RGVGhy
ZWFkRGF0YTo6c3RhdGljRGF0YTsKLSNlbHNlCi0gICAgaWYgKFdURlRocmVhZERhdGEqIGRhdGEg
PSBzdGF0aWNfY2FzdDxXVEZUaHJlYWREYXRhKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0
KFdURl9USFJFQURfREFUQV9LRVkpKSkKLSAgICAgICAgcmV0dXJuICpkYXRhOwotICAgIHJldHVy
biBXVEZUaHJlYWREYXRhOjpjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0KCk7
Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6V1RGVGhyZWFk
RGF0YTsKLXVzaW5nIFdURjo6d3RmVGhyZWFkRGF0YTsKLXVzaW5nIFdURjo6QXRvbWljU3RyaW5n
VGFibGU7Ci0KLSNlbmRpZiAvLyBXVEZUaHJlYWREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmNwcAppbmRleCBhNGUwM2RlM2FmNjU3YzY5Zjc0ZDE2MjUxZjAwMDczOTEzNmE1MzQ0
Li4yYTA2NTEyODNhOTcyNzFlNTc2YTIyMmRkZjAyMzIwZDA2YTBkMmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC0yMyw4ICsyMywxMCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogCi0jaW5jbHVkZSAiSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvbi5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKKyNpbmNsdWRlIDxtdXRl
eD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4KKwogI2luY2x1ZGUgImR0b2EuaCIKIAogbmFtZXNwYWNl
IFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAppbmRleCAzNTIy
NDg1ZDdiODQ3M2NjODBlNTI0MGE3MzJhMDU1M2M0OGJjMzQyLi4wNjNlNGVlYjdlNTdlNWNkODVi
MGExNzE5NTRkMzg5MjRjMTc3OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
SW1wbC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUHJpbnRTdHJlYW0uaCIKICNpbmNsdWRlICJUaHJlYWRpbmcuaCIKLSNpbmNs
dWRlICJXVEZUaHJlYWREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCiAj
aWYgVVNFKFdFQl9USFJFQUQpCkBAIC03Miw3ICs3MSw3IEBAIHVzaW5nIFN0cmluZ1RhYmxlSW1w
bCA9IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OwogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBTdHJpbmdU
YWJsZUltcGwmIHN0cmluZ1RhYmxlKCkKIHsKLSAgICByZXR1cm4gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCktPnRhYmxlKCk7CisgICAgcmV0dXJuIFRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCktPnRhYmxlKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Z1RhYmxlLmNwcAppbmRleCBmZThhNDg4NGRiN2U2NzhkZWQ2YWYzMmRkNDM3MTJlNTk1ZjNiOTM1
Li5mNmQ3OGYyYmU2ZjQ4ZjJhYTY4MmMwNWQxMGQyNDY0NjhiMGMyNGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5j
bHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCi12b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoV1RGVGhy
ZWFkRGF0YSYgZGF0YSkKK3ZvaWQgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShUaHJlYWQmIHRo
cmVhZCkKIHsKICNpZiBVU0UoV0VCX1RIUkVBRCkKICAgICAvLyBPbiBpT1MsIG9uZSBBdG9taWNT
dHJpbmdUYWJsZSBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgbWFpbiBVSSB0aHJlYWQgYW5kIHRoZSBX
ZWJUaHJlYWQuCkBAIC0zNywxNyArMzcsMTcgQEAgdm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3Jl
YXRlKFdURlRocmVhZERhdGEmIGRhdGEpCiAKICAgICBib29sIGN1cnJlbnRUaHJlYWRJc1dlYlRo
cmVhZCA9IGlzV2ViVGhyZWFkKCk7CiAgICAgaWYgKGN1cnJlbnRUaHJlYWRJc1dlYlRocmVhZCB8
fCBpc1VJVGhyZWFkKCkpCi0gICAgICAgIGRhdGEubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUg
PSBzaGFyZWRTdHJpbmdUYWJsZTsKKyAgICAgICAgdGhyZWFkLm1fZGVmYXVsdEF0b21pY1N0cmlu
Z1RhYmxlID0gc2hhcmVkU3RyaW5nVGFibGU7CiAgICAgZWxzZQotICAgICAgICBkYXRhLm1fZGVm
YXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICB0
aHJlYWQubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7
CiAKICAgICAvLyBXZSBkbyB0aGUgZm9sbG93aW5nIHNvIHRoYXQgaXRzIGRlc3RydWN0aW9uIGhh
cHBlbnMgb25seQogICAgIC8vIG9uY2UgLSBvbiB0aGUgbWFpbiBVSSB0aHJlYWQuCiAgICAgaWYg
KCFjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQpCi0gICAgICAgIGRhdGEubV9hdG9taWNTdHJpbmdU
YWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKKyAgICAgICAgdGhy
ZWFkLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRl
c3Ryb3k7CiAjZWxzZQotICAgIGRhdGEubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcg
QXRvbWljU3RyaW5nVGFibGU7Ci0gICAgZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3Rv
ciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OworICAgIHRocmVhZC5tX2RlZmF1bHRBdG9t
aWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKKyAgICB0aHJlYWQubV9hdG9t
aWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKICNl
bmRpZiAvLyBVU0UoV0VCX1RIUkVBRCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmdUYWJsZS5oCmluZGV4IDk0NGFlOTJiZGVjNDQzOWJmMDcwMTIxYjc4YTM1ZjVhODRmYzQwOWQu
LmQzYmM5Y2U1ZjZlMDcyNzc1NmNjOWViYmU0ZjEyNTM3ZmFhYjJiNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKQEAgLTI0LDE5ICsyNCwxOSBAQAogI2RlZmluZSBX
VEZfQXRvbWljU3RyaW5nVGFibGVfaAogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNs
dWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFN0cmluZ0ltcGw7CitjbGFzcyBUaHJlYWQ7
CiAKIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkF0b21pY1N0cmluZ1RhYmxlKCk7
CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGUoV1RGVGhyZWFkRGF0YSYpOworICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZShUaHJlYWQmKTsKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgdGFibGUoKSB7
IHJldHVybiBtX3RhYmxlOyB9CiAKIHByaXZhdGU6CkBAIC00Niw1ICs0Niw2IEBAIGNsYXNzIEF0
b21pY1N0cmluZ1RhYmxlIHsKIH07CiAKIH0KK3VzaW5nIFdURjo6QXRvbWljU3RyaW5nVGFibGU7
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmlu
ZGV4IDhhMDIzMGJhYmY5NWNiYTk3ZjlhOGY4NjI4MTlhYjQwZDE3ZmNlNDIuLjYzYjFlMGU1NzQx
MWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmNwcAppbmRleCBiOGZhZjVhOGQ3OTEwMmYyZWZkZDhiZGE2NDMxYzA3N2JmZjEzYmYwLi43NzM4
MjlkNWU3YjRlYjMzZDdiZTgzODA3MTZmOWEzMzM3MjZmNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpA
QCAtNjYsNyArNjUsNyBAQCBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKICAg
ICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBwZXIgdGhyZWFk
IC0gdGhpcyBtYWtlcyB0aGlzIGEgY29udmVuaWVudAogICAgIC8vIHBvaW50IHRvIGNhbGwgbWV0
aG9kcyB0aGF0IGludGVybmFsbHkgcGVyZm9ybSBhIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIHRo
YXQgaXMgbm90CiAgICAgLy8gdGhyZWFkc2FmZS4KLSAgICB3dGZUaHJlYWREYXRhKCk7CisgICAg
VGhyZWFkOjpjdXJyZW50KCk7CiAgICAgU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaAppbmRleCA2NmU4ZTk5MWUxMjk2MmI1NGZk
NzQzOTJkOTUyZTczMjhmZDY0MDkwLi5lYzI3MTFiNTIwNzI1MjMzMjRhNmZmMDQ3YzM2YmQzODcw
MGU4YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIFVTRShWSURFT1RPT0xCT1gpCiAKICNpbmNsdWRlIDxDb3JlTWVkaWEv
Q01UaW1lLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgog
I2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpp
bmRleCA2MTIyYjRmMmM1MGI2NGJhNWM3ZmZjOWRkZTNmNGRhNTYyOWEwMzg3Li5jOGYwNWExYTBh
ZWQ2MDJjYmQ4YzA5NGUwYTk3MjAzYWY5YzYwNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC03MDIsNyArNzAyLDcgQEAgc3Rh
dGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogewogICAgIHdlYlRocmVhZFN0YXJ0ZWQgPSBUUlVF
OwogCi0gICAgLy8gVGhyZWFkR2xvYmFsRGF0YSB0b3VjaGVzIEF0b21pY1N0cmluZywgd2hpY2gg
cmVxdWlyZXMgV1RGVGhyZWFkRGF0YSBhbmQgVGhyZWFkaW5nIGluaXRpYWxpemF0aW9uLgorICAg
IC8vIFRocmVhZEdsb2JhbERhdGEgdG91Y2hlcyBBdG9taWNTdHJpbmcsIHdoaWNoIHJlcXVpcmVz
IFRocmVhZGluZyBpbml0aWFsaXphdGlvbi4KICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKIAogICAgIC8vIEluaXRpYWxpemUgQXRvbWljU3RyaW5nIG9uIHRoZSBtYWluIHRocmVhZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA0MjVjOTI0OGQ4NzA0
ODI3YmIwZTAzODIxYTJhZThkYzhhYWMwZDcwLi42ODFhMWVmNzU0ODEwMGQxYTI5NjYwOWU2MmNi
N2Y5YWZiNjJlMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBA
IC0yMTYsNyArMjE2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAgICAg
Ly8gV2UgY2Fubm90IGxldCBhbnkgb2JqZWN0cyBzdXJ2aXZlIHBhc3QgdGhyZWFkIGV4aXQsIGJl
Y2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgcnVuIEdDIG9yIG90aGVyd2lzZSBkZXN0cm95IHRo
ZW0uCiAgICAgd29ya2VyR2xvYmFsU2NvcGVUb0RlbGV0ZSA9IG51bGxwdHI7CiAKLSAgICAvLyBD
bGVhbiB1cCBXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhIGJlZm9yZSBXVEY6OldURlRocmVhZERh
dGEgZ29lcyBhd2F5IQorICAgIC8vIENsZWFuIHVwIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEg
YmVmb3JlIFdURjo6VGhyZWFkIGdvZXMgYXdheSEKICAgICB0aHJlYWRHbG9iYWxEYXRhKCkuZGVz
dHJveSgpOwogCiAgICAgLy8gVGhlIHRocmVhZCBvYmplY3QgbWF5IGJlIGFscmVhZHkgZGVzdHJv
eWVkIGZyb20gbm90aWZpY2F0aW9uIG5vdywgZG9uJ3QgdHJ5IHRvIGFjY2VzcyAidGhpcyIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316711</attachid>
            <date>2017-07-29 08:43:20 -0700</date>
            <delta_ts>2017-07-29 09:14:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170730004319.patch</filename>
            <type>text/plain</type>
            <size>70911</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi4wY2YwNGJmMjY0YzY4NzAx
ZTk2OTg2OGVhYmUxMmI0ZTliNTNlZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2su
aDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAg
ICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNv
bW1pdHRlZFN0YWNrQnl0ZUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
IChKU0M6OlZNOjppc1NhZmVUb1JlY3Vyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFj
a0NhcGFjaXR5Rm9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlKToKKwog
MjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBBU1NFUlRJT04gRkFJTEVEOiBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgY2FuZGlkYXRlLT5vcCgpID09
IFBoYW50b21TcHJlYWQgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhT
cHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNDY1ZDJkZWU1MDFlYzU4YTE5OWY1MWRlZGRlMjFjODliOWVmMDlhMy4uMDVm
OGYxZDU0M2QxZjE5NzJkMmQzODc2NzYyNWM5ODNjYjA2NzllNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBA
QAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL0xvY2tBbGdvcml0aG0uaDoKKyAgICAgICAgKiB3dGYvTG9ja0FsZ29yaXRobUlubGluZXMu
aDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90
LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNr
U3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6CisgICAgICAgIChXVEY6OlN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0
YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6
OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5
b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRlci5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9U
aHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpUaHJlYWRIb2xkZXIp
OgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwpOgorICAgICAg
ICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgorICAgICAgICAoV1RGOjpU
aHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnREeWluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRo
cmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZy5j
cHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0
KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RG
OjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRTYXZlZFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3Ap
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNrVG9wKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6
OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3Vy
cmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJlbW92ZWQuCisgICAgICAg
ICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
VGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaDoK
KwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3YWl0IGluIHNvbWUgcGxh
dGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJlYWRTdGFja0JvdW5kcyhQ
bGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyNzRkMjliMGNjMTljMDA4YjFm
YjcyZmRjNTg4MzkzMGUwMmE0MS4uNTEyZTQ4YWRiNTY0Mzc5ZDAxZTYyZTFhOWEzMTlkMGNiOTM0
MGJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA3LTI5ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERh
dGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisKIDIwMTctMDctMjggIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBTcGxpdC11cCBhbmQgY2xlYW51cCBGZXRj
aCBJREwgZmlsZXMgaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIHVubmVjZXNzYXJ5IGpzIGJ1
aWx0aW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDViMTAwYzc1
ZTE1YjlmNDc2NjI5NDRhYTBmYzViYjhkZDA5ZjQ2YzUuLmJhZWIxNzhkNDgxZGJlZGYyYmVkM2Rm
NmQ0ZTYzZmQxODE1NmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
CkBAIC0xNDEsMTUgKzE0MSwxNSBAQCAtIChKU1ZhbHVlICopZ2xvYmFsT2JqZWN0CiAKICsgKEpT
Q29udGV4dCAqKWN1cnJlbnRDb250ZXh0CiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0
YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0
aHJlYWQubV9hcGlEYXRhOwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5jb250ZXh0IDogbmls
OwogfQogCiArIChKU1ZhbHVlICopY3VycmVudFRoaXMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0
aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAo
Q2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQg
PSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+dGhp
c1ZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNTcsOCAr
MTU3LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiAKICsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEu
bV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAg
Q2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwog
ICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnktPmNhbGxlZVZhbHVlIGluQ29udGV4dDpbSlNDb250
ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNjYsOCArMTY2LDggQEAgKyAoSlNWYWx1ZSAqKWN1
cnJlbnRDYWxsZWUKIAogKyAoTlNBcnJheSAqKWN1cnJlbnRBcmd1bWVudHMKIHsKLSAgICBXVEZU
aHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0
YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5
ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAKICAgICBpZiAoIWVudHJ5KQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjk0LDIxICsyOTQsMjEgQEAgLSAoQk9PTClib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb25WYWx1ZQogCiAtICh2b2lkKWJl
Z2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tEYXRhIGNhbGxlZVZh
bHVlOihKU1ZhbHVlUmVmKWNhbGxlZVZhbHVlIHRoaXNWYWx1ZTooSlNWYWx1ZVJlZil0aGlzVmFs
dWUgYXJndW1lbnRDb3VudDooc2l6ZV90KWFyZ3VtZW50Q291bnQgYXJndW1lbnRzOihjb25zdCBK
U1ZhbHVlUmVmICopYXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OwogICAgIFtzZWxmIHJldGFpbl07Ci0gICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2Fs
bGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgQ2FsbGJhY2tEYXRhICpwcmV2
U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICAqY2FsbGJhY2tE
YXRhID0gKENhbGxiYWNrRGF0YSl7IHByZXZTdGFjaywgc2VsZiwgW3NlbGYuZXhjZXB0aW9uIHJl
dGFpbl0sIGNhbGxlZVZhbHVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywg
bmlsIH07Ci0gICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgdGhy
ZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IG5pbDsK
IH0KIAogLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFj
a0RhdGEKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgp
OworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgc2VsZi5leGNl
cHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsKICAgICBbY2FsbGJhY2tE
YXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07CiAgICAgW2NhbGxiYWNrRGF0YS0+Y3Vy
cmVudEFyZ3VtZW50cyByZWxlYXNlXTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9IGNhbGxi
YWNrRGF0YS0+bmV4dDsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0
OwogICAgIFtzZWxmIHJlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IGY2NWVmODQxYTdjMWUwMDZhMmVhYjcxNTI0ZmRkZThhNmFhMmEyNjcuLjNkNGJiZTM2
ZTYzMzg1OTFhMzg4Y2M2NTRmYjA1ODc4ODNkYWI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFuY2VU
aHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKFZNKiB2bSkKIHsK
LSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpCisgICAgaWYgKHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IFdURjo6
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKHZtLT5pc1NoYXJlZEluc3RhbmNlKCkgJiYgIWlzVmFsaWRTaGFyZWRJ
bnN0YW5jZVRocmVhZFN0YXRlKHZtKSkKQEAgLTIwMjMsNyArMjAyMyw3IEBAIEhlYXA6OlRpY2tl
dCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVzdCkKICAgICBzdG9wSWZO
ZWNlc3NhcnkoKTsKICAgICAKICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSBXVEY6OlRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Ro
cmVhZExvY2spOwogICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBUaGF0
IG9ubHkgd29ya3MgaWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDViMzAy
NjRjN2Y0MTFlMzhkNTgwZjU1ZDVkN2QxZDY4OWIzNjAxZWIuLjg4MjNlNmY2MDE2MTEyYjQ3Mzlm
YTAyOGY0MzFiYzdlOGQ3YzhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCkBAIC00MSwxNCArNDEsMTMgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGlu
Z1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHBy
b2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7CkBAIC02NCw3ICs2Myw3
IEBAIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjCiBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtNzQsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxl
U3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJF
cnJvciYgZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9n
cmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2Us
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwpAQCAtOTIsNyArOTEsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2
bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVh
ZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmlsaW5n
IHByb2ZpbGUoc291cmNlKTsKQEAgLTE2Nyw3ICsxNjYsNyBAQCBzdGF0aWMgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4
ZWNTdAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMt
PnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsK
IAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5h
bWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTE3OCw3ICsxNzcsNyBAQCBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBT
eW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjA1
LDcgKzIwNCw3IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBK
U0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywKIEpTSW50ZXJuYWxQcm9taXNlKiBs
b2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52
bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5
T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywg
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsyMTUsNyBAQCBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERh
dGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNT
dHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7
CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0p
OwpAQCAtMjM0LDcgKzIzMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiBKU1ZhbHVlIGxp
bmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CkBAIC0yNDQsNyArMjQz
LDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmEKIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZt
KCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpLT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVLZXks
IHNjcmlwdEZldGNoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmNwcAppbmRleCA5OTI1NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2Li5k
NTUyZDBiMWY2Mjg3MTVhMjYzNmFiNzczN2VkZmM2MTk3MzRjMGM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoVk0qIHZtKQogewog
ICAgIC8vIENoZWNrIHRoZSBpZGVudGlmaWVyIHRhYmxlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUg
dGhyZWFkc3BlY2lmaWMgbWF0Y2hlcyB0aGUKICAgICAvLyB2bSdzIGlkZW50aWZpZXIgdGFibGUu
Ci0gICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZt
LT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwogfQogCiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggOWVmMTQzYWQ0OGU3MWQyOGIxN2Jh
NDE2ZmEzYjE0YmNiZGI3NDVhYS4uODUwNzNiNmQyOTViNTk5NjNhMjEzZDUyNDU1Yjg0YjRhZDE2
NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCkKICAgICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUoKTsKICNlbmRpZgog
ICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7Ci0gICAgICAgIFdURlRocmVhZERhdGEm
IHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHRocmVhZERhdGEuc2V0U2F2
ZWRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkLnNldFNhdmVk
TGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBiYTZjNDRhNWRmNTE0ZGU1MTdjOWEy
NTg3NTYxYTk4YTlkOTI0MTBlLi5jMmM4Mjc2YWMzMjkwZWYxNmM5ZmNlNGFmYTg0YTM5ZjYwMGNi
MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTEyNyw5
ICsxMjcsOSBAQCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIGlmICghbV92bSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3
dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsK
ICAgICBBU1NFUlQoIW1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0gICAgbV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlID0gdGhyZWFkRGF0YS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV92
bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0g
dGhyZWFkLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKICAgICBBU1NFUlQobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogICAgIGlmICht
X3ZtLT5oZWFwLmhhc0FjY2VzcygpKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNMb2NrOjpk
aWRBY3F1aXJlTG9jaygpCiAgICAgdm9pZCogcCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUgY3Vy
cmVudCBzdGFjayBwb2ludGVyLgogICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShw
KTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0YWNr
VG9wKCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tU
b3AoKSk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVh
ZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpT
TG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKICAgICB9CiAKICAgICBpZiAobV9lbnRyeUF0b21pY1N0
cmluZ1RhYmxlKSB7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICAgICAgVGhyZWFkOjpjdXJy
ZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fZW50cnlBdG9taWNTdHJpbmdUYWJs
ZSk7CiAgICAgICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IG51bGxwdHI7CiAgICAgfQog
fQpAQCAtMjI1LDkgKzIyNSw5IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BB
bGxMb2NrcyogZHJvcHBlcikKIAogICAgIGRyb3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tEcm9w
RGVwdGgpOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0
YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6
Y3VycmVudCgpOworICAgIHRocmVhZC5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3Zt
LT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKIAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291
bnQgPSBtX2xvY2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CkBAIC0yNTIs
OSArMjUyLDkgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3Bw
ZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0aDsK
IAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAg
bV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZERhdGEuc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQo
KTsKKyAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9j
a3MoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBjOTFk
YWVjYmNkZDY1YTk2ZDYzM2YzMzE1M2Q1NGE5NDlhZDY1NzNiLi5kZWEwNTAyOGNkNzM1ZWI2Mzkx
NzQ3MGMxNTIyYjE4MjQ1ZGU1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xv
Y2suaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMjUxMDI0MzQ2NDM3N2E0NDlh
ZmVjYmM1OTlmZTk4NDI3MDlmZTdhLi4wNjk1OWJhNDY1ZTE5MmJlNjNhODE4OGQ5ZmMyMzc3Zjdj
ZTk2OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTQsNyArMTE0
LDYgQEAKICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKQEAgLTE3Niw3ICsxNzUs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB0b3BW
TUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkpCiAgICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFByb21p
c2VEZWZlcnJlZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlw
ZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcg
QXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBE
ZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9t
aWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5
TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRG
b3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQpAQCAtMjExLDEz
ICsyMTAsMTMgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9zaGFkb3dDaGlja2VuKHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKSkKIHsK
ICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Ci0gICAgU3RhY2tCb3Vu
ZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBTdGFja0JvdW5kcyBzdGFj
ayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9u
ZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNr
VG9wKHN0YWNrLm9yaWdpbigpKTsKIAogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVw
IGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7
Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJp
bmdUYWJsZSk7CisgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJp
bmdUYWJsZSA9IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSht
X2F0b21pY1N0cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0eU5hbWVzID0gbmV3IENvbW1vbklkZW50
aWZpZXJzKHRoaXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVy
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpAQCAtMjcwLDcgKzI2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRo
aXMpOwogCi0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShl
eGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVhZDo6Y3VycmVudCgpLnNl
dEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUp
OwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8SklU
VGh1bmtzPigpOwpAQCAtNjcyLDcgKzY3MSw3IEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVTdGFj
a0xpbWl0cygpCiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tMaW1p
dDsKICNlbmRpZgogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKTsKICAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSA9IE9wdGlvbnM6OnJl
c2VydmVkWm9uZVNpemUoKTsKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGVuc3VyZWQg
dGhhdCBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11bVJlc2VydmVab25lU2l6
ZSBhdAogICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwgYW5kIHRoZSBvcHRpb24g
dmFsdWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFmdGVyLgpAQCAtODg2LDkg
Kzg4NSw5IEBAIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQogI2lmIEVOQUJM
RShKSVQpCiAgICAgLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjaywgd2UgZG9uJ3Qga25vdyBob3cg
bWFueSBzdGFjayBwYWdlcyBhcmUgYWN0dWFsbHkKICAgICAvLyBjb21taXR0ZWQuIFNvLCB3ZSB1
c2UgdGhlIGN1cnJlbnQgc3RhY2sgdXNhZ2UgYXMgYW4gZXN0aW1hdGUuCi0gICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGludDhf
dCogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1cnJlbnQpOwotICAgIGlu
dDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4od3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCkub3JpZ2luKCkpOworICAgIGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
OF90Kj4oVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5vcmlnaW4oKSk7CiAgICAgcmV0dXJuIGhp
Z2ggLSBjdXJyZW50OwogI2Vsc2UKICAgICByZXR1cm4gQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0
ZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBlZTIzMmE3ZjIxY2Vj
ZDAxZGY3ZTkzMmY4YjUyZTc0ZTNlNDhmYTZkLi45ZmI0ZDhiZTQyYzFmNzhkMWViMGU1MDlkYmEy
OTM0MTZmM2JkZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY4LDcgKzY4
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3Ry
eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdFWFBf
VFJBQ0lORykKQEAgLTI0Myw3ICsyNDIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIC8v
IFdlYkNvcmUgaGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVhZHMgdG8gVk1zOwogICAg
IC8vIGVpdGhlciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWQoKSBzaG91bGQgb25seSBiZSBjYWxs
ZWQgb25jZQogICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRoZSAnZGVmYXVsdCcgVk0gKGl0
IHVzZXMgdGhlCi0gICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUg
ZnJvbSB3dGZUaHJlYWREYXRhKS4KKyAgICAvLyB0aHJlYWQncyBkZWZhdWx0IHN0cmluZyB1bmlx
dWluZyB0YWJsZSBmcm9tIFRocmVhZDo6Y3VycmVudCgpKS4KICAgICAvLyBBUEkgY29udGV4dHMg
Y3JlYXRlZCB1c2luZyB0aGUgbmV3IGNvbnRleHQgZ3JvdXAgYXdhcmUgaW50ZXJmYWNlCiAgICAg
Ly8gY3JlYXRlIEFQSUNvbnRleHRHcm91cCBvYmplY3RzIHdoaWNoIHJlcXVpcmUgbGVzcyBsb2Nr
aW5nIG9mIEpTQwogICAgIC8vIHRoYW4gdGhlIG9sZCBzaW5nbGV0b24gQVBJU2hhcmVkIFZNIGNy
ZWF0ZWQgZm9yIHVzZSBieQpAQCAtNjkxLDcgKzY5MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253
YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dp
bmdEb3dud2FyZCgpKTsKICAgICAgICAgdm9pZCogY3VyciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCZjdXJyKTsKICAgICAgICAgcmV0dXJuIGN1cnIgPj0gc3RhY2tMaW1pdDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRleCBj
MmQ5YmRhMTg4YzQ3NzIwMjU2ZDQwMzA2NDgyODZlYzQ1ZTMxYzU5Li5kMTFhOGZmYTY2ZGI1ZmUz
MGZiOWY0OWY0NTMxMzgzNmI3OGQyMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVk1FbnRyeVNjb3BlOjpW
TUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICwg
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVCghRGlzYWxsb3dWTVJl
ZW50cnk6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHd0ZlRocmVh
ZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0uZW50
cnlTY29wZSkgewogICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAppbmRleCA1YTc3NjE5NTBlMGNmNmIyODg1NjAx
OTMxYWY2YjcxYTNiZTAyZDc4Li5iYzBjMjVmOTFlMmMxNzYxYTIxY2EyMGViMDg4MmEwOTNhMjE1
MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgVk06OmVuc3VyZVN0YWNrQ2FwYWNpdHlG
b3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBBU1NF
UlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAg
cmV0dXJuIG5ld1RvcE9mU3RhY2sgPj0gbV9zb2Z0U3RhY2tMaW1pdDsKICNlbHNlCiAgICAgcmV0
dXJuIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChuZXdUb3BPZlN0YWNrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCAzYTExMDkwZDE5MDkzY2Nl
YmU4MDliYzcyZDNhNmE1MDJlOWM0YjVkLi43MjIyY2MwNDRmMGFkYzk4NzgwYTk5ZjA2YTNlNDli
YjQyM2RlYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1
ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtODgyLDcgKzg4Miw3
IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgaWYgKCFt
X3N0YWNrTGltaXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAg
ICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAgICAg
ICAgIGludDhfdCogbGltaXQgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KG1fc3RhY2tMaW1p
dCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IGxpbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDg2MTY3MWM0YWEyODEwYzFlMzNiNTdiMzgxM2YwOGE3
MGJkYjNlYi4uZTE0ZTBkYTM3ODVlODc3OGZjYmVjOTUwYjFkMjQ1Y2NjZWQ5OGJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNyArMTIzLDYgQEAK
IAkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1MUE4MjVC
MDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJQThBNDc0NjMxNTFBODI1
QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklD
VS5jcHAgKi87IH07CiAJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzU3MTUxQTgy
NUIwMDQxMjNGRiAvKiBVVEY4LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3Bw
ICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
ODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9
OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5
QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87
IH07CiAJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2
NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovOyB9OwpAQCAt
NTE0LDggKzUxMyw2IEBACiAJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yVHJhaXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRh
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1UYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVh
ZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM3QjE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3
NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QTQ3MjdG
MTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc2FsbG93Q1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05OTcsOCArOTk0LDYgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29y
ZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCi0J
CQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAotCQkJ
CUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDA5LDcgKzE0
MDQsNiBAQAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNv
Y29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUxNWQ0NWM2M2M5MGRkODNkYWExYTc0YjUwZjMyODc1ZTk4YTkyM2IuLjVhNzU2ODg0ZDYy
N2UwYjIwYzZlYTk4ZDQwM2FjNDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0x
NTAsNyArMTUwLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVmFyaWFudC5oCiAgICAgVmVjdG9y
LmgKICAgICBWZWN0b3JUcmFpdHMuaAotICAgIFdURlRocmVhZERhdGEuaAogICAgIFdhbGxUaW1l
LmgKICAgICBXZWFrUHRyLmgKICAgICBXb3JkTG9jay5oCkBAIC0yNTQsNyArMjUzLDYgQEAgc2V0
KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZS5jcHAKICAgICBVVUlELmNwcAotICAgIFdURlRocmVhZERhdGEuY3BwCiAgICAgV2FsbFRp
bWUuY3BwCiAgICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5oIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29y
aXRobS5oCmluZGV4IDQ1MTQ4NTQ3N2FjZjY1NjRiODI4NzdkM2U2NTllOTAyNzhjODk1MWUuLmI4
ZTk4N2I5MDgxNTBmMjY2NzYwMGZhNDMxZjdiOTIwNGVmM2I4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3Jp
dGhtLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlu
bGluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgKaW5kZXggODQz
OGQyZTkyYWFkMzFlZmQ0NTk5ODNiOWM1MmMwOWEwNjlmZDBkYS4uMGNiZTVmYTVmYWM4MTBkOWNk
ZjFjOTM4MzdmMzAxZTJlNjhmYzRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9ja0Fs
Z29yaXRobUlubGluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5l
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXJraW5nTG90Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiAvLyBJdCdzIGEgZ29vZCBpZGVhIHRvIGF2b2lkIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiB0
b28gbWFueSBwbGFjZXMsIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKIC8vIHRoZSBs
b2NrIGFsZ29yaXRobSBzbG93IHBhdGggd2l0aG91dCByZWNvbXBpbGluZyB0aGUgd29ybGQuIFJp
Z2h0IG5vdyB0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0d28KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRl
eCAxNGIzNDY3M2EwYmQ4NTc3YzEyN2ZjZjI2OWI3MzI5ZWI2YjAwN2Y4Li5hYjkyMTM0ZWQ4Yjhl
MWUxMzdjZjllN2M2M2JmMWMyODI0YWZiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuY3BwCmluZGV4IGNjMWEyMWI5ZWE1Y2NjYzZmMWFjZTRjOTc0OTg5OWJiZGE1
ZDdlMTAuLmY4ZmVkODhiMWY3Yzk5MjA5ODZhOTRlN2FiNmM1NTcxYjkyM2NlMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bh
cmtpbmdMb3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lm
aWMuaCIKLSNpbmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisjaW5jbHVkZSAiVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgogI2lu
Y2x1ZGUgIldvcmRMb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCmluZGV4IDA2NGYyZjA1MmFhZjM4
YjlmODBhNmRkNDExMzJlNjU0NmU0NTdmNDIuLjhjYjQ2MjIxMWRmN2FkNTU3ZTNjN2FlMjQ4ZTU2
NTI4YjUxODZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNp
bmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YUxvZy5oIgotI2luY2x1ZGUgIldU
RlRocmVhZERhdGEuaCIKIAogLy8gRGVmaW5lIHRoZSBmb2xsb3dpbmcgZmxhZyBpZiB5b3Ugd2Fu
dCB0byBjb2xsZWN0IHN0YXRzIG9uIGV2ZXJ5IHNpbmdsZQogLy8gY2hlY2twb2ludC4gQnkgZGVm
YXVsdCwgd2Ugb25seSBsb2cgY2hlY2twb2ludHMgdGhhdCBlc3RhYmxpc2ggbmV3CkBAIC01OSw3
ICs1OCw3IEBAIGludCBTdGFja1N0YXRzOjpzX21heExheW91dFJlZW50cnlEZXB0aCA9IDA7CiAK
IFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cygpCiB7Ci0gICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKICAgICBt
X3JlZW50cnlEZXB0aCA9IDA7CiAgICAgbV9zdGFja1N0YXJ0ID0gKGNoYXIqKXN0YWNrLm9yaWdp
bigpOwogICAgIG1fY3VycmVudENoZWNrUG9pbnQgPSAwOwpAQCAtNzAsOSArNjksOSBAQCBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogU3RhY2tTdGF0czo6Q2hl
Y2tQb2ludDo6Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhy
ZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwot
ICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0
cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7
CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRz
OjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3Rh
Y2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rv
d253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKICAgICBib29sIG5lZWRUb0xvZyA9
IGZhbHNlOwpAQCAtMTI4LDggKzEyNyw4IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNr
UG9pbnQoKQogU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogewogICAgIHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgp
OwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERh
dGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYg
dCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVh
ZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFk
LnN0YWNrU3RhdHMoKTsKIAogICAgIC8vIFBvcCB0byBwcmV2aW91cyBjaGVja3BvaW50OgogICAg
IHQubV9jdXJyZW50Q2hlY2tQb2ludCA9IG1fcHJldjsKQEAgLTEzOCw3ICsxMzcsNyBAQCBTdGFj
a1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiAgICAgLy8gTG9nIHRoaXMgY2hlY2tw
b2ludCBpZiBuZWVkZWQ6CiAjaWYgRU5BQkxFKFZFUkJPU0VfU1RBQ0tfU1RBVFMpCiAgICAgaWYg
KCFtX3ByZXYpIHsKLSAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0
YS0+c3RhY2soKTsKKyAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0
YWNrKCk7CiAgICAgICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdE
b3dud2FyZCgpOwogCiAgICAgICAgIGNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPih0aGlzKTsKQEAgLTE1OSw5ICsxNTgsOSBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+
Q2hlY2tQb2ludCgpCiB2b2lkIFN0YWNrU3RhdHM6OnByb2JlKCkKIHsKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBX
VEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0
ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJl
YWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhy
ZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMo
KTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAg
IGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCkBA
IC0yMjAsOSArMjE5LDkgQEAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hl
Y2tQb2ludCgpCiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKIAogICAgIHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRo
cmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhy
ZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERh
dGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWRE
YXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Cisg
ICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwor
ICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9v
bCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXIuY3BwCmluZGV4IGUyYTMxYmU5OTc4YTlkZTQyZWJmYTMzYjA3MDZhNTI0MzNi
ZDcyY2IuLjAyYjBlMTRhYTFhMTAzYzQ3NWY5ZDBmZWIwMjUxZmEzZjY0NzQ0OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmNwcApAQCAtNDMsNCArNDMsOSBAQCBUaHJlYWRIb2xkZXI6On5UaHJlYWRI
b2xkZXIoKQogICAgIG1fdGhyZWFkLT5kaWRFeGl0KCk7CiB9CiAKK1RocmVhZEhvbGRlciYgVGhy
ZWFkSG9sZGVyOjppbml0aWFsaXplQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemUo
VGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oIGIvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyLmgKaW5kZXggYjJmOGRlNjg4NTBjNmFmZGM3OWVmZGFkYTA5YmU2ZGVm
YjE4MjZhOS4uZTRmZTY2ODY0MWM4NzFkMTI2Y2FiZjJlZmY2OGE4NzgwMWU1NmY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmgKQEAgLTI5LDEzICsyOSwxNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgVGhyZWFkSG9sZGVyX2gKKyNkZWZpbmUgVGhyZWFkSG9s
ZGVyX2gKIAorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFkOworCiAvLyBIb2xkcyBUaHJlYWQg
aW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLiBUaGUgZGVzdHJ1Y3RvciBvZiB0aGlzIGhv
bGRlciByZWxpYWJseSBkZXN0cm95IFRocmVhZC4KIC8vIEZvciBwdGhyZWFkLCBpdCBlbXBsb3lz
IHB0aHJlYWRzLXNwZWNpZmljIDItcGFzcyBkZXN0cnVjdGlvbiB0byByZWxpYWJseSByZW1vdmUg
VGhyZWFkLgogLy8gRm9yIFdpbmRvd3MsIHdlIHVzZSB0aHJlYWRfbG9jYWwgdG8gZGVmZXIgdGhy
ZWFkIGhvbGRlciBkZXN0cnVjdGlvbi4gSXQgYXNzdW1lcyByZWd1bGFyIFRocmVhZFNwZWNpZmlj
CkBAIC00NywyMyArNTEsMjYgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKIAogICAgIC8vIE9uZSB0
aW1lIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIGNsYXNzIGFzIGEgd2hvbGUuCiAgICAgLy8gVGhp
cyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGluaXRpYWxpemUoKSBhbmQgaXQgaXMgbm90
IHRocmVhZC1zYWZlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CiAKICAgICAvLyBD
cmVhdGVzIGFuZCBwdXRzIGFuIGluc3RhbmNlIG9mIFRocmVhZEhvbGRlciBpbnRvIHRocmVhZC1z
cGVjaWZpYyBzdG9yYWdlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVGhyZWFkJik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXImIGluaXRpYWxpemUoUmVm
PFRocmVhZD4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXIm
IGluaXRpYWxpemVDdXJyZW50KCk7CiAKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkLXNwZWNp
ZmljIHN0b3JhZ2Ugd2FzIG5vdCBpbml0aWFsaXplZC4KLSAgICBzdGF0aWMgVGhyZWFkSG9sZGVy
KiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciYgY3VycmVudCgpOworICAgIHN0
YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnRNYXlCZU51bGwoKTsKIAogICAgIFRocmVhZCYgdGhy
ZWFkKCkgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KIAogI2lmIE9TKFdJTkRPV1MpCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnREeWluZygpOwog
ICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiBnZXQoVGhyZWFkSWRlbnRpZmllcik7CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBUaHJlYWRIb2xkZXIoVGhyZWFkJiB0aHJlYWQpCi0gICAgICAgIDog
bV90aHJlYWQodGhyZWFkKQorICAgIFRocmVhZEhvbGRlcihSZWY8VGhyZWFkPiYmIHRocmVhZCkK
KyAgICAgICAgOiBtX3RocmVhZChXVEZNb3ZlKHRocmVhZCkpCiAgICAgICAgICwgbV9pc0Rlc3Ry
b3llZE9uY2UoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTc3LDcgKzg0LDM5IEBAIGNsYXNzIFRo
cmVhZEhvbGRlciB7CiAKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZDsKICAgICBib29sIG1faXNE
ZXN0cm95ZWRPbmNlOwotICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpY0tleSBtX2tleTsKKyAgICBz
dGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CiB9OwogCitpbmxp
bmUgVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwoKQoreworI2lm
ICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lm
aWNLZXkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPih0aHJlYWRTcGVj
aWZpY0dldChtX2tleSkpOworI2Vsc2UKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9s
ZGVyKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVkpKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQo
KQoreworICAgIC8vIFdSVCBXZWJDb3JlOgorICAgIC8vICAgIFRocmVhZEhvbGRlciBpcyB1c2Vk
IG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkCisgICAgLy8g
ICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXph
dGlvbiBoZXJlLgorICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKKyAgICAvLyAgICBUaHJlYWQ6
OmN1cnJlbnQoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygp
LCBlbnN1cmluZworICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJl
YWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICBpZiAoVU5M
SUtFTFkoVGhyZWFkSG9sZGVyOjptX2tleSA9PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpKQor
ICAgICAgICBpbml0aWFsaXplT25jZSgpOworI2VuZGlmCisgICAgaWYgKGF1dG8qIGhvbGRlciA9
IGN1cnJlbnRNYXlCZU51bGwoKSkKKyAgICAgICAgcmV0dXJuICpob2xkZXI7CisjaWYgT1MoV0lO
RE9XUykKKyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVudER5aW5nKCkpCisgICAgICAgIHJl
dHVybiAqaG9sZGVyOworI2VuZGlmCisgICAgcmV0dXJuIGluaXRpYWxpemVDdXJyZW50KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgorI2VuZGlmIC8vIFRocmVhZEhvbGRlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKaW5kZXggMjBlNWU4OGY3NmRhYzJmNzYwNzMz
NGE4ZWIzYWFlYWNkYWQ1Zjk2My4uODU2ODQxZTMyMzZkYmVhOGRmMDMyMDgxZjllMjY0YzMxZGQ1
NjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcApAQCAtNDEsMzYg
KzQxLDQxIEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpCiAgICAgdGhyZWFk
U3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRocmVhZEhvbGRlciog
VGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjppbml0
aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogeworICAgIGF1dG8qIGhvbGRlciA9IG5ldyBU
aHJlYWRIb2xkZXIoV1RGTW92ZSh0aHJlYWQpKTsKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICAv
LyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwg
YnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZpbmcgdGhpcyByZWxl
YXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKKyAg
ICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiByZWxl
YXNlIG1vZGUuCiAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0
KG1fa2V5KSk7Ci19Ci0KLXZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFRocmVhZCYgdGhy
ZWFkKQotewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElkZWFsbHkgd2UnZCBo
YXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBo
dXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBo
ZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAgICAgICAgLy8gV1RG
Ojppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2Rl
LgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAg
ICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIG5ldyBUaHJlYWRIb2xkZXIodGhyZWFkKSk7
Ci0gICAgfQorICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOworI2Vsc2UKKyAg
ICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgaG9sZGVy
KTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0cnVj
dCk7CisjZW5kaWYKKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xkZXI6
OmRlc3RydWN0KHZvaWQqIGRhdGEpCiB7Ci0gICAgVGhyZWFkSG9sZGVyKiB0aHJlYWRJZGVudGlm
aWVyRGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KGRhdGEpOwotICAgIEFTU0VSVCh0
aHJlYWRJZGVudGlmaWVyRGF0YSk7CisgICAgVGhyZWFkSG9sZGVyKiBob2xkZXIgPSBzdGF0aWNf
Y2FzdDxUaHJlYWRIb2xkZXIqPihkYXRhKTsKKyAgICBBU1NFUlQoaG9sZGVyKTsKIAotICAgIGlm
ICh0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UpIHsKLSAgICAgICAgZGVs
ZXRlIHRocmVhZElkZW50aWZpZXJEYXRhOworICAgIGlmIChob2xkZXItPm1faXNEZXN0cm95ZWRP
bmNlKSB7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOworICAg
IGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOwogICAgIC8vIFJlLXNldHRpbmcgdGhl
IHZhbHVlIGZvciBrZXkgY2F1c2VzIGFub3RoZXIgZGVzdHJ1Y3QoKSBjYWxsIGFmdGVyIGFsbCBv
dGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQuCi0gICAgdGhyZWFk
U3BlY2lmaWNTZXQobV9rZXksIHRocmVhZElkZW50aWZpZXJEYXRhKTsKKyNpZiAhSEFWRShGQVNU
X1RMUykKKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAg
ICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKKyNlbHNlCisgICAgX3B0aHJlYWRf
c2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVksIGhvbGRlcik7CisgICAgcHRo
cmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCAmZGVzdHJ1Y3QpOworI2VuZGlm
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkSG9sZGVyV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAKaW5k
ZXggZjA2YjYyZjY4ZTIwMTM2MzVjNjM1MTVlOGMwZTRmMTVmZTQ2MTZkYS4uOThiMmMyOGJlZjZl
NGI0MzZhYTE1MmYxNDQzNzE4NjAzZTU2ZTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4u
Y3BwCkBAIC01NiwxNSArNTYsOSBAQCB2b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2Uo
KQogICAgIHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKCZtX2tleSwgZGVzdHJ1Y3QpOwogfQogCi1U
aHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpCitUaHJlYWRIb2xkZXIqIFRocmVh
ZEhvbGRlcjo6Y3VycmVudER5aW5nKCkKIHsKICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRo
cmVhZFNwZWNpZmljS2V5KTsKLSAgICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0YXRpY19jYXN0
PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7Ci0gICAgaWYgKGhvbGRl
cikgewotICAgICAgICBBU1NFUlQoaG9sZGVyICE9IEludmFsaWRUaHJlYWRIb2xkZXIpOwotICAg
ICAgICByZXR1cm4gaG9sZGVyOwotICAgIH0KLQogICAgIC8vIEFmdGVyIEZMUyBpcyBkZXN0cm95
ZWQsIHRoaXMgbWFwIG9mZmVycyB0aGUgdmFsdWUgdW50aWwgdGhlIHNlY29uZCB0aHJlYWQgZXhp
dCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICByZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGN1cnJl
bnRUaHJlYWQoKSk7CkBAIC04MCwyMSArNzQsMjEgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkSG9s
ZGVyOjpnZXQoVGhyZWFkSWRlbnRpZmllciBpZCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFkJiB0aHJlYWQpCitUaHJlYWRIb2xk
ZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShSZWY8VGhyZWFkPiYmIHRocmVhZCkKIHsKLSAg
ICBpZiAoIWN1cnJlbnQoKSkgewotICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFz
IGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3Jt
YW5jZS4KLSAgICAgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0
aGF0IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCi0gICAgICAgIC8vIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAgICAg
QVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3
OTMyMTM+IGlzIGZpeGVkLgotICAgICAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVy
KHRocmVhZCk7Ci0gICAgICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOwotICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRo
cmVhZE1hcE11dGV4KCkpOwotICAgICAgICAgICAgdGhyZWFkTWFwKCkuYWRkKHRocmVhZC5pZCgp
LCBob2xkZXIpOwotICAgICAgICB9CisgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhpcyBhcyBh
IHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1cnQgcGVyZm9ybWFu
Y2UuCisgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0IHdl
IHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCisgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5n
KCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgorICAgIEFTU0VSVChtX2tleSAh
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3
b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3OTMyMTM+IGlzIGZpeGVkLgor
ICAgIGF1dG8gaWQgPSB0aHJlYWQtPmlkKCk7CisgICAgYXV0byogaG9sZGVyID0gbmV3IFRocmVh
ZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBo
b2xkZXIpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tl
cih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICAgICAgdGhyZWFkTWFwKCkuYWRkKGlkLCBob2xkZXIp
OwogICAgIH0KKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xkZXI6OmRl
c3RydWN0KHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
Y3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBiM2ZmYTdjZjcxOTNhNjA5
ODBkZTcyZTEwMGUwYTQwNzgyNjBkNjQyLi4yZTExMzg0NWE1ZDM3NGNlYTVlN2YxOWFhNzRkMGNi
YzQ2NzJlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvVGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZE1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJl
YWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKICNpZiBIQVZFKFFPU19DTEFTU0VTKQpAQCAt
OTQsNiArOTQsMTMgQEAgY29uc3QgY2hhciogVGhyZWFkOjpub3JtYWxpemVUaHJlYWROYW1lKGNv
bnN0IGNoYXIqIHRocmVhZE5hbWUpCiAjZW5kaWYKIH0KIAordm9pZCBUaHJlYWQ6OmluaXRpYWxp
emVJblRocmVhZCgpCit7CisgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IHN0YWNrKCkub3JpZ2lu
KCk7CisgICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jdXJyZW50
QXRvbWljU3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZTsKK30KKwogdm9p
ZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkK
IHsKICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uOwpAQCAtMTA1LDcgKzExMiw3IEBAIHZv
aWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRleHQp
CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5zdGFnZSA9PSBOZXdUaHJlYWRDb250ZXh0OjpTdGFn
ZTo6RXN0YWJsaXNoZWRIYW5kbGUpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhyZWFkIGhv
bGRlciB3aXRoIGVzdGFibGlzaGVkIElELgotICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxp
emUoY29udGV4dC0+dGhyZWFkLmdldCgpKTsKKyAgICAgICAgVGhyZWFkSG9sZGVyOjppbml0aWFs
aXplKGNvbnRleHQtPnRocmVhZC5jb3B5UmVmKCkpOwogCiAgICAgICAgIFRocmVhZDo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5uYW1lKTsKICAgICAgICAgZnVuY3Rp
b24gPSBXVEZNb3ZlKGNvbnRleHQtPmVudHJ5UG9pbnQpOwpAQCAtMTE2LDYgKzEyMyw3IEBAIHZv
aWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRleHQp
CiAgICAgICAgIGNvbnRleHQtPnN0YWdlID0gTmV3VGhyZWFkQ29udGV4dDo6U3RhZ2U6OkluaXRp
YWxpemVkOwogICAgICAgICBjb250ZXh0LT5jb25kaXRpb24uc2lnbmFsKCk7CiAjZW5kaWYKKyAg
ICAgICAgY29udGV4dC0+dGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsKICAgICB9CiAKICAg
ICBBU1NFUlQoIVRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNFbXB0eSgpKTsKQEAgLTE1NSwx
NCArMTYzLDYgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciogbmFt
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGVudHJ5UG9pbnQpCiAgICAgcmV0dXJuIFdURk1vdmUodGhy
ZWFkKTsKIH0KIAotVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQotewotICAgIFRo
cmVhZEhvbGRlciogZGF0YSA9IFRocmVhZEhvbGRlcjo6Y3VycmVudCgpOwotICAgIGlmIChkYXRh
KQotICAgICAgICByZXR1cm4gJmRhdGEtPnRocmVhZCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBzdGF0aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRGcm9tVGhyZWFkR3JvdXAoKQogewog
I2lmIE9TKFdJTkRPV1MpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBUaHJlYWQ6OmRpZEV4aXQo
KQogICAgICAgICAgICAgdGhyZWFkR3JvdXAtPm1fdGhyZWFkcy5yZW1vdmUoKnRoaXMpOwogICAg
ICAgICB9CiAgICAgfQorICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKKyAg
ICAgICAgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3RyaW5n
VGFibGUpOworCiAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBzYXkgInRocmVhZCBpcyBleGl0ZWQi
IGFmdGVyIHVucmVnaXN0ZXJpbmcgdGhyZWFkcyBmcm9tIHRocmVhZCBncm91cHMuCiAgICAgLy8g
U28gd2UgbmVlZCB0byBzZXBhcmF0ZSBtX2lzU2h1dHRpbmdEb3duIGZyb20gbV9kaWRFeGl0Lgog
ICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CkBAIC0yNzcs
OSArMjgwLDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKIHsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXpl
S2V5LCBbXSB7Ci0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKTsKICAgICAg
ICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwotICAgICAgICB3dGZUaHJlYWRE
YXRhKCk7CisgICAgICAgIFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICBpbml0aWFsaXplRGF0
ZXMoKTsKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmgKaW5kZXggZmY1MGJmYTg5Yjc2OGJjMDgxOGM2Mzk4OWQyZmYzZjVl
MmM0MTkyNy4uOTkyMmM4YzYwZGI5ZDViZWM3YWE1ZWZlMTU5MWEyZWY4NjgxNGRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3Rl
cnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRz
Lmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkSG9s
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC01MCwxMiArNTIsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBj
bGFzcyBBYnN0cmFjdExvY2tlcjsKK2NsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogY2xhc3MgVGhy
ZWFkTWVzc2FnZURhdGE7CiAKLWVudW0gY2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1bHQ7Cit1c2lu
ZyBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSB2b2lkICgqKShBdG9taWNTdHJpbmdUYWJs
ZSopOwogCi11c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Ci10eXBlZGVmIHZvaWQg
KCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOworZW51bSBjbGFzcyBUaHJlYWRHcm91
cEFkZFJlc3VsdDsKIAogY2xhc3MgVGhyZWFkR3JvdXA7CiBjbGFzcyBUaHJlYWRIb2xkZXI7CkBA
IC02NSw2ICs2Nyw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkR3JvdXA7CiAgICAg
ZnJpZW5kIGNsYXNzIFRocmVhZEhvbGRlcjsKKyAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5n
VGFibGU7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRocmVhZCgpOwogCkBAIC03Myw4ICs3
Niw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+
IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IGNyZWF0ZShj
b25zdCBjaGFyKiB0aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgLy8gUmV0
dXJucyBUaHJlYWQgb2JqZWN0LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFk
JiBjdXJyZW50KCk7Ci0gICAgc3RhdGljIFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOworICAg
IHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFkSWRlbnRp
ZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJvdXQg
aWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3VsZCBr
bm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJlCkBA
IC0xNDEsMjIgKzE0Myw2NiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8VGhyZWFkPiB7CiAgICAgICAgIHJldHVybiBtX3N0YWNrOwogICAgIH0KIAorICAgIEF0
b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisgICAgQXRvbWljU3RyaW5n
VGFibGUqIHNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShBdG9taWNTdHJpbmdUYWJsZSogYXRv
bWljU3RyaW5nVGFibGUpCisgICAgeworICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogb2xkQXRv
bWljU3RyaW5nVGFibGUgPSBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgbV9j
dXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBhdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgcmV0
dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxlOworICAgIH0KKworI2lmIEVOQUJMRShTVEFDS19TVEFU
UykKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgc3RhY2tTdGF0cygpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9zdGFja1N0YXRzOworICAgIH0KKyNlbmRpZgorCisgICAgdm9pZCog
c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2
ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9pZCBzZXRTYXZlZFN0YWNr
UG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50cnkpCisgICAgeworICAg
ICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5
OworICAgIH0KKworICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOworICAgIH0KKworICAgIHZvaWQgc2V0U2F2ZWRM
YXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQorICAgIHsKKyAgICAgICAgbV9zYXZlZExh
c3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsKKyAgICB9CisKKyAgICB2b2lkKiBtX2FwaURhdGEg
eyBudWxscHRyIH07CisKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbWFjaFRocmVh
ZCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1UaHJlYWQ7IH0KICNlbmRpZgogCiAgICAgc3RydWN0IE5l
d1RocmVhZENvbnRleHQ7CiAgICAgc3RhdGljIHZvaWQgZW50cnlQb2ludChOZXdUaHJlYWRDb250
ZXh0Kik7Ci1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIFRocmVhZCgpOwogCisgICAgc3RhdGlj
IFJlZjxUaHJlYWQ+IGNyZWF0ZUN1cnJlbnRUaHJlYWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemVJ
blRocmVhZCgpOworCiAgICAgLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgVGhyZWFkIGVz
dGFibGlzaG1lbnQgaW1wbGVtZW50YXRpb24uCiAgICAgYm9vbCBlc3RhYmxpc2hIYW5kbGUoTmV3
VGhyZWFkQ29udGV4dCopOwogCiAjaWYgVVNFKFBUSFJFQURTKQotICAgIHZvaWQgZXN0YWJsaXNo
UGxhdGZvcm1TcGVjaWZpY0hhbmRsZShwdGhyZWFkX3QpOworICAgIHZvaWQgZXN0YWJsaXNoUGxh
dGZvcm1TcGVjaWZpY0hhbmRsZShQbGF0Zm9ybVRocmVhZEhhbmRsZSk7CiAjZWxzZQotICAgIHZv
aWQgZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRsZShIQU5ETEUsIFRocmVhZElkZW50aWZp
ZXIpOworICAgIHZvaWQgZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRsZShQbGF0Zm9ybVRo
cmVhZEhhbmRsZSwgVGhyZWFkSWRlbnRpZmllcik7CiAjZW5kaWYKIAogI2lmIFVTRShQVEhSRUFE
UykgJiYgIU9TKERBUldJTikKQEAgLTE5NywyMiArMjQzLDI1IEBAIGNsYXNzIFRocmVhZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBWZWN0b3I8c3RkOjp3ZWFr
X3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBzOwogICAgIGJvb2wgbV9pc1NodXR0aW5n
RG93biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwotI2lmIFVTRShQ
VEhSRUFEUykKLSAgICBwdGhyZWFkX3QgbV9oYW5kbGU7Ci0KKyAgICBQbGF0Zm9ybVRocmVhZEhh
bmRsZSBtX2hhbmRsZTsKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbV9wbGF0Zm9y
bVRocmVhZDsKLSNlbHNlCisjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgc2VtX3QgbV9zZW1hcGhv
cmVGb3JTdXNwZW5kUmVzdW1lOwogICAgIFBsYXRmb3JtUmVnaXN0ZXJzIG1fcGxhdGZvcm1SZWdp
c3RlcnM7CiAgICAgdW5zaWduZWQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAgICAgc3RkOjphdG9t
aWM8Ym9vbD4gbV9zdXNwZW5kZWQgeyBmYWxzZSB9OwogI2VuZGlmCi0jZWxpZiBPUyhXSU5ET1dT
KQotICAgIEhBTkRMRSBtX2hhbmRsZSB7IElOVkFMSURfSEFORExFX1ZBTFVFIH07Ci0jZWxzZQot
I2Vycm9yIFVua25vd24gU3lzdGVtCisKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9jdXJyZW50
QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07CisgICAgQXRvbWljU3RyaW5nVGFibGUqIG1f
ZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OworICAgIEF0b21pY1N0cmluZ1Rh
YmxlRGVzdHJ1Y3RvciBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciB7IG51bGxwdHIgfTsK
KworI2lmIEVOQUJMRShTVEFDS19TVEFUUykKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0
cyBtX3N0YWNrU3RhdHM7CiAjZW5kaWYKKyAgICB2b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5IHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CiB9Owog
CiAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkcy4KQEAgLTIy
Myw2ICsyNzIsMTAgQEAgaW5saW5lIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpCiAg
ICAgcmV0dXJuIFRocmVhZDo6Y3VycmVudElEKCk7CiB9CiAKK2lubGluZSBUaHJlYWQmIFRocmVh
ZDo6Y3VycmVudCgpCit7CisgICAgcmV0dXJuIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpLnRocmVh
ZCgpOworfQogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmVtYWluIGJlY2F1
c2UgdGhleSBhcmUgdXNlZCBmcm9tIFdlYktpdCBXaW5kb3dzIHN1cHBvcnQgbGlicmFyeSwKIC8v
IFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMuZGxsLiBXaGVuIHVwZGF0aW5nIHRoZSBzdXBwb3J0
IGxpYnJhcnksIHdlIHNob3VsZCB1c2UgbmV3IEFQSSBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmgKaW5kZXggMzBjNDk5ZmRhOWNhZTFmNmRmNjRjMWQ0ZWFhNmNiNWI2Zjk4
MTc3Mi4uNmU4OGFhNmE4YTA5MGQ5N2U3NzdjMzFhM2JkMmE2NmFkYzMwYzZkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtNDUsNiArNDUsOSBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAordXNpbmcgVGhyZWFkSWRlbnRpZmllciA9IHVpbnQzMl90OwordXNpbmcgVGhyZWFk
RnVuY3Rpb24gPSB2b2lkICgqKSh2b2lkKiBhcmd1bWVudCk7CisKICNpZiBVU0UoUFRIUkVBRFMp
CiB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3Jt
TXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAK
aW5kZXggMTJkN2M3MTM4NjE5MmU4ZjQ1NTdlMzNmMjliMzUyMTk4NzY1ZTc4Zi4uY2ZlZWFiYjIz
ODhmMGZiY2VlNTQyODYxMDUxYmNjZDZhN2U4MWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcApAQCAtMjg2LDE4ICsyODYsMTYgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiAg
ICAgICAgIGRpZEJlY29tZURldGFjaGVkKCk7CiB9CiAKLVRocmVhZCYgVGhyZWFkOjpjdXJyZW50
KCkKLXsKLSAgICBpZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJlTnVsbCgpKQotICAg
ICAgICByZXR1cm4gKmN1cnJlbnQ7CiAKK1JlZjxUaHJlYWQ+IFRocmVhZDo6Y3JlYXRlQ3VycmVu
dFRocmVhZCgpCit7CiAgICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWRJZGVu
dGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0g
YWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAgICAgdGhyZWFkLT5lc3RhYmxpc2hQbGF0Zm9ybVNw
ZWNpZmljSGFuZGxlKHB0aHJlYWRfc2VsZigpKTsKICAgICB0aHJlYWQtPm1fc3RhY2sgPSBTdGFj
a0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7Ci0gICAgVGhyZWFkSG9sZGVyOjpp
bml0aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQo
KTsKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5vbldURkNyZWF0ZWQoKTsKLSAg
ICByZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0aHJlYWQ7CiB9CiAKIFRocmVhZElk
ZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXgg
MDUyM2EyZTZiYjVmNjYyNmFjOGMwNGM5Mjg5YTA1ZTU3ZjVlMDE1MC4uZTkzMWRmZmI4ZjRkYmQw
N2U4YTYyNDVkMjczYjY4MzgzNGIzODE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0y
NDMsMTEgKzI0Myw4IEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzKQogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7CiB9CiAKLVRocmVh
ZCYgVGhyZWFkOjpjdXJyZW50KCkKK1JlZjxUaHJlYWQ+IFRocmVhZDo6Y3JlYXRlQ3VycmVudFRo
cmVhZCgpCiB7Ci0gICAgaWYgKFRocmVhZCogY3VycmVudCA9IGN1cnJlbnRNYXlCZU51bGwoKSkK
LSAgICAgICAgcmV0dXJuICpjdXJyZW50OwotCiAgICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQgdGhy
ZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCiAgICAgUmVmPFRo
cmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAKQEAgLTI1Nyw5ICsyNTQs
OSBAQCBUaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCiAKICAgICB0aHJlYWQtPmVzdGFibGlzaFBs
YXRmb3JtU3BlY2lmaWNIYW5kbGUoaGFuZGxlLCBjdXJyZW50SUQoKSk7CiAgICAgdGhyZWFkLT5t
X3N0YWNrID0gU3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpOwotICAgIFRo
cmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOworICAgIHRocmVhZC0+aW5pdGlh
bGl6ZUluVGhyZWFkKCk7CiAgICAgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRFdmVuSWZOb25XVEZD
cmVhdGVkKCk7Ci0gICAgcmV0dXJuIHRocmVhZC5nZXQoKTsKKyAgICByZXR1cm4gdGhyZWFkOwog
fQogCiBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwIGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFk
RGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZTc3ZDI1ODVmOGE2MTQ0
NGY5NzRlN2MzYjhhZDEzYTFjYjY2OTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV1RG
VGhyZWFkRGF0YS5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4K
LQotI2lmIFVTRShXRUJfVEhSRUFEKQotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLSNpZiAhSEFWRShGQVNUX1RMUykKLVRocmVhZFNwZWNp
ZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwotI2VuZGlmCi0K
LVdURlRocmVhZERhdGE6OldURlRocmVhZERhdGEoKQotICAgIDogbV9zdGFja0JvdW5kcyhTdGFj
a0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCkpCi0gICAgLCBtX3NhdmVkTGFzdFN0
YWNrVG9wKHN0YWNrKCkub3JpZ2luKCkpCi17Ci0gICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0
ZSgqdGhpcyk7Ci0gICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9t
aWNTdHJpbmdUYWJsZTsKLX0KLQotV1RGVGhyZWFkRGF0YTo6fldURlRocmVhZERhdGEoKQotewot
ICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKLSAgICAgICAgbV9hdG9taWNT
dHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUpOwotfQotCi0j
aWYgSEFWRShGQVNUX1RMUykKLVdURlRocmVhZERhdGEmIFdURlRocmVhZERhdGE6OmNyZWF0ZUFu
ZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3QoKQotewotICAgIFdURlRocmVhZERhdGEqIGRh
dGEgPSBuZXcgV1RGVGhyZWFkRGF0YTsKLSAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3Qo
V1RGX1RIUkVBRF9EQVRBX0tFWSwgZGF0YSk7Ci0gICAgcHRocmVhZF9rZXlfaW5pdF9ucChXVEZf
VEhSRUFEX0RBVEFfS0VZLCBbXSh2b2lkKiBkYXRhKXsKLSAgICAgICAgZGVsZXRlIHN0YXRpY19j
YXN0PFdURlRocmVhZERhdGEqPihkYXRhKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKmRhdGE7Ci19
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9XVEZUaHJlYWREYXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNWZmODE3NjZkODNjNTZkYmNhY2I2M2JhZTZlMjYw
OGE2MmMzMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0g
Ki8KLQotI2lmbmRlZiBXVEZUaHJlYWREYXRhX2gKLSNkZWZpbmUgV1RGVGhyZWFkRGF0YV9oCi0K
LSNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1j
bGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKLQotdHlwZWRlZiB2b2lkICgqQXRvbWljU3RyaW5nVGFi
bGVEZXN0cnVjdG9yKShBdG9taWNTdHJpbmdUYWJsZSopOwotCi1jbGFzcyBXVEZUaHJlYWREYXRh
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXVEZUaHJlYWREYXRhKTsKLXB1YmxpYzoKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB+V1RGVGhyZWFkRGF0YSgpOwotCi0gICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0
cmluZ1RhYmxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdU
YWJsZTsKLSAgICB9Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0
cmluZ1RhYmxlKEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSkKLSAgICB7Ci0g
ICAgICAgIEF0b21pY1N0cmluZ1RhYmxlKiBvbGRBdG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVu
dEF0b21pY1N0cmluZ1RhYmxlOwotICAgICAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9
IGF0b21pY1N0cmluZ1RhYmxlOwotICAgICAgICByZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7
Ci0gICAgfQotCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX3N0YWNrQm91bmRzOwotICAgIH0KLQotI2lmIEVOQUJMRShTVEFDS19TVEFUUykK
LSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgc3RhY2tTdGF0cygpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9zdGFja1N0YXRzOwotICAgIH0KLSNlbmRpZgotCi0gICAgdm9pZCogc2F2
ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZWRT
dGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTYXZlZFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50cnkpCi0gICAgewotICAgICAg
ICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5Owot
ICAgIH0KLQotICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOwotICAgIH0KLQotICAgIHZvaWQgc2V0U2F2ZWRMYXN0
U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQotICAgIHsKLSAgICAgICAgbV9zYXZlZExhc3RT
dGFja1RvcCA9IGxhc3RTdGFja1RvcDsKLSAgICB9Ci0KLSAgICB2b2lkKiBtX2FwaURhdGEgeyBu
dWxscHRyIH07Ci0KLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIG1fY3VycmVudEF0
b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2Rl
ZmF1bHRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKLSAgICBBdG9taWNTdHJpbmdUYWJs
ZURlc3RydWN0b3IgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgeyBudWxscHRyIH07Ci0K
LSAgICBTdGFja0JvdW5kcyBtX3N0YWNrQm91bmRzOwotI2lmIEVOQUJMRShTVEFDS19TVEFUUykK
LSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyBtX3N0YWNrU3RhdHM7Ci0jZW5kaWYKLSAg
ICB2b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5IHsgbnVsbHB0ciB9OwotICAgIHZv
aWQqIG1fc2F2ZWRMYXN0U3RhY2tUb3A7Ci0KLSNpZiBIQVZFKEZBU1RfVExTKQotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgV1RGVGhyZWFkRGF0YSYgY3JlYXRlQW5kUmVnaXN0ZXJGb3JH
ZXRzcGVjaWZpY0RpcmVjdCgpOwotI2Vsc2UKLSAgICBzdGF0aWMgV1RGX0VYUE9SVERBVEEgVGhy
ZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIHN0YXRpY0RhdGE7Ci0jZW5kaWYKLQotICAgIGZy
aWVuZCBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCk7Ci0gICAgZnJpZW5kIGNsYXNzIEF0
b21pY1N0cmluZ1RhYmxlOwotfTsKLQotaW5saW5lIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERh
dGEoKQotewotICAgIC8vIFdSVCBXZWJDb3JlOgotICAgIC8vICAgIFdURlRocmVhZERhdGEgaXMg
dXNlZCBvbiBtYWluIHRocmVhZCBiZWZvcmUgaXQgY291bGQgcG9zc2libHkgYmUgdXNlZAotICAg
IC8vICAgIG9uIHNlY29uZGFyeSBvbmVzLCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJv
bml6YXRpb24gaGVyZS4KLSAgICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6Ci0gICAgLy8gICAgd3Rm
VGhyZWFkRGF0YSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJvbSBpbml0aWFsaXplVGhyZWFkaW5n
KCksIGVuc3VyaW5nCi0gICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkgY2FsbGVkIGluIGEgcHRo
cmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgotI2lmICFIQVZFKEZBU1RfVExTKQotICAgIGlmICgh
V1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSkKLSAgICAgICAgV1RGVGhyZWFkRGF0YTo6c3RhdGlj
RGF0YSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPjsKLSAgICByZXR1cm4gKipX
VEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwotI2Vsc2UKLSAgICBpZiAoV1RGVGhyZWFkRGF0YSog
ZGF0YSA9IHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihfcHRocmVhZF9nZXRzcGVjaWZpY19k
aXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSkpKQotICAgICAgICByZXR1cm4gKmRhdGE7Ci0gICAg
cmV0dXJuIFdURlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJl
Y3QoKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpXVEZU
aHJlYWREYXRhOwotdXNpbmcgV1RGOjp3dGZUaHJlYWREYXRhOwotdXNpbmcgV1RGOjpBdG9taWNT
dHJpbmdUYWJsZTsKLQotI2VuZGlmIC8vIFdURlRocmVhZERhdGFfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuY3BwCmluZGV4IGE0ZTAzZGUzYWY2NTdjNjlmNzRkMTYyNTFmMDAwNzM5MTM2
YTUzNDQuLjJhMDY1MTI4M2E5NzI3MWU1NzZhMjIyZGRmMDIzMjBkMDZhMGQyZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTIzLDggKzIzLDEwIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAKLSNpbmNsdWRlICJJbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZC5oIgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgorCiAjaW5jbHVkZSAiZHRvYS5oIgogCiBuYW1l
c3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
SW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCmluZGV4
IDM1MjI0ODVkN2I4NDczY2M4MGU1MjQwYTczMmEwNTUzYzQ4YmMzNDIuLjA2M2U0ZWViN2U1N2U1
Y2Q4NWIwYTE3MTk1NGQzODkyNGMxNzc5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIK
ICNpbmNsdWRlICJTdHJpbmdQcmludFN0cmVhbS5oIgogI2luY2x1ZGUgIlRocmVhZGluZy5oIgot
I2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+
CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKQEAgLTcyLDcgKzcxLDcgQEAgdXNpbmcgU3RyaW5nVGFi
bGVJbXBsID0gSGFzaFNldDxTdHJpbmdJbXBsKj47CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFN0
cmluZ1RhYmxlSW1wbCYgc3RyaW5nVGFibGUoKQogewotICAgIHJldHVybiB3dGZUaHJlYWREYXRh
KCkuYXRvbWljU3RyaW5nVGFibGUoKS0+dGFibGUoKTsKKyAgICByZXR1cm4gVGhyZWFkOjpjdXJy
ZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKS0+dGFibGUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuY3BwCmluZGV4IGZlOGE0ODg0ZGI3ZTY3OGRlZDZhZjMyZGQ0MzcxMmU1OTVm
M2I5MzUuLmY2ZDc4ZjJiZTZmNDhmMmFhNjgyYzA1ZDEwZDI0NjQ2OGIwYzI0ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwCkBAIC0yNSwxMSArMjUsMTEgQEAK
IAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
LSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShX
VEZUaHJlYWREYXRhJiBkYXRhKQordm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKFRocmVh
ZCYgdGhyZWFkKQogewogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIC8vIE9uIGlPUywgb25lIEF0
b21pY1N0cmluZ1RhYmxlIGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSBtYWluIFVJIHRocmVhZCBhbmQg
dGhlIFdlYlRocmVhZC4KQEAgLTM3LDE3ICszNywxNyBAQCB2b2lkIEF0b21pY1N0cmluZ1RhYmxl
OjpjcmVhdGUoV1RGVGhyZWFkRGF0YSYgZGF0YSkKIAogICAgIGJvb2wgY3VycmVudFRocmVhZElz
V2ViVGhyZWFkID0gaXNXZWJUaHJlYWQoKTsKICAgICBpZiAoY3VycmVudFRocmVhZElzV2ViVGhy
ZWFkIHx8IGlzVUlUaHJlYWQoKSkKLSAgICAgICAgZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJpbmdU
YWJsZSA9IHNoYXJlZFN0cmluZ1RhYmxlOworICAgICAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWlj
U3RyaW5nVGFibGUgPSBzaGFyZWRTdHJpbmdUYWJsZTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEu
bV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAg
ICAgIHRocmVhZC5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdU
YWJsZTsKIAogICAgIC8vIFdlIGRvIHRoZSBmb2xsb3dpbmcgc28gdGhhdCBpdHMgZGVzdHJ1Y3Rp
b24gaGFwcGVucyBvbmx5CiAgICAgLy8gb25jZSAtIG9uIHRoZSBtYWluIFVJIHRocmVhZC4KICAg
ICBpZiAoIWN1cnJlbnRUaHJlYWRJc1dlYlRocmVhZCkKLSAgICAgICAgZGF0YS5tX2F0b21pY1N0
cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OworICAgICAg
ICB0aHJlYWQubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJs
ZTo6ZGVzdHJveTsKICNlbHNlCi0gICAgZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9
IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKLSAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0
cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisgICAgdGhyZWFkLm1fZGVmYXVs
dEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOworICAgIHRocmVhZC5t
X2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95
OwogI2VuZGlmIC8vIFVTRShXRUJfVEhSRUFEKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZ1RhYmxlLmgKaW5kZXggOTQ0YWU5MmJkZWM0NDM5YmYwNzAxMjFiNzhhMzVmNWE4NGZj
NDA5ZC4uZDNiYzljZTVmNmUwNzI3NzU2Y2M5ZWJiZTRmMTI1MzdmYWFiMmI3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaApAQCAtMjQsMTkgKzI0LDE5IEBACiAjZGVm
aW5lIFdURl9BdG9taWNTdHJpbmdUYWJsZV9oCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU3RyaW5nSW1wbDsKK2NsYXNzIFRo
cmVhZDsKIAogY2xhc3MgQXRvbWljU3RyaW5nVGFibGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+QXRvbWljU3RyaW5nVGFi
bGUoKTsKIAotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShXVEZUaHJlYWREYXRhJik7CisgICAgc3Rh
dGljIHZvaWQgY3JlYXRlKFRocmVhZCYpOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiB0YWJs
ZSgpIHsgcmV0dXJuIG1fdGFibGU7IH0KIAogcHJpdmF0ZToKQEAgLTQ2LDUgKzQ2LDYgQEAgY2xh
c3MgQXRvbWljU3RyaW5nVGFibGUgewogfTsKIAogfQordXNpbmcgV1RGOjpBdG9taWNTdHJpbmdU
YWJsZTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5j
cHAKaW5kZXggOGEwMjMwYmFiZjk1Y2JhOTdmOWE4Zjg2MjgxOWFiNDBkMTdmY2U0Mi4uNjNiMWUw
ZTU3NDExZDA2MzNjNDE5OGY0YWUwOTM1M2EwMzU1MTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2Jh
bERhdGEuY3BwCmluZGV4IGI4ZmFmNWE4ZDc5MTAyZjJlZmRkOGJkYTY0MzFjMDc3YmZmMTNiZjAu
Ljc3MzgyOWQ1ZTdiNGViMzNkN2JlODM4MDcxNmY5YTMzMzcyNmY0ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERh
dGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC02Niw3ICs2NSw3IEBAIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEo
KQogICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0
aHJlYWQgLSB0aGlzIG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CiAgICAgLy8gcG9pbnQgdG8gY2Fs
bCBtZXRob2RzIHRoYXQgaW50ZXJuYWxseSBwZXJmb3JtIGEgb25lLXRpbWUgaW5pdGlhbGl6YXRp
b24gdGhhdCBpcyBub3QKICAgICAvLyB0aHJlYWRzYWZlLgotICAgIHd0ZlRocmVhZERhdGEoKTsK
KyAgICBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBTdHJpbmdJbXBsOjplbXB0eSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oCmluZGV4IDY2ZThlOTkxZTEyOTYy
YjU0ZmQ3NDM5MmQ5NTJlNzMyOGZkNjQwOTAuLmVjMjcxMWI1MjA3MjUyMzMyNGE2ZmYwNDdjMzZi
ZDM4NzAwZThhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKFZJREVPVE9PTEJPWCkKIAogI2luY2x1ZGUgPENvcmVN
ZWRpYS9DTVRpbWUuaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
Lm1tCmluZGV4IDYxMjJiNGYyYzUwYjY0YmE1YzdmZmM5ZGRlM2Y0ZGE1NjI5YTAzODcuLmM4ZjA1
YTFhMGFlZDYwMmNiZDhjMDk0ZTBhOTcyMDNhZjljNjA2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTcwMiw3ICs3MDIsNyBA
QCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiB7CiAgICAgd2ViVGhyZWFkU3RhcnRlZCA9
IFRSVUU7CiAKLSAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIHRvdWNoZXMgQXRvbWljU3RyaW5nLCB3
aGljaCByZXF1aXJlcyBXVEZUaHJlYWREYXRhIGFuZCBUaHJlYWRpbmcgaW5pdGlhbGl6YXRpb24u
CisgICAgLy8gVGhyZWFkR2xvYmFsRGF0YSB0b3VjaGVzIEF0b21pY1N0cmluZywgd2hpY2ggcmVx
dWlyZXMgVGhyZWFkaW5nIGluaXRpYWxpemF0aW9uLgogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBBdG9taWNTdHJpbmcgb24gdGhlIG1haW4gdGhy
ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDQyNWM5MjQ4
ZDg3MDQ4MjdiYjBlMDM4MjFhMmFlOGRjOGFhYzBkNzAuLjY4MWExZWY3NTQ4MTAwZDFhMjk2NjA5
ZTYyY2I3ZjlhZmI2MmUwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkK
ICAgICAvLyBXZSBjYW5ub3QgbGV0IGFueSBvYmplY3RzIHN1cnZpdmUgcGFzdCB0aHJlYWQgZXhp
dCwgYmVjYXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBydW4gR0Mgb3Igb3RoZXJ3aXNlIGRlc3Ry
b3kgdGhlbS4KICAgICB3b3JrZXJHbG9iYWxTY29wZVRvRGVsZXRlID0gbnVsbHB0cjsKIAotICAg
IC8vIENsZWFuIHVwIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEgYmVmb3JlIFdURjo6V1RGVGhy
ZWFkRGF0YSBnb2VzIGF3YXkhCisgICAgLy8gQ2xlYW4gdXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YSBiZWZvcmUgV1RGOjpUaHJlYWQgZ29lcyBhd2F5IQogICAgIHRocmVhZEdsb2JhbERhdGEo
KS5kZXN0cm95KCk7CiAKICAgICAvLyBUaGUgdGhyZWFkIG9iamVjdCBtYXkgYmUgYWxyZWFkeSBk
ZXN0cm95ZWQgZnJvbSBub3RpZmljYXRpb24gbm93LCBkb24ndCB0cnkgdG8gYWNjZXNzICJ0aGlz
Ii4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316712</attachid>
            <date>2017-07-29 09:14:36 -0700</date>
            <delta_ts>2017-07-29 10:57:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170730011435.patch</filename>
            <type>text/plain</type>
            <size>70895</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi4wY2YwNGJmMjY0YzY4NzAx
ZTk2OTg2OGVhYmUxMmI0ZTliNTNlZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0Lm1tOgorICAgICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAg
ICAgKCtbSlNDb250ZXh0IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJy
ZW50Q2FsbGVlXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6Cisg
ICAgICAgICgtW0pTQ29udGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhp
c1ZhbHVlOmFyZ3VtZW50Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQg
ZW5kQ2FsbGJhY2tXaXRoRGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpj
aGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9y
dE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJl
bGVhc2VMb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2su
aDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAg
ICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNv
bW1pdHRlZFN0YWNrQnl0ZUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
IChKU0M6OlZNOjppc1NhZmVUb1JlY3Vyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvVk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFj
a0NhcGFjaXR5Rm9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlKToKKwog
MjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBBU1NFUlRJT04gRkFJTEVEOiBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgY2FuZGlk
YXRlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgY2FuZGlkYXRlLT5vcCgpID09
IFBoYW50b21TcHJlYWQgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhT
cHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNDY1ZDJkZWU1MDFlYzU4YTE5OWY1MWRlZGRlMjFjODliOWVmMDlhMy4uMDVm
OGYxZDU0M2QxZjE5NzJkMmQzODc2NzYyNWM5ODNjYjA2NzllNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBA
QAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL0xvY2tBbGdvcml0aG0uaDoKKyAgICAgICAgKiB3dGYvTG9ja0FsZ29yaXRobUlubGluZXMu
aDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90
LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0YWNr
U3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6CisgICAgICAgIChXVEY6OlN0
YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFja1N0
YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3RhdHM6
OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5
b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRlci5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9U
aHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpUaHJlYWRIb2xkZXIp
OgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwpOgorICAgICAg
ICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgorICAgICAgICAoV1RGOjpU
aHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnREeWluZyk6Cisg
ICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRo
cmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZy5j
cHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0
KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RG
OjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRTYXZlZFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3Ap
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNrVG9wKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6
OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3Vy
cmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAg
IChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJlbW92ZWQuCisgICAgICAg
ICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
VGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaDoK
KwogMjAxNy0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbV1RGXSBEcm9wIFRocmVhZCBpbml0aWFsaXphdGlvbiB3YWl0IGluIHNvbWUgcGxh
dGZvcm1zIGJ5IGludHJvZHVjaW5nIFN0YWNrQm91bmRzOjpuZXdUaHJlYWRTdGFja0JvdW5kcyhQ
bGF0Zm9ybVRocmVhZEhhbmRsZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyNzRkMjliMGNjMTljMDA4YjFm
YjcyZmRjNTg4MzkzMGUwMmE0MS4uNTEyZTQ4YWRiNTY0Mzc5ZDAxZTYyZTFhOWEzMTlkMGNiOTM0
MGJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA3LTI5ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1lcmdlIFdURlRocmVhZERh
dGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisKIDIwMTctMDctMjggIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBTcGxpdC11cCBhbmQgY2xlYW51cCBGZXRj
aCBJREwgZmlsZXMgaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIHVubmVjZXNzYXJ5IGpzIGJ1
aWx0aW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDViMTAwYzc1
ZTE1YjlmNDc2NjI5NDRhYTBmYzViYjhkZDA5ZjQ2YzUuLmJhZWIxNzhkNDgxZGJlZGYyYmVkM2Rm
NmQ0ZTYzZmQxODE1NmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
CkBAIC0xNDEsMTUgKzE0MSwxNSBAQCAtIChKU1ZhbHVlICopZ2xvYmFsT2JqZWN0CiAKICsgKEpT
Q29udGV4dCAqKWN1cnJlbnRDb250ZXh0CiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0
YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0
aHJlYWQubV9hcGlEYXRhOwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5jb250ZXh0IDogbmls
OwogfQogCiArIChKU1ZhbHVlICopY3VycmVudFRoaXMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0
aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAo
Q2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQg
PSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+dGhp
c1ZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNTcsOCAr
MTU3LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiAKICsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEu
bV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAg
Q2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwog
ICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnktPmNhbGxlZVZhbHVlIGluQ29udGV4dDpbSlNDb250
ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNjYsOCArMTY2LDggQEAgKyAoSlNWYWx1ZSAqKWN1
cnJlbnRDYWxsZWUKIAogKyAoTlNBcnJheSAqKWN1cnJlbnRBcmd1bWVudHMKIHsKLSAgICBXVEZU
aHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0
YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5
ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAKICAgICBpZiAoIWVudHJ5KQog
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjk0LDIxICsyOTQsMjEgQEAgLSAoQk9PTClib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb25WYWx1ZQogCiAtICh2b2lkKWJl
Z2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tEYXRhIGNhbGxlZVZh
bHVlOihKU1ZhbHVlUmVmKWNhbGxlZVZhbHVlIHRoaXNWYWx1ZTooSlNWYWx1ZVJlZil0aGlzVmFs
dWUgYXJndW1lbnRDb3VudDooc2l6ZV90KWFyZ3VtZW50Q291bnQgYXJndW1lbnRzOihjb25zdCBK
U1ZhbHVlUmVmICopYXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OwogICAgIFtzZWxmIHJldGFpbl07Ci0gICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2Fs
bGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgQ2FsbGJhY2tEYXRhICpwcmV2
U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICAqY2FsbGJhY2tE
YXRhID0gKENhbGxiYWNrRGF0YSl7IHByZXZTdGFjaywgc2VsZiwgW3NlbGYuZXhjZXB0aW9uIHJl
dGFpbl0sIGNhbGxlZVZhbHVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywg
bmlsIH07Ci0gICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgdGhy
ZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IG5pbDsK
IH0KIAogLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxsYmFj
a0RhdGEKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgp
OworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgc2VsZi5leGNl
cHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsKICAgICBbY2FsbGJhY2tE
YXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07CiAgICAgW2NhbGxiYWNrRGF0YS0+Y3Vy
cmVudEFyZ3VtZW50cyByZWxlYXNlXTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9IGNhbGxi
YWNrRGF0YS0+bmV4dDsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0
OwogICAgIFtzZWxmIHJlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IGY2NWVmODQxYTdjMWUwMDZhMmVhYjcxNTI0ZmRkZThhNmFhMmEyNjcuLjNkNGJiZTM2
ZTYzMzg1OTFhMzg4Y2M2NTRmYjA1ODc4ODNkYWI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFuY2VU
aHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKFZNKiB2bSkKIHsK
LSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpCisgICAgaWYgKHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IFdURjo6
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKHZtLT5pc1NoYXJlZEluc3RhbmNlKCkgJiYgIWlzVmFsaWRTaGFyZWRJ
bnN0YW5jZVRocmVhZFN0YXRlKHZtKSkKQEAgLTIwMjMsNyArMjAyMyw3IEBAIEhlYXA6OlRpY2tl
dCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVzdCkKICAgICBzdG9wSWZO
ZWNlc3NhcnkoKTsKICAgICAKICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSBXVEY6OlRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3Ro
cmVhZExvY2spOwogICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBUaGF0
IG9ubHkgd29ya3MgaWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDViMzAy
NjRjN2Y0MTFlMzhkNTgwZjU1ZDVkN2QxZDY4OWIzNjAxZWIuLjg4MjNlNmY2MDE2MTEyYjQ3Mzlm
YTAyOGY0MzFiYzdlOGQ3YzhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCkBAIC00MSwxNCArNDEsMTMgQEAKICNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGlu
Z1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5n
VGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIHBy
b2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7CkBAIC02NCw3ICs2Myw3
IEBAIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjCiBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWlj
U3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAgICAg
ICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtNzQsNyArNzMsNyBAQCBib29sIGNoZWNrTW9kdWxl
U3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJF
cnJvciYgZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9n
cmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2Us
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IpOwpAQCAtOTIsNyArOTEsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2
bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVh
ZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmlsaW5n
IHByb2ZpbGUoc291cmNlKTsKQEAgLTE2Nyw3ICsxNjYsNyBAQCBzdGF0aWMgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4
ZWNTdAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMt
PnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsK
IAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5h
bWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTE3OCw3ICsxNzcsNyBAQCBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSRUxF
QVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBT
eW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAtMjA1
LDcgKzIwNCw3IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBK
U0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywKIEpTSW50ZXJuYWxQcm9taXNlKiBs
b2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52
bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5
T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywg
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsyMTUsNyBAQCBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERh
dGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNT
dHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7
CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0p
OwpAQCAtMjM0LDcgKzIzMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiBKU1ZhbHVlIGxp
bmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CkBAIC0yNDQsNyArMjQz
LDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmEKIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZt
KCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpLT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVLZXks
IHNjcmlwdEZldGNoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmNwcAppbmRleCA5OTI1NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2Li5k
NTUyZDBiMWY2Mjg3MTVhMjYzNmFiNzczN2VkZmM2MTk3MzRjMGM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoVk0qIHZtKQogewog
ICAgIC8vIENoZWNrIHRoZSBpZGVudGlmaWVyIHRhYmxlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUg
dGhyZWFkc3BlY2lmaWMgbWF0Y2hlcyB0aGUKICAgICAvLyB2bSdzIGlkZW50aWZpZXIgdGFibGUu
Ci0gICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZt
LT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwogfQogCiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggOWVmMTQzYWQ0OGU3MWQyOGIxN2Jh
NDE2ZmEzYjE0YmNiZGI3NDVhYS4uODUwNzNiNmQyOTViNTk5NjNhMjEzZDUyNDU1Yjg0YjRhZDE2
NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCkKICAgICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUoKTsKICNlbmRpZgog
ICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7Ci0gICAgICAgIFdURlRocmVhZERhdGEm
IHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHRocmVhZERhdGEuc2V0U2F2
ZWRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkLnNldFNhdmVk
TGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBiYTZjNDRhNWRmNTE0ZGU1MTdjOWEy
NTg3NTYxYTk4YTlkOTI0MTBlLi5jMmM4Mjc2YWMzMjkwZWYxNmM5ZmNlNGFmYTg0YTM5ZjYwMGNi
MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTEyNyw5
ICsxMjcsOSBAQCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIGlmICghbV92bSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3
dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsK
ICAgICBBU1NFUlQoIW1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0gICAgbV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlID0gdGhyZWFkRGF0YS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV92
bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0g
dGhyZWFkLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJs
ZSgpKTsKICAgICBBU1NFUlQobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogICAgIGlmICht
X3ZtLT5oZWFwLmhhc0FjY2VzcygpKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNMb2NrOjpk
aWRBY3F1aXJlTG9jaygpCiAgICAgdm9pZCogcCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUgY3Vy
cmVudCBzdGFjayBwb2ludGVyLgogICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShw
KTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0YWNr
VG9wKCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tU
b3AoKSk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVh
ZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpT
TG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKICAgICB9CiAKICAgICBpZiAobV9lbnRyeUF0b21pY1N0
cmluZ1RhYmxlKSB7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICAgICAgVGhyZWFkOjpjdXJy
ZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fZW50cnlBdG9taWNTdHJpbmdUYWJs
ZSk7CiAgICAgICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IG51bGxwdHI7CiAgICAgfQog
fQpAQCAtMjI1LDkgKzIyNSw5IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BB
bGxMb2NrcyogZHJvcHBlcikKIAogICAgIGRyb3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tEcm9w
RGVwdGgpOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0
YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6
Y3VycmVudCgpOworICAgIHRocmVhZC5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3Zt
LT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKIAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291
bnQgPSBtX2xvY2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CkBAIC0yNTIs
OSArMjUyLDkgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3Bw
ZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0aDsK
IAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAg
bV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZERhdGEuc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQo
KTsKKyAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2
ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9j
a3MoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBjOTFk
YWVjYmNkZDY1YTk2ZDYzM2YzMzE1M2Q1NGE5NDlhZDY1NzNiLi5kZWEwNTAyOGNkNzM1ZWI2Mzkx
NzQ3MGMxNTIyYjE4MjQ1ZGU1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xv
Y2suaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMjUxMDI0MzQ2NDM3N2E0NDlh
ZmVjYmM1OTlmZTk4NDI3MDlmZTdhLi4wNjk1OWJhNDY1ZTE5MmJlNjNhODE4OGQ5ZmMyMzc3Zjdj
ZTk2OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTQsNyArMTE0
LDYgQEAKICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKQEAgLTE3Niw3ICsxNzUs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB0b3BW
TUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2Fs
bGVyKCkpCiAgICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFByb21p
c2VEZWZlcnJlZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlw
ZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcg
QXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBE
ZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9t
aWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5
TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRG
b3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQpAQCAtMjExLDEz
ICsyMTAsMTMgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9zaGFkb3dDaGlja2VuKHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKSkKIHsK
ICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Ci0gICAgU3RhY2tCb3Vu
ZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBTdGFja0JvdW5kcyBzdGFj
ayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRlU29mdFJlc2VydmVkWm9u
ZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0YWNr
VG9wKHN0YWNrLm9yaWdpbigpKTsKIAogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVw
IGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhpcyk7
Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSA9
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNTdHJp
bmdUYWJsZSk7CisgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJp
bmdUYWJsZSA9IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSht
X2F0b21pY1N0cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0eU5hbWVzID0gbmV3IENvbW1vbklkZW50
aWZpZXJzKHRoaXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVy
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpAQCAtMjcwLDcgKzI2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoKnRo
aXMpOwogCi0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShl
eGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVhZDo6Y3VycmVudCgpLnNl
dEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUp
OwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8SklU
VGh1bmtzPigpOwpAQCAtNjcyLDcgKzY3MSw3IEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVTdGFj
a0xpbWl0cygpCiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tMaW1p
dDsKICNlbmRpZgogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKTsKICAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSA9IE9wdGlvbnM6OnJl
c2VydmVkWm9uZVNpemUoKTsKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGVuc3VyZWQg
dGhhdCBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11bVJlc2VydmVab25lU2l6
ZSBhdAogICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwgYW5kIHRoZSBvcHRpb24g
dmFsdWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFmdGVyLgpAQCAtODg2LDkg
Kzg4NSw5IEBAIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQogI2lmIEVOQUJM
RShKSVQpCiAgICAgLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjaywgd2UgZG9uJ3Qga25vdyBob3cg
bWFueSBzdGFjayBwYWdlcyBhcmUgYWN0dWFsbHkKICAgICAvLyBjb21taXR0ZWQuIFNvLCB3ZSB1
c2UgdGhlIGN1cnJlbnQgc3RhY2sgdXNhZ2UgYXMgYW4gZXN0aW1hdGUuCi0gICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGludDhf
dCogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1cnJlbnQpOwotICAgIGlu
dDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4od3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCkub3JpZ2luKCkpOworICAgIGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
OF90Kj4oVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5vcmlnaW4oKSk7CiAgICAgcmV0dXJuIGhp
Z2ggLSBjdXJyZW50OwogI2Vsc2UKICAgICByZXR1cm4gQ0xvb3BTdGFjazo6Y29tbWl0dGVkQnl0
ZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBlZTIzMmE3ZjIxY2Vj
ZDAxZGY3ZTkzMmY4YjUyZTc0ZTNlNDhmYTZkLi45ZmI0ZDhiZTQyYzFmNzhkMWViMGU1MDlkYmEy
OTM0MTZmM2JkZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY4LDcgKzY4
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3Ry
eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdFWFBf
VFJBQ0lORykKQEAgLTI0Myw3ICsyNDIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIC8v
IFdlYkNvcmUgaGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVhZHMgdG8gVk1zOwogICAg
IC8vIGVpdGhlciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWQoKSBzaG91bGQgb25seSBiZSBjYWxs
ZWQgb25jZQogICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRoZSAnZGVmYXVsdCcgVk0gKGl0
IHVzZXMgdGhlCi0gICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUg
ZnJvbSB3dGZUaHJlYWREYXRhKS4KKyAgICAvLyB0aHJlYWQncyBkZWZhdWx0IHN0cmluZyB1bmlx
dWluZyB0YWJsZSBmcm9tIFRocmVhZDo6Y3VycmVudCgpKS4KICAgICAvLyBBUEkgY29udGV4dHMg
Y3JlYXRlZCB1c2luZyB0aGUgbmV3IGNvbnRleHQgZ3JvdXAgYXdhcmUgaW50ZXJmYWNlCiAgICAg
Ly8gY3JlYXRlIEFQSUNvbnRleHRHcm91cCBvYmplY3RzIHdoaWNoIHJlcXVpcmUgbGVzcyBsb2Nr
aW5nIG9mIEpTQwogICAgIC8vIHRoYW4gdGhlIG9sZCBzaW5nbGV0b24gQVBJU2hhcmVkIFZNIGNy
ZWF0ZWQgZm9yIHVzZSBieQpAQCAtNjkxLDcgKzY5MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253
YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dp
bmdEb3dud2FyZCgpKTsKICAgICAgICAgdm9pZCogY3VyciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCZjdXJyKTsKICAgICAgICAgcmV0dXJuIGN1cnIgPj0gc3RhY2tMaW1pdDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRleCBj
MmQ5YmRhMTg4YzQ3NzIwMjU2ZDQwMzA2NDgyODZlYzQ1ZTMxYzU5Li5kMTFhOGZmYTY2ZGI1ZmUz
MGZiOWY0OWY0NTMxMzgzNmI3OGQyMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVk1FbnRyeVNjb3BlOjpW
TUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICwg
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVCghRGlzYWxsb3dWTVJl
ZW50cnk6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHd0ZlRocmVh
ZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0uZW50
cnlTY29wZSkgewogICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAppbmRleCA1YTc3NjE5NTBlMGNmNmIyODg1NjAx
OTMxYWY2YjcxYTNiZTAyZDc4Li5iYzBjMjVmOTFlMmMxNzYxYTIxY2EyMGViMDg4MmEwOTNhMjE1
MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgVk06OmVuc3VyZVN0YWNrQ2FwYWNpdHlG
b3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBBU1NF
UlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAg
cmV0dXJuIG5ld1RvcE9mU3RhY2sgPj0gbV9zb2Z0U3RhY2tMaW1pdDsKICNlbHNlCiAgICAgcmV0
dXJuIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChuZXdUb3BPZlN0YWNrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCAzYTExMDkwZDE5MDkzY2Nl
YmU4MDliYzcyZDNhNmE1MDJlOWM0YjVkLi43MjIyY2MwNDRmMGFkYzk4NzgwYTk5ZjA2YTNlNDli
YjQyM2RlYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1
ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtODgyLDcgKzg4Miw3
IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgaWYgKCFt
X3N0YWNrTGltaXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAg
ICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAgICAg
ICAgIGludDhfdCogbGltaXQgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KG1fc3RhY2tMaW1p
dCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IGxpbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDg2MTY3MWM0YWEyODEwYzFlMzNiNTdiMzgxM2YwOGE3
MGJkYjNlYi4uZTE0ZTBkYTM3ODVlODc3OGZjYmVjOTUwYjFkMjQ1Y2NjZWQ5OGJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNyArMTIzLDYgQEAK
IAkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1MUE4MjVC
MDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJQThBNDc0NjMxNTFBODI1
QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklD
VS5jcHAgKi87IH07CiAJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzU3MTUxQTgy
NUIwMDQxMjNGRiAvKiBVVEY4LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3Bw
ICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
ODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9
OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5
QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gKi87
IH07CiAJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2
NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovOyB9OwpAQCAt
NTE0LDggKzUxMyw2IEBACiAJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yVHJhaXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRh
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1UYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJl
YWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRocmVh
ZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM3QjE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3
NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QTQ3MjdG
MTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc2FsbG93Q1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05OTcsOCArOTk0LDYgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29y
ZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCi0J
CQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAotCQkJ
CUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDA5LDcgKzE0
MDQsNiBAQAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNv
Y29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0ODYxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGUxNWQ0NWM2M2M5MGRkODNkYWExYTc0YjUwZjMyODc1ZTk4YTkyM2IuLjVhNzU2ODg0ZDYy
N2UwYjIwYzZlYTk4ZDQwM2FjNDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0x
NTAsNyArMTUwLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVmFyaWFudC5oCiAgICAgVmVjdG9y
LmgKICAgICBWZWN0b3JUcmFpdHMuaAotICAgIFdURlRocmVhZERhdGEuaAogICAgIFdhbGxUaW1l
LmgKICAgICBXZWFrUHRyLmgKICAgICBXb3JkTG9jay5oCkBAIC0yNTQsNyArMjUzLDYgQEAgc2V0
KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZS5jcHAKICAgICBVVUlELmNwcAotICAgIFdURlRocmVhZERhdGEuY3BwCiAgICAgV2FsbFRp
bWUuY3BwCiAgICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5oIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29y
aXRobS5oCmluZGV4IDQ1MTQ4NTQ3N2FjZjY1NjRiODI4NzdkM2U2NTllOTAyNzhjODk1MWUuLmI4
ZTk4N2I5MDgxNTBmMjY2NzYwMGZhNDMxZjdiOTIwNGVmM2I4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3Jp
dGhtLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlu
bGluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgKaW5kZXggODQz
OGQyZTkyYWFkMzFlZmQ0NTk5ODNiOWM1MmMwOWEwNjlmZDBkYS4uMGNiZTVmYTVmYWM4MTBkOWNk
ZjFjOTM4MzdmMzAxZTJlNjhmYzRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9ja0Fs
Z29yaXRobUlubGluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5l
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgog
I2luY2x1ZGUgPHd0Zi9QYXJraW5nTG90Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiAvLyBJdCdzIGEgZ29vZCBpZGVhIHRvIGF2b2lkIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiB0
b28gbWFueSBwbGFjZXMsIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKIC8vIHRoZSBs
b2NrIGFsZ29yaXRobSBzbG93IHBhdGggd2l0aG91dCByZWNvbXBpbGluZyB0aGUgd29ybGQuIFJp
Z2h0IG5vdyB0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0d28KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRl
eCAxNGIzNDY3M2EwYmQ4NTc3YzEyN2ZjZjI2OWI3MzI5ZWI2YjAwN2Y4Li5hYjkyMTM0ZWQ4Yjhl
MWUxMzdjZjllN2M2M2JmMWMyODI0YWZiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuY3BwCmluZGV4IGNjMWEyMWI5ZWE1Y2NjYzZmMWFjZTRjOTc0OTg5OWJiZGE1
ZDdlMTAuLmY4ZmVkODhiMWY3Yzk5MjA5ODZhOTRlN2FiNmM1NTcxYjkyM2NlMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bh
cmtpbmdMb3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3BlY2lm
aWMuaCIKLSNpbmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisjaW5jbHVkZSAiVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgogI2lu
Y2x1ZGUgIldvcmRMb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCmluZGV4IDA2NGYyZjA1MmFhZjM4
YjlmODBhNmRkNDExMzJlNjU0NmU0NTdmNDIuLjhjYjQ2MjIxMWRmN2FkNTU3ZTNjN2FlMjQ4ZTU2
NTI4YjUxODZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNp
bmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YUxvZy5oIgotI2luY2x1ZGUgIldU
RlRocmVhZERhdGEuaCIKIAogLy8gRGVmaW5lIHRoZSBmb2xsb3dpbmcgZmxhZyBpZiB5b3Ugd2Fu
dCB0byBjb2xsZWN0IHN0YXRzIG9uIGV2ZXJ5IHNpbmdsZQogLy8gY2hlY2twb2ludC4gQnkgZGVm
YXVsdCwgd2Ugb25seSBsb2cgY2hlY2twb2ludHMgdGhhdCBlc3RhYmxpc2ggbmV3CkBAIC01OSw3
ICs1OCw3IEBAIGludCBTdGFja1N0YXRzOjpzX21heExheW91dFJlZW50cnlEZXB0aCA9IDA7CiAK
IFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cygpCiB7Ci0gICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKICAgICBt
X3JlZW50cnlEZXB0aCA9IDA7CiAgICAgbV9zdGFja1N0YXJ0ID0gKGNoYXIqKXN0YWNrLm9yaWdp
bigpOwogICAgIG1fY3VycmVudENoZWNrUG9pbnQgPSAwOwpAQCAtNzAsOSArNjksOSBAQCBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogU3RhY2tTdGF0czo6Q2hl
Y2tQb2ludDo6Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhy
ZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwot
ICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0
cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7
CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRz
OjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3Rh
Y2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rv
d253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKICAgICBib29sIG5lZWRUb0xvZyA9
IGZhbHNlOwpAQCAtMTI4LDggKzEyNyw4IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNr
UG9pbnQoKQogU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogewogICAgIHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgp
OwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERh
dGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYg
dCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVh
ZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFk
LnN0YWNrU3RhdHMoKTsKIAogICAgIC8vIFBvcCB0byBwcmV2aW91cyBjaGVja3BvaW50OgogICAg
IHQubV9jdXJyZW50Q2hlY2tQb2ludCA9IG1fcHJldjsKQEAgLTEzOCw3ICsxMzcsNyBAQCBTdGFj
a1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiAgICAgLy8gTG9nIHRoaXMgY2hlY2tw
b2ludCBpZiBuZWVkZWQ6CiAjaWYgRU5BQkxFKFZFUkJPU0VfU1RBQ0tfU1RBVFMpCiAgICAgaWYg
KCFtX3ByZXYpIHsKLSAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0
YS0+c3RhY2soKTsKKyAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0
YWNrKCk7CiAgICAgICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdE
b3dud2FyZCgpOwogCiAgICAgICAgIGNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPih0aGlzKTsKQEAgLTE1OSw5ICsxNTgsOSBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+
Q2hlY2tQb2ludCgpCiB2b2lkIFN0YWNrU3RhdHM6OnByb2JlKCkKIHsKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBX
VEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0
ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJl
YWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhy
ZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgp
OworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMo
KTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAg
IGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCkBA
IC0yMjAsOSArMjE5LDkgQEAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0Q2hl
Y2tQb2ludCgpCiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKIAogICAgIHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRo
cmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhy
ZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERh
dGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWRE
YXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Cisg
ICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwor
ICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9v
bCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXIuY3BwCmluZGV4IGUyYTMxYmU5OTc4YTlkZTQyZWJmYTMzYjA3MDZhNTI0MzNi
ZDcyY2IuLjAyYjBlMTRhYTFhMTAzYzQ3NWY5ZDBmZWIwMjUxZmEzZjY0NzQ0OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmNwcApAQCAtNDMsNCArNDMsOSBAQCBUaHJlYWRIb2xkZXI6On5UaHJlYWRI
b2xkZXIoKQogICAgIG1fdGhyZWFkLT5kaWRFeGl0KCk7CiB9CiAKK1RocmVhZEhvbGRlciYgVGhy
ZWFkSG9sZGVyOjppbml0aWFsaXplQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemUo
VGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oIGIvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyLmgKaW5kZXggYjJmOGRlNjg4NTBjNmFmZGM3OWVmZGFkYTA5YmU2ZGVm
YjE4MjZhOS4uZTRmZTY2ODY0MWM4NzFkMTI2Y2FiZjJlZmY2OGE4NzgwMWU1NmY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyLmgKQEAgLTI5LDEzICsyOSwxNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgVGhyZWFkSG9sZGVyX2gKKyNkZWZpbmUgVGhyZWFkSG9s
ZGVyX2gKIAorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFkOworCiAvLyBIb2xkcyBUaHJlYWQg
aW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLiBUaGUgZGVzdHJ1Y3RvciBvZiB0aGlzIGhv
bGRlciByZWxpYWJseSBkZXN0cm95IFRocmVhZC4KIC8vIEZvciBwdGhyZWFkLCBpdCBlbXBsb3lz
IHB0aHJlYWRzLXNwZWNpZmljIDItcGFzcyBkZXN0cnVjdGlvbiB0byByZWxpYWJseSByZW1vdmUg
VGhyZWFkLgogLy8gRm9yIFdpbmRvd3MsIHdlIHVzZSB0aHJlYWRfbG9jYWwgdG8gZGVmZXIgdGhy
ZWFkIGhvbGRlciBkZXN0cnVjdGlvbi4gSXQgYXNzdW1lcyByZWd1bGFyIFRocmVhZFNwZWNpZmlj
CkBAIC00NywyMyArNTEsMjYgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKIAogICAgIC8vIE9uZSB0
aW1lIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIGNsYXNzIGFzIGEgd2hvbGUuCiAgICAgLy8gVGhp
cyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGluaXRpYWxpemUoKSBhbmQgaXQgaXMgbm90
IHRocmVhZC1zYWZlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CiAKICAgICAvLyBD
cmVhdGVzIGFuZCBwdXRzIGFuIGluc3RhbmNlIG9mIFRocmVhZEhvbGRlciBpbnRvIHRocmVhZC1z
cGVjaWZpYyBzdG9yYWdlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVGhyZWFkJik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXImIGluaXRpYWxpemUoUmVm
PFRocmVhZD4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXIm
IGluaXRpYWxpemVDdXJyZW50KCk7CiAKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkLXNwZWNp
ZmljIHN0b3JhZ2Ugd2FzIG5vdCBpbml0aWFsaXplZC4KLSAgICBzdGF0aWMgVGhyZWFkSG9sZGVy
KiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciYgY3VycmVudCgpOworICAgIHN0
YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnRNYXlCZU51bGwoKTsKIAogICAgIFRocmVhZCYgdGhy
ZWFkKCkgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KIAogI2lmIE9TKFdJTkRPV1MpCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnREeWluZygpOwog
ICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiBnZXQoVGhyZWFkSWRlbnRpZmllcik7CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBUaHJlYWRIb2xkZXIoVGhyZWFkJiB0aHJlYWQpCi0gICAgICAgIDog
bV90aHJlYWQodGhyZWFkKQorICAgIFRocmVhZEhvbGRlcihSZWY8VGhyZWFkPiYmIHRocmVhZCkK
KyAgICAgICAgOiBtX3RocmVhZChXVEZNb3ZlKHRocmVhZCkpCiAgICAgICAgICwgbV9pc0Rlc3Ry
b3llZE9uY2UoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTc3LDcgKzg0LDM5IEBAIGNsYXNzIFRo
cmVhZEhvbGRlciB7CiAKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZDsKICAgICBib29sIG1faXNE
ZXN0cm95ZWRPbmNlOwotICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpY0tleSBtX2tleTsKKyAgICBz
dGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CiB9OwogCitpbmxp
bmUgVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwoKQoreworI2lm
ICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lm
aWNLZXkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPih0aHJlYWRTcGVj
aWZpY0dldChtX2tleSkpOworI2Vsc2UKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9s
ZGVyKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVkpKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQo
KQoreworICAgIC8vIFdSVCBXZWJDb3JlOgorICAgIC8vICAgIFRocmVhZEhvbGRlciBpcyB1c2Vk
IG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkCisgICAgLy8g
ICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXph
dGlvbiBoZXJlLgorICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKKyAgICAvLyAgICBUaHJlYWQ6
OmN1cnJlbnQoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygp
LCBlbnN1cmluZworICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJl
YWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICBpZiAoVU5M
SUtFTFkoVGhyZWFkSG9sZGVyOjptX2tleSA9PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpKQor
ICAgICAgICBpbml0aWFsaXplT25jZSgpOworI2VuZGlmCisgICAgaWYgKGF1dG8qIGhvbGRlciA9
IGN1cnJlbnRNYXlCZU51bGwoKSkKKyAgICAgICAgcmV0dXJuICpob2xkZXI7CisjaWYgT1MoV0lO
RE9XUykKKyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVudER5aW5nKCkpCisgICAgICAgIHJl
dHVybiAqaG9sZGVyOworI2VuZGlmCisgICAgcmV0dXJuIGluaXRpYWxpemVDdXJyZW50KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgorI2VuZGlmIC8vIFRocmVhZEhvbGRlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKaW5kZXggMjBlNWU4OGY3NmRhYzJmNzYwNzMz
NGE4ZWIzYWFlYWNkYWQ1Zjk2My4uODU2ODQxZTMyMzZkYmVhOGRmMDMyMDgxZjllMjY0YzMxZGQ1
NjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcApAQCAtNDEsMzYg
KzQxLDQxIEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpCiAgICAgdGhyZWFk
U3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRocmVhZEhvbGRlciog
VGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjppbml0
aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogeworICAgIGF1dG8qIGhvbGRlciA9IG5ldyBU
aHJlYWRIb2xkZXIoV1RGTW92ZSh0aHJlYWQpKTsKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICAv
LyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwg
YnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZpbmcgdGhpcyByZWxl
YXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKKyAg
ICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiByZWxl
YXNlIG1vZGUuCiAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0
KG1fa2V5KSk7Ci19Ci0KLXZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFRocmVhZCYgdGhy
ZWFkKQotewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElkZWFsbHkgd2UnZCBo
YXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBo
dXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBo
ZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAgICAgICAgLy8gV1RG
Ojppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2Rl
LgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAg
ICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIG5ldyBUaHJlYWRIb2xkZXIodGhyZWFkKSk7
Ci0gICAgfQorICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOworI2Vsc2UKKyAg
ICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgaG9sZGVy
KTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0cnVj
dCk7CisjZW5kaWYKKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xkZXI6
OmRlc3RydWN0KHZvaWQqIGRhdGEpCiB7Ci0gICAgVGhyZWFkSG9sZGVyKiB0aHJlYWRJZGVudGlm
aWVyRGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KGRhdGEpOwotICAgIEFTU0VSVCh0
aHJlYWRJZGVudGlmaWVyRGF0YSk7CisgICAgVGhyZWFkSG9sZGVyKiBob2xkZXIgPSBzdGF0aWNf
Y2FzdDxUaHJlYWRIb2xkZXIqPihkYXRhKTsKKyAgICBBU1NFUlQoaG9sZGVyKTsKIAotICAgIGlm
ICh0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UpIHsKLSAgICAgICAgZGVs
ZXRlIHRocmVhZElkZW50aWZpZXJEYXRhOworICAgIGlmIChob2xkZXItPm1faXNEZXN0cm95ZWRP
bmNlKSB7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOworICAg
IGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOwogICAgIC8vIFJlLXNldHRpbmcgdGhl
IHZhbHVlIGZvciBrZXkgY2F1c2VzIGFub3RoZXIgZGVzdHJ1Y3QoKSBjYWxsIGFmdGVyIGFsbCBv
dGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQuCi0gICAgdGhyZWFk
U3BlY2lmaWNTZXQobV9rZXksIHRocmVhZElkZW50aWZpZXJEYXRhKTsKKyNpZiAhSEFWRShGQVNU
X1RMUykKKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKKyAg
ICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKKyNlbHNlCisgICAgX3B0aHJlYWRf
c2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVksIGhvbGRlcik7CisgICAgcHRo
cmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCAmZGVzdHJ1Y3QpOworI2VuZGlm
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkSG9sZGVyV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAKaW5k
ZXggZjA2YjYyZjY4ZTIwMTM2MzVjNjM1MTVlOGMwZTRmMTVmZTQ2MTZkYS4uOThiMmMyOGJlZjZl
NGI0MzZhYTE1MmYxNDQzNzE4NjAzZTU2ZTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4u
Y3BwCkBAIC01NiwxNSArNTYsOSBAQCB2b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2Uo
KQogICAgIHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKCZtX2tleSwgZGVzdHJ1Y3QpOwogfQogCi1U
aHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpCitUaHJlYWRIb2xkZXIqIFRocmVh
ZEhvbGRlcjo6Y3VycmVudER5aW5nKCkKIHsKICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRo
cmVhZFNwZWNpZmljS2V5KTsKLSAgICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0YXRpY19jYXN0
PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7Ci0gICAgaWYgKGhvbGRl
cikgewotICAgICAgICBBU1NFUlQoaG9sZGVyICE9IEludmFsaWRUaHJlYWRIb2xkZXIpOwotICAg
ICAgICByZXR1cm4gaG9sZGVyOwotICAgIH0KLQogICAgIC8vIEFmdGVyIEZMUyBpcyBkZXN0cm95
ZWQsIHRoaXMgbWFwIG9mZmVycyB0aGUgdmFsdWUgdW50aWwgdGhlIHNlY29uZCB0aHJlYWQgZXhp
dCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICByZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGN1cnJl
bnRUaHJlYWQoKSk7CkBAIC04MCwyMSArNzQsMjEgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkSG9s
ZGVyOjpnZXQoVGhyZWFkSWRlbnRpZmllciBpZCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFkJiB0aHJlYWQpCitUaHJlYWRIb2xk
ZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShSZWY8VGhyZWFkPiYmIHRocmVhZCkKIHsKLSAg
ICBpZiAoIWN1cnJlbnQoKSkgewotICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFz
IGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3Jt
YW5jZS4KLSAgICAgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0
aGF0IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCi0gICAgICAgIC8vIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAgICAg
QVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3
OTMyMTM+IGlzIGZpeGVkLgotICAgICAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVy
KHRocmVhZCk7Ci0gICAgICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOwotICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRo
cmVhZE1hcE11dGV4KCkpOwotICAgICAgICAgICAgdGhyZWFkTWFwKCkuYWRkKHRocmVhZC5pZCgp
LCBob2xkZXIpOwotICAgICAgICB9CisgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhpcyBhcyBh
IHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1cnQgcGVyZm9ybWFu
Y2UuCisgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0IHdl
IHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCisgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5n
KCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgorICAgIEFTU0VSVChtX2tleSAh
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3
b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3OTMyMTM+IGlzIGZpeGVkLgor
ICAgIGF1dG8gaWQgPSB0aHJlYWQtPmlkKCk7CisgICAgYXV0byogaG9sZGVyID0gbmV3IFRocmVh
ZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBo
b2xkZXIpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tl
cih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICAgICAgdGhyZWFkTWFwKCkuYWRkKGlkLCBob2xkZXIp
OwogICAgIH0KKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xkZXI6OmRl
c3RydWN0KHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
Y3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBiM2ZmYTdjZjcxOTNhNjA5
ODBkZTcyZTEwMGUwYTQwNzgyNjBkNjQyLi4yZTExMzg0NWE1ZDM3NGNlYTVlN2YxOWFhNzRkMGNi
YzQ2NzJlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvVGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZE1lc3NhZ2UuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJl
YWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKICNpZiBIQVZFKFFPU19DTEFTU0VTKQpAQCAt
OTQsNiArOTQsMTMgQEAgY29uc3QgY2hhciogVGhyZWFkOjpub3JtYWxpemVUaHJlYWROYW1lKGNv
bnN0IGNoYXIqIHRocmVhZE5hbWUpCiAjZW5kaWYKIH0KIAordm9pZCBUaHJlYWQ6OmluaXRpYWxp
emVJblRocmVhZCgpCit7CisgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IHN0YWNrKCkub3JpZ2lu
KCk7CisgICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jdXJyZW50
QXRvbWljU3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZTsKK30KKwogdm9p
ZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkK
IHsKICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uOwpAQCAtMTA1LDcgKzExMiw3IEBAIHZv
aWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRleHQp
CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5zdGFnZSA9PSBOZXdUaHJlYWRDb250ZXh0OjpTdGFn
ZTo6RXN0YWJsaXNoZWRIYW5kbGUpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhyZWFkIGhv
bGRlciB3aXRoIGVzdGFibGlzaGVkIElELgotICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxp
emUoY29udGV4dC0+dGhyZWFkLmdldCgpKTsKKyAgICAgICAgVGhyZWFkSG9sZGVyOjppbml0aWFs
aXplKGNvbnRleHQtPnRocmVhZC5jb3B5UmVmKCkpOwogCiAgICAgICAgIFRocmVhZDo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5uYW1lKTsKICAgICAgICAgZnVuY3Rp
b24gPSBXVEZNb3ZlKGNvbnRleHQtPmVudHJ5UG9pbnQpOwpAQCAtMTE2LDYgKzEyMyw3IEBAIHZv
aWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRleHQp
CiAgICAgICAgIGNvbnRleHQtPnN0YWdlID0gTmV3VGhyZWFkQ29udGV4dDo6U3RhZ2U6OkluaXRp
YWxpemVkOwogICAgICAgICBjb250ZXh0LT5jb25kaXRpb24uc2lnbmFsKCk7CiAjZW5kaWYKKyAg
ICAgICAgY29udGV4dC0+dGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsKICAgICB9CiAKICAg
ICBBU1NFUlQoIVRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNFbXB0eSgpKTsKQEAgLTE1NSwx
NCArMTYzLDYgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciogbmFt
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGVudHJ5UG9pbnQpCiAgICAgcmV0dXJuIFdURk1vdmUodGhy
ZWFkKTsKIH0KIAotVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQotewotICAgIFRo
cmVhZEhvbGRlciogZGF0YSA9IFRocmVhZEhvbGRlcjo6Y3VycmVudCgpOwotICAgIGlmIChkYXRh
KQotICAgICAgICByZXR1cm4gJmRhdGEtPnRocmVhZCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBzdGF0aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRGcm9tVGhyZWFkR3JvdXAoKQogewog
I2lmIE9TKFdJTkRPV1MpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBUaHJlYWQ6OmRpZEV4aXQo
KQogICAgICAgICAgICAgdGhyZWFkR3JvdXAtPm1fdGhyZWFkcy5yZW1vdmUoKnRoaXMpOwogICAg
ICAgICB9CiAgICAgfQorICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKKyAg
ICAgICAgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3RyaW5n
VGFibGUpOworCiAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBzYXkgInRocmVhZCBpcyBleGl0ZWQi
IGFmdGVyIHVucmVnaXN0ZXJpbmcgdGhyZWFkcyBmcm9tIHRocmVhZCBncm91cHMuCiAgICAgLy8g
U28gd2UgbmVlZCB0byBzZXBhcmF0ZSBtX2lzU2h1dHRpbmdEb3duIGZyb20gbV9kaWRFeGl0Lgog
ICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CkBAIC0yNzcs
OSArMjgwLDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKIHsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXpl
S2V5LCBbXSB7Ci0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKTsKICAgICAg
ICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwotICAgICAgICB3dGZUaHJlYWRE
YXRhKCk7CisgICAgICAgIFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICBpbml0aWFsaXplRGF0
ZXMoKTsKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmgKaW5kZXggZmY1MGJmYTg5Yjc2OGJjMDgxOGM2Mzk4OWQyZmYzZjVl
MmM0MTkyNy4uMmM2NTYzMjdmMDM5Yjk0OThmNzdhMDY1MDEwMWU5NTQ4YjlhODU3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3Rl
cnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRz
Lmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkSG9s
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC01MCwxMiArNTIsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBj
bGFzcyBBYnN0cmFjdExvY2tlcjsKK2NsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogY2xhc3MgVGhy
ZWFkTWVzc2FnZURhdGE7CiAKLWVudW0gY2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1bHQ7Cit1c2lu
ZyBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSB2b2lkICgqKShBdG9taWNTdHJpbmdUYWJs
ZSopOwogCi11c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Ci10eXBlZGVmIHZvaWQg
KCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOworZW51bSBjbGFzcyBUaHJlYWRHcm91
cEFkZFJlc3VsdDsKIAogY2xhc3MgVGhyZWFkR3JvdXA7CiBjbGFzcyBUaHJlYWRIb2xkZXI7CkBA
IC02NSw2ICs2Nyw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkR3JvdXA7CiAgICAg
ZnJpZW5kIGNsYXNzIFRocmVhZEhvbGRlcjsKKyAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5n
VGFibGU7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRocmVhZCgpOwogCkBAIC03Myw4ICs3
Niw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+
IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IGNyZWF0ZShj
b25zdCBjaGFyKiB0aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgLy8gUmV0
dXJucyBUaHJlYWQgb2JqZWN0LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFk
JiBjdXJyZW50KCk7Ci0gICAgc3RhdGljIFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOworICAg
IHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFkSWRlbnRp
ZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJvdXQg
aWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3VsZCBr
bm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJlCkBA
IC0xNDEsNiArMTQzLDQ3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxUaHJlYWQ+IHsKICAgICAgICAgcmV0dXJuIG1fc3RhY2s7CiAgICAgfQogCisgICAgQXRv
bWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAgICB9CisKKyAgICBBdG9taWNTdHJpbmdU
YWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEF0b21pY1N0cmluZ1RhYmxlKiBhdG9t
aWNTdHJpbmdUYWJsZSkKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZ1RhYmxlKiBvbGRBdG9t
aWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICBtX2N1
cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICByZXR1
cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisjaWYgRU5BQkxFKFNUQUNLX1NUQVRT
KQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3N0YWNrU3RhdHM7CisgICAgfQorI2VuZGlmCisKKyAgICB2b2lkKiBz
YXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9zYXZl
ZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICB9CisKKyAgICB2b2lkIHNldFNhdmVkU3RhY2tQ
b2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKKyAgICB7CisgICAg
ICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50cnk7
CisgICAgfQorCisgICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CisgICAgfQorCisgICAgdm9pZCBzZXRTYXZlZExh
c3RTdGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCisgICAgeworICAgICAgICBtX3NhdmVkTGFz
dFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOworICAgIH0KKworICAgIHZvaWQqIG1fYXBpRGF0YSB7
IG51bGxwdHIgfTsKKwogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtYWNoVGhyZWFk
KCkgeyByZXR1cm4gbV9wbGF0Zm9ybVRocmVhZDsgfQogI2VuZGlmCkBAIC0xNTAsMTMgKzE5Mywx
NiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7
CiBwcm90ZWN0ZWQ6CiAgICAgVGhyZWFkKCk7CiAKKyAgICBzdGF0aWMgUmVmPFRocmVhZD4gY3Jl
YXRlQ3VycmVudFRocmVhZCgpOworICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhyZWFkKCk7CisKICAg
ICAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQgZXN0YWJsaXNobWVudCBpbXBs
ZW1lbnRhdGlvbi4KICAgICBib29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0Kik7
CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0gICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmlj
SGFuZGxlKHB0aHJlYWRfdCk7CisgICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFu
ZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKICNlbHNlCi0gICAgdm9pZCBlc3RhYmxpc2hQbGF0
Zm9ybVNwZWNpZmljSGFuZGxlKEhBTkRMRSwgVGhyZWFkSWRlbnRpZmllcik7CisgICAgdm9pZCBl
c3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlLCBUaHJl
YWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiAjaWYgVVNFKFBUSFJFQURTKSAmJiAhT1MoREFSV0lO
KQpAQCAtMTk3LDIyICsyNDMsMjUgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFRocmVhZD4gewogICAgIFZlY3RvcjxzdGQ6OndlYWtfcHRyPFRocmVhZEdyb3Vw
Pj4gbV90aHJlYWRHcm91cHM7CiAgICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fZGlkRXhpdCB7IGZhbHNlIH07Ci0jaWYgVVNFKFBUSFJFQURTKQotICAgIHB0
aHJlYWRfdCBtX2hhbmRsZTsKLQorICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxlOwog
I2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwotI2Vsc2UK
KyNlbGlmIFVTRShQVEhSRUFEUykKICAgICBzZW1fdCBtX3NlbWFwaG9yZUZvclN1c3BlbmRSZXN1
bWU7CiAgICAgUGxhdGZvcm1SZWdpc3RlcnMgbV9wbGF0Zm9ybVJlZ2lzdGVyczsKICAgICB1bnNp
Z25lZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3N1c3Bl
bmRlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgSEFORExFIG1f
aGFuZGxlIHsgSU5WQUxJRF9IQU5ETEVfVkFMVUUgfTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBT
eXN0ZW0KKworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJs
ZSB7IG51bGxwdHIgfTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9kZWZhdWx0QXRvbWljU3Ry
aW5nVGFibGUgeyBudWxscHRyIH07CisgICAgQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIG1f
YXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIHsgbnVsbHB0ciB9OworCisjaWYgRU5BQkxFKFNU
QUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzIG1fc3RhY2tTdGF0czsK
ICNlbmRpZgorICAgIHZvaWQqIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgeyBudWxscHRy
IH07CisgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKIH07CiAKIC8vIFRoaXMgZnVuY3Rp
b24gY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWRzLgpAQCAtMjIzLDYgKzI3MiwxMCBAQCBp
bmxpbmUgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKICAgICByZXR1cm4gVGhyZWFk
OjpjdXJyZW50SUQoKTsKIH0KIAoraW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKK3sK
KyAgICByZXR1cm4gVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkudGhyZWFkKCk7Cit9CiAKIC8vIEZJ
WE1FOiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZW1haW4gYmVjYXVzZSB0aGV5IGFyZSB1c2Vk
IGZyb20gV2ViS2l0IFdpbmRvd3Mgc3VwcG9ydCBsaWJyYXJ5LAogLy8gV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy5kbGwuIFdoZW4gdXBkYXRpbmcgdGhlIHN1cHBvcnQgbGlicmFyeSwgd2Ugc2hv
dWxkIHVzZSBuZXcgQVBJIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApp
bmRleCAzMGM0OTlmZGE5Y2FlMWY2ZGY2NGMxZDRlYWE2Y2I1YjZmOTgxNzcyLi42ZTg4YWE2YThh
MDkwZDk3ZTc3N2MzMWEzYmQyYTY2YWRjMzBjNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit1c2luZyBU
aHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Cit1c2luZyBUaHJlYWRGdW5jdGlvbiA9IHZvaWQg
KCopKHZvaWQqIGFyZ3VtZW50KTsKKwogI2lmIFVTRShQVEhSRUFEUykKIHVzaW5nIFBsYXRmb3Jt
VGhyZWFkSGFuZGxlID0gcHRocmVhZF90OwogdXNpbmcgUGxhdGZvcm1NdXRleCA9IHB0aHJlYWRf
bXV0ZXhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCAxMmQ3YzcxMzg2
MTkyZThmNDU1N2UzM2YyOWIzNTIxOTg3NjVlNzhmLi5jZmVlYWJiMjM4OGYwZmJjZWU1NDI4NjEw
NTFiY2NkNmE3ZTgxYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhy
ZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0y
ODYsMTggKzI4NiwxNiBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICAgICAgZGlkQmVjb21l
RGV0YWNoZWQoKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQotewotICAgIGlmIChU
aHJlYWQqIGN1cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxsKCkpCi0gICAgICAgIHJldHVybiAqY3Vy
cmVudDsKIAorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkKK3sKICAg
ICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90IGVz
dGFibGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRo
cmVhZCgpKTsKICAgICB0aHJlYWQtPmVzdGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUocHRo
cmVhZF9zZWxmKCkpOwogICAgIHRocmVhZC0+bV9zdGFjayA9IFN0YWNrQm91bmRzOjpjdXJyZW50
VGhyZWFkU3RhY2tCb3VuZHMoKTsKLSAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUodGhyZWFk
LmdldCgpKTsKKyAgICB0aHJlYWQtPmluaXRpYWxpemVJblRocmVhZCgpOwogICAgIGluaXRpYWxp
emVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCgpOwotICAgIHJldHVybiB0aHJlYWQu
Z2V0KCk7CisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAogVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6
OmN1cnJlbnRJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3Bw
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAppbmRleCAwNTIzYTJlNmJiNWY2NjI2
YWM4YzA0YzkyODlhMDVlNTdmNWUwMTUwLi5lOTMxZGZmYjhmNGRiZDA3ZThhNjI0NWQyNzNiNjgz
ODM0YjM4MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKQEAgLTI0MywxMSArMjQzLDggQEAg
c2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMp
CiAgICAgcmV0dXJuIHNpemVvZihDT05URVhUKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6OmN1cnJl
bnQoKQorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkKIHsKLSAgICBp
ZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJlTnVsbCgpKQotICAgICAgICByZXR1cm4g
KmN1cnJlbnQ7Ci0KICAgICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRocmVhZElkZW50
aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBh
ZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKIApAQCAtMjU3LDkgKzI1NCw5IEBAIFRocmVhZCYgVGhy
ZWFkOjpjdXJyZW50KCkKIAogICAgIHRocmVhZC0+ZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hh
bmRsZShoYW5kbGUsIGN1cnJlbnRJRCgpKTsKICAgICB0aHJlYWQtPm1fc3RhY2sgPSBTdGFja0Jv
dW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7Ci0gICAgVGhyZWFkSG9sZGVyOjppbml0
aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsK
ICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5vbldURkNyZWF0ZWQoKTsKLSAgICBy
ZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0aHJlYWQ7CiB9CiAKIFRocmVhZElkZW50
aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RG
VGhyZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlNzdkMjU4NWY4YTYxNDQ0Zjk3NGU3YzNiOGFkMTNh
MWNiNjY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgiCi0K
LSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgotCi0jaWYgVVNFKFdFQl9U
SFJFQUQpCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotI2lmICFIQVZFKEZBU1RfVExTKQotVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0
YT4qIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7Ci0jZW5kaWYKLQotV1RGVGhyZWFkRGF0YTo6
V1RGVGhyZWFkRGF0YSgpCi0gICAgOiBtX3N0YWNrQm91bmRzKFN0YWNrQm91bmRzOjpjdXJyZW50
VGhyZWFkU3RhY2tCb3VuZHMoKSkKLSAgICAsIG1fc2F2ZWRMYXN0U3RhY2tUb3Aoc3RhY2soKS5v
cmlnaW4oKSkKLXsKLSAgICBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKCp0aGlzKTsKLSAgICBt
X2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlOwot
fQotCi1XVEZUaHJlYWREYXRhOjp+V1RGVGhyZWFkRGF0YSgpCi17Ci0gICAgaWYgKG1fYXRvbWlj
U3RyaW5nVGFibGVEZXN0cnVjdG9yKQotICAgICAgICBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1
Y3RvcihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7Ci19Ci0KLSNpZiBIQVZFKEZBU1RfVExT
KQotV1RGVGhyZWFkRGF0YSYgV1RGVGhyZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRz
cGVjaWZpY0RpcmVjdCgpCi17Ci0gICAgV1RGVGhyZWFkRGF0YSogZGF0YSA9IG5ldyBXVEZUaHJl
YWREYXRhOwotICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RBVEFf
S0VZLCBkYXRhKTsKLSAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVks
IFtdKHZvaWQqIGRhdGEpewotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V1RGVGhyZWFkRGF0
YSo+KGRhdGEpOwotICAgIH0pOwotICAgIHJldHVybiAqZGF0YTsKLX0KLSNlbmRpZgotCi19IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
aCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmE1ZmY4MTc2NmQ4M2M1NmRiY2FjYjYzYmFlNmUyNjA4YTYyYzMwMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9X
VEZUaHJlYWREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaWZuZGVmIFdU
RlRocmVhZERhdGFfaAotI2RlZmluZSBXVEZUaHJlYWREYXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9G
YXN0VExTLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0
YWNrQm91bmRzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KLSNpbmNsdWRlIDx3dGYv
VGhyZWFkU3BlY2lmaWMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEF0b21pY1N0cmlu
Z1RhYmxlOwotCi10eXBlZGVmIHZvaWQgKCpBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpKEF0
b21pY1N0cmluZ1RhYmxlKik7Ci0KLWNsYXNzIFdURlRocmVhZERhdGEgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdURlRocmVhZERhdGEpOwotcHVibGljOgotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBXVEZUaHJlYWREYXRhKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIH5XVEZUaHJlYWRE
YXRhKCk7Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwotICAgIH0KLQot
ICAgIEF0b21pY1N0cmluZ1RhYmxlKiBzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoQXRvbWlj
U3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKQotICAgIHsKLSAgICAgICAgQXRvbWljU3Ry
aW5nVGFibGUqIG9sZEF0b21pY1N0cmluZ1RhYmxlID0gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFi
bGU7Ci0gICAgICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gYXRvbWljU3RyaW5nVGFi
bGU7Ci0gICAgICAgIHJldHVybiBvbGRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICB9Ci0KLSAgICBj
b25zdCBTdGFja0JvdW5kcyYgc3RhY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RhY2tC
b3VuZHM7Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQotICAgIFN0YWNrU3RhdHM6
OlBlclRocmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0
YWNrU3RhdHM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0
Vk1FbnRyeSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1F
bnRyeTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KHZv
aWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKLSAgICB7Ci0gICAgICAgIG1fc2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgfQotCi0gICAgdm9p
ZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0
U3RhY2tUb3A7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTYXZlZExhc3RTdGFja1RvcCh2b2lkKiBs
YXN0U3RhY2tUb3ApCi0gICAgewotICAgICAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gbGFzdFN0
YWNrVG9wOwotICAgIH0KLQotICAgIHZvaWQqIG1fYXBpRGF0YSB7IG51bGxwdHIgfTsKLQotcHJp
dmF0ZToKLSAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUg
eyBudWxscHRyIH07Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIG1fZGVmYXVsdEF0b21pY1N0cmlu
Z1RhYmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciBtX2F0
b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciB7IG51bGxwdHIgfTsKLQotICAgIFN0YWNrQm91bmRz
IG1fc3RhY2tCb3VuZHM7Ci0jaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQotICAgIFN0YWNrU3RhdHM6
OlBlclRocmVhZFN0YXRzIG1fc3RhY2tTdGF0czsKLSNlbmRpZgotICAgIHZvaWQqIG1fc2F2ZWRT
dGFja1BvaW50ZXJBdFZNRW50cnkgeyBudWxscHRyIH07Ci0gICAgdm9pZCogbV9zYXZlZExhc3RT
dGFja1RvcDsKLQotI2lmIEhBVkUoRkFTVF9UTFMpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBXVEZUaHJlYWREYXRhJiBjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0
KCk7Ci0jZWxzZQotICAgIHN0YXRpYyBXVEZfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZpYzxXVEZU
aHJlYWREYXRhPiogc3RhdGljRGF0YTsKLSNlbmRpZgotCi0gICAgZnJpZW5kIFdURlRocmVhZERh
dGEmIHd0ZlRocmVhZERhdGEoKTsKLSAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nVGFibGU7
Ci19OwotCi1pbmxpbmUgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgpCi17Ci0gICAgLy8g
V1JUIFdlYkNvcmU6Ci0gICAgLy8gICAgV1RGVGhyZWFkRGF0YSBpcyB1c2VkIG9uIG1haW4gdGhy
ZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkCi0gICAgLy8gICAgb24gc2Vjb25k
YXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXphdGlvbiBoZXJlLgot
ICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKLSAgICAvLyAgICB3dGZUaHJlYWREYXRhKCkgaXMg
aW5pdGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVUaHJlYWRpbmcoKSwgZW5zdXJpbmcKLSAg
ICAvLyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBwdGhyZWFkX29uY2UgbG9ja2Vk
IGNvbnRleHQuCi0jaWYgIUhBVkUoRkFTVF9UTFMpCi0gICAgaWYgKCFXVEZUaHJlYWREYXRhOjpz
dGF0aWNEYXRhKQotICAgICAgICBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhID0gbmV3IFRocmVh
ZFNwZWNpZmljPFdURlRocmVhZERhdGE+OwotICAgIHJldHVybiAqKldURlRocmVhZERhdGE6OnN0
YXRpY0RhdGE7Ci0jZWxzZQotICAgIGlmIChXVEZUaHJlYWREYXRhKiBkYXRhID0gc3RhdGljX2Nh
c3Q8V1RGVGhyZWFkRGF0YSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFE
X0RBVEFfS0VZKSkpCi0gICAgICAgIHJldHVybiAqZGF0YTsKLSAgICByZXR1cm4gV1RGVGhyZWFk
RGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpOwotI2VuZGlmCi19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OldURlRocmVhZERhdGE7Ci11c2lu
ZyBXVEY6Ond0ZlRocmVhZERhdGE7Ci11c2luZyBXVEY6OkF0b21pY1N0cmluZ1RhYmxlOwotCi0j
ZW5kaWYgLy8gV1RGVGhyZWFkRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAK
aW5kZXggYTRlMDNkZTNhZjY1N2M2OWY3NGQxNjI1MWYwMDA3MzkxMzZhNTM0NC4uMmEwNjUxMjgz
YTk3MjcxZTU3NmEyMjJkZGYwMjMyMGQwNmEwZDJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJBdG9taWNTdHJpbmcuaCIKIAotI2luY2x1ZGUgIkludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmg+CisKICNpbmNsdWRlICJkdG9hLmgiCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKaW5kZXggMzUyMjQ4NWQ3Yjg0NzNj
YzgwZTUyNDBhNzMyYTA1NTNjNDhiYzM0Mi4uMDYzZTRlZWI3ZTU3ZTVjZDg1YjBhMTcxOTU0ZDM4
OTI0YzE3Nzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlN0cmlu
Z1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkaW5nLmgiCi0jaW5jbHVkZSAiV1RGVGhy
ZWFkRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIAogI2lmIFVTRShXRUJf
VEhSRUFEKQpAQCAtNzIsNyArNzEsNyBAQCB1c2luZyBTdHJpbmdUYWJsZUltcGwgPSBIYXNoU2V0
PFN0cmluZ0ltcGwqPjsKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgU3RyaW5nVGFibGVJbXBsJiBz
dHJpbmdUYWJsZSgpCiB7Ci0gICAgcmV0dXJuIHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpLT50YWJsZSgpOworICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJp
bmdUYWJsZSgpLT50YWJsZSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAK
aW5kZXggZmU4YTQ4ODRkYjdlNjc4ZGVkNmFmMzJkZDQzNzEyZTU5NWYzYjkzNS4uZjZkNzhmMmJl
NmY0OGYyYWE2ODJjMDVkMTBkMjQ2NDY4YjBjMjRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmdUYWJsZS5jcHAKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9X
VEZUaHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKFdURlRocmVhZERhdGEmIGRh
dGEpCit2b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoVGhyZWFkJiB0aHJlYWQpCiB7CiAj
aWYgVVNFKFdFQl9USFJFQUQpCiAgICAgLy8gT24gaU9TLCBvbmUgQXRvbWljU3RyaW5nVGFibGUg
aXMgc2hhcmVkIGJldHdlZW4gdGhlIG1haW4gVUkgdGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFkLgpA
QCAtMzcsMTcgKzM3LDE3IEBAIHZvaWQgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShXVEZUaHJl
YWREYXRhJiBkYXRhKQogCiAgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQgPSBpc1dl
YlRocmVhZCgpOwogICAgIGlmIChjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQgfHwgaXNVSVRocmVh
ZCgpKQotICAgICAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gc2hhcmVkU3Ry
aW5nVGFibGU7CisgICAgICAgIHRocmVhZC5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IHNo
YXJlZFN0cmluZ1RhYmxlOwogICAgIGVsc2UKLSAgICAgICAgZGF0YS5tX2RlZmF1bHRBdG9taWNT
dHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgdGhyZWFkLm1fZGVm
YXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOwogCiAgICAgLy8g
V2UgZG8gdGhlIGZvbGxvd2luZyBzbyB0aGF0IGl0cyBkZXN0cnVjdGlvbiBoYXBwZW5zIG9ubHkK
ICAgICAvLyBvbmNlIC0gb24gdGhlIG1haW4gVUkgdGhyZWFkLgogICAgIGlmICghY3VycmVudFRo
cmVhZElzV2ViVGhyZWFkKQotICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVj
dG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisgICAgICAgIHRocmVhZC5tX2F0b21p
Y1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OwogI2Vs
c2UKLSAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmlu
Z1RhYmxlOwotICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNT
dHJpbmdUYWJsZTo6ZGVzdHJveTsKKyAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFi
bGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAgdGhyZWFkLm1fYXRvbWljU3RyaW5nVGFi
bGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CiAjZW5kaWYgLy8gVVNF
KFdFQl9USFJFQUQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaApp
bmRleCA5NDRhZTkyYmRlYzQ0MzliZjA3MDEyMWI3OGEzNWY1YTg0ZmM0MDlkLi5kM2JjOWNlNWY2
ZTA3Mjc3NTZjYzllYmJlNGYxMjUzN2ZhYWIyYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmdUYWJsZS5oCkBAIC0yNCwxOSArMjQsMTkgQEAKICNkZWZpbmUgV1RGX0F0b21pY1N0
cmluZ1RhYmxlX2gKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdJbXBsOworY2xhc3MgVGhyZWFkOwogCiBjbGFzcyBB
dG9taWNTdHJpbmdUYWJsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BdG9taWNTdHJpbmdUYWJsZSgpOwogCi0gICAgc3Rh
dGljIHZvaWQgY3JlYXRlKFdURlRocmVhZERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGUo
VGhyZWFkJik7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHRhYmxlKCkgeyByZXR1cm4gbV90
YWJsZTsgfQogCiBwcml2YXRlOgpAQCAtNDYsNSArNDYsNiBAQCBjbGFzcyBBdG9taWNTdHJpbmdU
YWJsZSB7CiB9OwogCiB9Cit1c2luZyBXVEY6OkF0b21pY1N0cmluZ1RhYmxlOwogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA4YTAyMzBi
YWJmOTVjYmE5N2Y5YThmODYyODE5YWI0MGQxN2ZjZTQyLi42M2IxZTBlNTc0MTFkMDYzM2M0MTk4
ZjRhZTA5MzUzYTAzNTUxMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Fz
eW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXgg
YjhmYWY1YThkNzkxMDJmMmVmZGQ4YmRhNjQzMWMwNzdiZmYxM2JmMC4uNzczODI5ZDVlN2I0ZWIz
M2Q3YmU4MzgwNzE2ZjlhMzMzNzI2ZjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY2LDcgKzY1
LDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgLy8gYW55IG90
aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCAtIHRoaXMgbWFr
ZXMgdGhpcyBhIGNvbnZlbmllbnQKICAgICAvLyBwb2ludCB0byBjYWxsIG1ldGhvZHMgdGhhdCBp
bnRlcm5hbGx5IHBlcmZvcm0gYSBvbmUtdGltZSBpbml0aWFsaXphdGlvbiB0aGF0IGlzIG5vdAog
ICAgIC8vIHRocmVhZHNhZmUuCi0gICAgd3RmVGhyZWFkRGF0YSgpOworICAgIFRocmVhZDo6Y3Vy
cmVudCgpOwogICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLmgKaW5kZXggNjZlOGU5OTFlMTI5NjJiNTRmZDc0MzkyZDk1MmU3
MzI4ZmQ2NDA5MC4uZWMyNzExYjUyMDcyNTIzMzI0YTZmZjA0N2MzNmJkMzg3MDBlOGFmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBVU0UoVklERU9UT09MQk9YKQogCiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggNjEyMmI0
ZjJjNTBiNjRiYTVjN2ZmYzlkZGUzZjRkYTU2MjlhMDM4Ny4uYzhmMDVhMWEwYWVkNjAyY2JkOGMw
OTRlMGE5NzIwM2FmOWM2MDZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzAyLDcgKzcwMiw3IEBAIHN0YXRpYyB2b2lkIFN0
YXJ0V2ViVGhyZWFkKCkKIHsKICAgICB3ZWJUaHJlYWRTdGFydGVkID0gVFJVRTsKIAotICAgIC8v
IFRocmVhZEdsb2JhbERhdGEgdG91Y2hlcyBBdG9taWNTdHJpbmcsIHdoaWNoIHJlcXVpcmVzIFdU
RlRocmVhZERhdGEgYW5kIFRocmVhZGluZyBpbml0aWFsaXphdGlvbi4KKyAgICAvLyBUaHJlYWRH
bG9iYWxEYXRhIHRvdWNoZXMgQXRvbWljU3RyaW5nLCB3aGljaCByZXF1aXJlcyBUaHJlYWRpbmcg
aW5pdGlhbGl6YXRpb24uCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKICAgICAv
LyBJbml0aWFsaXplIEF0b21pY1N0cmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNDI1YzkyNDhkODcwNDgyN2JiMGUwMzgy
MWEyYWU4ZGM4YWFjMGQ3MC4uNjgxYTFlZjc1NDgxMDBkMWEyOTY2MDllNjJjYjdmOWFmYjYyZTBl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjE2LDcgKzIx
Niw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogICAgIC8vIFdlIGNhbm5v
dCBsZXQgYW55IG9iamVjdHMgc3Vydml2ZSBwYXN0IHRocmVhZCBleGl0LCBiZWNhdXNlIG5vIG90
aGVyIHRocmVhZCB3aWxsIHJ1biBHQyBvciBvdGhlcndpc2UgZGVzdHJveSB0aGVtLgogICAgIHdv
cmtlckdsb2JhbFNjb3BlVG9EZWxldGUgPSBudWxscHRyOwogCi0gICAgLy8gQ2xlYW4gdXAgV2Vi
Q29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RGOjpXVEZUaHJlYWREYXRhIGdvZXMgYXdh
eSEKKyAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhIGJlZm9yZSBXVEY6
OlRocmVhZCBnb2VzIGF3YXkhCiAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLmRlc3Ryb3koKTsKIAog
ICAgIC8vIFRoZSB0aHJlYWQgb2JqZWN0IG1heSBiZSBhbHJlYWR5IGRlc3Ryb3llZCBmcm9tIG5v
dGlmaWNhdGlvbiBub3csIGRvbid0IHRyeSB0byBhY2Nlc3MgInRoaXMiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316717</attachid>
            <date>2017-07-29 10:57:50 -0700</date>
            <delta_ts>2017-07-31 09:41:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170730025749.patch</filename>
            <type>text/plain</type>
            <size>71468</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NThkMWFlOWQ4YjFmNDllYTc4M2UzZmVlMzJkYmM4ZmNmMjk2ZDA1Li44OWY2MDE4MGY5ZWIxOGY5
YjZjNDVjZDMwOWEwOTkxMzBmOTEzMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFRocmVh
ZDo6Y3VycmVudCgpIGluc3RlYWQuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAgICAgKCtbSlNDb250ZXh0
IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50Q2FsbGVlXSk6Cisg
ICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6CisgICAgICAgICgtW0pTQ29u
dGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhpc1ZhbHVlOmFyZ3VtZW50
Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgZW5kQ2FsbGJhY2tXaXRo
RGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpy
ZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRh
eCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1
YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6Omxp
bmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6CisgICAg
ICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkaWRB
Y3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpKU0xvY2s6
OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06
OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNvbW1pdHRlZFN0YWNrQnl0
ZUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjppc1Nh
ZmVUb1JlY3Vyc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAqIHJ1
bnRpbWUvVk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFja0NhcGFjaXR5
Rm9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFy
cjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlIGNvbnN0KToKKwogMjAx
Ny0wNy0yOCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogY2FwdHVyZSBhbiBhc3luYyBzdGFjayB0cmFjZSB3aGVuIHdlYiBjb250ZW50
IGNhbGxzIGFkZEV2ZW50TGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDY1ZDJkZWU1MDFlYzU4YTE5OWY1MWRlZGRl
MjFjODliOWVmMDlhMy4uOWRmOGZkMGMzYTZhNGMxNGIzMWI0ZWZkOTA0NjJkZGUwYjdkODAwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3NSBAQAorMjAxNy0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6
Y3VycmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0NzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2UgcGxhY2VkIHRocmVhZCBzcGVjaWZpYyBkYXRhIGluIFdURlRocmVhZERhdGEgcHJldmlvdXNs
eS4gQnV0IG5vdywgd2UgaGF2ZSBhIG5ldyBnb29kIHBsYWNlCisgICAgICAgIHRvIHB1dCB0aHJl
YWQgc3BlY2lmaWMgZGF0YTogV1RGOjpUaHJlYWQuIEJlZm9yZSB0aGlzIHBhdGNoLCBXVEZUaHJl
YWREYXRhIGFuZCBXVEY6OlRocmVhZAorICAgICAgICBzb21ldGltZXMgaGF2ZSB0aGUgY29tcGxl
dGVseSBzYW1lIGZpZWxkcyAobV9zdGFjayBldGMuKSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gb3Jk
ZXIgbGltaXRhdGlvbnMuCisgICAgICAgIFRoaXMgcGF0Y2ggbWVyZ2VzIFdURlRocmVhZERhdGEg
dG8gV1RGOjpUaHJlYWQuIFdlIGFwcGx5IFdURlRocmVhZERhdGEncyBpbml0aWFsaXphdGlvbiBz
dHlsZQorICAgICAgICB0byBXVEY6OlRocmVhZC4gU28sIFdURjo6VGhyZWFkJ3MgaG9sZGVyIG5v
dyB1c2VzIGZhc3QgVExTIGZvciBkYXJ3aW4gZW52aXJvbm1lbnQuIFRodXMsCisgICAgICAgIFRo
cmVhZDo6Y3VycmVudCgpIGFjY2VzcyBpcyBub3cgYWNjZWxlcmF0ZWQuIEFuZCBXVEY6OlRocmVh
ZDo6Y3VycmVudCgpIGNhbiBiZSBhY2Nlc3NlZCBldmVuCisgICAgICAgIGJlZm9yZSBjYWxsaW5n
IFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3
dGYvTG9ja0FsZ29yaXRobS5oOgorICAgICAgICAqIHd0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5o
OgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1BhcmtpbmdMb3Qu
Y3BwOgorICAgICAgICAqIHd0Zi9TdGFja1N0YXRzLmNwcDoKKyAgICAgICAgKFdURjo6U3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHM6OlBlclRocmVhZFN0YXRzKToKKyAgICAgICAgKFdURjo6U3Rh
Y2tTdGF0czo6Q2hlY2tQb2ludDo6Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3Rh
dHM6OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6
cHJvYmUpOgorICAgICAgICAoV1RGOjpTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50OjpMYXlv
dXRDaGVja1BvaW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkSG9sZGVyLmNwcDoKKyAgICAgICAg
KFdURjo6VGhyZWFkSG9sZGVyOjppbml0aWFsaXplQ3VycmVudCk6CisgICAgICAgICogd3RmL1Ro
cmVhZEhvbGRlci5oOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OlRocmVhZEhvbGRlcik6
CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudE1heUJlTnVsbCk6CisgICAgICAg
IChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRl
clB0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpkZXN0cnVjdCk6CisgICAgICAgIChXVEY6OlRo
cmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZEhvbGRl
cldpbi5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudER5aW5nKToKKyAg
ICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdURjo6VGhy
ZWFkSG9sZGVyOjpjdXJyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNw
cDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQpOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OmVudHJ5UG9pbnQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmRpZEV4aXQp
OgorICAgICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKFdURjo6VGhy
ZWFkOjpjdXJyZW50TWF5QmVOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Lmg6CisgICAgICAgIChXVEY6OlRocmVhZDo6YXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSk6CisgICAgICAgIChXVEY6
OlRocmVhZDo6c3RhY2tTdGF0cyk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkU3RhY2tQb2lu
dGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZExhc3RTdGFja1RvcCk6
CisgICAgICAgIChXVEY6OlRocmVhZDo6c2V0U2F2ZWRMYXN0U3RhY2tUb3ApOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
Lmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJy
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjpjdXJyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0
cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpzdHJpbmdUYWJsZSk6CisgICAgICAgICogd3Rm
L3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmdU
YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oOgor
CiAyMDE3LTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtXVEZdIERyb3AgVGhyZWFkIGluaXRpYWxpemF0aW9uIHdhaXQgaW4gc29tZSBwbGF0
Zm9ybXMgYnkgaW50cm9kdWNpbmcgU3RhY2tCb3VuZHM6Om5ld1RocmVhZFN0YWNrQm91bmRzKFBs
YXRmb3JtVGhyZWFkSGFuZGxlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNGYwY2UyYTczZTdiNzNmNzEzMTZh
ZGMzNGUzZjI3NzU2ZmFkMTFmLi5iYWRkNTQwODI5NzQ5YWQ4N2ExYjM0M2Y1NGFmOGQyYTRlN2I0
OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMDctMjkgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgTWVyZ2UgV1RGVGhyZWFkRGF0
YSB0byBUaHJlYWQ6OmN1cnJlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBUaHJlYWQ6OmN1cnJlbnQoKSBpbnN0ZWFkLgorCisgICAgICAgICog
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEds
b2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFk
R2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2Vy
VGhyZWFkKToKKwogMjAxNy0wNy0yOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeGVkIGJ1aWxkaW5nIGZvciBtYWNPUyAxMC4xMiB3aXRoIHRoZSBtYWNPUyAx
MC4xMyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDViMTAw
Yzc1ZTE1YjlmNDc2NjI5NDRhYTBmYzViYjhkZDA5ZjQ2YzUuLmJhZWIxNzhkNDgxZGJlZGYyYmVk
M2RmNmQ0ZTYzZmQxODE1NmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
Lm1tCkBAIC0xNDEsMTUgKzE0MSwxNSBAQCAtIChKU1ZhbHVlICopZ2xvYmFsT2JqZWN0CiAKICsg
KEpTQ29udGV4dCAqKWN1cnJlbnRDb250ZXh0CiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFk
RGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxi
YWNrRGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhy
ZWFkOjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEg
Kil0aHJlYWQubV9hcGlEYXRhOwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5jb250ZXh0IDog
bmlsOwogfQogCiArIChKU1ZhbHVlICopY3VycmVudFRoaXMKIHsKLSAgICBXVEZUaHJlYWREYXRh
JiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50cnkg
PSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0aHJl
YWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxi
YWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRyeS0+
dGhpc1ZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNTcs
OCArMTU3LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiAKICsgKEpTVmFsdWUgKiljdXJy
ZW50Q2FsbGVlCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERh
dGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERh
dGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Cisg
ICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRh
OwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtKU1Zh
bHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnktPmNhbGxlZVZhbHVlIGluQ29udGV4dDpbSlND
b250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNjYsOCArMTY2LDggQEAgKyAoSlNWYWx1ZSAq
KWN1cnJlbnRDYWxsZWUKIAogKyAoTlNBcnJheSAqKWN1cnJlbnRBcmd1bWVudHMKIHsKLSAgICBX
VEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNr
RGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAg
VGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVu
dHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAKICAgICBpZiAoIWVudHJ5
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjk0LDIxICsyOTQsMjEgQEAgLSAoQk9PTClib29s
RnJvbU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb25WYWx1ZQogCiAtICh2b2lk
KWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tEYXRhIGNhbGxl
ZVZhbHVlOihKU1ZhbHVlUmVmKWNhbGxlZVZhbHVlIHRoaXNWYWx1ZTooSlNWYWx1ZVJlZil0aGlz
VmFsdWUgYXJndW1lbnRDb3VudDooc2l6ZV90KWFyZ3VtZW50Q291bnQgYXJndW1lbnRzOihjb25z
dCBKU1ZhbHVlUmVmICopYXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0
YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVu
dCgpOwogICAgIFtzZWxmIHJldGFpbl07Ci0gICAgQ2FsbGJhY2tEYXRhICpwcmV2U3RhY2sgPSAo
Q2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgQ2FsbGJhY2tEYXRhICpw
cmV2U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICAqY2FsbGJh
Y2tEYXRhID0gKENhbGxiYWNrRGF0YSl7IHByZXZTdGFjaywgc2VsZiwgW3NlbGYuZXhjZXB0aW9u
IHJldGFpbl0sIGNhbGxlZVZhbHVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50
cywgbmlsIH07Ci0gICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGE7CisgICAg
dGhyZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IG5p
bDsKIH0KIAogLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFja0RhdGEgKiljYWxs
YmFja0RhdGEKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0
YSgpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgc2VsZi5l
eGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsKICAgICBbY2FsbGJh
Y2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07CiAgICAgW2NhbGxiYWNrRGF0YS0+
Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKLSAgICB0aHJlYWREYXRhLm1fYXBpRGF0YSA9IGNh
bGxiYWNrRGF0YS0+bmV4dDsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5u
ZXh0OwogICAgIFtzZWxmIHJlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCmluZGV4IGY2NWVmODQxYTdjMWUwMDZhMmVhYjcxNTI0ZmRkZThhNmFhMmEyNjcuLjNkNGJi
ZTM2ZTYzMzg1OTFhMzg4Y2M2NTRmYjA1ODc4ODNkYWI2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFu
Y2VUaHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKFZNKiB2bSkK
IHsKLSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpCisgICAgaWYgKHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IFdU
Rjo6VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKHZtLT5pc1NoYXJlZEluc3RhbmNlKCkgJiYgIWlzVmFsaWRTaGFy
ZWRJbnN0YW5jZVRocmVhZFN0YXRlKHZtKSkKQEAgLTIwMjMsNyArMjAyMyw3IEBAIEhlYXA6OlRp
Y2tldCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVzdCkKICAgICBzdG9w
SWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSBXVEY6OlRocmVhZDo6Y3VycmVu
dCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKCpt
X3RocmVhZExvY2spOwogICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFsIHRoZSBjb25uLiBU
aGF0IG9ubHkgd29ya3MgaWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5IG5vdCBydW5uaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDVi
MzAyNjRjN2Y0MTFlMzhkNTgwZjU1ZDVkN2QxZDY4OWIzNjAxZWIuLjg4MjNlNmY2MDE2MTEyYjQ3
MzlmYTAyOGY0MzFiYzdlOGQ3YzhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwCkBAIC00MSwxNCArNDEsMTMgQEAKICNpbmNsdWRlICJQYXJzZXIu
aCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2Zp
bGluZ1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6
Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGUq
IHByb2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAg
SlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7CkBAIC02NCw3ICs2
Myw3IEBAIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjCiBib29sIGNoZWNrU3ludGF4KFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1Rh
YmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRv
bWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAogICAg
ICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RC
dWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtNzQsNyArNzMsNyBAQCBib29sIGNoZWNrTW9k
dWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJz
ZXJFcnJvciYgZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQ
cm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKICAgICAg
ICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxl
LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZXJyb3IpOwpAQCAtOTIsNyArOTEsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRo
cmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmls
aW5nIHByb2ZpbGUoc291cmNlKTsKQEAgLTE2Nyw3ICsxNjYsNyBAQCBzdGF0aWMgSlNJbnRlcm5h
bFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ss
IEV4ZWNTdAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4
ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3Ry
aW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdU
YWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJF
TEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKIAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVs
ZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTE3OCw3ICsxNzcsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNl
Q29kZSYgc291cgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBS
RUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdU
YWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJF
TEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAg
ICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUodm0pOwpAQCAt
MjA1LDcgKzIwNCw3IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25z
dCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywKIEpTSW50ZXJuYWxQcm9taXNl
KiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVj
LT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3Ry
aW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JC
dXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhl
YywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsIG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsyMTUsNyBAQCBKU0lu
dGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQo
KSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUo
dm0pOwpAQCAtMjM0LDcgKzIzMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiBKU1ZhbHVl
IGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVu
dCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgp
LmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CkBAIC0yNDQsNyAr
MjQzLDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmEKIEpTSW50ZXJuYWxQcm9taXNlKiBpbXBv
cnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpT
VmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMt
PnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJp
bmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9i
amVjdCgpLT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShleGVjLCBtb2R1bGVL
ZXksIHNjcmlwdEZldGNoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmNwcAppbmRleCA5OTI1NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVkZTU3NzIyZTIwZWQ2
Li5kNTUyZDBiMWY2Mjg3MTVhMjYzNmFiNzczN2VkZmM2MTk3MzRjMGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBA
IHZvaWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoVk0qIHZtKQog
ewogICAgIC8vIENoZWNrIHRoZSBpZGVudGlmaWVyIHRhYmxlIGFjY2Vzc2libGUgdGhyb3VnaCB0
aGUgdGhyZWFkc3BlY2lmaWMgbWF0Y2hlcyB0aGUKICAgICAvLyB2bSdzIGlkZW50aWZpZXIgdGFi
bGUuCi0gICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodm0s
IHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwogfQogCiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmlu
Z1RhYmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggOWVmMTQzYWQ0OGU3MWQyOGIx
N2JhNDE2ZmEzYjE0YmNiZGI3NDVhYS4uODUwNzNiNmQyOTViNTk5NjNhMjEzZDUyNDU1Yjg0YjRh
ZDE2NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBpbml0aWFsaXplVGhy
ZWFkaW5nKCkKICAgICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUoKTsKICNlbmRp
ZgogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7Ci0gICAgICAgIFdURlRocmVhZERh
dGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHRocmVhZERhdGEuc2V0
U2F2ZWRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAgICAg
VGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkLnNldFNh
dmVkTGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBiYTZjNDRhNWRmNTE0ZGU1MTdj
OWEyNTg3NTYxYTk4YTlkOTI0MTBlLi5jMmM4Mjc2YWMzMjkwZWYxNmM5ZmNlNGFmYTg0YTM5ZjYw
MGNiMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTEy
Nyw5ICsxMjcsOSBAQCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIGlmICghbV92
bSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEg
PSB3dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQo
KTsKICAgICBBU1NFUlQoIW1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0gICAgbV9lbnRyeUF0
b21pY1N0cmluZ1RhYmxlID0gdGhyZWFkRGF0YS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUo
bV92bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxl
ID0gdGhyZWFkLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKICAgICBBU1NFUlQobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAogICAgIGlm
IChtX3ZtLT5oZWFwLmhhc0FjY2VzcygpKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNMb2Nr
OjpkaWRBY3F1aXJlTG9jaygpCiAgICAgdm9pZCogcCA9ICZwOyAvLyBBIHByb3h5IGZvciB0aGUg
Y3VycmVudCBzdGFjayBwb2ludGVyLgogICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRy
eShwKTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFzdFN0
YWNrVG9wKCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3Rh
Y2tUb3AoKSk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRo
cmVhZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lk
IEpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKICAgICB9CiAKICAgICBpZiAobV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlKSB7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWlj
U3RyaW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICAgICAgVGhyZWFkOjpj
dXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fZW50cnlBdG9taWNTdHJpbmdU
YWJsZSk7CiAgICAgICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IG51bGxwdHI7CiAgICAg
fQogfQpAQCAtMjI1LDkgKzIyNSw5IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERy
b3BBbGxMb2NrcyogZHJvcHBlcikKIAogICAgIGRyb3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tE
cm9wRGVwdGgpOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERh
dGEoKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0t
PnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0
YWNrVG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVh
ZDo6Y3VycmVudCgpOworICAgIHRocmVhZC5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSht
X3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0
YWNrVG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKIAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2Nr
Q291bnQgPSBtX2xvY2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CkBAIC0y
NTIsOSArMjUyLDkgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRy
b3BwZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCiAKICAgICAtLW1fbG9ja0Ryb3BEZXB0
aDsKIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0g
ICAgbV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZERhdGEuc2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZERhdGEu
c2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJl
bnQoKTsKKyAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQu
c2F2ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxs
TG9ja3MoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBj
OTFkYWVjYmNkZDY1YTk2ZDYzM2YzMzE1M2Q1NGE5NDlhZDY1NzNiLi5kZWEwNTAyOGNkNzM1ZWI2
MzkxNzQ3MGMxNTIyYjE4MjQ1ZGU1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMjUxMDI0MzQ2NDM3N2E0
NDlhZmVjYmM1OTlmZTk4NDI3MDlmZTdhLi4wNjk1OWJhNDY1ZTE5MmJlNjNhODE4OGQ5ZmMyMzc3
ZjdjZTk2OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMTQsNyAr
MTE0LDYgQEAKICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKQEAgLTE3Niw3ICsx
NzUsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB0
b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5v
Q2FsbGVyKCkpCiAgICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFBy
b21pc2VEZWZlcnJlZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZt
VHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBu
ZXcgQXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9
PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBB
dG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVt
cHR5TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdv
cmRGb3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQpAQCAtMjEx
LDEzICsyMTAsMTMgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgICwgbV9zaGFkb3dDaGlja2VuKHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKSkK
IHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Ci0gICAgU3RhY2tC
b3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBTdGFja0JvdW5kcyBz
dGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRlU29mdFJlc2VydmVk
Wm9uZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAgICAgc2V0TGFzdFN0
YWNrVG9wKHN0YWNrLm9yaWdpbigpKTsKIAogICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB0byBr
ZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodGhp
cyk7Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJs
ZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9taWNT
dHJpbmdUYWJsZSk7CisgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9taWNT
dHJpbmdUYWJsZSA9IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJs
ZShtX2F0b21pY1N0cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0eU5hbWVzID0gbmV3IENvbW1vbklk
ZW50aWZpZXJzKHRoaXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVj
dHVyZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwpAQCAtMjcwLDcgKzI2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3Mo
KnRoaXMpOwogCi0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJs
ZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVhZDo6Y3VycmVudCgp
LnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFi
bGUpOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8
SklUVGh1bmtzPigpOwpAQCAtNjcyLDcgKzY3MSw3IEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVT
dGFja0xpbWl0cygpCiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tM
aW1pdDsKICNlbmRpZgogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFk
RGF0YSgpLnN0YWNrKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpj
dXJyZW50KCkuc3RhY2soKTsKICAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSA9IE9wdGlvbnM6
OnJlc2VydmVkWm9uZVNpemUoKTsKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGVuc3Vy
ZWQgdGhhdCBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11bVJlc2VydmVab25l
U2l6ZSBhdAogICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwgYW5kIHRoZSBvcHRp
b24gdmFsdWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFmdGVyLgpAQCAtODg2
LDkgKzg4NSw5IEBAIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQogI2lmIEVO
QUJMRShKSVQpCiAgICAgLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjaywgd2UgZG9uJ3Qga25vdyBo
b3cgbWFueSBzdGFjayBwYWdlcyBhcmUgYWN0dWFsbHkKICAgICAvLyBjb21taXR0ZWQuIFNvLCB3
ZSB1c2UgdGhlIGN1cnJlbnQgc3RhY2sgdXNhZ2UgYXMgYW4gZXN0aW1hdGUuCi0gICAgQVNTRVJU
KHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlu
dDhfdCogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1cnJlbnQpOwotICAg
IGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4od3RmVGhyZWFkRGF0YSgp
LnN0YWNrKCkub3JpZ2luKCkpOworICAgIGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50OF90Kj4oVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5vcmlnaW4oKSk7CiAgICAgcmV0dXJu
IGhpZ2ggLSBjdXJyZW50OwogI2Vsc2UKICAgICByZXR1cm4gQ0xvb3BTdGFjazo6Y29tbWl0dGVk
Qnl0ZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBlZTIzMmE3ZjIx
Y2VjZDAxZGY3ZTkzMmY4YjUyZTc0ZTNlNDhmYTZkLi45ZmI0ZDhiZTQyYzFmNzhkMWViMGU1MDlk
YmEyOTM0MTZmM2JkZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY4LDcg
KzY4LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5j
bHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdF
WFBfVFJBQ0lORykKQEAgLTI0Myw3ICsyNDIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAg
IC8vIFdlYkNvcmUgaGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVhZHMgdG8gVk1zOwog
ICAgIC8vIGVpdGhlciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWQoKSBzaG91bGQgb25seSBiZSBj
YWxsZWQgb25jZQogICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRoZSAnZGVmYXVsdCcgVk0g
KGl0IHVzZXMgdGhlCi0gICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFi
bGUgZnJvbSB3dGZUaHJlYWREYXRhKS4KKyAgICAvLyB0aHJlYWQncyBkZWZhdWx0IHN0cmluZyB1
bmlxdWluZyB0YWJsZSBmcm9tIFRocmVhZDo6Y3VycmVudCgpKS4KICAgICAvLyBBUEkgY29udGV4
dHMgY3JlYXRlZCB1c2luZyB0aGUgbmV3IGNvbnRleHQgZ3JvdXAgYXdhcmUgaW50ZXJmYWNlCiAg
ICAgLy8gY3JlYXRlIEFQSUNvbnRleHRHcm91cCBvYmplY3RzIHdoaWNoIHJlcXVpcmUgbGVzcyBs
b2NraW5nIG9mIEpTQwogICAgIC8vIHRoYW4gdGhlIG9sZCBzaW5nbGV0b24gQVBJU2hhcmVkIFZN
IGNyZWF0ZWQgZm9yIHVzZSBieQpAQCAtNjkxLDcgKzY5MCw3IEBAIGNsYXNzIFZNIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZN
PiB7CiAKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rv
d253YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dy
b3dpbmdEb3dud2FyZCgpKTsKICAgICAgICAgdm9pZCogY3VyciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KCZjdXJyKTsKICAgICAgICAgcmV0dXJuIGN1cnIgPj0gc3RhY2tMaW1pdDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRl
eCBjMmQ5YmRhMTg4YzQ3NzIwMjU2ZDQwMzA2NDgyODZlYzQ1ZTMxYzU5Li5kMTFhOGZmYTY2ZGI1
ZmUzMGZiOWY0OWY0NTMxMzgzNmI3OGQyMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVk1FbnRyeVNjb3Bl
OjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
ICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVCghRGlzYWxsb3dW
TVJlZW50cnk6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIGlmICghdm0u
ZW50cnlTY29wZSkgewogICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAppbmRleCA1YTc3NjE5NTBlMGNmNmIyODg1
NjAxOTMxYWY2YjcxYTNiZTAyZDc4Li5iYzBjMjVmOTFlMmMxNzYxYTIxY2EyMGViMDg4MmEwOTNh
MjE1MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgVk06OmVuc3VyZVN0YWNrQ2FwYWNp
dHlGb3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBB
U1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAg
ICAgcmV0dXJuIG5ld1RvcE9mU3RhY2sgPj0gbV9zb2Z0U3RhY2tMaW1pdDsKICNlbHNlCiAgICAg
cmV0dXJuIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChuZXdUb3BPZlN0YWNrKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCAzYTExMDkwZDE5MDkz
Y2NlYmU4MDliYzcyZDNhNmE1MDJlOWM0YjVkLi43MjIyY2MwNDRmMGFkYzk4NzgwYTk5ZjA2YTNl
NDliYjQyM2RlYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4u
Y3BwCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgogI2lu
Y2x1ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtODgyLDcgKzg4
Miw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgaWYg
KCFtX3N0YWNrTGltaXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJU
KHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAg
ICAgICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAg
ICAgICAgIGludDhfdCogbGltaXQgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KG1fc3RhY2tM
aW1pdCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IGxpbWl0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDg2MTY3MWM0YWEyODEwYzFlMzNiNTdiMzgxM2Yw
OGE3MGJkYjNlYi4uZTE0ZTBkYTM3ODVlODc3OGZjYmVjOTUwYjFkMjQ1Y2NjZWQ5OGJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNyArMTIzLDYg
QEAKIAkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM0QjE1MUE4
MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJQThBNDc0NjMxNTFB
ODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRv
cklDVS5jcHAgKi87IH07CiAJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzU3MTUx
QTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEu
Y3BwICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICov
OyB9OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0g
Ki87IH07CiAJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYy
Q0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwICovOyB9OwpA
QCAtNTE0LDggKzUxMyw2IEBACiAJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFp
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yVHJhaXRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBW
TVRhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1UYWdzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZU
aHJlYWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURlRo
cmVhZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzM3QjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QTQ3
MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc2FsbG93Q1R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC05OTcsOCArOTk0LDYgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyog
V29yZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVl
LmNwcCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8s
Ci0JCQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAot
CQkJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDA5LDcg
KzE0MDQsNiBAQAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1
ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAv
KiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0ODYxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CmluZGV4IGUxNWQ0NWM2M2M5MGRkODNkYWExYTc0YjUwZjMyODc1ZTk4YTkyM2IuLjVhNzU2ODg0
ZDYyN2UwYjIwYzZlYTk4ZDQwM2FjNDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC0xNTAsNyArMTUwLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVmFyaWFudC5oCiAgICAgVmVj
dG9yLmgKICAgICBWZWN0b3JUcmFpdHMuaAotICAgIFdURlRocmVhZERhdGEuaAogICAgIFdhbGxU
aW1lLmgKICAgICBXZWFrUHRyLmgKICAgICBXb3JkTG9jay5oCkBAIC0yNTQsNyArMjUzLDYgQEAg
c2V0KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Ns
b2NrVHlwZS5jcHAKICAgICBVVUlELmNwcAotICAgIFdURlRocmVhZERhdGEuY3BwCiAgICAgV2Fs
bFRpbWUuY3BwCiAgICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5oIGIvU291cmNlL1dURi93dGYvTG9ja0Fs
Z29yaXRobS5oCmluZGV4IDQ1MTQ4NTQ3N2FjZjY1NjRiODI4NzdkM2U2NTllOTAyNzhjODk1MWUu
LmI4ZTk4N2I5MDgxNTBmMjY2NzYwMGZhNDMxZjdiOTIwNGVmM2I4MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxn
b3JpdGhtLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRo
bUlubGluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgKaW5kZXgg
ODQzOGQyZTkyYWFkMzFlZmQ0NTk5ODNiOWM1MmMwOWEwNjlmZDBkYS4uMGNiZTVmYTVmYWM4MTBk
OWNkZjFjOTM4MzdmMzAxZTJlNjhmYzRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9j
a0FsZ29yaXRobUlubGluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5s
aW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXJraW5nTG90Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCiAvLyBJdCdzIGEgZ29vZCBpZGVhIHRvIGF2b2lkIGluY2x1ZGluZyB0aGlzIGhlYWRlciBp
biB0b28gbWFueSBwbGFjZXMsIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKIC8vIHRo
ZSBsb2NrIGFsZ29yaXRobSBzbG93IHBhdGggd2l0aG91dCByZWNvbXBpbGluZyB0aGUgd29ybGQu
IFJpZ2h0IG5vdyB0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0d28KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaApp
bmRleCAxNGIzNDY3M2EwYmQ4NTc3YzEyN2ZjZjI2OWI3MzI5ZWI2YjAwN2Y4Li5hYjkyMTM0ZWQ4
YjhlMWUxMzdjZjllN2M2M2JmMWMyODI0YWZiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9NYWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1BhcmtpbmdMb3QuY3BwCmluZGV4IGNjMWEyMWI5ZWE1Y2NjYzZmMWFjZTRjOTc0OTg5OWJi
ZGE1ZDdlMTAuLmY4ZmVkODhiMWY3Yzk5MjA5ODZhOTRlN2FiNmM1NTcxYjkyM2NlMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkU3Bl
Y2lmaWMuaCIKLSNpbmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisjaW5jbHVkZSAiVGhy
ZWFkaW5nLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgog
I2luY2x1ZGUgIldvcmRMb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0
YXRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCmluZGV4IDA2NGYyZjA1MmFh
ZjM4YjlmODBhNmRkNDExMzJlNjU0NmU0NTdmNDIuLjhjYjQ2MjIxMWRmN2FkNTU3ZTNjN2FlMjQ4
ZTU2NTI4YjUxODZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAK
ICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YUxvZy5oIgotI2luY2x1ZGUg
IldURlRocmVhZERhdGEuaCIKIAogLy8gRGVmaW5lIHRoZSBmb2xsb3dpbmcgZmxhZyBpZiB5b3Ug
d2FudCB0byBjb2xsZWN0IHN0YXRzIG9uIGV2ZXJ5IHNpbmdsZQogLy8gY2hlY2twb2ludC4gQnkg
ZGVmYXVsdCwgd2Ugb25seSBsb2cgY2hlY2twb2ludHMgdGhhdCBlc3RhYmxpc2ggbmV3CkBAIC01
OSw3ICs1OCw3IEBAIGludCBTdGFja1N0YXRzOjpzX21heExheW91dFJlZW50cnlEZXB0aCA9IDA7
CiAKIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cygpCiB7Ci0gICAg
Y29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAg
Y29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKICAg
ICBtX3JlZW50cnlEZXB0aCA9IDA7CiAgICAgbV9zdGFja1N0YXJ0ID0gKGNoYXIqKXN0YWNrLm9y
aWdpbigpOwogICAgIG1fY3VycmVudENoZWNrUG9pbnQgPSAwOwpAQCAtNzAsOSArNjksOSBAQCBT
dGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogU3RhY2tTdGF0czo6
Q2hlY2tQb2ludDo6Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xv
Y2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSog
dGhyZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkp
OwotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tT
dGF0cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNr
KCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0
YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3Qg
U3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2lu
Z0Rvd253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKICAgICBib29sIG5lZWRUb0xv
ZyA9IGZhbHNlOwpAQCAtMTI4LDggKzEyNyw4IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNo
ZWNrUG9pbnQoKQogU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogewogICAg
IHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0
ZXgpOwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVh
ZERhdGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0
cyYgdCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRo
cmVhZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhy
ZWFkLnN0YWNrU3RhdHMoKTsKIAogICAgIC8vIFBvcCB0byBwcmV2aW91cyBjaGVja3BvaW50Ogog
ICAgIHQubV9jdXJyZW50Q2hlY2tQb2ludCA9IG1fcHJldjsKQEAgLTEzOCw3ICsxMzcsNyBAQCBT
dGFja1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiAgICAgLy8gTG9nIHRoaXMgY2hl
Y2twb2ludCBpZiBuZWVkZWQ6CiAjaWYgRU5BQkxFKFZFUkJPU0VfU1RBQ0tfU1RBVFMpCiAgICAg
aWYgKCFtX3ByZXYpIHsKLSAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFk
RGF0YS0+c3RhY2soKTsKKyAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFk
LnN0YWNrKCk7CiAgICAgICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dp
bmdEb3dud2FyZCgpOwogCiAgICAgICAgIGNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPih0aGlzKTsKQEAgLTE1OSw5ICsxNTgsOSBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50
Ojp+Q2hlY2tQb2ludCgpCiB2b2lkIFN0YWNrU3RhdHM6OnByb2JlKCkKIHsKICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAg
ICBXVEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4o
Jnd0ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0
aHJlYWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0g
dGhyZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVu
dCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3Rh
dHMoKTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAog
ICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwog
CkBAIC0yMjAsOSArMjE5LDkgQEAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6TGF5b3V0
Q2hlY2tQb2ludCgpCiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKIAogICAgIHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdU
RlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3Rm
VGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVh
ZERhdGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJl
YWREYXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygp
OworICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAg
Ym9vbCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRIb2xkZXIuY3BwCmluZGV4IGUyYTMxYmU5OTc4YTlkZTQyZWJmYTMzYjA3MDZhNTI0
MzNiZDcyY2IuLjAyYjBlMTRhYTFhMTAzYzQ3NWY5ZDBmZWIwMjUxZmEzZjY0NzQ0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyLmNwcApAQCAtNDMsNCArNDMsOSBAQCBUaHJlYWRIb2xkZXI6On5UaHJl
YWRIb2xkZXIoKQogICAgIG1fdGhyZWFkLT5kaWRFeGl0KCk7CiB9CiAKK1RocmVhZEhvbGRlciYg
VGhyZWFkSG9sZGVyOjppbml0aWFsaXplQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGluaXRpYWxp
emUoVGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkSG9sZGVyLmgKaW5kZXggYjJmOGRlNjg4NTBjNmFmZGM3OWVmZGFkYTA5YmU2
ZGVmYjE4MjZhOS4uZTRmZTY2ODY0MWM4NzFkMTI2Y2FiZjJlZmY2OGE4NzgwMWU1NmY3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyLmgKQEAgLTI5LDEzICsyOSwxNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jcHJhZ21hIG9uY2UKKyNpZm5kZWYgVGhyZWFkSG9sZGVyX2gKKyNkZWZpbmUgVGhyZWFk
SG9sZGVyX2gKIAorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFkOworCiAvLyBIb2xkcyBUaHJl
YWQgaW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLiBUaGUgZGVzdHJ1Y3RvciBvZiB0aGlz
IGhvbGRlciByZWxpYWJseSBkZXN0cm95IFRocmVhZC4KIC8vIEZvciBwdGhyZWFkLCBpdCBlbXBs
b3lzIHB0aHJlYWRzLXNwZWNpZmljIDItcGFzcyBkZXN0cnVjdGlvbiB0byByZWxpYWJseSByZW1v
dmUgVGhyZWFkLgogLy8gRm9yIFdpbmRvd3MsIHdlIHVzZSB0aHJlYWRfbG9jYWwgdG8gZGVmZXIg
dGhyZWFkIGhvbGRlciBkZXN0cnVjdGlvbi4gSXQgYXNzdW1lcyByZWd1bGFyIFRocmVhZFNwZWNp
ZmljCkBAIC00NywyMyArNTEsMjYgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKIAogICAgIC8vIE9u
ZSB0aW1lIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIGNsYXNzIGFzIGEgd2hvbGUuCiAgICAgLy8g
VGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGluaXRpYWxpemUoKSBhbmQgaXQgaXMg
bm90IHRocmVhZC1zYWZlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7CiAKICAgICAv
LyBDcmVhdGVzIGFuZCBwdXRzIGFuIGluc3RhbmNlIG9mIFRocmVhZEhvbGRlciBpbnRvIHRocmVh
ZC1zcGVjaWZpYyBzdG9yYWdlLgotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVGhyZWFkJik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXImIGluaXRpYWxpemUo
UmVmPFRocmVhZD4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xk
ZXImIGluaXRpYWxpemVDdXJyZW50KCk7CiAKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkLXNw
ZWNpZmljIHN0b3JhZ2Ugd2FzIG5vdCBpbml0aWFsaXplZC4KLSAgICBzdGF0aWMgVGhyZWFkSG9s
ZGVyKiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciYgY3VycmVudCgpOworICAg
IHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnRNYXlCZU51bGwoKTsKIAogICAgIFRocmVhZCYg
dGhyZWFkKCkgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KIAogI2lmIE9TKFdJTkRPV1MpCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnREeWluZygp
OwogICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiBnZXQoVGhyZWFkSWRlbnRpZmllcik7CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBUaHJlYWRIb2xkZXIoVGhyZWFkJiB0aHJlYWQpCi0gICAgICAg
IDogbV90aHJlYWQodGhyZWFkKQorICAgIFRocmVhZEhvbGRlcihSZWY8VGhyZWFkPiYmIHRocmVh
ZCkKKyAgICAgICAgOiBtX3RocmVhZChXVEZNb3ZlKHRocmVhZCkpCiAgICAgICAgICwgbV9pc0Rl
c3Ryb3llZE9uY2UoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTc3LDcgKzg0LDM5IEBAIGNsYXNz
IFRocmVhZEhvbGRlciB7CiAKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZDsKICAgICBib29sIG1f
aXNEZXN0cm95ZWRPbmNlOwotICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpY0tleSBtX2tleTsKKyAg
ICBzdGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CiB9OwogCitp
bmxpbmUgVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwoKQorewor
I2lmICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3Bl
Y2lmaWNLZXkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPih0aHJlYWRT
cGVjaWZpY0dldChtX2tleSkpOworI2Vsc2UKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFk
SG9sZGVyKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVkp
KTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6OmN1cnJl
bnQoKQoreworICAgIC8vIFdSVCBXZWJDb3JlOgorICAgIC8vICAgIFRocmVhZEhvbGRlciBpcyB1
c2VkIG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkCisgICAg
Ly8gICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9u
aXphdGlvbiBoZXJlLgorICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKKyAgICAvLyAgICBUaHJl
YWQ6OmN1cnJlbnQoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGlu
ZygpLCBlbnN1cmluZworICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0
aHJlYWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICBpZiAo
VU5MSUtFTFkoVGhyZWFkSG9sZGVyOjptX2tleSA9PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkp
KQorICAgICAgICBpbml0aWFsaXplT25jZSgpOworI2VuZGlmCisgICAgaWYgKGF1dG8qIGhvbGRl
ciA9IGN1cnJlbnRNYXlCZU51bGwoKSkKKyAgICAgICAgcmV0dXJuICpob2xkZXI7CisjaWYgT1Mo
V0lORE9XUykKKyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVudER5aW5nKCkpCisgICAgICAg
IHJldHVybiAqaG9sZGVyOworI2VuZGlmCisgICAgcmV0dXJuIGluaXRpYWxpemVDdXJyZW50KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgorI2VuZGlmIC8vIFRocmVhZEhvbGRlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKaW5kZXggMjBlNWU4OGY3NmRhYzJmNzYw
NzMzNGE4ZWIzYWFlYWNkYWQ1Zjk2My4uODU2ODQxZTMyMzZkYmVhOGRmMDMyMDgxZjllMjY0YzMx
ZGQ1NjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0aHJlYWRzLmNwcApAQCAtNDEs
MzYgKzQxLDQxIEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSgpCiAgICAgdGhy
ZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CiAKLVRocmVhZEhvbGRl
ciogVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjpp
bml0aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogeworICAgIGF1dG8qIGhvbGRlciA9IG5l
dyBUaHJlYWRIb2xkZXIoV1RGTW92ZSh0aHJlYWQpKTsKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAg
ICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVy
ZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAgICAvLyBIYXZpbmcgdGhpcyBy
ZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwK
KyAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiBy
ZWxlYXNlIG1vZGUuCiAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tl
eSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmlj
R2V0KG1fa2V5KSk7Ci19Ci0KLXZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFRocmVhZCYg
dGhyZWFkKQotewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElkZWFsbHkgd2Un
ZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3Vs
ZCBodXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2Vy
dCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAgICAgICAgLy8g
V1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBt
b2RlLgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsK
LSAgICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIG5ldyBUaHJlYWRIb2xkZXIodGhyZWFk
KSk7Ci0gICAgfQorICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOworI2Vsc2UK
KyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgaG9s
ZGVyKTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0
cnVjdCk7CisjZW5kaWYKKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xk
ZXI6OmRlc3RydWN0KHZvaWQqIGRhdGEpCiB7Ci0gICAgVGhyZWFkSG9sZGVyKiB0aHJlYWRJZGVu
dGlmaWVyRGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KGRhdGEpOwotICAgIEFTU0VS
VCh0aHJlYWRJZGVudGlmaWVyRGF0YSk7CisgICAgVGhyZWFkSG9sZGVyKiBob2xkZXIgPSBzdGF0
aWNfY2FzdDxUaHJlYWRIb2xkZXIqPihkYXRhKTsKKyAgICBBU1NFUlQoaG9sZGVyKTsKIAotICAg
IGlmICh0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UpIHsKLSAgICAgICAg
ZGVsZXRlIHRocmVhZElkZW50aWZpZXJEYXRhOworICAgIGlmIChob2xkZXItPm1faXNEZXN0cm95
ZWRPbmNlKSB7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICB0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOwor
ICAgIGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOwogICAgIC8vIFJlLXNldHRpbmcg
dGhlIHZhbHVlIGZvciBrZXkgY2F1c2VzIGFub3RoZXIgZGVzdHJ1Y3QoKSBjYWxsIGFmdGVyIGFs
bCBvdGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQuCi0gICAgdGhy
ZWFkU3BlY2lmaWNTZXQobV9rZXksIHRocmVhZElkZW50aWZpZXJEYXRhKTsKKyNpZiAhSEFWRShG
QVNUX1RMUykKKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsK
KyAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKKyNlbHNlCisgICAgX3B0aHJl
YWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVksIGhvbGRlcik7CisgICAg
cHRocmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCAmZGVzdHJ1Y3QpOworI2Vu
ZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VGhyZWFkSG9sZGVyV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAK
aW5kZXggZjA2YjYyZjY4ZTIwMTM2MzVjNjM1MTVlOGMwZTRmMTVmZTQ2MTZkYS4uOThiMmMyOGJl
ZjZlNGI0MzZhYTE1MmYxNDQzNzE4NjAzZTU2ZTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJX
aW4uY3BwCkBAIC01NiwxNSArNTYsOSBAQCB2b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9u
Y2UoKQogICAgIHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKCZtX2tleSwgZGVzdHJ1Y3QpOwogfQog
Ci1UaHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpCitUaHJlYWRIb2xkZXIqIFRo
cmVhZEhvbGRlcjo6Y3VycmVudER5aW5nKCkKIHsKICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxp
ZFRocmVhZFNwZWNpZmljS2V5KTsKLSAgICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0YXRpY19j
YXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7Ci0gICAgaWYgKGhv
bGRlcikgewotICAgICAgICBBU1NFUlQoaG9sZGVyICE9IEludmFsaWRUaHJlYWRIb2xkZXIpOwot
ICAgICAgICByZXR1cm4gaG9sZGVyOwotICAgIH0KLQogICAgIC8vIEFmdGVyIEZMUyBpcyBkZXN0
cm95ZWQsIHRoaXMgbWFwIG9mZmVycyB0aGUgdmFsdWUgdW50aWwgdGhlIHNlY29uZCB0aHJlYWQg
ZXhpdCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+
IGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICByZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGN1
cnJlbnRUaHJlYWQoKSk7CkBAIC04MCwyMSArNzQsMjEgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFk
SG9sZGVyOjpnZXQoVGhyZWFkSWRlbnRpZmllciBpZCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotdm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFkJiB0aHJlYWQpCitUaHJlYWRI
b2xkZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShSZWY8VGhyZWFkPiYmIHRocmVhZCkKIHsK
LSAgICBpZiAoIWN1cnJlbnQoKSkgewotICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlz
IGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJm
b3JtYW5jZS4KLSAgICAgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFu
cyB0aGF0IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCi0gICAgICAgIC8vIFdURjo6aW5pdGlh
bGl6ZVRocmVhZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAg
ICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0v
MzE3OTMyMTM+IGlzIGZpeGVkLgotICAgICAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9s
ZGVyKHRocmVhZCk7Ci0gICAgICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOwot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2Vy
KHRocmVhZE1hcE11dGV4KCkpOwotICAgICAgICAgICAgdGhyZWFkTWFwKCkuYWRkKHRocmVhZC5p
ZCgpLCBob2xkZXIpOwotICAgICAgICB9CisgICAgLy8gSWRlYWxseSB3ZSdkIGhhdmUgdGhpcyBh
cyBhIHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1cnQgcGVyZm9y
bWFuY2UuCisgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0
IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCisgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFk
aW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgorICAgIEFTU0VSVChtX2tl
eSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyB3b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3OTMyMTM+IGlzIGZpeGVk
LgorICAgIGF1dG8gaWQgPSB0aHJlYWQtPmlkKCk7CisgICAgYXV0byogaG9sZGVyID0gbmV3IFRo
cmVhZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5
LCBob2xkZXIpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICAgICAgdGhyZWFkTWFwKCkuYWRkKGlkLCBob2xk
ZXIpOwogICAgIH0KKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAogdm9pZCBUaHJlYWRIb2xkZXI6
OmRlc3RydWN0KHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBiM2ZmYTdjZjcxOTNh
NjA5ODBkZTcyZTEwMGUwYTQwNzgyNjBkNjQyLi4yZTExMzg0NWE1ZDM3NGNlYTVlN2YxOWFhNzRk
MGNiYzQ2NzJlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNs
dWRlIDx3dGYvVGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZE1lc3NhZ2UuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZU
aHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKICNpZiBIQVZFKFFPU19DTEFTU0VTKQpA
QCAtOTQsNiArOTQsMTMgQEAgY29uc3QgY2hhciogVGhyZWFkOjpub3JtYWxpemVUaHJlYWROYW1l
KGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpCiAjZW5kaWYKIH0KIAordm9pZCBUaHJlYWQ6OmluaXRp
YWxpemVJblRocmVhZCgpCit7CisgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IHN0YWNrKCkub3Jp
Z2luKCk7CisgICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jdXJy
ZW50QXRvbWljU3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZTsKK30KKwog
dm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4
dCkKIHsKICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uOwpAQCAtMTA1LDcgKzExMiw3IEBA
IHZvaWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRl
eHQpCiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5zdGFnZSA9PSBOZXdUaHJlYWRDb250ZXh0OjpT
dGFnZTo6RXN0YWJsaXNoZWRIYW5kbGUpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhyZWFk
IGhvbGRlciB3aXRoIGVzdGFibGlzaGVkIElELgotICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRp
YWxpemUoY29udGV4dC0+dGhyZWFkLmdldCgpKTsKKyAgICAgICAgVGhyZWFkSG9sZGVyOjppbml0
aWFsaXplKGNvbnRleHQtPnRocmVhZC5jb3B5UmVmKCkpOwogCiAgICAgICAgIFRocmVhZDo6aW5p
dGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5uYW1lKTsKICAgICAgICAgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGNvbnRleHQtPmVudHJ5UG9pbnQpOwpAQCAtMTE2LDYgKzEyMyw3IEBA
IHZvaWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqIG5ld1RocmVhZENvbnRl
eHQpCiAgICAgICAgIGNvbnRleHQtPnN0YWdlID0gTmV3VGhyZWFkQ29udGV4dDo6U3RhZ2U6Oklu
aXRpYWxpemVkOwogICAgICAgICBjb250ZXh0LT5jb25kaXRpb24uc2lnbmFsKCk7CiAjZW5kaWYK
KyAgICAgICAgY29udGV4dC0+dGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsKICAgICB9CiAK
ICAgICBBU1NFUlQoIVRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNFbXB0eSgpKTsKQEAgLTE1
NSwxNCArMTYzLDYgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciog
bmFtZSwgRnVuY3Rpb248dm9pZCgpPiYmIGVudHJ5UG9pbnQpCiAgICAgcmV0dXJuIFdURk1vdmUo
dGhyZWFkKTsKIH0KIAotVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQotewotICAg
IFRocmVhZEhvbGRlciogZGF0YSA9IFRocmVhZEhvbGRlcjo6Y3VycmVudCgpOwotICAgIGlmIChk
YXRhKQotICAgICAgICByZXR1cm4gJmRhdGEtPnRocmVhZCgpOwotICAgIHJldHVybiBudWxscHRy
OwotfQotCiBzdGF0aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRGcm9tVGhyZWFkR3JvdXAoKQog
ewogI2lmIE9TKFdJTkRPV1MpCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBUaHJlYWQ6OmRpZEV4
aXQoKQogICAgICAgICAgICAgdGhyZWFkR3JvdXAtPm1fdGhyZWFkcy5yZW1vdmUoKnRoaXMpOwog
ICAgICAgICB9CiAgICAgfQorICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikK
KyAgICAgICAgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3Ry
aW5nVGFibGUpOworCiAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBzYXkgInRocmVhZCBpcyBleGl0
ZWQiIGFmdGVyIHVucmVnaXN0ZXJpbmcgdGhyZWFkcyBmcm9tIHRocmVhZCBncm91cHMuCiAgICAg
Ly8gU28gd2UgbmVlZCB0byBzZXBhcmF0ZSBtX2lzU2h1dHRpbmdEb3duIGZyb20gbV9kaWRFeGl0
LgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CkBAIC0y
NzcsOSArMjgwLDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKIHsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplS2V5LCBbXSB7Ci0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKTsKICAg
ICAgICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwotICAgICAgICB3dGZUaHJl
YWREYXRhKCk7CisgICAgICAgIFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICBpbml0aWFsaXpl
RGF0ZXMoKTsKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggZmY1MGJmYTg5Yjc2OGJjMDgxOGM2Mzk4OWQyZmYz
ZjVlMmM0MTkyNy4uMmM2NTYzMjdmMDM5Yjk0OThmNzdhMDY1MDEwMWU5NTQ4YjlhODU3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdp
c3RlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrQm91
bmRzLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
SG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01MCwxMiArNTIsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewog
CiBjbGFzcyBBYnN0cmFjdExvY2tlcjsKK2NsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogY2xhc3Mg
VGhyZWFkTWVzc2FnZURhdGE7CiAKLWVudW0gY2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1bHQ7Cit1
c2luZyBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSB2b2lkICgqKShBdG9taWNTdHJpbmdU
YWJsZSopOwogCi11c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Ci10eXBlZGVmIHZv
aWQgKCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOworZW51bSBjbGFzcyBUaHJlYWRH
cm91cEFkZFJlc3VsdDsKIAogY2xhc3MgVGhyZWFkR3JvdXA7CiBjbGFzcyBUaHJlYWRIb2xkZXI7
CkBAIC02NSw2ICs2Nyw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxUaHJlYWQ+IHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkR3JvdXA7CiAg
ICAgZnJpZW5kIGNsYXNzIFRocmVhZEhvbGRlcjsKKyAgICBmcmllbmQgY2xhc3MgQXRvbWljU3Ry
aW5nVGFibGU7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRocmVhZCgpOwogCkBAIC03Myw4
ICs3Niw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJl
YWQ+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxUaHJlYWQ+IGNyZWF0
ZShjb25zdCBjaGFyKiB0aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgLy8g
UmV0dXJucyBUaHJlYWQgb2JqZWN0LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhy
ZWFkJiBjdXJyZW50KCk7Ci0gICAgc3RhdGljIFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOwor
ICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFkSWRl
bnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJv
dXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3Vs
ZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJl
CkBAIC0xNDEsNiArMTQzLDQ3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxUaHJlYWQ+IHsKICAgICAgICAgcmV0dXJuIG1fc3RhY2s7CiAgICAgfQogCisgICAg
QXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAgICB9CisKKyAgICBBdG9taWNTdHJp
bmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEF0b21pY1N0cmluZ1RhYmxlKiBh
dG9taWNTdHJpbmdUYWJsZSkKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZ1RhYmxlKiBvbGRB
dG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICBt
X2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0cmluZ1RhYmxlOworICAgICAgICBy
ZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisjaWYgRU5BQkxFKFNUQUNLX1NU
QVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3N0YWNrU3RhdHM7CisgICAgfQorI2VuZGlmCisKKyAgICB2b2lk
KiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9z
YXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICB9CisKKyAgICB2b2lkIHNldFNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKKyAgICB7Cisg
ICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50
cnk7CisgICAgfQorCisgICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CisgICAgfQorCisgICAgdm9pZCBzZXRTYXZl
ZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCisgICAgeworICAgICAgICBtX3NhdmVk
TGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOworICAgIH0KKworICAgIHZvaWQqIG1fYXBpRGF0
YSB7IG51bGxwdHIgfTsKKwogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtYWNoVGhy
ZWFkKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVRocmVhZDsgfQogI2VuZGlmCkBAIC0xNTAsMTMgKzE5
MywxNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFk
PiB7CiBwcm90ZWN0ZWQ6CiAgICAgVGhyZWFkKCk7CiAKKyAgICBzdGF0aWMgUmVmPFRocmVhZD4g
Y3JlYXRlQ3VycmVudFRocmVhZCgpOworICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhyZWFkKCk7CisK
ICAgICAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQgZXN0YWJsaXNobWVudCBp
bXBsZW1lbnRhdGlvbi4KICAgICBib29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0
Kik7CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0gICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNp
ZmljSGFuZGxlKHB0aHJlYWRfdCk7CisgICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmlj
SGFuZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKICNlbHNlCi0gICAgdm9pZCBlc3RhYmxpc2hQ
bGF0Zm9ybVNwZWNpZmljSGFuZGxlKEhBTkRMRSwgVGhyZWFkSWRlbnRpZmllcik7CisgICAgdm9p
ZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlLCBU
aHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiAjaWYgVVNFKFBUSFJFQURTKSAmJiAhT1MoREFS
V0lOKQpAQCAtMTk3LDIyICsyNDMsMjUgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIFZlY3RvcjxzdGQ6OndlYWtfcHRyPFRocmVhZEdy
b3VwPj4gbV90aHJlYWRHcm91cHM7CiAgICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZGlkRXhpdCB7IGZhbHNlIH07Ci0jaWYgVVNFKFBUSFJFQURTKQotICAg
IHB0aHJlYWRfdCBtX2hhbmRsZTsKLQorICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxl
OwogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwotI2Vs
c2UKKyNlbGlmIFVTRShQVEhSRUFEUykKICAgICBzZW1fdCBtX3NlbWFwaG9yZUZvclN1c3BlbmRS
ZXN1bWU7CiAgICAgUGxhdGZvcm1SZWdpc3RlcnMgbV9wbGF0Zm9ybVJlZ2lzdGVyczsKICAgICB1
bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3N1
c3BlbmRlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgSEFORExF
IG1faGFuZGxlIHsgSU5WQUxJRF9IQU5ETEVfVkFMVUUgfTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBTeXN0ZW0KKworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9taWNTdHJpbmdU
YWJsZSB7IG51bGxwdHIgfTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9kZWZhdWx0QXRvbWlj
U3RyaW5nVGFibGUgeyBudWxscHRyIH07CisgICAgQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9y
IG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIHsgbnVsbHB0ciB9OworCisjaWYgRU5BQkxF
KFNUQUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzIG1fc3RhY2tTdGF0
czsKICNlbmRpZgorICAgIHZvaWQqIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgeyBudWxs
cHRyIH07CisgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKIH07CiAKIC8vIFRoaXMgZnVu
Y3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWRzLgpAQCAtMjIzLDYgKzI3MiwxMCBA
QCBpbmxpbmUgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKICAgICByZXR1cm4gVGhy
ZWFkOjpjdXJyZW50SUQoKTsKIH0KIAoraW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkK
K3sKKyAgICByZXR1cm4gVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkudGhyZWFkKCk7Cit9CiAKIC8v
IEZJWE1FOiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZW1haW4gYmVjYXVzZSB0aGV5IGFyZSB1
c2VkIGZyb20gV2ViS2l0IFdpbmRvd3Mgc3VwcG9ydCBsaWJyYXJ5LAogLy8gV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy5kbGwuIFdoZW4gdXBkYXRpbmcgdGhlIHN1cHBvcnQgbGlicmFyeSwgd2Ug
c2hvdWxkIHVzZSBuZXcgQVBJIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aAppbmRleCAzMGM0OTlmZGE5Y2FlMWY2ZGY2NGMxZDRlYWE2Y2I1YjZmOTgxNzcyLi42ZTg4YWE2
YThhMDkwZDk3ZTc3N2MzMWEzYmQyYTY2YWRjMzBjNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit1c2lu
ZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Cit1c2luZyBUaHJlYWRGdW5jdGlvbiA9IHZv
aWQgKCopKHZvaWQqIGFyZ3VtZW50KTsKKwogI2lmIFVTRShQVEhSRUFEUykKIHVzaW5nIFBsYXRm
b3JtVGhyZWFkSGFuZGxlID0gcHRocmVhZF90OwogdXNpbmcgUGxhdGZvcm1NdXRleCA9IHB0aHJl
YWRfbXV0ZXhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRz
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCAxMmQ3Yzcx
Mzg2MTkyZThmNDU1N2UzM2YyOWIzNTIxOTg3NjVlNzhmLi5jZmVlYWJiMjM4OGYwZmJjZWU1NDI4
NjEwNTFiY2NkNmE3ZTgxYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQ
dGhyZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBA
IC0yODYsMTggKzI4NiwxNiBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICAgICAgZGlkQmVj
b21lRGV0YWNoZWQoKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQotewotICAgIGlm
IChUaHJlYWQqIGN1cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxsKCkpCi0gICAgICAgIHJldHVybiAq
Y3VycmVudDsKIAorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkKK3sK
ICAgICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90
IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3
IFRocmVhZCgpKTsKICAgICB0aHJlYWQtPmVzdGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUo
cHRocmVhZF9zZWxmKCkpOwogICAgIHRocmVhZC0+bV9zdGFjayA9IFN0YWNrQm91bmRzOjpjdXJy
ZW50VGhyZWFkU3RhY2tCb3VuZHMoKTsKLSAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUodGhy
ZWFkLmdldCgpKTsKKyAgICB0aHJlYWQtPmluaXRpYWxpemVJblRocmVhZCgpOwogICAgIGluaXRp
YWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCgpOwotICAgIHJldHVybiB0aHJl
YWQuZ2V0KCk7CisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAogVGhyZWFkSWRlbnRpZmllciBUaHJl
YWQ6OmN1cnJlbnRJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAppbmRleCAwNTIzYTJlNmJiNWY2
NjI2YWM4YzA0YzkyODlhMDVlNTdmNWUwMTUwLi5lOTMxZGZmYjhmNGRiZDA3ZThhNjI0NWQyNzNi
NjgzODM0YjM4MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKQEAgLTI0MywxMSArMjQzLDgg
QEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3Rl
cnMpCiAgICAgcmV0dXJuIHNpemVvZihDT05URVhUKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6OmN1
cnJlbnQoKQorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVDdXJyZW50VGhyZWFkKCkKIHsKLSAg
ICBpZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJlTnVsbCgpKQotICAgICAgICByZXR1
cm4gKmN1cnJlbnQ7Ci0KICAgICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRocmVhZElk
ZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0aHJlYWQg
PSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKIApAQCAtMjU3LDkgKzI1NCw5IEBAIFRocmVhZCYg
VGhyZWFkOjpjdXJyZW50KCkKIAogICAgIHRocmVhZC0+ZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZp
Y0hhbmRsZShoYW5kbGUsIGN1cnJlbnRJRCgpKTsKICAgICB0aHJlYWQtPm1fc3RhY2sgPSBTdGFj
a0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7Ci0gICAgVGhyZWFkSG9sZGVyOjpp
bml0aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQo
KTsKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5vbldURkNyZWF0ZWQoKTsKLSAg
ICByZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0aHJlYWQ7CiB9CiAKIFRocmVhZElk
ZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
V1RGVGhyZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlNzdkMjU4NWY4YTYxNDQ0Zjk3NGU3YzNiOGFk
MTNhMWNiNjY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
KgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgotCi0jaWYgVVNFKFdF
Ql9USFJFQUQpCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotI2lmICFIQVZFKEZBU1RfVExTKQotVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFk
RGF0YT4qIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7Ci0jZW5kaWYKLQotV1RGVGhyZWFkRGF0
YTo6V1RGVGhyZWFkRGF0YSgpCi0gICAgOiBtX3N0YWNrQm91bmRzKFN0YWNrQm91bmRzOjpjdXJy
ZW50VGhyZWFkU3RhY2tCb3VuZHMoKSkKLSAgICAsIG1fc2F2ZWRMYXN0U3RhY2tUb3Aoc3RhY2so
KS5vcmlnaW4oKSkKLXsKLSAgICBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKCp0aGlzKTsKLSAg
ICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxl
OwotfQotCi1XVEZUaHJlYWREYXRhOjp+V1RGVGhyZWFkRGF0YSgpCi17Ci0gICAgaWYgKG1fYXRv
bWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKQotICAgICAgICBtX2F0b21pY1N0cmluZ1RhYmxlRGVz
dHJ1Y3RvcihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7Ci19Ci0KLSNpZiBIQVZFKEZBU1Rf
VExTKQotV1RGVGhyZWFkRGF0YSYgV1RGVGhyZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JH
ZXRzcGVjaWZpY0RpcmVjdCgpCi17Ci0gICAgV1RGVGhyZWFkRGF0YSogZGF0YSA9IG5ldyBXVEZU
aHJlYWREYXRhOwotICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RB
VEFfS0VZLCBkYXRhKTsKLSAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9L
RVksIFtdKHZvaWQqIGRhdGEpewotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V1RGVGhyZWFk
RGF0YSo+KGRhdGEpOwotICAgIH0pOwotICAgIHJldHVybiAqZGF0YTsKLX0KLSNlbmRpZgotCi19
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERh
dGEuaCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmE1ZmY4MTc2NmQ4M2M1NmRiY2FjYjYzYmFlNmUyNjA4YTYyYzMwMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9XVEZUaHJlYWREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaWZuZGVm
IFdURlRocmVhZERhdGFfaAotI2RlZmluZSBXVEZUaHJlYWREYXRhX2gKLQotI2luY2x1ZGUgPHd0
Zi9GYXN0VExTLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1N0YWNrQm91bmRzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KLSNpbmNsdWRlIDx3
dGYvVGhyZWFkU3BlY2lmaWMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIEF0b21pY1N0
cmluZ1RhYmxlOwotCi10eXBlZGVmIHZvaWQgKCpBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3Ip
KEF0b21pY1N0cmluZ1RhYmxlKik7Ci0KLWNsYXNzIFdURlRocmVhZERhdGEgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdURlRocmVhZERhdGEpOwotcHVibGljOgotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBXVEZUaHJlYWREYXRhKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIH5XVEZUaHJl
YWREYXRhKCk7Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwotICAgIH0K
LQotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoQXRv
bWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKQotICAgIHsKLSAgICAgICAgQXRvbWlj
U3RyaW5nVGFibGUqIG9sZEF0b21pY1N0cmluZ1RhYmxlID0gbV9jdXJyZW50QXRvbWljU3RyaW5n
VGFibGU7Ci0gICAgICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gYXRvbWljU3RyaW5n
VGFibGU7Ci0gICAgICAgIHJldHVybiBvbGRBdG9taWNTdHJpbmdUYWJsZTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3Rh
Y2tCb3VuZHM7Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQotICAgIFN0YWNrU3Rh
dHM6OlBlclRocmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X3N0YWNrU3RhdHM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0
Vk1FbnRyeTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5
KHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKLSAgICB7Ci0gICAgICAgIG1fc2F2ZWRTdGFj
a1BvaW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgfQotCi0gICAg
dm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZWRM
YXN0U3RhY2tUb3A7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTYXZlZExhc3RTdGFja1RvcCh2b2lk
KiBsYXN0U3RhY2tUb3ApCi0gICAgewotICAgICAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gbGFz
dFN0YWNrVG9wOwotICAgIH0KLQotICAgIHZvaWQqIG1fYXBpRGF0YSB7IG51bGxwdHIgfTsKLQot
cHJpdmF0ZToKLSAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9jdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUgeyBudWxscHRyIH07Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIG1fZGVmYXVsdEF0b21pY1N0
cmluZ1RhYmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciBt
X2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciB7IG51bGxwdHIgfTsKLQotICAgIFN0YWNrQm91
bmRzIG1fc3RhY2tCb3VuZHM7Ci0jaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQotICAgIFN0YWNrU3Rh
dHM6OlBlclRocmVhZFN0YXRzIG1fc3RhY2tTdGF0czsKLSNlbmRpZgotICAgIHZvaWQqIG1fc2F2
ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgeyBudWxscHRyIH07Ci0gICAgdm9pZCogbV9zYXZlZExh
c3RTdGFja1RvcDsKLQotI2lmIEhBVkUoRkFTVF9UTFMpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBXVEZUaHJlYWREYXRhJiBjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGly
ZWN0KCk7Ci0jZWxzZQotICAgIHN0YXRpYyBXVEZfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZpYzxX
VEZUaHJlYWREYXRhPiogc3RhdGljRGF0YTsKLSNlbmRpZgotCi0gICAgZnJpZW5kIFdURlRocmVh
ZERhdGEmIHd0ZlRocmVhZERhdGEoKTsKLSAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nVGFi
bGU7Ci19OwotCi1pbmxpbmUgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgpCi17Ci0gICAg
Ly8gV1JUIFdlYkNvcmU6Ci0gICAgLy8gICAgV1RGVGhyZWFkRGF0YSBpcyB1c2VkIG9uIG1haW4g
dGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkCi0gICAgLy8gICAgb24gc2Vj
b25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXphdGlvbiBoZXJl
LgotICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKLSAgICAvLyAgICB3dGZUaHJlYWREYXRhKCkg
aXMgaW5pdGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVUaHJlYWRpbmcoKSwgZW5zdXJpbmcK
LSAgICAvLyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBwdGhyZWFkX29uY2UgbG9j
a2VkIGNvbnRleHQuCi0jaWYgIUhBVkUoRkFTVF9UTFMpCi0gICAgaWYgKCFXVEZUaHJlYWREYXRh
OjpzdGF0aWNEYXRhKQotICAgICAgICBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhID0gbmV3IFRo
cmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+OwotICAgIHJldHVybiAqKldURlRocmVhZERhdGE6
OnN0YXRpY0RhdGE7Ci0jZWxzZQotICAgIGlmIChXVEZUaHJlYWREYXRhKiBkYXRhID0gc3RhdGlj
X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfVEhS
RUFEX0RBVEFfS0VZKSkpCi0gICAgICAgIHJldHVybiAqZGF0YTsKLSAgICByZXR1cm4gV1RGVGhy
ZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpOwotI2VuZGlm
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OldURlRocmVhZERhdGE7Ci11
c2luZyBXVEY6Ond0ZlRocmVhZERhdGE7Ci11c2luZyBXVEY6OkF0b21pY1N0cmluZ1RhYmxlOwot
Ci0jZW5kaWYgLy8gV1RGVGhyZWFkRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5j
cHAKaW5kZXggYTRlMDNkZTNhZjY1N2M2OWY3NGQxNjI1MWYwMDA3MzkxMzZhNTM0NC4uMmEwNjUx
MjgzYTk3MjcxZTU3NmEyMjJkZGYwMjMyMGQwNmEwZDJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBdG9taWNTdHJpbmcuaCIKIAotI2luY2x1ZGUgIkludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb24uaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmg+CisKICNpbmNsdWRlICJkdG9hLmgiCiAKIG5hbWVzcGFjZSBXVEYgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKaW5kZXggMzUyMjQ4NWQ3Yjg0
NzNjYzgwZTUyNDBhNzMyYTA1NTNjNDhiYzM0Mi4uMDYzZTRlZWI3ZTU3ZTVjZDg1YjBhMTcxOTU0
ZDM4OTI0YzE3Nzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3Bw
CkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlN0
cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkaW5nLmgiCi0jaW5jbHVkZSAiV1RG
VGhyZWFkRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIAogI2lmIFVTRShX
RUJfVEhSRUFEKQpAQCAtNzIsNyArNzEsNyBAQCB1c2luZyBTdHJpbmdUYWJsZUltcGwgPSBIYXNo
U2V0PFN0cmluZ0ltcGwqPjsKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgU3RyaW5nVGFibGVJbXBs
JiBzdHJpbmdUYWJsZSgpCiB7Ci0gICAgcmV0dXJuIHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJp
bmdUYWJsZSgpLT50YWJsZSgpOworICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNT
dHJpbmdUYWJsZSgpLT50YWJsZSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5j
cHAKaW5kZXggZmU4YTQ4ODRkYjdlNjc4ZGVkNmFmMzJkZDQzNzEyZTU5NWYzYjkzNS4uZjZkNzhm
MmJlNmY0OGYyYWE2ODJjMDVkMTBkMjQ2NDY4YjBjMjRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0
Zi9XVEZUaHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAotdm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKFdURlRocmVhZERhdGEm
IGRhdGEpCit2b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoVGhyZWFkJiB0aHJlYWQpCiB7
CiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgLy8gT24gaU9TLCBvbmUgQXRvbWljU3RyaW5nVGFi
bGUgaXMgc2hhcmVkIGJldHdlZW4gdGhlIG1haW4gVUkgdGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFk
LgpAQCAtMzcsMTcgKzM3LDE3IEBAIHZvaWQgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShXVEZU
aHJlYWREYXRhJiBkYXRhKQogCiAgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQgPSBp
c1dlYlRocmVhZCgpOwogICAgIGlmIChjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQgfHwgaXNVSVRo
cmVhZCgpKQotICAgICAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gc2hhcmVk
U3RyaW5nVGFibGU7CisgICAgICAgIHRocmVhZC5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9
IHNoYXJlZFN0cmluZ1RhYmxlOwogICAgIGVsc2UKLSAgICAgICAgZGF0YS5tX2RlZmF1bHRBdG9t
aWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKKyAgICAgICAgdGhyZWFkLm1f
ZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOwogCiAgICAg
Ly8gV2UgZG8gdGhlIGZvbGxvd2luZyBzbyB0aGF0IGl0cyBkZXN0cnVjdGlvbiBoYXBwZW5zIG9u
bHkKICAgICAvLyBvbmNlIC0gb24gdGhlIG1haW4gVUkgdGhyZWFkLgogICAgIGlmICghY3VycmVu
dFRocmVhZElzV2ViVGhyZWFkKQotICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0
cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisgICAgICAgIHRocmVhZC5tX2F0
b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95Owog
I2Vsc2UKLSAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0
cmluZ1RhYmxlOwotICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9t
aWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKKyAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWljU3RyaW5n
VGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAgdGhyZWFkLm1fYXRvbWljU3RyaW5n
VGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CiAjZW5kaWYgLy8g
VVNFKFdFQl9USFJFQUQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUu
aAppbmRleCA5NDRhZTkyYmRlYzQ0MzliZjA3MDEyMWI3OGEzNWY1YTg0ZmM0MDlkLi5kM2JjOWNl
NWY2ZTA3Mjc3NTZjYzllYmJlNGYxMjUzN2ZhYWIyYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmdUYWJsZS5oCkBAIC0yNCwxOSArMjQsMTkgQEAKICNkZWZpbmUgV1RGX0F0b21p
Y1N0cmluZ1RhYmxlX2gKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdJbXBsOworY2xhc3MgVGhyZWFkOwogCiBjbGFz
cyBBdG9taWNTdHJpbmdUYWJsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BdG9taWNTdHJpbmdUYWJsZSgpOwogCi0gICAg
c3RhdGljIHZvaWQgY3JlYXRlKFdURlRocmVhZERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVh
dGUoVGhyZWFkJik7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHRhYmxlKCkgeyByZXR1cm4g
bV90YWJsZTsgfQogCiBwcml2YXRlOgpAQCAtNDYsNSArNDYsNiBAQCBjbGFzcyBBdG9taWNTdHJp
bmdUYWJsZSB7CiB9OwogCiB9Cit1c2luZyBXVEY6OkF0b21pY1N0cmluZ1RhYmxlOwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA4YTAy
MzBiYWJmOTVjYmE5N2Y5YThmODYyODE5YWI0MGQxN2ZjZTQyLi42M2IxZTBlNTc0MTFkMDYzM2M0
MTk4ZjRhZTA5MzUzYTAzNTUxMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0Zp
bGVTdHJlYW0uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5k
ZXggYjhmYWY1YThkNzkxMDJmMmVmZGQ4YmRhNjQzMWMwNzdiZmYxM2JmMC4uNzczODI5ZDVlN2I0
ZWIzM2Q3YmU4MzgwNzE2ZjlhMzMzNzI2ZjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY2LDcg
KzY1LDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgLy8gYW55
IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCAtIHRoaXMg
bWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKICAgICAvLyBwb2ludCB0byBjYWxsIG1ldGhvZHMgdGhh
dCBpbnRlcm5hbGx5IHBlcmZvcm0gYSBvbmUtdGltZSBpbml0aWFsaXphdGlvbiB0aGF0IGlzIG5v
dAogICAgIC8vIHRocmVhZHNhZmUuCi0gICAgd3RmVGhyZWFkRGF0YSgpOworICAgIFRocmVhZDo6
Y3VycmVudCgpOwogICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLmgKaW5kZXggNjZlOGU5OTFlMTI5NjJiNTRmZDc0MzkyZDk1
MmU3MzI4ZmQ2NDA5MC4uZWMyNzExYjUyMDcyNTIzMzI0YTZmZjA0N2MzNmJkMzg3MDBlOGFmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBVU0UoVklERU9UT09MQk9YKQogCiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5o
PgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggNjEy
MmI0ZjJjNTBiNjRiYTVjN2ZmYzlkZGUzZjRkYTU2MjlhMDM4Ny4uYzhmMDVhMWEwYWVkNjAyY2Jk
OGMwOTRlMGE5NzIwM2FmOWM2MDZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzAyLDcgKzcwMiw3IEBAIHN0YXRpYyB2b2lk
IFN0YXJ0V2ViVGhyZWFkKCkKIHsKICAgICB3ZWJUaHJlYWRTdGFydGVkID0gVFJVRTsKIAotICAg
IC8vIFRocmVhZEdsb2JhbERhdGEgdG91Y2hlcyBBdG9taWNTdHJpbmcsIHdoaWNoIHJlcXVpcmVz
IFdURlRocmVhZERhdGEgYW5kIFRocmVhZGluZyBpbml0aWFsaXphdGlvbi4KKyAgICAvLyBUaHJl
YWRHbG9iYWxEYXRhIHRvdWNoZXMgQXRvbWljU3RyaW5nLCB3aGljaCByZXF1aXJlcyBUaHJlYWRp
bmcgaW5pdGlhbGl6YXRpb24uCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKICAg
ICAvLyBJbml0aWFsaXplIEF0b21pY1N0cmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNDI1YzkyNDhkODcwNDgyN2JiMGUw
MzgyMWEyYWU4ZGM4YWFjMGQ3MC4uNjgxYTFlZjc1NDgxMDBkMWEyOTY2MDllNjJjYjdmOWFmYjYy
ZTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMjE2LDcg
KzIxNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogICAgIC8vIFdlIGNh
bm5vdCBsZXQgYW55IG9iamVjdHMgc3Vydml2ZSBwYXN0IHRocmVhZCBleGl0LCBiZWNhdXNlIG5v
IG90aGVyIHRocmVhZCB3aWxsIHJ1biBHQyBvciBvdGhlcndpc2UgZGVzdHJveSB0aGVtLgogICAg
IHdvcmtlckdsb2JhbFNjb3BlVG9EZWxldGUgPSBudWxscHRyOwogCi0gICAgLy8gQ2xlYW4gdXAg
V2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RGOjpXVEZUaHJlYWREYXRhIGdvZXMg
YXdheSEKKyAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhIGJlZm9yZSBX
VEY6OlRocmVhZCBnb2VzIGF3YXkhCiAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLmRlc3Ryb3koKTsK
IAogICAgIC8vIFRoZSB0aHJlYWQgb2JqZWN0IG1heSBiZSBhbHJlYWR5IGRlc3Ryb3llZCBmcm9t
IG5vdGlmaWNhdGlvbiBub3csIGRvbid0IHRyeSB0byBhY2Nlc3MgInRoaXMiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316785</attachid>
            <date>2017-07-31 09:41:50 -0700</date>
            <delta_ts>2017-08-01 10:42:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170801014149.patch</filename>
            <type>text/plain</type>
            <size>71315</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MDI2YzE5NWM4YzUyNjJjZDcyMDI1MmI5YWVhMDlmN2Q5ZTVkYTBlLi5hMDMxNDdjZTZjNmJmNzQ0
Y2JmOTY0Zjg5OTg4NmFmZDcwNjUzNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNy0wNy0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFRocmVh
ZDo6Y3VycmVudCgpIGluc3RlYWQuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAgICAgKCtbSlNDb250ZXh0
IGN1cnJlbnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50Q2FsbGVlXSk6Cisg
ICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6CisgICAgICAgICgtW0pTQ29u
dGV4dCBiZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhpc1ZhbHVlOmFyZ3VtZW50
Q291bnQ6YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgZW5kQ2FsbGJhY2tXaXRo
RGF0YTpdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpy
ZXF1ZXN0Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRh
eCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1
YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6Omxp
bmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6CisgICAg
ICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6
Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkaWRB
Y3F1aXJlTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpKU0xvY2s6
OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06
OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNvbW1pdHRlZFN0YWNrQnl0
ZUNvdW50KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjppc1Nh
ZmVUb1JlY3Vyc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAqIHJ1
bnRpbWUvVk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFja0NhcGFjaXR5
Rm9yKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFy
cjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlIGNvbnN0KToKKwogMjAx
Ny0wNy0zMSAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjAwNjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1ZjAyYWJlZDY5OWQ1YThlYTk4ZTMw
MDk0NjUwNWY4Mzk2OGRmZTguLjJmYTNjYWIwMzI4ODhkMGZkOGE2NjliNjNlMmEyNDg0NzZmOTBl
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTctMDctMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgTWVyZ2UgV1RGVGhyZWFkRGF0YSB0byBUaHJl
YWQ6OmN1cnJlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHBsYWNlZCB0aHJlYWQgc3BlY2lmaWMgZGF0YSBpbiBXVEZUaHJlYWREYXRhIHByZXZp
b3VzbHkuIEJ1dCBub3csIHdlIGhhdmUgYSBuZXcgZ29vZCBwbGFjZQorICAgICAgICB0byBwdXQg
dGhyZWFkIHNwZWNpZmljIGRhdGE6IFdURjo6VGhyZWFkLiBCZWZvcmUgdGhpcyBwYXRjaCwgV1RG
VGhyZWFkRGF0YSBhbmQgV1RGOjpUaHJlYWQKKyAgICAgICAgc29tZXRpbWVzIGhhdmUgdGhlIGNv
bXBsZXRlbHkgc2FtZSBmaWVsZHMgKG1fc3RhY2sgZXRjLikgZHVlIHRvIGluaXRpYWxpemF0aW9u
IG9yZGVyIGxpbWl0YXRpb25zLgorICAgICAgICBUaGlzIHBhdGNoIG1lcmdlcyBXVEZUaHJlYWRE
YXRhIHRvIFdURjo6VGhyZWFkLiBXZSBhcHBseSBXVEZUaHJlYWREYXRhJ3MgaW5pdGlhbGl6YXRp
b24gc3R5bGUKKyAgICAgICAgdG8gV1RGOjpUaHJlYWQuIFNvLCBXVEY6OlRocmVhZCdzIGhvbGRl
ciBub3cgdXNlcyBmYXN0IFRMUyBmb3IgZGFyd2luIGVudmlyb25tZW50LiBUaHVzLAorICAgICAg
ICBUaHJlYWQ6OmN1cnJlbnQoKSBhY2Nlc3MgaXMgbm93IGFjY2VsZXJhdGVkLiBBbmQgV1RGOjpU
aHJlYWQ6OmN1cnJlbnQoKSBjYW4gYmUgYWNjZXNzZWQgZXZlbgorICAgICAgICBiZWZvcmUgY2Fs
bGluZyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogd3RmL0xvY2tBbGdvcml0aG0uaDoKKyAgICAgICAgKiB3dGYvTG9ja0FsZ29yaXRobUlubGlu
ZXMuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9QYXJraW5n
TG90LmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTdGF0cy5jcHA6CisgICAgICAgIChXVEY6OlN0
YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0cyk6CisgICAgICAgIChXVEY6
OlN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6OkNoZWNrUG9pbnQpOgorICAgICAgICAoV1RGOjpTdGFj
a1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNrU3Rh
dHM6OnByb2JlKToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludDo6
TGF5b3V0Q2hlY2tQb2ludCk6CisgICAgICAgICogd3RmL1RocmVhZEhvbGRlci5jcHA6CisgICAg
ICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgorICAgICAgICAqIHd0
Zi9UaHJlYWRIb2xkZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpUaHJlYWRIb2xk
ZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwpOgorICAg
ICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRI
b2xkZXJQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgorICAgICAgICAoV1RG
OjpUaHJlYWRIb2xkZXI6OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRI
b2xkZXJXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnREeWluZyk6
CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6
OlRocmVhZEhvbGRlcjo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGlu
Zy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAg
ICAgKFdURjo6VGhyZWFkOjplbnRyeVBvaW50KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRF
eGl0KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgIChXVEY6
OlRocmVhZDo6Y3VycmVudE1heUJlTnVsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVh
ZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAg
ICAgKFdURjo6VGhyZWFkOjpzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OnN0YWNrU3RhdHMpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzZXRTYXZlZFN0YWNr
UG9pbnRlckF0Vk1FbnRyeSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tU
b3ApOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFNhdmVkTGFzdFN0YWNrVG9wKToKKyAgICAg
ICAgKFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChX
VEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6
Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAg
ICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6Y3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6IFJlbW92ZWQuCisgICAg
ICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9t
aWNTdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUpOgorICAgICAgICAq
IHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3Ry
aW5nVGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUu
aDoKKwogMjAxNy0wNy0zMSAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjAwNjAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFkNDNi
NGExZTEwZWU2YjQ4OTIzMzFkNDFiZWQ0YzQ0YmU5MmM2Zi4uYjY2ZTJiMTljMTBlYjFkMGY3ZDJj
M2E4YjFiYmFkMmZkYjgxM2JjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA3
LTMxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1l
cmdlIFdURlRocmVhZERhdGEgdG8gVGhyZWFkOjpjdXJyZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3MTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVGhyZWFkOjpjdXJyZW50KCkgaW5zdGVh
ZC4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisKIDIwMTctMDctMzEgIE1hdHQgTGV3aXMgIDxqbGV3
aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIwMDYw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQppbmRleCA1YjEwMGM3NWUxNWI5
ZjQ3NjYyOTQ0YWEwZmM1YmI4ZGQwOWY0NmM1Li5iYWViMTc4ZDQ4MWRiZWRmMmJlZDNkZjZkNGU2
M2ZkMTgxNTZjOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAt
MTQxLDE1ICsxNDEsMTUgQEAgLSAoSlNWYWx1ZSAqKWdsb2JhbE9iamVjdAogCiArIChKU0NvbnRl
eHQgKiljdXJyZW50Q29udGV4dAogewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3
dGZUaHJlYWREYXRhKCk7Ci0gICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEg
Kil0aHJlYWREYXRhLm1fYXBpRGF0YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOworICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFk
Lm1fYXBpRGF0YTsKICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+Y29udGV4dCA6IG5pbDsKIH0K
IAogKyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFk
RGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxi
YWNrRGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhy
ZWFkOjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEg
Kil0aHJlYWQubV9hcGlEYXRhOwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnktPnRoaXNWYWx1
ZSBpbkNvbnRleHQ6W0pTQ29udGV4dCBjdXJyZW50Q29udGV4dF1dOwpAQCAtMTU3LDggKzE1Nyw4
IEBAICsgKEpTVmFsdWUgKiljdXJyZW50VGhpcwogCiArIChKU1ZhbHVlICopY3VycmVudENhbGxl
ZQogewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0g
ICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWREYXRhLm1fYXBp
RGF0YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIENhbGxi
YWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsKICAgICBp
ZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1
ZVdpdGhKU1ZhbHVlUmVmOmVudHJ5LT5jYWxsZWVWYWx1ZSBpbkNvbnRleHQ6W0pTQ29udGV4dCBj
dXJyZW50Q29udGV4dF1dOwpAQCAtMTY2LDggKzE2Niw4IEBAICsgKEpTVmFsdWUgKiljdXJyZW50
Q2FsbGVlCiAKICsgKE5TQXJyYXkgKiljdXJyZW50QXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFk
RGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVu
dHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYg
dGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChD
YWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwogCiAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTI5NCwyMSArMjk0LDIxIEBAIC0gKEJPT0wpYm9vbEZyb21Ob3Rp
ZnlFeGNlcHRpb246KEpTVmFsdWVSZWYpZXhjZXB0aW9uVmFsdWUKIAogLSAodm9pZCliZWdpbkNh
bGxiYWNrV2l0aERhdGE6KENhbGxiYWNrRGF0YSAqKWNhbGxiYWNrRGF0YSBjYWxsZWVWYWx1ZToo
SlNWYWx1ZVJlZiljYWxsZWVWYWx1ZSB0aGlzVmFsdWU6KEpTVmFsdWVSZWYpdGhpc1ZhbHVlIGFy
Z3VtZW50Q291bnQ6KHNpemVfdClhcmd1bWVudENvdW50IGFyZ3VtZW50czooY29uc3QgSlNWYWx1
ZVJlZiAqKWFyZ3VtZW50cwogewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZU
aHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAg
ICBbc2VsZiByZXRhaW5dOwotICAgIENhbGxiYWNrRGF0YSAqcHJldlN0YWNrID0gKENhbGxiYWNr
RGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIENhbGxiYWNrRGF0YSAqcHJldlN0YWNr
ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgKmNhbGxiYWNrRGF0YSA9
IChDYWxsYmFja0RhdGEpeyBwcmV2U3RhY2ssIHNlbGYsIFtzZWxmLmV4Y2VwdGlvbiByZXRhaW5d
LCBjYWxsZWVWYWx1ZSwgdGhpc1ZhbHVlLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIG5pbCB9
OwotICAgIHRocmVhZERhdGEubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhOworICAgIHRocmVhZC5t
X2FwaURhdGEgPSBjYWxsYmFja0RhdGE7CiAgICAgc2VsZi5leGNlcHRpb24gPSBuaWw7CiB9CiAK
IC0gKHZvaWQpZW5kQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJhY2tEYXRh
CiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAg
ICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIHNlbGYuZXhjZXB0aW9u
ID0gY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb247CiAgICAgW2NhbGxiYWNrRGF0YS0+
cHJlc2VydmVkRXhjZXB0aW9uIHJlbGVhc2VdOwogICAgIFtjYWxsYmFja0RhdGEtPmN1cnJlbnRB
cmd1bWVudHMgcmVsZWFzZV07Ci0gICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFja0Rh
dGEtPm5leHQ7CisgICAgdGhyZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YS0+bmV4dDsKICAg
ICBbc2VsZiByZWxlYXNlXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRl
eCBmNjVlZjg0MWE3YzFlMDA2YTJlYWI3MTUyNGZkZGU4YTZhYTJhMjY3Li4zZDRiYmUzNmU2MzM4
NTkxYTM4OGNjNjU0ZmIwNTg3ODgzZGFiNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFk
U3RhdGUoVk0qIHZtKQogCiBib29sIGlzVmFsaWRUaHJlYWRTdGF0ZShWTSogdm0pCiB7Ci0gICAg
aWYgKHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpICE9IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJp
bmdUYWJsZSgpKQorICAgIGlmICh2bS0+YXRvbWljU3RyaW5nVGFibGUoKSAhPSBXVEY6OlRocmVh
ZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICh2bS0+aXNTaGFyZWRJbnN0YW5jZSgpICYmICFpc1ZhbGlkU2hhcmVkSW5zdGFu
Y2VUaHJlYWRTdGF0ZSh2bSkpCkBAIC0yMDIzLDcgKzIwMjMsNyBAQCBIZWFwOjpUaWNrZXQgSGVh
cDo6cmVxdWVzdENvbGxlY3Rpb24oR0NSZXF1ZXN0IHJlcXVlc3QpCiAgICAgc3RvcElmTmVjZXNz
YXJ5KCk7CiAgICAgCiAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElM
b2NrKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKICAgICAKICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV90aHJlYWRM
b2NrKTsKICAgICAvLyBXZSBtYXkgYmUgYWJsZSB0byBzdGVhbCB0aGUgY29ubi4gVGhhdCBvbmx5
IHdvcmtzIGlmIHRoZSBjb2xsZWN0b3IgaXMgZGVmaW5pdGVseSBub3QgcnVubmluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCA1YjMwMjY0Yzdm
NDExZTM4ZDU4MGY1NWQ1ZDdkMWQ2ODliMzYwMWViLi44ODIzZTZmNjAxNjExMmI0NzM5ZmEwMjhm
NDMxYmM3ZThkN2M4YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcApAQCAtNDEsMTQgKzQxLDEzIEBACiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5j
bHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxpbmdTY29w
ZS5oIgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CiBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBKU1ZhbHVlKiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQo
KS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKIAogICAgIFByb2dyYW1FeGVjdXRhYmxlKiBwcm9ncmFt
ID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOwogICAgIEpTT2JqZWN0
KiBlcnJvciA9IHByb2dyYW0tPmNoZWNrU3ludGF4KGV4ZWMpOwpAQCAtNjQsNyArNjMsNyBAQCBi
b29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1ZhbHVlKiByZXR1cm5lZEV4YwogYm9vbCBjaGVja1N5bnRheChWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigKICAgICAgICAgJnZt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwK
ICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9k
ZTo6Q2xhc3NpYywgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGVycm9yKTsKQEAgLTc0LDcgKzczLDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRh
eChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3Im
IGUKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5v
ZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAgICAgICAgIEpTUGFy
c2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU291cmNl
UGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVy
cm9yKTsKQEAgLTkyLDcgKzkxLDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIE4KICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1
cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXND
b2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgQ29kZVByb2ZpbGluZyBwcm9m
aWxlKHNvdXJjZSk7CkBAIC0xNjcsNyArMTY2LDcgQEAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNl
KiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiBsb2NrLCBFeGVjU3QK
IEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgp
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9
PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAg
ICByZXR1cm4gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlH
bG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSwg
c2NyaXB0RmV0Y2hlcik7CkBAIC0xNzgsNyArMTc3LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXIKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgUkVMRUFTRV9B
U1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3Ry
aW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9
PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgU3ltYm9s
KiBrZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKQEAgLTIwNSw3ICsy
MDQsNyBAQCBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoY29uc3QgSlNMb2Nr
SG9sZGVyJiBsb2NrLCBFeGVjU3RhdGUqIGV4ZWMsCiBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1v
ZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVB
U0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRh
KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5h
dG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBsb2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMt
PnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1
bGVOYW1lKSwgc2NyaXB0RmV0Y2hlcik7CkBAIC0yMTYsNyArMjE1LDcgQEAgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTVmFsdWUKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5n
VGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBS
RUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAg
ICAgU3ltYm9sKiBrZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKQEAg
LTIzNCw3ICsyMzMsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZQogSlNWYWx1ZSBsaW5rQW5k
RXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVL
ZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxl
Y3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwpAQCAtMjQ0LDcgKzI0Myw3IEBA
IEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhCiBKU0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNj
cmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEo
KS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUo
KSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJy
ZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+
bW9kdWxlTG9hZGVyKCktPnJlcXVlc3RJbXBvcnRNb2R1bGUoZXhlYywgbW9kdWxlS2V5LCBzY3Jp
cHRGZXRjaGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5j
cHAKaW5kZXggOTkyNTZkNjU4OTM0OTA2YjIyMDFjYjViZGVlZGU1NzcyMmUyMGVkNi4uZDU1MmQw
YjFmNjI4NzE1YTI2MzZhYjc3MzdlZGZjNjE5NzM0YzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIElk
ZW50aWZpZXI6OmNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKFZNKiB2bSkKIHsKICAgICAv
LyBDaGVjayB0aGUgaWRlbnRpZmllciB0YWJsZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIHRocmVh
ZHNwZWNpZmljIG1hdGNoZXMgdGhlCiAgICAgLy8gdm0ncyBpZGVudGlmaWVyIHRhYmxlLgotICAg
IEFTU0VSVF9VTlVTRUQodm0sIHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERh
dGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHZtLCB2bS0+YXRv
bWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKIH0KIAogdm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShF
eGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmluZGV4IDllZjE0M2FkNDhlNzFkMjhiMTdiYTQxNmZh
M2IxNGJjYmRiNzQ1YWEuLjg1MDczYjZkMjk1YjU5OTYzYTIxM2Q1MjQ1NWI4NGI0YWQxNjU1MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCkBAIC03NSw4ICs3NSw4IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygp
CiAgICAgICAgIERpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKCk7CiAjZW5kaWYKICAgICAg
ICAgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwotICAgICAgICBXVEZUaHJlYWREYXRhJiB0aHJl
YWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgICAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFz
dFN0YWNrVG9wKHRocmVhZERhdGEuc3RhY2soKS5vcmlnaW4oKSk7CisgICAgICAgIFRocmVhZCYg
dGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RT
dGFja1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgICAgIFdhc206OlRodW5rczo6aW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKaW5kZXggYmE2YzQ0YTVkZjUxNGRlNTE3YzlhMjU4NzU2
MWE5OGE5ZDkyNDEwZS4uYzJjODI3NmFjMzI5MGVmMTZjOWZjZTRhZmE4NGEzOWY2MDBjYjM0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCkBAIC0xMjcsOSArMTI3
LDkgQEAgdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKICAgICBpZiAoIW1fdm0pCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhy
ZWFkRGF0YSgpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAg
QVNTRVJUKCFtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUpOwotICAgIG1fZW50cnlBdG9taWNTdHJp
bmdUYWJsZSA9IHRocmVhZERhdGEuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fdm0tPmF0
b21pY1N0cmluZ1RhYmxlKCkpOworICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IHRocmVh
ZC5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV92bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgQVNTRVJUKG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CiAKICAgICBpZiAobV92bS0+
aGVhcC5oYXNBY2Nlc3MoKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEpTTG9jazo6ZGlkQWNx
dWlyZUxvY2soKQogICAgIHZvaWQqIHAgPSAmcDsgLy8gQSBwcm94eSBmb3IgdGhlIGN1cnJlbnQg
c3RhY2sgcG9pbnRlci4KICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkocCk7CiAK
LSAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zYXZlZExhc3RTdGFja1RvcCgp
KTsKKyAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCkp
OwogCiAgICAgbV92bS0+aGVhcC5tYWNoaW5lVGhyZWFkcygpLmFkZEN1cnJlbnRUaHJlYWQoKTsK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0xvY2s6
OndpbGxSZWxlYXNlTG9jaygpCiAgICAgfQogCiAgICAgaWYgKG1fZW50cnlBdG9taWNTdHJpbmdU
YWJsZSkgewotICAgICAgICB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CisgICAgICAgIFRocmVhZDo6Y3VycmVudCgp
LnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUpOwog
ICAgICAgICBtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSBudWxscHRyOwogICAgIH0KIH0KQEAg
LTIyNSw5ICsyMjUsOSBAQCB1bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxMb2NrcyhEcm9wQWxsTG9j
a3MqIGRyb3BwZXIpCiAKICAgICBkcm9wcGVyLT5zZXREcm9wRGVwdGgobV9sb2NrRHJvcERlcHRo
KTsKIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0g
ICAgdGhyZWFkRGF0YS5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3ZtLT5zdGFja1Bv
aW50ZXJBdFZNRW50cnkoKSk7Ci0gICAgdGhyZWFkRGF0YS5zZXRTYXZlZExhc3RTdGFja1RvcCht
X3ZtLT5sYXN0U3RhY2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJl
bnQoKTsKKyAgICB0aHJlYWQuc2V0U2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkobV92bS0+c3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KCkpOworICAgIHRocmVhZC5zZXRTYXZlZExhc3RTdGFja1RvcCht
X3ZtLT5sYXN0U3RhY2tUb3AoKSk7CiAKICAgICB1bnNpZ25lZCBkcm9wcGVkTG9ja0NvdW50ID0g
bV9sb2NrQ291bnQ7CiAgICAgdW5sb2NrKGRyb3BwZWRMb2NrQ291bnQpOwpAQCAtMjUyLDkgKzI1
Miw5IEBAIHZvaWQgSlNMb2NrOjpncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyLCB1
bnNpZ25lZCBkcm9wcGVkTG9ja0NvdW50KQogCiAgICAgLS1tX2xvY2tEcm9wRGVwdGg7CiAKLSAg
ICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIG1fdm0t
PnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh0aHJlYWREYXRhLnNhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5KCkpOwotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRhLnNhdmVkTGFz
dFN0YWNrVG9wKCkpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Cisg
ICAgbV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZC5zYXZlZFN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSgpKTsKKyAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkLnNhdmVkTGFz
dFN0YWNrVG9wKCkpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKFZN
KiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKaW5kZXggYzkxZGFlY2Jj
ZGQ2NWE5NmQ2MzNmMzMxNTNkNTRhOTQ5YWQ2NTczYi4uZGVhMDUwMjhjZDczNWViNjM5MTc0NzBj
MTUyMmIxODI0NWRlNTc1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgK
QEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMTI1MTAyNDM0NjQzNzdhNDQ5YWZlY2Jj
NTk5ZmU5ODQyNzA5ZmU3YS4uMDY5NTliYTQ2NWUxOTJiZTYzYTgxODhkOWZjMjM3N2Y3Y2U5Njkz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTE0LDcgKzExNCw2IEBA
CiAjaW5jbHVkZSA8d3RmL1NpbXBsZVN0YXRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9XVEZU
aHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogCkBAIC0xNzYsNyArMTc1LDcgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgdG9wVk1FbnRy
eUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigp
KQogICAgICwgcHJvbWlzZURlZmVycmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9taXNlRGVm
ZXJyZWRUaW1lcj4oKnRoaXMpKQotICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0g
RGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21p
Y1N0cmluZ1RhYmxlKQorICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVs
dCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3Ry
aW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3Qo
bmV3IEFyZ0xpc3QpCiAgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFz
ZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKQEAgLTIxMSwxMyArMjEw
LDEzIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
c2hhZG93Q2hpY2tlbihzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0NoaWNrZW4+KCkpCiB7CiAgICAg
aW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwotICAgIFN0YWNrQm91bmRzIHN0
YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSBU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwogICAgIHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXpl
KE9wdGlvbnM6OnNvZnRSZXNlcnZlZFpvbmVTaXplKCkpOwogICAgIHNldExhc3RTdGFja1RvcChz
dGFjay5vcmlnaW4oKSk7CiAKICAgICAvLyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVy
eXRoaW5nIGNvbnNpc3RlbnQgaGVyZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwotICAg
IEF0b21pY1N0cmluZ1RhYmxlKiBleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB3dGZU
aHJlYWREYXRhKCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFi
bGUpOworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFi
bGUgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9hdG9t
aWNTdHJpbmdUYWJsZSk7CiAgICAgcHJvcGVydHlOYW1lcyA9IG5ldyBDb21tb25JZGVudGlmaWVy
cyh0aGlzKTsKICAgICBzdHJ1Y3R1cmVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcykpOwogICAgIHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlLnNl
dCgqdGhpcywgU3RydWN0dXJlUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKQEAgLTI3MCw3ICsyNjksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgbmF0aXZlU3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlLnNldCgqdGhp
cywgTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgc21hbGxTdHJpbmdzLmluaXRpYWxpemVDb21tb25TdHJpbmdzKCp0aGlzKTsK
IAotICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3Rp
bmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJy
ZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5r
cz4oKTsKQEAgLTY3Miw3ICs2NzEsNyBAQCBpbmxpbmUgdm9pZCBWTTo6dXBkYXRlU3RhY2tMaW1p
dHMoKQogICAgIHZvaWQqIGxhc3RTb2Z0U3RhY2tMaW1pdCA9IG1fc29mdFN0YWNrTGltaXQ7CiAj
ZW5kaWYKIAotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5z
dGFjaygpOworICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgp
LnN0YWNrKCk7CiAgICAgc2l6ZV90IHJlc2VydmVkWm9uZVNpemUgPSBPcHRpb25zOjpyZXNlcnZl
ZFpvbmVTaXplKCk7CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHRoYXQg
T3B0aW9uczo6cmVzZXJ2ZWRab25lU2l6ZSgpID49IG1pbmltdW1SZXNlcnZlWm9uZVNpemUgYXQK
ICAgICAvLyBvcHRpb25zIGluaXRpYWxpemF0aW9uIHRpbWUsIGFuZCB0aGUgb3B0aW9uIHZhbHVl
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNoYW5nZWQgdGhlcmVhZnRlci4KQEAgLTg4Niw5ICs4ODUs
OSBAQCBzaXplX3QgVk06OmNvbW1pdHRlZFN0YWNrQnl0ZUNvdW50KCkKICNpZiBFTkFCTEUoSklU
KQogICAgIC8vIFdoZW4gdXNpbmcgdGhlIEMgc3RhY2ssIHdlIGRvbid0IGtub3cgaG93IG1hbnkg
c3RhY2sgcGFnZXMgYXJlIGFjdHVhbGx5CiAgICAgLy8gY29tbWl0dGVkLiBTbywgd2UgdXNlIHRo
ZSBjdXJyZW50IHN0YWNrIHVzYWdlIGFzIGFuIGVzdGltYXRlLgotICAgIEFTU0VSVCh3dGZUaHJl
YWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICBpbnQ4X3QqIGN1
cnJlbnQgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KCZjdXJyZW50KTsKLSAgICBpbnQ4X3Qq
IGhpZ2ggPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KHd0ZlRocmVhZERhdGEoKS5zdGFjaygp
Lm9yaWdpbigpKTsKKyAgICBpbnQ4X3QqIGhpZ2ggPSByZWludGVycHJldF9jYXN0PGludDhfdCo+
KFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkub3JpZ2luKCkpOwogICAgIHJldHVybiBoaWdoIC0g
Y3VycmVudDsKICNlbHNlCiAgICAgcmV0dXJuIENMb29wU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3Vu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZWUyMzJhN2YyMWNlY2QwMWRm
N2U5MzJmOGI1MmU3NGUzZTQ4ZmE2ZC4uOWZiNGQ4YmU0MmMxZjc4ZDFlYjBlNTA5ZGJhMjkzNDE2
ZjNiZGY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02OCw3ICs2OCw2IEBA
CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotI2luY2x1ZGUgPHd0
Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJ
TkcpCkBAIC0yNDMsNyArMjQyLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAvLyBXZWJD
b3JlIGhhcyBhIG9uZS10by1vbmUgbWFwcGluZyBvZiB0aHJlYWRzIHRvIFZNczsKICAgICAvLyBl
aXRoZXIgY3JlYXRlKCkgb3IgY3JlYXRlTGVha2VkKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9u
Y2UKICAgICAvLyBvbiBhIHRocmVhZCwgdGhpcyBpcyB0aGUgJ2RlZmF1bHQnIFZNIChpdCB1c2Vz
IHRoZQotICAgIC8vIHRocmVhZCdzIGRlZmF1bHQgc3RyaW5nIHVuaXF1aW5nIHRhYmxlIGZyb20g
d3RmVGhyZWFkRGF0YSkuCisgICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcg
dGFibGUgZnJvbSBUaHJlYWQ6OmN1cnJlbnQoKSkuCiAgICAgLy8gQVBJIGNvbnRleHRzIGNyZWF0
ZWQgdXNpbmcgdGhlIG5ldyBjb250ZXh0IGdyb3VwIGF3YXJlIGludGVyZmFjZQogICAgIC8vIGNy
ZWF0ZSBBUElDb250ZXh0R3JvdXAgb2JqZWN0cyB3aGljaCByZXF1aXJlIGxlc3MgbG9ja2luZyBv
ZiBKU0MKICAgICAvLyB0aGFuIHRoZSBvbGQgc2luZ2xldG9uIEFQSVNoYXJlZCBWTSBjcmVhdGVk
IGZvciB1c2UgYnkKQEAgLTY5MSw3ICs2OTAsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAg
ICAgYm9vbCBpc1NhZmVUb1JlY3Vyc2Uodm9pZCogc3RhY2tMaW1pdCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgp
KTsKKyAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93
bndhcmQoKSk7CiAgICAgICAgIHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigm
Y3Vycik7CiAgICAgICAgIHJldHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKaW5kZXggYzJkOWJk
YTE4OGM0NzcyMDI1NmQ0MDMwNjQ4Mjg2ZWM0NWUzMWM1OS4uZDExYThmZmE2NmRiNWZlMzBmYjlm
NDlmNDUzMTM4MzZiNzhkMjM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUVudHJ5U2NvcGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRy
eVNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKIHsKICAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5
Ojppc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKCkpOwotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRh
KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2Nv
cGUpIHsKICAgICAgICAgdm0uZW50cnlTY29wZSA9IHRoaXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKaW5kZXggNWE3NzYxOTUwZTBjZjZiMjg4NTYwMTkzMWFm
NmI3MWEzYmUwMmQ3OC4uYmMwYzI1ZjkxZTJjMTc2MWEyMWNhMjBlYjA4ODJhMDkzYTIxNTE5MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBib29sIFZNOjplbnN1cmVTdGFja0NhcGFjaXR5Rm9yKFJl
Z2lzdGVyKiBuZXdUb3BPZlN0YWNrKQogewogI2lmIEVOQUJMRShKSVQpCi0gICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgIHJldHVy
biBuZXdUb3BPZlN0YWNrID49IG1fc29mdFN0YWNrTGltaXQ7CiAjZWxzZQogICAgIHJldHVybiBl
bnN1cmVTdGFja0NhcGFjaXR5Rm9yQ0xvb3AobmV3VG9wT2ZTdGFjayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggM2ExMTA5MGQxOTA5M2NjZWJlODA5
YmM3MmQzYTZhNTAyZTljNGI1ZC4uNzIyMmNjMDQ0ZjBhZGM5ODc4MGE5OWYwNmEzZTQ5YmI0MjNk
ZWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAt
MzIsOCArMzIsOCBAQAogI2luY2x1ZGUgIllhcnJDYW5vbmljYWxpemUuaCIKICNpbmNsdWRlICJZ
YXJyUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJl
YWREYXRhLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKQEAgLTg4Miw3ICs4ODIsNyBAQCBj
bGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICB7CiAgICAgICAgIGlmICghbV9zdGFj
a0xpbWl0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIEFTU0VSVCh3dGZUaHJl
YWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICAgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgICAgIGlu
dDhfdCogY3VyciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1cnIpOwogICAgICAgICBp
bnQ4X3QqIGxpbWl0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihtX3N0YWNrTGltaXQpOwog
ICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGZiODNmYTVlYmYzODRmOTY0MWNkZTIxYWViYTYxZmI3NmZiYTM5
NjUuLmFlNjk2OTgzNmFhNGZkNjA4ODU3MjFhM2QwYzU4ZmViOGVjYjM4MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIzLDcgKzEyMyw2IEBACiAJCUE4
QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNEIxNTFBODI1QjAwNDEy
M0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgKi87IH07CiAJCUE4QTQ3NDYzMTUxQTgyNUIwMDQx
MjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzM1MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3Bw
ICovOyB9OwogCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM1NzE1MUE4MjVCMDA0
MTIzRkYgLyogVVRGOC5jcHAgKi87IH07Ci0JCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLzsg
fTsKIAkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZC
NTFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLzsgfTsKIAkJ
QUQ4OUI2QkExRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4OUI2Qjkx
RTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovOyB9Owog
CQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLzsgfTsKQEAgLTUxNSw4
ICs1MTQsNiBAQAogCQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3RvclRyYWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM3MjE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNVGFncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXVEZUaHJlYWREYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczN0IxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V1RGVGhyZWFkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzQ4QjE1
MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOUE0NzI3RjE1MUE4
MjVBMDA0MTIzRkYgLyogRGlzYWxsb3dDVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNhbGxvd0NUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFE
N0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTk5LDggKzk5Niw2IEBACiAJCQkJMEZFNDQ3OUIxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2Nr
LmggKi8sCiAJCQkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi8s
CiAJCQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5oICovLAotCQkJCUE4
QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLywKLQkJCQlBOEE0
NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovLAogCQkJKTsKIAkJCXBh
dGggPSB3dGY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQxMSw3ICsxNDA2LDYg
QEAKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0NTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3Ry
aW5nLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBl
MTVkNDVjNjNjOTBkZDgzZGFhMWE3NGI1MGYzMjg3NWU5OGE5MjNiLi41YTc1Njg4NGQ2MjdlMGIy
MGM2ZWE5OGQ0MDNhYzQ2ODRjMGI4NjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTUwLDcg
KzE1MCw2IEBAIHNldChXVEZfSEVBREVSUwogICAgIFZhcmlhbnQuaAogICAgIFZlY3Rvci5oCiAg
ICAgVmVjdG9yVHJhaXRzLmgKLSAgICBXVEZUaHJlYWREYXRhLmgKICAgICBXYWxsVGltZS5oCiAg
ICAgV2Vha1B0ci5oCiAgICAgV29yZExvY2suaApAQCAtMjU0LDcgKzI1Myw2IEBAIHNldChXVEZf
U09VUkNFUwogICAgIFRocmVhZGluZy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUu
Y3BwCiAgICAgVVVJRC5jcHAKLSAgICBXVEZUaHJlYWREYXRhLmNwcAogICAgIFdhbGxUaW1lLmNw
cAogICAgIFdvcmRMb2NrLmNwcAogICAgIFdvcmtRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0u
aAppbmRleCA0NTE0ODU0NzdhY2Y2NTY0YjgyODc3ZDNlNjU5ZTkwMjc4Yzg5NTFlLi5iOGU5ODdi
OTA4MTUwZjI2Njc2MDBmYTQzMWY3YjkyMDRlZjNiODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9Mb2NrQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5o
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUg
PHd0Zi9Db21waWxlci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNl
IFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5oCmluZGV4IDg0MzhkMmU5
MmFhZDMxZWZkNDU5OTgzYjljNTJjMDlhMDY5ZmQwZGEuLjBjYmU1ZmE1ZmFjODEwZDljZGYxYzkz
ODM3ZjMwMWUyZTY4ZmM0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0
aG1JbmxpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobUlubGluZXMuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0xvY2tBbGdvcml0aG0uaD4KICNpbmNs
dWRlIDx3dGYvUGFya2luZ0xvdC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogLy8g
SXQncyBhIGdvb2QgaWRlYSB0byBhdm9pZCBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgaW4gdG9vIG1h
bnkgcGxhY2VzLCBzbyB0aGF0IGl0J3MgcG9zc2libGUgdG8gY2hhbmdlCiAvLyB0aGUgbG9jayBh
bGdvcml0aG0gc2xvdyBwYXRoIHdpdGhvdXQgcmVjb21waWxpbmcgdGhlIHdvcmxkLiBSaWdodCBu
b3cgdGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdHdvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggMTRi
MzQ2NzNhMGJkODU3N2MxMjdmY2YyNjliNzMyOWViNmIwMDdmOC4uYWI5MjEzNGVkOGI4ZTFlMTM3
Y2Y5ZTdjNjNiZjFjMjgyNGFmYmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRo
cmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaApAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJr
aW5nTG90LmNwcAppbmRleCBjYzFhMjFiOWVhNWNjY2M2ZjFhY2U0Yzk3NDk4OTliYmRhNWQ3ZTEw
Li5mOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5n
TG90LmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkhhc2hGdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJTdHJpbmdQcmludFN0cmVhbS5oIgogI2luY2x1ZGUgIlRocmVhZFNwZWNpZmljLmgi
Ci0jaW5jbHVkZSAiVGhyZWFkaW5nUHJpbWl0aXZlcy5oIgorI2luY2x1ZGUgIlRocmVhZGluZy5o
IgogI2luY2x1ZGUgIlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKICNpbmNsdWRl
ICJXb3JkTG9jay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcAppbmRleCAwNjRmMmYwNTJhYWYzOGI5Zjgw
YTZkZDQxMTMyZTY1NDZlNDU3ZjQyLi44Y2I0NjIyMTFkZjdhZDU1N2UzYzdhZTI0OGU1NjUyOGI1
MTg2Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdGFja1N0YXRzLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVk
ZSAiQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUgIkRhdGFMb2cuaCIKLSNpbmNsdWRlICJXVEZUaHJl
YWREYXRhLmgiCiAKIC8vIERlZmluZSB0aGUgZm9sbG93aW5nIGZsYWcgaWYgeW91IHdhbnQgdG8g
Y29sbGVjdCBzdGF0cyBvbiBldmVyeSBzaW5nbGUKIC8vIGNoZWNrcG9pbnQuIEJ5IGRlZmF1bHQs
IHdlIG9ubHkgbG9nIGNoZWNrcG9pbnRzIHRoYXQgZXN0YWJsaXNoIG5ldwpAQCAtNTksNyArNTgs
NyBAQCBpbnQgU3RhY2tTdGF0czo6c19tYXhMYXlvdXRSZWVudHJ5RGVwdGggPSAwOwogCiBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQogewotICAgIGNvbnN0IFN0
YWNrQm91bmRzJiBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOworICAgIGNvbnN0IFN0
YWNrQm91bmRzJiBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgbV9yZWVu
dHJ5RGVwdGggPSAwOwogICAgIG1fc3RhY2tTdGFydCA9IChjaGFyKilzdGFjay5vcmlnaW4oKTsK
ICAgICBtX2N1cnJlbnRDaGVja1BvaW50ID0gMDsKQEAgLTcwLDkgKzY5LDkgQEAgU3RhY2tTdGF0
czo6UGVyVGhyZWFkU3RhdHM6OlBlclRocmVhZFN0YXRzKCkKIFN0YWNrU3RhdHM6OkNoZWNrUG9p
bnQ6OkNoZWNrUG9pbnQoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2Nr
KFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERh
dGEgPSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBT
dGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsK
LSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFjaygpOworICAg
IFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgU3RhY2tTdGF0czo6UGVy
VGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOworICAgIGNvbnN0IFN0YWNrQm91
bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9vbCBpc0dyb3dpbmdEb3dud2Fy
ZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAgICAgYm9vbCBuZWVkVG9Mb2cgPSBmYWxz
ZTsKQEAgLTEyOCw4ICsxMjcsOCBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVja1BvaW50
KCkKIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KCkKIHsKICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAg
ICBXVEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4o
Jnd0ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0
aHJlYWREYXRhLT5zdGFja1N0YXRzKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1
cnJlbnQoKTsKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFj
a1N0YXRzKCk7CiAKICAgICAvLyBQb3AgdG8gcHJldmlvdXMgY2hlY2twb2ludDoKICAgICB0Lm1f
Y3VycmVudENoZWNrUG9pbnQgPSBtX3ByZXY7CkBAIC0xMzgsNyArMTM3LDcgQEAgU3RhY2tTdGF0
czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9pbnQoKQogICAgIC8vIExvZyB0aGlzIGNoZWNrcG9pbnQg
aWYgbmVlZGVkOgogI2lmIEVOQUJMRShWRVJCT1NFX1NUQUNLX1NUQVRTKQogICAgIGlmICghbV9w
cmV2KSB7Ci0gICAgICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0
YWNrKCk7CisgICAgICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFjaygp
OwogICAgICAgICBib29sIGlzR3Jvd2luZ0Rvd253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndh
cmQoKTsKIAogICAgICAgICBjaGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
dGhpcyk7CkBAIC0xNTksOSArMTU4LDkgQEAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNr
UG9pbnQoKQogdm9pZCBTdGFja1N0YXRzOjpwcm9iZSgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY0xvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhy
ZWFkRGF0YSogdGhyZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJl
YWREYXRhKCkpOwotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0
YS0+c3RhY2tTdGF0cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERh
dGEtPnN0YWNrKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAg
ICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7Cisg
ICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29s
IGlzR3Jvd2luZ0Rvd253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKIApAQCAtMjIw
LDkgKzIxOSw5IEBAIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQ6OkxheW91dENoZWNrUG9p
bnQoKQogICAgIFN0YWNrU3RhdHM6OnByb2JlKCk7CiAKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJlZE11dGV4KTsKLSAgICBXVEZUaHJlYWRE
YXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZUaHJlYWREYXRhKj4oJnd0ZlRocmVhZERh
dGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWREYXRhLT5z
dGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+
c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIFN0
YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKKyAgICBj
b25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKIAogICAgIGJvb2wgaXNH
cm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFk
SG9sZGVyLmNwcAppbmRleCBlMmEzMWJlOTk3OGE5ZGU0MmViZmEzM2IwNzA2YTUyNDMzYmQ3MmNi
Li4wMmIwZTE0YWExYTEwM2M0NzVmOWQwZmViMDI1MWZhM2Y2NDc0NDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZEhvbGRlci5jcHAKQEAgLTQzLDQgKzQzLDkgQEAgVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVy
KCkKICAgICBtX3RocmVhZC0+ZGlkRXhpdCgpOwogfQogCitUaHJlYWRIb2xkZXImIFRocmVhZEhv
bGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQoKQoreworICAgIHJldHVybiBpbml0aWFsaXplKFRocmVh
ZDo6Y3JlYXRlQ3VycmVudFRocmVhZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZEhvbGRlci5oCmluZGV4IGIyZjhkZTY4ODUwYzZhZmRjNzllZmRhZGEwOWJlNmRlZmIxODI2
YTkuLmE4OThjZmMyY2NlMmQ5Nzk1NzEwZGM0OWE1M2UyYjU4MDEzY2U1ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZEhvbGRlci5oCkBAIC0yOSwxMyArMjksMTggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3By
YWdtYSBvbmNlCisjaWZuZGVmIFRocmVhZEhvbGRlcl9oCisjZGVmaW5lIFRocmVhZEhvbGRlcl9o
CiAKKyNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFk
OworCiAvLyBIb2xkcyBUaHJlYWQgaW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLiBUaGUg
ZGVzdHJ1Y3RvciBvZiB0aGlzIGhvbGRlciByZWxpYWJseSBkZXN0cm95IFRocmVhZC4KIC8vIEZv
ciBwdGhyZWFkLCBpdCBlbXBsb3lzIHB0aHJlYWRzLXNwZWNpZmljIDItcGFzcyBkZXN0cnVjdGlv
biB0byByZWxpYWJseSByZW1vdmUgVGhyZWFkLgogLy8gRm9yIFdpbmRvd3MsIHdlIHVzZSB0aHJl
YWRfbG9jYWwgdG8gZGVmZXIgdGhyZWFkIGhvbGRlciBkZXN0cnVjdGlvbi4gSXQgYXNzdW1lcyBy
ZWd1bGFyIFRocmVhZFNwZWNpZmljCkBAIC00NywyMyArNTIsMjYgQEAgY2xhc3MgVGhyZWFkSG9s
ZGVyIHsKIAogICAgIC8vIE9uZSB0aW1lIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIGNsYXNzIGFz
IGEgd2hvbGUuCiAgICAgLy8gVGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGluaXRp
YWxpemUoKSBhbmQgaXQgaXMgbm90IHRocmVhZC1zYWZlLgotICAgIHN0YXRpYyB2b2lkIGluaXRp
YWxpemVPbmNlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVPbmNlKCk7CiAKICAgICAvLyBDcmVhdGVzIGFuZCBwdXRzIGFuIGluc3RhbmNlIG9mIFRocmVh
ZEhvbGRlciBpbnRvIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLgotICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemUoVGhyZWFkJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRI
b2xkZXImIGluaXRpYWxpemUoUmVmPFRocmVhZD4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBUaHJlYWRIb2xkZXImIGluaXRpYWxpemVDdXJyZW50KCk7CiAKICAgICAvLyBSZXR1
cm5zIDAgaWYgdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2Ugd2FzIG5vdCBpbml0aWFsaXplZC4KLSAg
ICBzdGF0aWMgVGhyZWFkSG9sZGVyKiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRl
ciYgY3VycmVudCgpOworICAgIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnRNYXlCZU51bGwo
KTsKIAogICAgIFRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KIAog
I2lmIE9TKFdJTkRPV1MpCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xk
ZXIqIGN1cnJlbnREeWluZygpOwogICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkPiBnZXQoVGhyZWFk
SWRlbnRpZmllcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBUaHJlYWRIb2xkZXIoVGhyZWFk
JiB0aHJlYWQpCi0gICAgICAgIDogbV90aHJlYWQodGhyZWFkKQorICAgIFRocmVhZEhvbGRlcihS
ZWY8VGhyZWFkPiYmIHRocmVhZCkKKyAgICAgICAgOiBtX3RocmVhZChXVEZNb3ZlKHRocmVhZCkp
CiAgICAgICAgICwgbV9pc0Rlc3Ryb3llZE9uY2UoZmFsc2UpCiAgICAgewogICAgIH0KQEAgLTc3
LDcgKzg1LDM5IEBAIGNsYXNzIFRocmVhZEhvbGRlciB7CiAKICAgICBSZWY8VGhyZWFkPiBtX3Ro
cmVhZDsKICAgICBib29sIG1faXNEZXN0cm95ZWRPbmNlOwotICAgIHN0YXRpYyBUaHJlYWRTcGVj
aWZpY0tleSBtX2tleTsKKyAgICBzdGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lmaWNL
ZXkgbV9rZXk7CiB9OwogCitpbmxpbmUgVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJl
bnRNYXlCZU51bGwoKQoreworI2lmICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAh
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJl
YWRIb2xkZXIqPih0aHJlYWRTcGVjaWZpY0dldChtX2tleSkpOworI2Vsc2UKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdU
Rl9USFJFQURfREFUQV9LRVkpKTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGhyZWFkSG9sZGVyJiBU
aHJlYWRIb2xkZXI6OmN1cnJlbnQoKQoreworICAgIC8vIFdSVCBXZWJDb3JlOgorICAgIC8vICAg
IFRocmVhZEhvbGRlciBpcyB1c2VkIG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3Nz
aWJseSBiZSB1c2VkCisgICAgLy8gICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5v
IG5lZWQgZm9yIHN5bmNocm9uaXphdGlvbiBoZXJlLgorICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29y
ZToKKyAgICAvLyAgICBUaHJlYWQ6OmN1cnJlbnQoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20g
aW5pdGlhbGl6ZVRocmVhZGluZygpLCBlbnN1cmluZworICAgIC8vICAgIHRoaXMgaXMgaW5pdGlh
bGx5IGNhbGxlZCBpbiBhIHB0aHJlYWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyNpZiAhSEFWRShG
QVNUX1RMUykKKyAgICBpZiAoVU5MSUtFTFkoVGhyZWFkSG9sZGVyOjptX2tleSA9PSBJbnZhbGlk
VGhyZWFkU3BlY2lmaWNLZXkpKQorICAgICAgICBpbml0aWFsaXplT25jZSgpOworI2VuZGlmCisg
ICAgaWYgKGF1dG8qIGhvbGRlciA9IGN1cnJlbnRNYXlCZU51bGwoKSkKKyAgICAgICAgcmV0dXJu
ICpob2xkZXI7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoYXV0byogaG9sZGVyID0gY3VycmVu
dER5aW5nKCkpCisgICAgICAgIHJldHVybiAqaG9sZGVyOworI2VuZGlmCisgICAgcmV0dXJuIGlu
aXRpYWxpemVDdXJyZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgorI2VuZGlmIC8vIFRo
cmVhZEhvbGRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhy
ZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAKaW5kZXgg
MjBlNWU4OGY3NmRhYzJmNzYwNzMzNGE4ZWIzYWFlYWNkYWQ1Zjk2My4uODU2ODQxZTMyMzZkYmVh
OGRmMDMyMDgxZjllMjY0YzMxZGQ1NjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhy
ZWFkSG9sZGVyUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlclB0
aHJlYWRzLmNwcApAQCAtNDEsMzYgKzQxLDQxIEBAIHZvaWQgVGhyZWFkSG9sZGVyOjppbml0aWFs
aXplT25jZSgpCiAgICAgdGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7
CiB9CiAKLVRocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRl
ciYgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogeworICAg
IGF1dG8qIGhvbGRlciA9IG5ldyBUaHJlYWRIb2xkZXIoV1RGTW92ZSh0aHJlYWQpKTsKKyNpZiAh
SEFWRShGQVNUX1RMUykKKyAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFz
ZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KKyAg
ICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBj
YXRjaCAiZGlkbid0IGNhbGwKKyAgICAvLyBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29u
IGVub3VnaCIgYnVncyBpbiByZWxlYXNlIG1vZGUuCiAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFs
aWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZEhvbGRl
cio+KHRocmVhZFNwZWNpZmljR2V0KG1fa2V5KSk7Ci19Ci0KLXZvaWQgVGhyZWFkSG9sZGVyOjpp
bml0aWFsaXplKFRocmVhZCYgdGhyZWFkKQotewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAg
ICAgIC8vIElkZWFsbHkgd2UnZCBoYXZlIHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdo
ZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcg
dGhpcyByZWxlYXNlIGFzc2VydCBoZXJlIG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0
IGNhbGwKLSAgICAgICAgLy8gV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2gi
IGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgotICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRo
cmVhZFNwZWNpZmljS2V5KTsKLSAgICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIG5ldyBU
aHJlYWRIb2xkZXIodGhyZWFkKSk7Ci0gICAgfQorICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5
LCBob2xkZXIpOworI2Vsc2UKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RI
UkVBRF9EQVRBX0tFWSwgaG9sZGVyKTsKKyAgICBwdGhyZWFkX2tleV9pbml0X25wKFdURl9USFJF
QURfREFUQV9LRVksICZkZXN0cnVjdCk7CisjZW5kaWYKKyAgICByZXR1cm4gKmhvbGRlcjsKIH0K
IAogdm9pZCBUaHJlYWRIb2xkZXI6OmRlc3RydWN0KHZvaWQqIGRhdGEpCiB7Ci0gICAgVGhyZWFk
SG9sZGVyKiB0aHJlYWRJZGVudGlmaWVyRGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+
KGRhdGEpOwotICAgIEFTU0VSVCh0aHJlYWRJZGVudGlmaWVyRGF0YSk7CisgICAgVGhyZWFkSG9s
ZGVyKiBob2xkZXIgPSBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPihkYXRhKTsKKyAgICBBU1NF
UlQoaG9sZGVyKTsKIAotICAgIGlmICh0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3ll
ZE9uY2UpIHsKLSAgICAgICAgZGVsZXRlIHRocmVhZElkZW50aWZpZXJEYXRhOworICAgIGlmICho
b2xkZXItPm1faXNEZXN0cm95ZWRPbmNlKSB7CisgICAgICAgIGRlbGV0ZSBob2xkZXI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pc0Rlc3Ry
b3llZE9uY2UgPSB0cnVlOworICAgIGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOwog
ICAgIC8vIFJlLXNldHRpbmcgdGhlIHZhbHVlIGZvciBrZXkgY2F1c2VzIGFub3RoZXIgZGVzdHJ1
Y3QoKSBjYWxsIGFmdGVyIGFsbCBvdGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2Vy
ZSBjYWxsZWQuCi0gICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIHRocmVhZElkZW50aWZpZXJE
YXRhKTsKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRo
cmVhZFNwZWNpZmljS2V5KTsKKyAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsK
KyNlbHNlCisgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9L
RVksIGhvbGRlcik7CisgICAgcHRocmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZ
LCAmZGVzdHJ1Y3QpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZEhvbGRlcldpbi5jcHAKaW5kZXggZjA2YjYyZjY4ZTIwMTM2MzVjNjM1MTVlOGMwZTRmMTVm
ZTQ2MTZkYS4uOThiMmMyOGJlZjZlNGI0MzZhYTE1MmYxNDQzNzE4NjAzZTU2ZTg0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwCkBAIC01NiwxNSArNTYsOSBAQCB2b2lkIFRocmVhZEhv
bGRlcjo6aW5pdGlhbGl6ZU9uY2UoKQogICAgIHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKCZtX2tl
eSwgZGVzdHJ1Y3QpOwogfQogCi1UaHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3VycmVudCgp
CitUaHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3VycmVudER5aW5nKCkKIHsKICAgICBBU1NF
UlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAgICBUaHJlYWRIb2xkZXIq
IGhvbGRlciA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVhZFNwZWNpZmljR2V0KG1f
a2V5KSk7Ci0gICAgaWYgKGhvbGRlcikgewotICAgICAgICBBU1NFUlQoaG9sZGVyICE9IEludmFs
aWRUaHJlYWRIb2xkZXIpOwotICAgICAgICByZXR1cm4gaG9sZGVyOwotICAgIH0KLQogICAgIC8v
IEFmdGVyIEZMUyBpcyBkZXN0cm95ZWQsIHRoaXMgbWFwIG9mZmVycyB0aGUgdmFsdWUgdW50aWwg
dGhlIHNlY29uZCB0aHJlYWQgZXhpdCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgc3RkOjpsb2Nr
X2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICByZXR1cm4g
dGhyZWFkTWFwKCkuZ2V0KGN1cnJlbnRUaHJlYWQoKSk7CkBAIC04MCwyMSArNzQsMjEgQEAgUmVm
UHRyPFRocmVhZD4gVGhyZWFkSG9sZGVyOjpnZXQoVGhyZWFkSWRlbnRpZmllciBpZCkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFk
JiB0aHJlYWQpCitUaHJlYWRIb2xkZXImIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShSZWY8VGhy
ZWFkPiYmIHRocmVhZCkKIHsKLSAgICBpZiAoIWN1cnJlbnQoKSkgewotICAgICAgICAvLyBJZGVh
bGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRo
YXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KLSAgICAgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFz
ZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCi0gICAg
ICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJl
bGVhc2UgbW9kZS4KLSAgICAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZp
Y0tleSk7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvZGUgb25j
ZSA8cmRhcjovL3Byb2JsZW0vMzE3OTMyMTM+IGlzIGZpeGVkLgotICAgICAgICBhdXRvKiBob2xk
ZXIgPSBuZXcgVGhyZWFkSG9sZGVyKHRocmVhZCk7Ci0gICAgICAgIHRocmVhZFNwZWNpZmljU2V0
KG1fa2V5LCBob2xkZXIpOwotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwotICAgICAgICAgICAgdGhyZWFk
TWFwKCkuYWRkKHRocmVhZC5pZCgpLCBob2xkZXIpOwotICAgICAgICB9CisgICAgLy8gSWRlYWxs
eSB3ZSdkIGhhdmUgdGhpcyBhcyBhIHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0
IHdvdWxkIGh1cnQgcGVyZm9ybWFuY2UuCisgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3Nl
cnQgaGVyZSBtZWFucyB0aGF0IHdlIHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCisgICAgLy8gV1RG
Ojppbml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2Rl
LgorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0v
MzE3OTMyMTM+IGlzIGZpeGVkLgorICAgIGF1dG8gaWQgPSB0aHJlYWQtPmlkKCk7CisgICAgYXV0
byogaG9sZGVyID0gbmV3IFRocmVhZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworICAgIHRocmVh
ZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1
YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICAgICAgdGhyZWFk
TWFwKCkuYWRkKGlkLCBob2xkZXIpOwogICAgIH0KKyAgICByZXR1cm4gKmhvbGRlcjsKIH0KIAog
dm9pZCBUaHJlYWRIb2xkZXI6OmRlc3RydWN0KHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcApp
bmRleCBiM2ZmYTdjZjcxOTNhNjA5ODBkZTcyZTEwMGUwYTQwNzgyNjBkNjQyLi4yZTExMzg0NWE1
ZDM3NGNlYTVlN2YxOWFhNzRkMGNiYzQ2NzJlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZE1lc3NhZ2UuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgot
I2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKICNpZiBI
QVZFKFFPU19DTEFTU0VTKQpAQCAtOTQsNiArOTQsMTMgQEAgY29uc3QgY2hhciogVGhyZWFkOjpu
b3JtYWxpemVUaHJlYWROYW1lKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpCiAjZW5kaWYKIH0KIAor
dm9pZCBUaHJlYWQ6OmluaXRpYWxpemVJblRocmVhZCgpCit7CisgICAgbV9zYXZlZExhc3RTdGFj
a1RvcCA9IHN0YWNrKCkub3JpZ2luKCk7CisgICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgq
dGhpcyk7CisgICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNT
dHJpbmdUYWJsZTsKK30KKwogdm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4
dCogbmV3VGhyZWFkQ29udGV4dCkKIHsKICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uOwpA
QCAtMTA1LDcgKzExMiw3IEBAIHZvaWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRl
eHQqIG5ld1RocmVhZENvbnRleHQpCiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5zdGFnZSA9PSBO
ZXdUaHJlYWRDb250ZXh0OjpTdGFnZTo6RXN0YWJsaXNoZWRIYW5kbGUpOwogCiAgICAgICAgIC8v
IEluaXRpYWxpemUgdGhyZWFkIGhvbGRlciB3aXRoIGVzdGFibGlzaGVkIElELgotICAgICAgICBU
aHJlYWRIb2xkZXI6OmluaXRpYWxpemUoY29udGV4dC0+dGhyZWFkLmdldCgpKTsKKyAgICAgICAg
VGhyZWFkSG9sZGVyOjppbml0aWFsaXplKGNvbnRleHQtPnRocmVhZC5jb3B5UmVmKCkpOwogCiAg
ICAgICAgIFRocmVhZDo6aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5u
YW1lKTsKICAgICAgICAgZnVuY3Rpb24gPSBXVEZNb3ZlKGNvbnRleHQtPmVudHJ5UG9pbnQpOwpA
QCAtMTE2LDYgKzEyMyw3IEBAIHZvaWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRl
eHQqIG5ld1RocmVhZENvbnRleHQpCiAgICAgICAgIGNvbnRleHQtPnN0YWdlID0gTmV3VGhyZWFk
Q29udGV4dDo6U3RhZ2U6OkluaXRpYWxpemVkOwogICAgICAgICBjb250ZXh0LT5jb25kaXRpb24u
c2lnbmFsKCk7CiAjZW5kaWYKKyAgICAgICAgY29udGV4dC0+dGhyZWFkLT5pbml0aWFsaXplSW5U
aHJlYWQoKTsKICAgICB9CiAKICAgICBBU1NFUlQoIVRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCku
aXNFbXB0eSgpKTsKQEAgLTE1NSwxNCArMTYzLDYgQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkOjpj
cmVhdGUoY29uc3QgY2hhciogbmFtZSwgRnVuY3Rpb248dm9pZCgpPiYmIGVudHJ5UG9pbnQpCiAg
ICAgcmV0dXJuIFdURk1vdmUodGhyZWFkKTsKIH0KIAotVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRN
YXlCZU51bGwoKQotewotICAgIFRocmVhZEhvbGRlciogZGF0YSA9IFRocmVhZEhvbGRlcjo6Y3Vy
cmVudCgpOwotICAgIGlmIChkYXRhKQotICAgICAgICByZXR1cm4gJmRhdGEtPnRocmVhZCgpOwot
ICAgIHJldHVybiBudWxscHRyOwotfQotCiBzdGF0aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRG
cm9tVGhyZWFkR3JvdXAoKQogewogI2lmIE9TKFdJTkRPV1MpCkBAIC0xOTcsNiArMTk3LDkgQEAg
dm9pZCBUaHJlYWQ6OmRpZEV4aXQoKQogICAgICAgICAgICAgdGhyZWFkR3JvdXAtPm1fdGhyZWFk
cy5yZW1vdmUoKnRoaXMpOwogICAgICAgICB9CiAgICAgfQorICAgIGlmIChtX2F0b21pY1N0cmlu
Z1RhYmxlRGVzdHJ1Y3RvcikKKyAgICAgICAgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3Io
bV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUpOworCiAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBz
YXkgInRocmVhZCBpcyBleGl0ZWQiIGFmdGVyIHVucmVnaXN0ZXJpbmcgdGhyZWFkcyBmcm9tIHRo
cmVhZCBncm91cHMuCiAgICAgLy8gU28gd2UgbmVlZCB0byBzZXBhcmF0ZSBtX2lzU2h1dHRpbmdE
b3duIGZyb20gbV9kaWRFeGl0LgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2Nr
ZXIobV9tdXRleCk7CkBAIC0yNzcsOSArMjgwLDggQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKICAgICBzdGQ6
OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbXSB7Ci0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5p
dGlhbGl6ZU9uY2UoKTsKICAgICAgICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigp
OwotICAgICAgICB3dGZUaHJlYWREYXRhKCk7CisgICAgICAgIFRocmVhZDo6Y3VycmVudCgpOwog
ICAgICAgICBpbml0aWFsaXplRGF0ZXMoKTsKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplUGxh
dGZvcm1UaHJlYWRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggZmY1MGJmYTg5Yjc2
OGJjMDgxOGM2Mzk4OWQyZmYzZjVlMmM0MTkyNy4uMmM2NTYzMjdmMDM5Yjk0OThmNzdhMDY1MDEw
MWU5NTQ4YjlhODU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkSG9sZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01MCwxMiArNTIsMTIgQEAK
IG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBBYnN0cmFjdExvY2tlcjsKK2NsYXNzIEF0b21pY1N0
cmluZ1RhYmxlOwogY2xhc3MgVGhyZWFkTWVzc2FnZURhdGE7CiAKLWVudW0gY2xhc3MgVGhyZWFk
R3JvdXBBZGRSZXN1bHQ7Cit1c2luZyBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSB2b2lk
ICgqKShBdG9taWNTdHJpbmdUYWJsZSopOwogCi11c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWlu
dDMyX3Q7Ci10eXBlZGVmIHZvaWQgKCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOwor
ZW51bSBjbGFzcyBUaHJlYWRHcm91cEFkZFJlc3VsdDsKIAogY2xhc3MgVGhyZWFkR3JvdXA7CiBj
bGFzcyBUaHJlYWRIb2xkZXI7CkBAIC02NSw2ICs2Nyw3IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xh
c3MgVGhyZWFkR3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIFRocmVhZEhvbGRlcjsKKyAgICBmcmll
bmQgY2xhc3MgQXRvbWljU3RyaW5nVGFibGU7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRo
cmVhZCgpOwogCkBAIC03Myw4ICs3Niw3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZlB0cjxUaHJlYWQ+IGNyZWF0ZShjb25zdCBjaGFyKiB0aHJlYWROYW1lLCBGdW5jdGlvbjx2b2lk
KCk+JiYpOwogCiAgICAgLy8gUmV0dXJucyBUaHJlYWQgb2JqZWN0LgotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgVGhyZWFkJiBjdXJyZW50KCk7Ci0gICAgc3RhdGljIFRocmVhZCogY3Vy
cmVudE1heUJlTnVsbCgpOworICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8v
IFJldHVybnMgVGhyZWFkSWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1
c2VyIG9ubHkgY2FyZXMgYWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0
IHRpbWUsIHVzZXJzIHNob3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZp
ZXIgZG9lcyBub3QgZW5zdXJlCkBAIC0xNDEsNiArMTQzLDQ3IEBAIGNsYXNzIFRocmVhZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAgICAgcmV0dXJuIG1fc3Rh
Y2s7CiAgICAgfQogCisgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAgICB9
CisKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEF0
b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSkKKyAgICB7CisgICAgICAgIEF0b21p
Y1N0cmluZ1RhYmxlKiBvbGRBdG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0cmlu
Z1RhYmxlOworICAgICAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0cmlu
Z1RhYmxlOworICAgICAgICByZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisj
aWYgRU5BQkxFKFNUQUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiBz
dGFja1N0YXRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YWNrU3RhdHM7CisgICAgfQor
I2VuZGlmCisKKyAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0YWNrUG9pbnRlckF0
Vk1FbnRyeSkKKyAgICB7CisgICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBz
dGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tU
b3AoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CisgICAgfQor
CisgICAgdm9pZCBzZXRTYXZlZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCisgICAg
eworICAgICAgICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOworICAgIH0KKwor
ICAgIHZvaWQqIG1fYXBpRGF0YSB7IG51bGxwdHIgfTsKKwogI2lmIE9TKERBUldJTikKICAgICBt
YWNoX3BvcnRfdCBtYWNoVGhyZWFkKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVRocmVhZDsgfQogI2Vu
ZGlmCkBAIC0xNTAsMTMgKzE5MywxNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiBwcm90ZWN0ZWQ6CiAgICAgVGhyZWFkKCk7CiAKKyAgICBz
dGF0aWMgUmVmPFRocmVhZD4gY3JlYXRlQ3VycmVudFRocmVhZCgpOworICAgIHZvaWQgaW5pdGlh
bGl6ZUluVGhyZWFkKCk7CisKICAgICAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJl
YWQgZXN0YWJsaXNobWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICBib29sIGVzdGFibGlzaEhhbmRs
ZShOZXdUaHJlYWRDb250ZXh0Kik7CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0gICAgdm9pZCBlc3Rh
Ymxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCk7CisgICAgdm9pZCBlc3RhYmxp
c2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKICNlbHNlCi0g
ICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKEhBTkRMRSwgVGhyZWFkSWRl
bnRpZmllcik7CisgICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKFBsYXRm
b3JtVGhyZWFkSGFuZGxlLCBUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiAjaWYgVVNFKFBU
SFJFQURTKSAmJiAhT1MoREFSV0lOKQpAQCAtMTk3LDIyICsyNDMsMjUgQEAgY2xhc3MgVGhyZWFk
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIFZlY3RvcjxzdGQ6
OndlYWtfcHRyPFRocmVhZEdyb3VwPj4gbV90aHJlYWRHcm91cHM7CiAgICAgYm9vbCBtX2lzU2h1
dHRpbmdEb3duIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkRXhpdCB7IGZhbHNlIH07Ci0jaWYg
VVNFKFBUSFJFQURTKQotICAgIHB0aHJlYWRfdCBtX2hhbmRsZTsKLQorICAgIFBsYXRmb3JtVGhy
ZWFkSGFuZGxlIG1faGFuZGxlOwogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3Bs
YXRmb3JtVGhyZWFkOwotI2Vsc2UKKyNlbGlmIFVTRShQVEhSRUFEUykKICAgICBzZW1fdCBtX3Nl
bWFwaG9yZUZvclN1c3BlbmRSZXN1bWU7CiAgICAgUGxhdGZvcm1SZWdpc3RlcnMgbV9wbGF0Zm9y
bVJlZ2lzdGVyczsKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICAgICBzdGQ6
OmF0b21pYzxib29sPiBtX3N1c3BlbmRlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSNlbGlmIE9TKFdJ
TkRPV1MpCi0gICAgSEFORExFIG1faGFuZGxlIHsgSU5WQUxJRF9IQU5ETEVfVkFMVUUgfTsKLSNl
bHNlCi0jZXJyb3IgVW5rbm93biBTeXN0ZW0KKworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1
cnJlbnRBdG9taWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKKyAgICBBdG9taWNTdHJpbmdUYWJs
ZSogbV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07CisgICAgQXRvbWljU3Ry
aW5nVGFibGVEZXN0cnVjdG9yIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIHsgbnVsbHB0
ciB9OworCisjaWYgRU5BQkxFKFNUQUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVh
ZFN0YXRzIG1fc3RhY2tTdGF0czsKICNlbmRpZgorICAgIHZvaWQqIG1fc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkgeyBudWxscHRyIH07CisgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsK
IH07CiAKIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWRzLgpA
QCAtMjIzLDYgKzI3MiwxMCBAQCBpbmxpbmUgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFk
KCkKICAgICByZXR1cm4gVGhyZWFkOjpjdXJyZW50SUQoKTsKIH0KIAoraW5saW5lIFRocmVhZCYg
VGhyZWFkOjpjdXJyZW50KCkKK3sKKyAgICByZXR1cm4gVGhyZWFkSG9sZGVyOjpjdXJyZW50KCku
dGhyZWFkKCk7Cit9CiAKIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZW1haW4g
YmVjYXVzZSB0aGV5IGFyZSB1c2VkIGZyb20gV2ViS2l0IFdpbmRvd3Mgc3VwcG9ydCBsaWJyYXJ5
LAogLy8gV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy5kbGwuIFdoZW4gdXBkYXRpbmcgdGhlIHN1
cHBvcnQgbGlicmFyeSwgd2Ugc2hvdWxkIHVzZSBuZXcgQVBJIGluc3RlYWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaAppbmRleCAzMGM0OTlmZGE5Y2FlMWY2ZGY2NGMxZDRlYWE2Y2I1
YjZmOTgxNzcyLi42ZTg4YWE2YThhMDkwZDk3ZTc3N2MzMWEzYmQyYTY2YWRjMzBjNmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKKysrIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5hbWVz
cGFjZSBXVEYgewogCit1c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Cit1c2luZyBU
aHJlYWRGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQqIGFyZ3VtZW50KTsKKwogI2lmIFVTRShQVEhS
RUFEUykKIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0gcHRocmVhZF90OwogdXNpbmcgUGxh
dGZvcm1NdXRleCA9IHB0aHJlYWRfbXV0ZXhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRz
LmNwcAppbmRleCAxMmQ3YzcxMzg2MTkyZThmNDU1N2UzM2YyOWIzNTIxOTg3NjVlNzhmLi5jZmVl
YWJiMjM4OGYwZmJjZWU1NDI4NjEwNTFiY2NkNmE3ZTgxYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nUHRocmVhZHMuY3BwCkBAIC0yODYsMTggKzI4NiwxNiBAQCB2b2lkIFRocmVhZDo6ZGV0YWNo
KCkKICAgICAgICAgZGlkQmVjb21lRGV0YWNoZWQoKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6OmN1
cnJlbnQoKQotewotICAgIGlmIChUaHJlYWQqIGN1cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxsKCkp
Ci0gICAgICAgIHJldHVybiAqY3VycmVudDsKIAorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVD
dXJyZW50VGhyZWFkKCkKK3sKICAgICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRocmVh
ZElkZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0aHJl
YWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKICAgICB0aHJlYWQtPmVzdGFibGlzaFBsYXRm
b3JtU3BlY2lmaWNIYW5kbGUocHRocmVhZF9zZWxmKCkpOwogICAgIHRocmVhZC0+bV9zdGFjayA9
IFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKTsKLSAgICBUaHJlYWRIb2xk
ZXI6OmluaXRpYWxpemUodGhyZWFkLmdldCgpKTsKKyAgICB0aHJlYWQtPmluaXRpYWxpemVJblRo
cmVhZCgpOwogICAgIGluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCgp
OwotICAgIHJldHVybiB0aHJlYWQuZ2V0KCk7CisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAogVGhy
ZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdXaW4uY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcApp
bmRleCAwNTIzYTJlNmJiNWY2NjI2YWM4YzA0YzkyODlhMDVlNTdmNWUwMTUwLi5lOTMxZGZmYjhm
NGRiZDA3ZThhNjI0NWQyNzNiNjgzODM0YjM4MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAK
QEAgLTI0MywxMSArMjQzLDggQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAgICAgcmV0dXJuIHNpemVvZihDT05URVhUKTsKIH0KIAot
VGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVDdXJy
ZW50VGhyZWFkKCkKIHsKLSAgICBpZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJlTnVs
bCgpKQotICAgICAgICByZXR1cm4gKmN1cnJlbnQ7Ci0KICAgICAvLyBOb3QgYSBXVEYtY3JlYXRl
ZCB0aHJlYWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBS
ZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKIApAQCAtMjU3LDkg
KzI1NCw5IEBAIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogICAgIHRocmVhZC0+ZXN0YWJs
aXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRsZShoYW5kbGUsIGN1cnJlbnRJRCgpKTsKICAgICB0aHJl
YWQtPm1fc3RhY2sgPSBTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7Ci0g
ICAgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFkLT5p
bml0aWFsaXplSW5UaHJlYWQoKTsKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5v
bldURkNyZWF0ZWQoKTsKLSAgICByZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0aHJl
YWQ7CiB9CiAKIFRocmVhZElkZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZU
aHJlYWREYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlNzdkMjU4NWY4
YTYxNDQ0Zjk3NGU3YzNiOGFkMTNhMWNiNjY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXVEZUaHJlYWREYXRhLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJs
ZS5oPgotCi0jaWYgVVNFKFdFQl9USFJFQUQpCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
LSNlbmRpZgotCi1uYW1lc3BhY2UgV1RGIHsKLQotI2lmICFIQVZFKEZBU1RfVExTKQotVGhyZWFk
U3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7Ci0jZW5k
aWYKLQotV1RGVGhyZWFkRGF0YTo6V1RGVGhyZWFkRGF0YSgpCi0gICAgOiBtX3N0YWNrQm91bmRz
KFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKSkKLSAgICAsIG1fc2F2ZWRM
YXN0U3RhY2tUb3Aoc3RhY2soKS5vcmlnaW4oKSkKLXsKLSAgICBBdG9taWNTdHJpbmdUYWJsZTo6
Y3JlYXRlKCp0aGlzKTsKLSAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVmYXVs
dEF0b21pY1N0cmluZ1RhYmxlOwotfQotCi1XVEZUaHJlYWREYXRhOjp+V1RGVGhyZWFkRGF0YSgp
Ci17Ci0gICAgaWYgKG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKQotICAgICAgICBtX2F0
b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7Ci19
Ci0KLSNpZiBIQVZFKEZBU1RfVExTKQotV1RGVGhyZWFkRGF0YSYgV1RGVGhyZWFkRGF0YTo6Y3Jl
YXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpCi17Ci0gICAgV1RGVGhyZWFkRGF0
YSogZGF0YSA9IG5ldyBXVEZUaHJlYWREYXRhOwotICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2Rp
cmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZLCBkYXRhKTsKLSAgICBwdGhyZWFkX2tleV9pbml0X25w
KFdURl9USFJFQURfREFUQV9LRVksIFtdKHZvaWQqIGRhdGEpewotICAgICAgICBkZWxldGUgc3Rh
dGljX2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KGRhdGEpOwotICAgIH0pOwotICAgIHJldHVybiAqZGF0
YTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1dURlRocmVhZERhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE1ZmY4MTc2NmQ4M2M1NmRiY2FjYjYzYmFl
NmUyNjA4YTYyYzMwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
NDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICoKLSAqLwotCi0jaWZuZGVmIFdURlRocmVhZERhdGFfaAotI2RlZmluZSBXVEZUaHJlYWREYXRh
X2gKLQotI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrU3Rh
dHMuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLWNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwotCi10eXBlZGVmIHZvaWQgKCpBdG9taWNTdHJp
bmdUYWJsZURlc3RydWN0b3IpKEF0b21pY1N0cmluZ1RhYmxlKik7Ci0KLWNsYXNzIFdURlRocmVh
ZERhdGEgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdURlRocmVhZERhdGEpOwotcHVibGlj
OgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBXVEZUaHJlYWREYXRhKCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5XVEZUaHJlYWREYXRhKCk7Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRv
bWljU3RyaW5nVGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0b21pY1N0
cmluZ1RhYmxlOwotICAgIH0KLQotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBzZXRDdXJyZW50QXRv
bWljU3RyaW5nVGFibGUoQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKQotICAg
IHsKLSAgICAgICAgQXRvbWljU3RyaW5nVGFibGUqIG9sZEF0b21pY1N0cmluZ1RhYmxlID0gbV9j
dXJyZW50QXRvbWljU3RyaW5nVGFibGU7Ci0gICAgICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlID0gYXRvbWljU3RyaW5nVGFibGU7Ci0gICAgICAgIHJldHVybiBvbGRBdG9taWNTdHJpbmdU
YWJsZTsKLSAgICB9Ci0KLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2soKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fc3RhY2tCb3VuZHM7Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNUQUNLX1NU
QVRTKQotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3N0YWNrU3RhdHM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lk
KiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9z
YXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKLSAgICB7Ci0g
ICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50
cnk7Ci0gICAgfQotCi0gICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTYXZl
ZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCi0gICAgewotICAgICAgICBtX3NhdmVk
TGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOwotICAgIH0KLQotICAgIHZvaWQqIG1fYXBpRGF0
YSB7IG51bGxwdHIgfTsKLQotcHJpdmF0ZToKLSAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9jdXJy
ZW50QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07Ci0gICAgQXRvbWljU3RyaW5nVGFibGUq
IG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21pY1N0cmlu
Z1RhYmxlRGVzdHJ1Y3RvciBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciB7IG51bGxwdHIg
fTsKLQotICAgIFN0YWNrQm91bmRzIG1fc3RhY2tCb3VuZHM7Ci0jaWYgRU5BQkxFKFNUQUNLX1NU
QVRTKQotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzIG1fc3RhY2tTdGF0czsKLSNlbmRp
ZgotICAgIHZvaWQqIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgeyBudWxscHRyIH07Ci0g
ICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKLQotI2lmIEhBVkUoRkFTVF9UTFMpCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBXVEZUaHJlYWREYXRhJiBjcmVhdGVBbmRSZWdpc3Rl
ckZvckdldHNwZWNpZmljRGlyZWN0KCk7Ci0jZWxzZQotICAgIHN0YXRpYyBXVEZfRVhQT1JUREFU
QSBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPiogc3RhdGljRGF0YTsKLSNlbmRpZgotCi0g
ICAgZnJpZW5kIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKTsKLSAgICBmcmllbmQgY2xh
c3MgQXRvbWljU3RyaW5nVGFibGU7Ci19OwotCi1pbmxpbmUgV1RGVGhyZWFkRGF0YSYgd3RmVGhy
ZWFkRGF0YSgpCi17Ci0gICAgLy8gV1JUIFdlYkNvcmU6Ci0gICAgLy8gICAgV1RGVGhyZWFkRGF0
YSBpcyB1c2VkIG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2Vk
Ci0gICAgLy8gICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5
bmNocm9uaXphdGlvbiBoZXJlLgotICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKLSAgICAvLyAg
ICB3dGZUaHJlYWREYXRhKCkgaXMgaW5pdGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVUaHJl
YWRpbmcoKSwgZW5zdXJpbmcKLSAgICAvLyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4g
YSBwdGhyZWFkX29uY2UgbG9ja2VkIGNvbnRleHQuCi0jaWYgIUhBVkUoRkFTVF9UTFMpCi0gICAg
aWYgKCFXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhKQotICAgICAgICBXVEZUaHJlYWREYXRhOjpz
dGF0aWNEYXRhID0gbmV3IFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+OwotICAgIHJldHVy
biAqKldURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7Ci0jZWxzZQotICAgIGlmIChXVEZUaHJlYWRE
YXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KF9wdGhyZWFkX2dldHNwZWNp
ZmljX2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZKSkpCi0gICAgICAgIHJldHVybiAqZGF0YTsK
LSAgICByZXR1cm4gV1RGVGhyZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZp
Y0RpcmVjdCgpOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6
OldURlRocmVhZERhdGE7Ci11c2luZyBXVEY6Ond0ZlRocmVhZERhdGE7Ci11c2luZyBXVEY6OkF0
b21pY1N0cmluZ1RhYmxlOwotCi0jZW5kaWYgLy8gV1RGVGhyZWFkRGF0YV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggYTRlMDNkZTNhZjY1N2M2OWY3NGQxNjI1MWYwMDA3
MzkxMzZhNTM0NC4uMmEwNjUxMjgzYTk3MjcxZTU3NmEyMjJkZGYwMjMyMGQwNmEwZDJkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKIAotI2luY2x1ZGUgIklu
dGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisjaW5j
bHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CisKICNpbmNsdWRlICJkdG9hLmgiCiAK
IG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAK
aW5kZXggMzUyMjQ4NWQ3Yjg0NzNjYzgwZTUyNDBhNzMyYTA1NTNjNDhiYzM0Mi4uMDYzZTRlZWI3
ZTU3ZTVjZDg1YjBhMTcxOTU0ZDM4OTI0YzE3Nzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ0ltcGwuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiU3RyaW5nSGFz
aC5oIgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFkaW5n
LmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VU
RjguaD4KIAogI2lmIFVTRShXRUJfVEhSRUFEKQpAQCAtNzIsNyArNzEsNyBAQCB1c2luZyBTdHJp
bmdUYWJsZUltcGwgPSBIYXNoU2V0PFN0cmluZ0ltcGwqPjsKIAogc3RhdGljIEFMV0FZU19JTkxJ
TkUgU3RyaW5nVGFibGVJbXBsJiBzdHJpbmdUYWJsZSgpCiB7Ci0gICAgcmV0dXJuIHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpLT50YWJsZSgpOworICAgIHJldHVybiBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpLT50YWJsZSgpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmdUYWJsZS5jcHAKaW5kZXggZmU4YTQ4ODRkYjdlNjc4ZGVkNmFmMzJkZDQzNzEy
ZTU5NWYzYjkzNS4uZjZkNzhmMmJlNmY0OGYyYWE2ODJjMDVkMTBkMjQ2NDY4YjBjMjRmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKQEAgLTI1LDExICsyNSwx
MSBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3Jl
YXRlKFdURlRocmVhZERhdGEmIGRhdGEpCit2b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUo
VGhyZWFkJiB0aHJlYWQpCiB7CiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgLy8gT24gaU9TLCBv
bmUgQXRvbWljU3RyaW5nVGFibGUgaXMgc2hhcmVkIGJldHdlZW4gdGhlIG1haW4gVUkgdGhyZWFk
IGFuZCB0aGUgV2ViVGhyZWFkLgpAQCAtMzcsMTcgKzM3LDE3IEBAIHZvaWQgQXRvbWljU3RyaW5n
VGFibGU6OmNyZWF0ZShXVEZUaHJlYWREYXRhJiBkYXRhKQogCiAgICAgYm9vbCBjdXJyZW50VGhy
ZWFkSXNXZWJUaHJlYWQgPSBpc1dlYlRocmVhZCgpOwogICAgIGlmIChjdXJyZW50VGhyZWFkSXNX
ZWJUaHJlYWQgfHwgaXNVSVRocmVhZCgpKQotICAgICAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0
cmluZ1RhYmxlID0gc2hhcmVkU3RyaW5nVGFibGU7CisgICAgICAgIHRocmVhZC5tX2RlZmF1bHRB
dG9taWNTdHJpbmdUYWJsZSA9IHNoYXJlZFN0cmluZ1RhYmxlOwogICAgIGVsc2UKLSAgICAgICAg
ZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsK
KyAgICAgICAgdGhyZWFkLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0
cmluZ1RhYmxlOwogCiAgICAgLy8gV2UgZG8gdGhlIGZvbGxvd2luZyBzbyB0aGF0IGl0cyBkZXN0
cnVjdGlvbiBoYXBwZW5zIG9ubHkKICAgICAvLyBvbmNlIC0gb24gdGhlIG1haW4gVUkgdGhyZWFk
LgogICAgIGlmICghY3VycmVudFRocmVhZElzV2ViVGhyZWFkKQotICAgICAgICBkYXRhLm1fYXRv
bWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7Cisg
ICAgICAgIHRocmVhZC5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmlu
Z1RhYmxlOjpkZXN0cm95OwogI2Vsc2UKLSAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmluZ1Rh
YmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOwotICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJs
ZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKKyAgICB0aHJlYWQubV9k
ZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAgdGhy
ZWFkLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRl
c3Ryb3k7CiAjZW5kaWYgLy8gVVNFKFdFQl9USFJFQUQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nVGFibGUuaAppbmRleCA5NDRhZTkyYmRlYzQ0MzliZjA3MDEyMWI3OGEzNWY1
YTg0ZmM0MDlkLi5kM2JjOWNlNWY2ZTA3Mjc3NTZjYzllYmJlNGYxMjUzN2ZhYWIyYjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oCkBAIC0yNCwxOSArMjQsMTkgQEAK
ICNkZWZpbmUgV1RGX0F0b21pY1N0cmluZ1RhYmxlX2gKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdJbXBsOworY2xh
c3MgVGhyZWFkOwogCiBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BdG9taWNTdHJp
bmdUYWJsZSgpOwogCi0gICAgc3RhdGljIHZvaWQgY3JlYXRlKFdURlRocmVhZERhdGEmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjcmVhdGUoVGhyZWFkJik7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4m
IHRhYmxlKCkgeyByZXR1cm4gbV90YWJsZTsgfQogCiBwcml2YXRlOgpAQCAtNDYsNSArNDYsNiBA
QCBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZSB7CiB9OwogCiB9Cit1c2luZyBXVEY6OkF0b21pY1N0
cmluZ1RhYmxlOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmNwcAppbmRleCA4YTAyMzBiYWJmOTVjYmE5N2Y5YThmODYyODE5YWI0MGQxN2ZjZTQyLi42
M2IxZTBlNTc0MTFkMDYzM2M0MTk4ZjRhZTA5MzUzYTAzNTUxMjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHAKaW5kZXggYjhmYWY1YThkNzkxMDJmMmVmZGQ4YmRhNjQzMWMwNzdiZmYx
M2JmMC4uNzczODI5ZDVlN2I0ZWIzM2Q3YmU4MzgwNzE2ZjlhMzMzNzI2ZjRmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTM1LDcgKzM1LDYg
QEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVj
aWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhy
ZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTY2LDcgKzY1LDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFs
RGF0YSgpCiAgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2Ug
cGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKICAgICAvLyBwb2ludCB0
byBjYWxsIG1ldGhvZHMgdGhhdCBpbnRlcm5hbGx5IHBlcmZvcm0gYSBvbmUtdGltZSBpbml0aWFs
aXphdGlvbiB0aGF0IGlzIG5vdAogICAgIC8vIHRocmVhZHNhZmUuCi0gICAgd3RmVGhyZWFkRGF0
YSgpOworICAgIFRocmVhZDo6Y3VycmVudCgpOwogICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKaW5kZXggNjZlOGU5OTFl
MTI5NjJiNTRmZDc0MzkyZDk1MmU3MzI4ZmQ2NDA5MC4uZWMyNzExYjUyMDcyNTIzMzI0YTZmZjA0
N2MzNmJkMzg3MDBlOGFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoVklERU9UT09MQk9YKQogCiAjaW5jbHVkZSA8
Q29yZU1lZGlhL0NNVGltZS5oPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09TT2Jq
ZWN0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0KaW5kZXggNjEyMmI0ZjJjNTBiNjRiYTVjN2ZmYzlkZGUzZjRkYTU2MjlhMDM4Ny4u
YzhmMDVhMWEwYWVkNjAyY2JkOGMwOTRlMGE5NzIwM2FmOWM2MDZiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzAyLDcgKzcw
Miw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKIHsKICAgICB3ZWJUaHJlYWRTdGFy
dGVkID0gVFJVRTsKIAotICAgIC8vIFRocmVhZEdsb2JhbERhdGEgdG91Y2hlcyBBdG9taWNTdHJp
bmcsIHdoaWNoIHJlcXVpcmVzIFdURlRocmVhZERhdGEgYW5kIFRocmVhZGluZyBpbml0aWFsaXph
dGlvbi4KKyAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIHRvdWNoZXMgQXRvbWljU3RyaW5nLCB3aGlj
aCByZXF1aXJlcyBUaHJlYWRpbmcgaW5pdGlhbGl6YXRpb24uCiAgICAgV1RGOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAKICAgICAvLyBJbml0aWFsaXplIEF0b21pY1N0cmluZyBvbiB0aGUgbWFp
biB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNDI1
YzkyNDhkODcwNDgyN2JiMGUwMzgyMWEyYWU4ZGM4YWFjMGQ3MC4uNjgxYTFlZjc1NDgxMDBkMWEy
OTY2MDllNjJjYjdmOWFmYjYyZTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJl
YWQoKQogICAgIC8vIFdlIGNhbm5vdCBsZXQgYW55IG9iamVjdHMgc3Vydml2ZSBwYXN0IHRocmVh
ZCBleGl0LCBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIHJ1biBHQyBvciBvdGhlcndpc2Ug
ZGVzdHJveSB0aGVtLgogICAgIHdvcmtlckdsb2JhbFNjb3BlVG9EZWxldGUgPSBudWxscHRyOwog
Ci0gICAgLy8gQ2xlYW4gdXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RGOjpX
VEZUaHJlYWREYXRhIGdvZXMgYXdheSEKKyAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpUaHJlYWRH
bG9iYWxEYXRhIGJlZm9yZSBXVEY6OlRocmVhZCBnb2VzIGF3YXkhCiAgICAgdGhyZWFkR2xvYmFs
RGF0YSgpLmRlc3Ryb3koKTsKIAogICAgIC8vIFRoZSB0aHJlYWQgb2JqZWN0IG1heSBiZSBhbHJl
YWR5IGRlc3Ryb3llZCBmcm9tIG5vdGlmaWNhdGlvbiBub3csIGRvbid0IHRyeSB0byBhY2Nlc3Mg
InRoaXMiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316862</attachid>
            <date>2017-08-01 09:24:08 -0700</date>
            <delta_ts>2017-08-01 10:42:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-174716-20170802012407.patch</filename>
            <type>text/plain</type>
            <size>73028</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmQxOWY2ODg2MWQ1MjFjMmE5NmJhNWEwNDg3YzA0ZjU1ZDI1MjU2Li4yM2Q5MmM2NjA4ODc2YTQ0
NThjZDgyZTNmYjMyZmYyMzE1MmQ0MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNy0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgVXNlIFRocmVhZDo6Y3Vy
cmVudCgpIGluc3RlYWQuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAo
K1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAgICAgKCtbSlNDb250ZXh0IGN1cnJl
bnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50Q2FsbGVlXSk6CisgICAgICAg
ICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6CisgICAgICAgICgtW0pTQ29udGV4dCBi
ZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhpc1ZhbHVlOmFyZ3VtZW50Q291bnQ6
YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgZW5kQ2FsbGJhY2tXaXRoRGF0YTpd
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpyZXF1ZXN0
Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6Cisg
ICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1YXRlTW9k
dWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OmxpbmtBbmRF
dmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6CisgICAgICAgICog
cnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6Y2hlY2tD
dXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkaWRBY3F1aXJl
TG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAgICAgICAg
KEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJB
bGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OnVwZGF0
ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNvbW1pdHRlZFN0YWNrQnl0ZUNvdW50
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjppc1NhZmVUb1Jl
Y3Vyc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUv
Vk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFja0NhcGFjaXR5Rm9yKToK
KyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
clBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlIGNvbnN0KToKKwogMjAxNy0wNy0z
MSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgc29tZSBV
TkxJS0VMWXMgdG8gb3BlcmF0aW9uT3B0aW1pemUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDVmMDJhYmVkNjk5ZDVhOGVh
OThlMzAwOTQ2NTA1ZjgzOTY4ZGZlOC4uYWRmZjI5MTJjOTU3MzBkNDRjZjgyY2Y2MjMwYzU2NzU2
NjZjMGM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxNy0wOC0wMSAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRv
IFRocmVhZDo6Y3VycmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAg
ICAgV2UgcGxhY2VkIHRocmVhZCBzcGVjaWZpYyBkYXRhIGluIFdURlRocmVhZERhdGEgcHJldmlv
dXNseS4gQnV0IG5vdywgd2UgaGF2ZSBhIG5ldyBnb29kIHBsYWNlCisgICAgICAgIHRvIHB1dCB0
aHJlYWQgc3BlY2lmaWMgZGF0YTogV1RGOjpUaHJlYWQuIEJlZm9yZSB0aGlzIHBhdGNoLCBXVEZU
aHJlYWREYXRhIGFuZCBXVEY6OlRocmVhZAorICAgICAgICBzb21ldGltZXMgaGF2ZSB0aGUgY29t
cGxldGVseSBzYW1lIGZpZWxkcyAobV9zdGFjayBldGMuKSBkdWUgdG8gaW5pdGlhbGl6YXRpb24g
b3JkZXIgbGltaXRhdGlvbnMuCisgICAgICAgIFRoaXMgcGF0Y2ggbWVyZ2VzIFdURlRocmVhZERh
dGEgdG8gV1RGOjpUaHJlYWQuIFdlIGFwcGx5IFdURlRocmVhZERhdGEncyBpbml0aWFsaXphdGlv
biBzdHlsZQorICAgICAgICB0byBXVEY6OlRocmVhZC4gU28sIFdURjo6VGhyZWFkJ3MgaG9sZGVy
IG5vdyB1c2VzIGZhc3QgVExTIGZvciBkYXJ3aW4gZW52aXJvbm1lbnQuIFRodXMsCisgICAgICAg
IFRocmVhZDo6Y3VycmVudCgpIGFjY2VzcyBpcyBub3cgYWNjZWxlcmF0ZWQuIEFuZCBXVEY6OlRo
cmVhZDo6Y3VycmVudCgpIGNhbiBiZSBhY2Nlc3NlZCBldmVuCisgICAgICAgIGJlZm9yZSBjYWxs
aW5nIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiB3dGYvTG9ja0FsZ29yaXRobS5oOgorICAgICAgICAqIHd0Zi9Mb2NrQWxnb3JpdGhtSW5saW5l
cy5oOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1BhcmtpbmdM
b3QuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1N0YXRzLmNwcDoKKyAgICAgICAgKFdURjo6U3Rh
Y2tTdGF0czo6UGVyVGhyZWFkU3RhdHM6OlBlclRocmVhZFN0YXRzKToKKyAgICAgICAgKFdURjo6
U3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNr
U3RhdHM6OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0
czo6cHJvYmUpOgorICAgICAgICAoV1RGOjpTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50OjpM
YXlvdXRDaGVja1BvaW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkSG9sZGVyLmNwcDoKKyAgICAg
ICAgKFdURjo6VGhyZWFkSG9sZGVyOjppbml0aWFsaXplT25jZSk6CisgICAgICAgIChXVEY6OlRo
cmVhZEhvbGRlcjo6aW5pdGlhbGl6ZUN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xk
ZXIuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpUaHJlYWRIb2xkZXIpOgorICAgICAg
ICAoV1RGOjpUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwpOgorICAgICAgICAoV1RGOjpU
aHJlYWRIb2xkZXI6OmN1cnJlbnQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xkZXJQdGhyZWFk
cy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6cGxhdGZvcm1Jbml0aWFsaXplT25j
ZSk6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
VEY6OlRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3QpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6
OmluaXRpYWxpemVPbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpj
dXJyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkSG9sZGVyV2luLmNwcDoKKyAg
ICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpwbGF0Zm9ybUluaXRpYWxpemVPbmNlKToKKyAgICAg
ICAgKFdURjo6VGhyZWFkSG9sZGVyOjpjdXJyZW50RHlpbmcpOgorICAgICAgICAoV1RGOjpUaHJl
YWRIb2xkZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmluaXRp
YWxpemVPbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpjdXJyZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6
VGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmVudHJ5
UG9pbnQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmRpZEV4aXQpOgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50TWF5QmVO
dWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIChXVEY6
OlRocmVhZDo6Y3VycmVudCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6YXRvbWljU3RyaW5nVGFi
bGUpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSk6
CisgICAgICAgIChXVEY6OlRocmVhZDo6c3RhY2tTdGF0cyk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNl
dFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZl
ZExhc3RTdGFja1RvcCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2V0U2F2ZWRMYXN0U3RhY2tU
b3ApOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjcmVhdGVDdXJy
ZW50VGhyZWFkKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjcmVh
dGVDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
d3RmL1dURlRocmVhZERhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNT
dHJpbmcuY3BwOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwOgorICAg
ICAgICAoV1RGOjpzdHJpbmdUYWJsZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
VGFibGUuY3BwOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oOgorCiAyMDE3LTA3LTMxICBNYXR0
IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIyMDA2MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZDBhMzE1YWFiNDI4YWZlNGY1MWQwMjQ2Y2Uz
ZGY3ZTMyMTNkOGY0Li4wZjgyY2M2ZmQ2MTVlYTM2ZDE5MjA4OWNlNTQwYjY4NDQxNmE0M2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMDgtMDEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgTWVyZ2UgV1RGVGhyZWFkRGF0YSB0byBU
aHJlYWQ6OmN1cnJlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDcxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAg
IFVzZSBUaHJlYWQ6OmN1cnJlbnQoKSBpbnN0ZWFkLgorCisgICAgICAgICogZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25T
ZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKwog
MjAxNy0wOC0wMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJ
RExdIFN3YXAgYSBjdXN0b20gYXR0cmlidXRlIGZvciBhIGN1c3RvbSBtYXJrIGZ1bmN0aW9uIGZv
ciBIVE1MVGVtcGxhdGVFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
CmluZGV4IDViMTAwYzc1ZTE1YjlmNDc2NjI5NDRhYTBmYzViYjhkZDA5ZjQ2YzUuLmJhZWIxNzhk
NDgxZGJlZGYyYmVkM2RmNmQ0ZTYzZmQxODE1NmM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCkBAIC0xNDEsMTUgKzE0MSwxNSBAQCAtIChKU1ZhbHVlICopZ2xvYmFs
T2JqZWN0CiAKICsgKEpTQ29udGV4dCAqKWN1cnJlbnRDb250ZXh0CiB7Ci0gICAgV1RGVGhyZWFk
RGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVu
dHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYg
dGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChD
YWxsYmFja0RhdGEgKil0aHJlYWQubV9hcGlEYXRhOwogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5
LT5jb250ZXh0IDogbmlsOwogfQogCiArIChKU1ZhbHVlICopY3VycmVudFRoaXMKIHsKLSAgICBX
VEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNr
RGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAg
VGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVu
dHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1
ZVJlZjplbnRyeS0+dGhpc1ZhbHVlIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0
XV07CkBAIC0xNTcsOCArMTU3LDggQEAgKyAoSlNWYWx1ZSAqKWN1cnJlbnRUaGlzCiAKICsgKEpT
VmFsdWUgKiljdXJyZW50Q2FsbGVlCiB7Ci0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKLSAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0
YSAqKXRocmVhZERhdGEubV9hcGlEYXRhOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7CisgICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJl
YWQubV9hcGlEYXRhOwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6ZW50cnktPmNhbGxlZVZhbHVlIGlu
Q29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CkBAIC0xNjYsOCArMTY2LDggQEAg
KyAoSlNWYWx1ZSAqKWN1cnJlbnRDYWxsZWUKIAogKyAoTlNBcnJheSAqKWN1cnJlbnRBcmd1bWVu
dHMKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwot
ICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2Fw
aURhdGE7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxs
YmFja0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAKICAg
ICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjk0LDIxICsyOTQsMjEgQEAg
LSAoQk9PTClib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJlZilleGNlcHRpb25WYWx1
ZQogCiAtICh2b2lkKWJlZ2luQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXRhICopY2FsbGJh
Y2tEYXRhIGNhbGxlZVZhbHVlOihKU1ZhbHVlUmVmKWNhbGxlZVZhbHVlIHRoaXNWYWx1ZTooSlNW
YWx1ZVJlZil0aGlzVmFsdWUgYXJndW1lbnRDb3VudDooc2l6ZV90KWFyZ3VtZW50Q291bnQgYXJn
dW1lbnRzOihjb25zdCBKU1ZhbHVlUmVmICopYXJndW1lbnRzCiB7Ci0gICAgV1RGVGhyZWFkRGF0
YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRo
cmVhZDo6Y3VycmVudCgpOwogICAgIFtzZWxmIHJldGFpbl07Ci0gICAgQ2FsbGJhY2tEYXRhICpw
cmV2U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgQ2Fs
bGJhY2tEYXRhICpwcmV2U3RhY2sgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsK
ICAgICAqY2FsbGJhY2tEYXRhID0gKENhbGxiYWNrRGF0YSl7IHByZXZTdGFjaywgc2VsZiwgW3Nl
bGYuZXhjZXB0aW9uIHJldGFpbl0sIGNhbGxlZVZhbHVlLCB0aGlzVmFsdWUsIGFyZ3VtZW50Q291
bnQsIGFyZ3VtZW50cywgbmlsIH07Ci0gICAgdGhyZWFkRGF0YS5tX2FwaURhdGEgPSBjYWxsYmFj
a0RhdGE7CisgICAgdGhyZWFkLm1fYXBpRGF0YSA9IGNhbGxiYWNrRGF0YTsKICAgICBzZWxmLmV4
Y2VwdGlvbiA9IG5pbDsKIH0KIAogLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFj
a0RhdGEgKiljYWxsYmFja0RhdGEKIHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0g
d3RmVGhyZWFkRGF0YSgpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CiAgICAgc2VsZi5leGNlcHRpb24gPSBjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbjsK
ICAgICBbY2FsbGJhY2tEYXRhLT5wcmVzZXJ2ZWRFeGNlcHRpb24gcmVsZWFzZV07CiAgICAgW2Nh
bGxiYWNrRGF0YS0+Y3VycmVudEFyZ3VtZW50cyByZWxlYXNlXTsKLSAgICB0aHJlYWREYXRhLm1f
YXBpRGF0YSA9IGNhbGxiYWNrRGF0YS0+bmV4dDsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2Fs
bGJhY2tEYXRhLT5uZXh0OwogICAgIFtzZWxmIHJlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCmluZGV4IGY2NWVmODQxYTdjMWUwMDZhMmVhYjcxNTI0ZmRkZThhNmFh
MmEyNjcuLjNkNGJiZTM2ZTYzMzg1OTFhMzg4Y2M2NTRmYjA1ODc4ODNkYWI2NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBpc1ZhbGlk
U2hhcmVkSW5zdGFuY2VUaHJlYWRTdGF0ZShWTSogdm0pCiAKIGJvb2wgaXNWYWxpZFRocmVhZFN0
YXRlKFZNKiB2bSkKIHsKLSAgICBpZiAodm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpCisgICAgaWYgKHZtLT5hdG9taWNTdHJpbmdU
YWJsZSgpICE9IFdURjo6VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHZtLT5pc1NoYXJlZEluc3RhbmNlKCkgJiYg
IWlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0YXRlKHZtKSkKQEAgLTIwMjMsNyArMjAyMyw3
IEBAIEhlYXA6OlRpY2tldCBIZWFwOjpyZXF1ZXN0Q29sbGVjdGlvbihHQ1JlcXVlc3QgcmVxdWVz
dCkKICAgICBzdG9wSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBBU1NFUlQodm0oKS0+Y3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSBXVEY6OlRo
cmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIAogICAgIExvY2tIb2xk
ZXIgbG9ja2VyKCptX3RocmVhZExvY2spOwogICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHN0ZWFs
IHRoZSBjb25uLiBUaGF0IG9ubHkgd29ya3MgaWYgdGhlIGNvbGxlY3RvciBpcyBkZWZpbml0ZWx5
IG5vdCBydW5uaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCmluZGV4IDViMzAyNjRjN2Y0MTFlMzhkNTgwZjU1ZDVkN2QxZDY4OWIzNjAxZWIuLjg4MjNl
NmY2MDE2MTEyYjQ3MzlmYTAyOGY0MzFiYzdlOGQ3YzhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC00MSwxNCArNDEsMTMgQEAKICNpbmNs
dWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFByb2ZpbGluZ1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZt
KCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgp
ID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogCiAgICAgUHJvZ3Jh
bUV4ZWN1dGFibGUqIHByb2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNv
dXJjZSk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7
CkBAIC02NCw3ICs2Myw3IEBAIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhjCiBib29sIGNoZWNrU3lu
dGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3Ip
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpj
dXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3Jh
bU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmlj
dCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtNzQsNyArNzMsNyBAQCBi
b29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBQYXJzZXJFcnJvciYgZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1O
b2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyU2NyaXB0
TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwpAQCAtOTIsNyArOTEsNyBAQCBKU1ZhbHVlIGV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgTgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBS
RUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdU
YWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJF
TEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAg
ICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlKTsKQEAgLTE2Nyw3ICsxNjYsNyBAQCBzdGF0
aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tI
b2xkZXImIGxvY2ssIEV4ZWNTdAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVB
U0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRh
KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5h
dG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywg
ZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsIG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTE3OCw3ICsxNzcsNyBAQCBK
U0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5h
dG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJl
YWQoKSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1
bGUodm0pOwpAQCAtMjA1LDcgKzIwNCw3IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9h
ZE1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywKIEpTSW50
ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50
KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCku
aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1
bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTIxNiw3ICsy
MTUsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgp
ID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0
cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5
UG9pbnRNb2R1bGUodm0pOwpAQCAtMjM0LDcgKzIzMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBs
b2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1Zh
bHVlCiBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRo
cmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7
CkBAIC0yNDQsNyArMjQzLDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmEKIEpTSW50ZXJuYWxQ
cm9taXNlKiBpbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQo
KS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5p
c0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLT5tb2R1bGVMb2FkZXIoKS0+cmVxdWVzdEltcG9ydE1vZHVsZShl
eGVjLCBtb2R1bGVLZXksIHNjcmlwdEZldGNoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCA5OTI1NmQ2NTg5MzQ5MDZiMjIwMWNiNWJkZWVk
ZTU3NzIyZTIwZWQ2Li5kNTUyZDBiMWY2Mjg3MTVhMjYzNmFiNzczN2VkZmM2MTk3MzRjMGM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIHZvaWQgSWRlbnRpZmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUoVk0qIHZtKQogewogICAgIC8vIENoZWNrIHRoZSBpZGVudGlmaWVyIHRhYmxlIGFjY2Vzc2li
bGUgdGhyb3VnaCB0aGUgdGhyZWFkc3BlY2lmaWMgbWF0Y2hlcyB0aGUKICAgICAvLyB2bSdzIGlk
ZW50aWZpZXIgdGFibGUuCi0gICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1Rh
YmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIEFTU0VS
VF9VTlVTRUQodm0sIHZtLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogfQogCiB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVu
dEF0b21pY1N0cmluZ1RhYmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggOWVmMTQz
YWQ0OGU3MWQyOGIxN2JhNDE2ZmEzYjE0YmNiZGI3NDVhYS4uODUwNzNiNmQyOTViNTk5NjNhMjEz
ZDUyNDU1Yjg0YjRhZDE2NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBp
bml0aWFsaXplVGhyZWFkaW5nKCkKICAgICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxp
emUoKTsKICNlbmRpZgogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7Ci0gICAgICAg
IFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHRo
cmVhZERhdGEuc2V0U2F2ZWRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zdGFjaygpLm9yaWdpbigp
KTsKKyAgICAgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAg
dGhyZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBiYTZjNDRh
NWRmNTE0ZGU1MTdjOWEyNTg3NTYxYTk4YTlkOTI0MTBlLi5jMmM4Mjc2YWMzMjkwZWYxNmM5ZmNl
NGFmYTg0YTM5ZjYwMGNiMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5jcHAKQEAgLTEyNyw5ICsxMjcsOSBAQCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQog
ICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdURlRocmVhZERhdGEm
IHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJl
YWQ6OmN1cnJlbnQoKTsKICAgICBBU1NFUlQoIW1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSk7Ci0g
ICAgbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gdGhyZWFkRGF0YS5zZXRDdXJyZW50QXRvbWlj
U3RyaW5nVGFibGUobV92bS0+YXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgbV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlID0gdGhyZWFkLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBBU1NFUlQobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxl
KTsKIAogICAgIGlmIChtX3ZtLT5oZWFwLmhhc0FjY2VzcygpKQpAQCAtMTQzLDcgKzE0Myw3IEBA
IHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgdm9pZCogcCA9ICZwOyAvLyBBIHBy
b3h5IGZvciB0aGUgY3VycmVudCBzdGFjayBwb2ludGVyLgogICAgIG1fdm0tPnNldFN0YWNrUG9p
bnRlckF0Vk1FbnRyeShwKTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWREYXRh
LnNhdmVkTGFzdFN0YWNrVG9wKCkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQu
c2F2ZWRMYXN0U3RhY2tUb3AoKSk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCku
YWRkQ3VycmVudFRocmVhZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTIwMCw3ICsy
MDAsNyBAQCB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKICAgICB9CiAKICAgICBpZiAo
bV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKSB7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKS5zZXRD
dXJyZW50QXRvbWljU3RyaW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKKyAgICAg
ICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fZW50cnlB
dG9taWNTdHJpbmdUYWJsZSk7CiAgICAgICAgIG1fZW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IG51
bGxwdHI7CiAgICAgfQogfQpAQCAtMjI1LDkgKzIyNSw5IEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJv
cEFsbExvY2tzKERyb3BBbGxMb2NrcyogZHJvcHBlcikKIAogICAgIGRyb3BwZXItPnNldERyb3BE
ZXB0aChtX2xvY2tEcm9wRGVwdGgpOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB0aHJlYWREYXRhLnNl
dFNhdmVkTGFzdFN0YWNrVG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKKyAgICBUaHJlYWQmIHRo
cmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIHRocmVhZC5zZXRTYXZlZFN0YWNrUG9pbnRl
ckF0Vk1FbnRyeShtX3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAgdGhyZWFkLnNl
dFNhdmVkTGFzdFN0YWNrVG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKIAogICAgIHVuc2lnbmVk
IGRyb3BwZWRMb2NrQ291bnQgPSBtX2xvY2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tD
b3VudCk7CkBAIC0yNTIsOSArMjUyLDkgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9w
QWxsTG9ja3MqIGRyb3BwZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCiAKICAgICAtLW1f
bG9ja0Ryb3BEZXB0aDsKIAotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJl
YWREYXRhKCk7Ci0gICAgbV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZERhdGEu
c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9w
KHRocmVhZERhdGEuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkodGhy
ZWFkLnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOworICAgIG1fdm0tPnNldExhc3RTdGFj
a1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExv
Y2tzOjpEcm9wQWxsTG9ja3MoVk0qIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xv
Y2suaAppbmRleCBjOTFkYWVjYmNkZDY1YTk2ZDYzM2YzMzE1M2Q1NGE5NDlhZDY1NzNiLi5kZWEw
NTAyOGNkNzM1ZWI2MzkxNzQ3MGMxNTIyYjE4MjQ1ZGU1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxMjUx
MDI0MzQ2NDM3N2E0NDlhZmVjYmM1OTlmZTk4NDI3MDlmZTdhLi4wNjk1OWJhNDY1ZTE5MmJlNjNh
ODE4OGQ5ZmMyMzc3ZjdjZTk2OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC0xMTQsNyArMTE0LDYgQEAKICNpbmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAK
QEAgLTE3Niw3ICsxNzUsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgLCB0b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShD
YWxsRnJhbWU6Om5vQ2FsbGVyKCkpCiAgICAgLCBwcm9taXNlRGVmZXJyZWRUaW1lcihzdGQ6Om1h
a2VfdW5pcXVlPFByb21pc2VEZWZlcnJlZFRpbWVyPigqdGhpcykpCi0gICAgLCBtX2F0b21pY1N0
cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX2F0b21pY1N0cmluZ1Rh
YmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFi
bGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0
cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQ
ZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRz
PigpKQpAQCAtMjExLDEzICsyMTAsMTMgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgICwgbV9zaGFkb3dDaGlja2VuKHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93
Q2hpY2tlbj4oKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7
Ci0gICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBT
dGFja0JvdW5kcyBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRl
U29mdFJlc2VydmVkWm9uZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7CiAg
ICAgc2V0TGFzdFN0YWNrVG9wKHN0YWNrLm9yaWdpbigpKTsKIAogICAgIC8vIE5lZWQgdG8gYmUg
Y2FyZWZ1bCB0byBrZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodGhpcyk7Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9t
aWNTdHJpbmdUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFi
bGUobV9hdG9taWNTdHJpbmdUYWJsZSk7CisgICAgQXRvbWljU3RyaW5nVGFibGUqIGV4aXN0aW5n
RW50cnlBdG9taWNTdHJpbmdUYWJsZSA9IFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9t
aWNTdHJpbmdUYWJsZShtX2F0b21pY1N0cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0eU5hbWVzID0g
bmV3IENvbW1vbklkZW50aWZpZXJzKHRoaXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJl
UmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpAQCAtMjcwLDcgKzI2OSw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBuYXRpdmVTdGRGdW5jdGlvbkNl
bGxTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNv
bW1vblN0cmluZ3MoKnRoaXMpOwogCi0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9t
aWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOworICAgIFRocmVh
ZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRv
bWljU3RyaW5nVGFibGUpOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6
bWFrZV91bmlxdWU8SklUVGh1bmtzPigpOwpAQCAtNjcyLDcgKzY3MSw3IEBAIGlubGluZSB2b2lk
IFZNOjp1cGRhdGVTdGFja0xpbWl0cygpCiAgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0g
bV9zb2Z0U3RhY2tMaW1pdDsKICNlbmRpZgogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNr
ID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNr
ID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKICAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6
ZSA9IE9wdGlvbnM6OnJlc2VydmVkWm9uZVNpemUoKTsKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBh
bHJlYWR5IGVuc3VyZWQgdGhhdCBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11
bVJlc2VydmVab25lU2l6ZSBhdAogICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwg
YW5kIHRoZSBvcHRpb24gdmFsdWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFm
dGVyLgpAQCAtODg2LDkgKzg4NSw5IEBAIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291
bnQoKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjaywgd2Ug
ZG9uJ3Qga25vdyBob3cgbWFueSBzdGFjayBwYWdlcyBhcmUgYWN0dWFsbHkKICAgICAvLyBjb21t
aXR0ZWQuIFNvLCB3ZSB1c2UgdGhlIGN1cnJlbnQgc3RhY2sgdXNhZ2UgYXMgYW4gZXN0aW1hdGUu
Ci0gICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkp
OworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJk
KCkpOwogICAgIGludDhfdCogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oJmN1
cnJlbnQpOwotICAgIGludDhfdCogaGlnaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4od3Rm
VGhyZWFkRGF0YSgpLnN0YWNrKCkub3JpZ2luKCkpOworICAgIGludDhfdCogaGlnaCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5vcmlnaW4oKSk7
CiAgICAgcmV0dXJuIGhpZ2ggLSBjdXJyZW50OwogI2Vsc2UKICAgICByZXR1cm4gQ0xvb3BTdGFj
azo6Y29tbWl0dGVkQnl0ZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRl
eCBlZTIzMmE3ZjIxY2VjZDAxZGY3ZTkzMmY4YjUyZTc0ZTNlNDhmYTZkLi45ZmI0ZDhiZTQyYzFm
NzhkMWViMGU1MDlkYmEyOTM0MTZmM2JkZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNp
ZmljLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TeW1ib2xSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lm
IEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTI0Myw3ICsyNDIsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogICAgIC8vIFdlYkNvcmUgaGFzIGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIHRocmVh
ZHMgdG8gVk1zOwogICAgIC8vIGVpdGhlciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWQoKSBzaG91
bGQgb25seSBiZSBjYWxsZWQgb25jZQogICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRoZSAn
ZGVmYXVsdCcgVk0gKGl0IHVzZXMgdGhlCi0gICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcg
dW5pcXVpbmcgdGFibGUgZnJvbSB3dGZUaHJlYWREYXRhKS4KKyAgICAvLyB0aHJlYWQncyBkZWZh
dWx0IHN0cmluZyB1bmlxdWluZyB0YWJsZSBmcm9tIFRocmVhZDo6Y3VycmVudCgpKS4KICAgICAv
LyBBUEkgY29udGV4dHMgY3JlYXRlZCB1c2luZyB0aGUgbmV3IGNvbnRleHQgZ3JvdXAgYXdhcmUg
aW50ZXJmYWNlCiAgICAgLy8gY3JlYXRlIEFQSUNvbnRleHRHcm91cCBvYmplY3RzIHdoaWNoIHJl
cXVpcmUgbGVzcyBsb2NraW5nIG9mIEpTQwogICAgIC8vIHRoYW4gdGhlIG9sZCBzaW5nbGV0b24g
QVBJU2hhcmVkIFZNIGNyZWF0ZWQgZm9yIHVzZSBieQpAQCAtNjkxLDcgKzY5MCw3IEBAIGNsYXNz
IFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtl
ZExpc3ROb2RlPFZNPiB7CiAKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xp
bWl0KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygp
LmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCku
c3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAgICAgdm9pZCogY3VyciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZjdXJyKTsKICAgICAgICAgcmV0dXJuIGN1cnIgPj0gc3RhY2tM
aW1pdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TUVudHJ5U2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcAppbmRleCBjMmQ5YmRhMTg4YzQ3NzIwMjU2ZDQwMzA2NDgyODZlYzQ1ZTMxYzU5Li5k
MTFhOGZmYTY2ZGI1ZmUzMGZiOWY0OWY0NTMxMzgzNmI3OGQyMzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VS
VCghRGlzYWxsb3dWTVJlZW50cnk6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7Ci0gICAg
QVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwog
ICAgIGlmICghdm0uZW50cnlTY29wZSkgewogICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAppbmRleCA1YTc3NjE5
NTBlMGNmNmIyODg1NjAxOTMxYWY2YjcxYTNiZTAyZDc4Li5iYzBjMjVmOTFlMmMxNzYxYTIxY2Ey
MGViMDg4MmEwOTNhMjE1MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlu
bGluZXMuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgVk06OmVuc3Vy
ZVN0YWNrQ2FwYWNpdHlGb3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiB7CiAjaWYgRU5BQkxF
KEpJVCkKLSAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndh
cmQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93
bndhcmQoKSk7CiAgICAgcmV0dXJuIG5ld1RvcE9mU3RhY2sgPj0gbV9zb2Z0U3RhY2tMaW1pdDsK
ICNlbHNlCiAgICAgcmV0dXJuIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChuZXdUb3BPZlN0
YWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCAz
YTExMDkwZDE5MDkzY2NlYmU4MDliYzcyZDNhNmE1MDJlOWM0YjVkLi43MjIyY2MwNDRmMGFkYzk4
NzgwYTk5ZjA2YTNlNDliYjQyM2RlYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclBhdHRlcm4uY3BwCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAiWWFyckNhbm9uaWNh
bGl6ZS5oIgogI2luY2x1ZGUgIllhcnJQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApA
QCAtODgyLDcgKzg4Miw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgIHsK
ICAgICAgICAgaWYgKCFtX3N0YWNrTGltaXQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkp
OworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKS5pc0dyb3dpbmdEb3du
d2FyZCgpKTsKICAgICAgICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3Qq
PigmY3Vycik7CiAgICAgICAgIGludDhfdCogbGltaXQgPSByZWludGVycHJldF9jYXN0PGludDhf
dCo+KG1fc3RhY2tMaW1pdCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IGxpbWl0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI4M2ZhNWViZjM4NGY5NjQx
Y2RlMjFhZWJhNjFmYjc2ZmJhMzk2NS4uYWU2OTY5ODM2YWE0ZmQ2MDg4NTcyMWEzZDBjNThmZWI4
ZWNiMzgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MjMsNyArMTIzLDYgQEAKIAkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVm
YXVsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzM0QjE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsKIAkJ
QThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzUwMTUxQTgyNUIwMDQxMjNG
RiAvKiBDb2xsYXRvcklDVS5jcHAgKi87IH07CiAJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAv
KiBVVEY4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTQ3MzU3MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCAqLzsgfTsKLQkJQThBNDc0ODYx
NTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdU
RlRocmVhZERhdGEuY3BwICovOyB9OwogCQlBRDg5QjZCNzFFNjQxNTA4MDA5MDcwN0YgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFEODlCNkI1MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhh
bmRsZXIuY3BwICovOyB9OwogCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29jb2EubW0gKi87IH07CiAJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnRDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2Eu
Y3BwICovOyB9OwpAQCAtNTE1LDggKzUxNCw2IEBACiAJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNG
RiAvKiBWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAv
KiBWZWN0b3JUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9y
VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzcyMTUxQTgyNUIw
MDQxMjNGRiAvKiBWTVRhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1U
YWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdBMTUxQTgyNUIwMDQx
MjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdURlRocmVhZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
OEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE5QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93Q1R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05OTksOCArOTk2LDYgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAz
MDA5NDk4RUIgLyogV29yZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYg
LyogV29ya1F1ZXVlLmNwcCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29y
a1F1ZXVlLmggKi8sCi0JCQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERh
dGEuY3BwICovLAotCQkJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xNDExLDcgKzE0MDYsNiBAQAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBX
b3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2
IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgy
NUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0ODYx
NTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CmluZGV4IGUxNWQ0NWM2M2M5MGRkODNkYWExYTc0YjUwZjMyODc1ZTk4YTky
M2IuLjVhNzU2ODg0ZDYyN2UwYjIwYzZlYTk4ZDQwM2FjNDY4NGMwYjg2NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CkBAIC0xNTAsNyArMTUwLDYgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVmFyaWFu
dC5oCiAgICAgVmVjdG9yLmgKICAgICBWZWN0b3JUcmFpdHMuaAotICAgIFdURlRocmVhZERhdGEu
aAogICAgIFdhbGxUaW1lLmgKICAgICBXZWFrUHRyLmgKICAgICBXb3JkTG9jay5oCkBAIC0yNTQs
NyArMjUzLDYgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVX
aXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKICAgICBVVUlELmNwcAotICAgIFdURlRocmVhZERhdGEu
Y3BwCiAgICAgV2FsbFRpbWUuY3BwCiAgICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5oIGIvU291cmNlL1dU
Ri93dGYvTG9ja0FsZ29yaXRobS5oCmluZGV4IDQ1MTQ4NTQ3N2FjZjY1NjRiODI4NzdkM2U2NTll
OTAyNzhjODk1MWUuLmI4ZTk4N2I5MDgxNTBmMjY2NzYwMGZhNDMxZjdiOTIwNGVmM2I4MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Mb2NrQWxnb3JpdGhtLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TG9ja0FsZ29yaXRobUlubGluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1Jbmxp
bmVzLmgKaW5kZXggODQzOGQyZTkyYWFkMzFlZmQ0NTk5ODNiOWM1MmMwOWEwNjlmZDBkYS4uMGNi
ZTVmYTVmYWM4MTBkOWNkZjFjOTM4MzdmMzAxZTJlNjhmYzRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvTG9ja0FsZ29yaXRobUlubGluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2Nr
QWxnb3JpdGhtSW5saW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvTG9j
a0FsZ29yaXRobS5oPgogI2luY2x1ZGUgPHd0Zi9QYXJraW5nTG90Lmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiAvLyBJdCdzIGEgZ29vZCBpZGVhIHRvIGF2b2lkIGluY2x1ZGluZyB0
aGlzIGhlYWRlciBpbiB0b28gbWFueSBwbGFjZXMsIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBj
aGFuZ2UKIC8vIHRoZSBsb2NrIGFsZ29yaXRobSBzbG93IHBhdGggd2l0aG91dCByZWNvbXBpbGlu
ZyB0aGUgd29ybGQuIFJpZ2h0IG5vdyB0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0d28KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01h
aW5UaHJlYWQuaAppbmRleCAxNGIzNDY3M2EwYmQ4NTc3YzEyN2ZjZjI2OWI3MzI5ZWI2YjAwN2Y4
Li5hYjkyMTM0ZWQ4YjhlMWUxMzdjZjllN2M2M2JmMWMyODI0YWZiZTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVh
ZC5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCmluZGV4IGNjMWEyMWI5ZWE1Y2NjYzZmMWFj
ZTRjOTc0OTg5OWJiZGE1ZDdlMTAuLmY4ZmVkODhiMWY3Yzk5MjA5ODZhOTRlN2FiNmM1NTcxYjky
M2NlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
SGFzaEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkU3BlY2lmaWMuaCIKLSNpbmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisj
aW5jbHVkZSAiVGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vh
a1JhbmRvbS5oIgogI2luY2x1ZGUgIldvcmRMb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9TdGFja1N0YXRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCmluZGV4
IDA2NGYyZjA1MmFhZjM4YjlmODBhNmRkNDExMzJlNjU0NmU0NTdmNDIuLjhjYjQ2MjIxMWRmN2Fk
NTU3ZTNjN2FlMjQ4ZTU2NTI4YjUxODZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0
YWNrU3RhdHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwCkBAIC0zMCw3
ICszMCw2IEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRGF0YUxvZy5o
IgotI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKIAogLy8gRGVmaW5lIHRoZSBmb2xsb3dpbmcg
ZmxhZyBpZiB5b3Ugd2FudCB0byBjb2xsZWN0IHN0YXRzIG9uIGV2ZXJ5IHNpbmdsZQogLy8gY2hl
Y2twb2ludC4gQnkgZGVmYXVsdCwgd2Ugb25seSBsb2cgY2hlY2twb2ludHMgdGhhdCBlc3RhYmxp
c2ggbmV3CkBAIC01OSw3ICs1OCw3IEBAIGludCBTdGFja1N0YXRzOjpzX21heExheW91dFJlZW50
cnlEZXB0aCA9IDA7CiAKIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQZXJUaHJlYWRTdGF0
cygpCiB7Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCku
c3RhY2soKTsKICAgICBtX3JlZW50cnlEZXB0aCA9IDA7CiAgICAgbV9zdGFja1N0YXJ0ID0gKGNo
YXIqKXN0YWNrLm9yaWdpbigpOwogICAgIG1fY3VycmVudENoZWNrUG9pbnQgPSAwOwpAQCAtNzAs
OSArNjksOSBAQCBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0czo6UGVyVGhyZWFkU3RhdHMoKQog
U3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1
YXJkPFN0YXRpY0xvY2s+IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RG
VGhyZWFkRGF0YSogdGhyZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZU
aHJlYWREYXRhKCkpOwotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFk
RGF0YS0+c3RhY2tTdGF0cygpOwotICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVh
ZERhdGEtPnN0YWNrKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsK
KyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7
CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBi
b29sIGlzR3Jvd2luZ0Rvd253YXJkID0gc3RhY2suaXNHcm93aW5nRG93bndhcmQoKTsKICAgICBi
b29sIG5lZWRUb0xvZyA9IGZhbHNlOwpAQCAtMTI4LDggKzEyNyw4IEBAIFN0YWNrU3RhdHM6OkNo
ZWNrUG9pbnQ6OkNoZWNrUG9pbnQoKQogU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6fkNoZWNrUG9p
bnQoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6
OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9j
YXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQ
ZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKKyAgICBUaHJlYWQm
IHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0
YXRzJiB0ID0gdGhyZWFkLnN0YWNrU3RhdHMoKTsKIAogICAgIC8vIFBvcCB0byBwcmV2aW91cyBj
aGVja3BvaW50OgogICAgIHQubV9jdXJyZW50Q2hlY2tQb2ludCA9IG1fcHJldjsKQEAgLTEzOCw3
ICsxMzcsNyBAQCBTdGFja1N0YXRzOjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiAgICAgLy8g
TG9nIHRoaXMgY2hlY2twb2ludCBpZiBuZWVkZWQ6CiAjaWYgRU5BQkxFKFZFUkJPU0VfU1RBQ0tf
U1RBVFMpCiAgICAgaWYgKCFtX3ByZXYpIHsKLSAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0
YWNrID0gdGhyZWFkRGF0YS0+c3RhY2soKTsKKyAgICAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0
YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAgICAgICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBz
dGFjay5pc0dyb3dpbmdEb3dud2FyZCgpOwogCiAgICAgICAgIGNoYXIqIGN1cnJlbnQgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKQEAgLTE1OSw5ICsxNTgsOSBAQCBTdGFja1N0YXRz
OjpDaGVja1BvaW50Ojp+Q2hlY2tQb2ludCgpCiB2b2lkIFN0YWNrU3RhdHM6OnByb2JlKCkKIHsK
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJl
ZE11dGV4KTsKLSAgICBXVEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZU
aHJlYWREYXRhKj4oJnd0ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFk
U3RhdHMmIHQgPSB0aHJlYWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3Vu
ZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRo
cmVhZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhy
ZWFkLnN0YWNrU3RhdHMoKTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQu
c3RhY2soKTsKIAogICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdE
b3dud2FyZCgpOwogCkBAIC0yMjAsOSArMjE5LDkgQEAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQ
b2ludDo6TGF5b3V0Q2hlY2tQb2ludCgpCiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKIAogICAg
IHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0YWNrU3RhdHM6OnNfc2hhcmVkTXV0
ZXgpOwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEgPSBjb25zdF9jYXN0PFdURlRocmVh
ZERhdGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0
cyYgdCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYg
c3RhY2sgPSB0aHJlYWREYXRhLT5zdGFjaygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgU3RhY2tTdGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQu
c3RhY2tTdGF0cygpOworICAgIGNvbnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZC5zdGFj
aygpOwogCiAgICAgYm9vbCBpc0dyb3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253
YXJkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuY3BwCmluZGV4IGUyYTMxYmU5OTc4YTlkZTQyZWJm
YTMzYjA3MDZhNTI0MzNiZDcyY2IuLjc2NTUwZjM1NzI2MzIyOWUzMTMwYmMzMTE2Y2M4MTIxNWQ0
Y2VhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcApAQCAtMzYsMTEgKzM2LDI2IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCisjaWYgIUhBVkUoRkFTVF9UTFMpCiBUaHJlYWRTcGVjaWZpY0tleSBU
aHJlYWRIb2xkZXI6Om1fa2V5ID0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5OwogCit2b2lkIFRo
cmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKyAgICAgICAgcGxh
dGZvcm1Jbml0aWFsaXplT25jZSgpOworICAgIH0pOworfQorI2VuZGlmCisKIFRocmVhZEhvbGRl
cjo6flRocmVhZEhvbGRlcigpCiB7CiAgICAgbV90aHJlYWQtPmRpZEV4aXQoKTsKIH0KIAorVGhy
ZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemVDdXJyZW50KCkKK3sKKyAgICByZXR1
cm4gaW5pdGlhbGl6ZShUaHJlYWQ6OmNyZWF0ZUN1cnJlbnRUaHJlYWQoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuaAppbmRleCBiMmY4ZGU2ODg1MGM2YWZkYzc5
ZWZkYWRhMDliZTZkZWZiMTgyNmE5Li44YWQ1OTEwNzk5MzU0YzMxZWE3ODI5NTg0MGY4Y2FhOWU3
NDMwN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuaApAQCAtMjksMTMgKzI5LDIzIEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQorLy8gRklYTUU6IFdlIGludGVudGlvbmFsbHkg
dXNlIGlmbmRlZiBndWFyZHMgaW5zdGVhZCBvZiBgI3ByYWdtYSBvbmNlYCBoZXJlIHRvIGF2b2lk
IGJ1aWxkIGZhaWx1cmVzLgorLy8gV1RGIGhlYWRlcnMgYXJlIGNvcGllZCB0byBidWlsZCBkaXJl
Y3RvcnkuIEJhc2VkIG9uIGhvdyB3ZSBpbmNsdWRlIGhlYWRlcnMsIFdURiBoZWFkZXJzIG1heSBi
ZQorLy8gaW5jbHVkZWQgZnJvbSBlaXRoZXIgc291cmNlIGRpcmVjdG9yeSBvciBidWlsZCBkaXJl
Y3RvcnkuIENvbXBpbGVycyBhcmUgY29uZnVzZWQgd2l0aCB0aGVpcgorLy8gdHdvIGRpZmZlcmVu
dCBwYXRocyBhbmQgaW5jbHVkZSB0aGUgc2FtZSBmaWxlIHR3aWNlLgorLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDk4NgorI2lmbmRlZiBUaHJlYWRIb2xkZXJf
aAorI2RlZmluZSBUaHJlYWRIb2xkZXJfaAogCisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNw
YWNlIFdURiB7CiAKK2NsYXNzIFRocmVhZDsKKwogLy8gSG9sZHMgVGhyZWFkIGluIHRoZSB0aHJl
YWQtc3BlY2lmaWMgc3RvcmFnZS4gVGhlIGRlc3RydWN0b3Igb2YgdGhpcyBob2xkZXIgcmVsaWFi
bHkgZGVzdHJveSBUaHJlYWQuCiAvLyBGb3IgcHRocmVhZCwgaXQgZW1wbG95cyBwdGhyZWFkcy1z
cGVjaWZpYyAyLXBhc3MgZGVzdHJ1Y3Rpb24gdG8gcmVsaWFibHkgcmVtb3ZlIFRocmVhZC4KIC8v
IEZvciBXaW5kb3dzLCB3ZSB1c2UgdGhyZWFkX2xvY2FsIHRvIGRlZmVyIHRocmVhZCBob2xkZXIg
ZGVzdHJ1Y3Rpb24uIEl0IGFzc3VtZXMgcmVndWxhciBUaHJlYWRTcGVjaWZpYwpAQCAtNDMsMTcg
KzUzLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGhyZWFkSG9sZGVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUaHJlYWRIb2xkZXIpOwogcHVibGljOgorICAgIGZyaWVuZCBjbGFz
cyBUaHJlYWQ7CiAgICAgflRocmVhZEhvbGRlcigpOwogCi0gICAgLy8gT25lIHRpbWUgaW5pdGlh
bGl6YXRpb24gZm9yIHRoaXMgY2xhc3MgYXMgYSB3aG9sZS4KLSAgICAvLyBUaGlzIG1ldGhvZCBt
dXN0IGJlIGNhbGxlZCBiZWZvcmUgaW5pdGlhbGl6ZSgpIGFuZCBpdCBpcyBub3QgdGhyZWFkLXNh
ZmUuCi0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU9uY2UoKTsKLQotICAgIC8vIENyZWF0ZXMg
YW5kIHB1dHMgYW4gaW5zdGFuY2Ugb2YgVGhyZWFkSG9sZGVyIGludG8gdGhyZWFkLXNwZWNpZmlj
IHN0b3JhZ2UuCi0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUaHJlYWQmKTsKLQotICAgIC8v
IFJldHVybnMgMCBpZiB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZSB3YXMgbm90IGluaXRpYWxpemVk
LgotICAgIHN0YXRpYyBUaHJlYWRIb2xkZXIqIGN1cnJlbnQoKTsKKyAgICBzdGF0aWMgVGhyZWFk
SG9sZGVyJiBjdXJyZW50KCk7CiAKICAgICBUaHJlYWQmIHRocmVhZCgpIHsgcmV0dXJuIG1fdGhy
ZWFkLmdldCgpOyB9CiAKQEAgLTYyLDEyICs2NSwzMCBAQCBjbGFzcyBUaHJlYWRIb2xkZXIgewog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSG9sZGVyKFRocmVhZCYgdGhyZWFkKQotICAg
ICAgICA6IG1fdGhyZWFkKHRocmVhZCkKKyAgICBUaHJlYWRIb2xkZXIoUmVmPFRocmVhZD4mJiB0
aHJlYWQpCisgICAgICAgIDogbV90aHJlYWQoV1RGTW92ZSh0aHJlYWQpKQogICAgICAgICAsIG1f
aXNEZXN0cm95ZWRPbmNlKGZhbHNlKQogICAgIHsKICAgICB9CiAKKyAgICAvLyBDcmVhdGVzIGFu
ZCBwdXRzIGFuIGluc3RhbmNlIG9mIFRocmVhZEhvbGRlciBpbnRvIHRocmVhZC1zcGVjaWZpYyBz
dG9yYWdlLgorICAgIHN0YXRpYyBUaHJlYWRIb2xkZXImIGluaXRpYWxpemUoUmVmPFRocmVhZD4m
Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRIb2xkZXImIGluaXRpYWxp
emVDdXJyZW50KCk7CisKKyNpZiAhSEFWRShGQVNUX1RMUykKKyAgICAvLyBPbmUgdGltZSBpbml0
aWFsaXphdGlvbiBmb3IgdGhpcyBjbGFzcyBhcyBhIHdob2xlLgorICAgIC8vIFRoaXMgbWV0aG9k
IG11c3QgYmUgY2FsbGVkIGJlZm9yZSBpbml0aWFsaXplKCkgYW5kIGl0IGlzIG5vdCB0aHJlYWQt
c2FmZS4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU9uY2Uo
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
T25jZSgpOworI2VuZGlmCisKKyAgICAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkLXNwZWNpZmljIHN0
b3JhZ2Ugd2FzIG5vdCBpbml0aWFsaXplZC4KKyAgICBzdGF0aWMgVGhyZWFkSG9sZGVyKiBjdXJy
ZW50TWF5QmVOdWxsKCk7CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgVGhyZWFkSG9sZGVyKiBjdXJyZW50RHlpbmcoKTsKKyNlbmRpZgorCiAgICAgLy8g
VGhpcyB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvciBpcyBjYWxsZWQgMiB0aW1lcyB3aGVuIHRo
cmVhZCB0ZXJtaW5hdGVzOgogICAgIC8vIC0gZmlyc3QsIHdoZW4gYWxsIHRoZSBvdGhlciB0aHJl
YWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgYXJlIGNhbGxlZCwgaXQgc2ltcGx5IHJlbWVtYmVycyBp
dCB3YXMgJ2Rlc3Ryb3llZCBvbmNlJwogICAgIC8vIGFuZCAoMSkgcmUtc2V0cyBpdHNlbGYgaW50
byB0aGUgdGhyZWFkLXNwZWNpZmljIHNsb3Qgb3IgKDIpIGNvbnN0cnVjdHMgdGhyZWFkIGxvY2Fs
IHZhbHVlIHRvIGNhbGwgaXQgYWdhaW4gbGF0ZXIuCkBAIC03Nyw3ICs5OCw0MSBAQCBjbGFzcyBU
aHJlYWRIb2xkZXIgewogCiAgICAgUmVmPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgYm9vbCBtX2lz
RGVzdHJveWVkT25jZTsKLSAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CisjaWYg
IUhBVkUoRkFTVF9UTFMpCisgICAgc3RhdGljIFdURl9FWFBPUlREQVRBIFRocmVhZFNwZWNpZmlj
S2V5IG1fa2V5OworI2VuZGlmCiB9OwogCitpbmxpbmUgVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xk
ZXI6OmN1cnJlbnRNYXlCZU51bGwoKQoreworI2lmICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VS
VChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUaHJlYWRIb2xkZXIqPih0aHJlYWRTcGVjaWZpY0dldChtX2tleSkpOworI2Vsc2UKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNf
ZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVkpKTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGhyZWFk
SG9sZGVyJiBUaHJlYWRIb2xkZXI6OmN1cnJlbnQoKQoreworICAgIC8vIFdSVCBXZWJDb3JlOgor
ICAgIC8vICAgIFRocmVhZEhvbGRlciBpcyB1c2VkIG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBj
b3VsZCBwb3NzaWJseSBiZSB1c2VkCisgICAgLy8gICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRo
ZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXphdGlvbiBoZXJlLgorICAgIC8vIFdSVCBKYXZh
U2NyaXB0Q29yZToKKyAgICAvLyAgICBUaHJlYWQ6OmN1cnJlbnQoKSBpcyBpbml0aWFsbHkgY2Fs
bGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygpLCBlbnN1cmluZworICAgIC8vICAgIHRoaXMg
aXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJlYWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyNp
ZiAhSEFWRShGQVNUX1RMUykKKyAgICBpZiAoVU5MSUtFTFkoVGhyZWFkSG9sZGVyOjptX2tleSA9
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpKQorICAgICAgICBpbml0aWFsaXplT25jZSgpOwor
I2VuZGlmCisgICAgaWYgKGF1dG8qIGhvbGRlciA9IGN1cnJlbnRNYXlCZU51bGwoKSkKKyAgICAg
ICAgcmV0dXJuICpob2xkZXI7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoYXV0byogaG9sZGVy
ID0gY3VycmVudER5aW5nKCkpCisgICAgICAgIHJldHVybiAqaG9sZGVyOworI2VuZGlmCisgICAg
cmV0dXJuIGluaXRpYWxpemVDdXJyZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgorI2Vu
ZGlmIC8vIFRocmVhZEhvbGRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRI
b2xkZXJQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5j
cHAKaW5kZXggMjBlNWU4OGY3NmRhYzJmNzYwNzMzNGE4ZWIzYWFlYWNkYWQ1Zjk2My4uYjNlMWVi
ZjNmNDBiNGJjMmRjYmNhY2ZiNzZlZDk3MTA2MTdkZjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZEhvbGRlclB0aHJlYWRzLmNwcApAQCAtMzYsNDEgKzM2LDQ1IEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCi12b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKQorI2lmICFIQVZFKEZBU1Rf
VExTKQordm9pZCBUaHJlYWRIb2xkZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZU9uY2UoKQogewogICAg
IHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKCZtX2tleSwgZGVzdHJ1Y3QpOwogfQorI2VuZGlmCiAK
LVRocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRlciYgVGhy
ZWFkSG9sZGVyOjppbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQogeworICAgIGF1dG8q
IGhvbGRlciA9IG5ldyBUaHJlYWRIb2xkZXIoV1RGTW92ZSh0aHJlYWQpKTsKKyNpZiAhSEFWRShG
QVNUX1RMUykKICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQo
bV9rZXkpKTsKLX0KLQotdm9pZCBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUoVGhyZWFkJiB0aHJl
YWQpCi17Ci0gICAgaWYgKCFjdXJyZW50KCkpIHsKLSAgICAgICAgLy8gSWRlYWxseSB3ZSdkIGhh
dmUgdGhpcyBhcyBhIHJlbGVhc2UgYXNzZXJ0IGV2ZXJ5d2hlcmUsIGJ1dCB0aGF0IHdvdWxkIGh1
cnQgcGVyZm9ybWFuY2UuCi0gICAgICAgIC8vIEhhdmluZyB0aGlzIHJlbGVhc2UgYXNzZXJ0IGhl
cmUgbWVhbnMgdGhhdCB3ZSB3aWxsIGNhdGNoICJkaWRuJ3QgY2FsbAotICAgICAgICAvLyBXVEY6
OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzb29uIGVub3VnaCIgYnVncyBpbiByZWxlYXNlIG1vZGUu
Ci0gICAgICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAg
ICAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgbmV3IFRocmVhZEhvbGRlcih0aHJlYWQpKTsK
LSAgICB9CisgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7CisjZWxzZQorICAg
IF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZLCBob2xkZXIp
OworICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoV1RGX1RIUkVBRF9EQVRBX0tFWSwgJmRlc3RydWN0
KTsKKyNlbmRpZgorICAgIHJldHVybiAqaG9sZGVyOwogfQogCiB2b2lkIFRocmVhZEhvbGRlcjo6
ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKIHsKLSAgICBUaHJlYWRIb2xkZXIqIHRocmVhZElkZW50aWZp
ZXJEYXRhID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4oZGF0YSk7Ci0gICAgQVNTRVJUKHRo
cmVhZElkZW50aWZpZXJEYXRhKTsKKyAgICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0YXRpY19j
YXN0PFRocmVhZEhvbGRlcio+KGRhdGEpOworICAgIEFTU0VSVChob2xkZXIpOwogCi0gICAgaWYg
KHRocmVhZElkZW50aWZpZXJEYXRhLT5tX2lzRGVzdHJveWVkT25jZSkgewotICAgICAgICBkZWxl
dGUgdGhyZWFkSWRlbnRpZmllckRhdGE7CisgICAgaWYgKGhvbGRlci0+bV9pc0Rlc3Ryb3llZE9u
Y2UpIHsKKyAgICAgICAgZGVsZXRlIGhvbGRlcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHRocmVhZElkZW50aWZpZXJEYXRhLT5tX2lzRGVzdHJveWVkT25jZSA9IHRydWU7CisgICAg
aG9sZGVyLT5tX2lzRGVzdHJveWVkT25jZSA9IHRydWU7CiAgICAgLy8gUmUtc2V0dGluZyB0aGUg
dmFsdWUgZm9yIGtleSBjYXVzZXMgYW5vdGhlciBkZXN0cnVjdCgpIGNhbGwgYWZ0ZXIgYWxsIG90
aGVyIHRocmVhZC1zcGVjaWZpYyBkZXN0cnVjdG9ycyB3ZXJlIGNhbGxlZC4KLSAgICB0aHJlYWRT
cGVjaWZpY1NldChtX2tleSwgdGhyZWFkSWRlbnRpZmllckRhdGEpOworI2lmICFIQVZFKEZBU1Rf
VExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOworICAg
IHRocmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOworI2Vsc2UKKyAgICBfcHRocmVhZF9z
ZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgaG9sZGVyKTsKKyAgICBwdGhy
ZWFkX2tleV9pbml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0cnVjdCk7CisjZW5kaWYK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRIb2xkZXJXaW4uY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNwcAppbmRl
eCBmMDZiNjJmNjhlMjAxMzYzNWM2MzUxNWU4YzBlNGYxNWZlNDYxNmRhLi5lOWVjY2IwYWY1MTRl
OTU4ODQyYWQ1NzdjZTljMmFkZjYyZjA4YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRIb2xkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5j
cHAKQEAgLTQ5LDIyICs0OSwxNiBAQCBzdGF0aWMgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBU
aHJlYWRIb2xkZXIqPiYgdGhyZWFkTWFwKCkKICAgICByZXR1cm4gbWFwLmdldCgpOwogfQogCi12
b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKQordm9pZCBUaHJlYWRIb2xkZXI6OnBs
YXRmb3JtSW5pdGlhbGl6ZU9uY2UoKQogewogICAgIHRocmVhZE1hcE11dGV4KCk7CiAgICAgdGhy
ZWFkTWFwKCk7CiAgICAgdGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7
CiB9CiAKLVRocmVhZEhvbGRlciogVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkKK1RocmVhZEhvbGRl
ciogVGhyZWFkSG9sZGVyOjpjdXJyZW50RHlpbmcoKQogewogICAgIEFTU0VSVChtX2tleSAhPSBJ
bnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgIFRocmVhZEhvbGRlciogaG9sZGVyID0gc3Rh
dGljX2Nhc3Q8VGhyZWFkSG9sZGVyKj4odGhyZWFkU3BlY2lmaWNHZXQobV9rZXkpKTsKLSAgICBp
ZiAoaG9sZGVyKSB7Ci0gICAgICAgIEFTU0VSVChob2xkZXIgIT0gSW52YWxpZFRocmVhZEhvbGRl
cik7Ci0gICAgICAgIHJldHVybiBob2xkZXI7Ci0gICAgfQotCiAgICAgLy8gQWZ0ZXIgRkxTIGlz
IGRlc3Ryb3llZCwgdGhpcyBtYXAgb2ZmZXJzIHRoZSB2YWx1ZSB1bnRpbCB0aGUgc2Vjb25kIHRo
cmVhZCBleGl0IGNhbGxiYWNrIGlzIGNhbGxlZC4KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpt
dXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgIHJldHVybiB0aHJlYWRNYXAoKS5n
ZXQoY3VycmVudFRocmVhZCgpKTsKQEAgLTgwLDIxICs3NCwxOCBAQCBSZWZQdHI8VGhyZWFkPiBU
aHJlYWRIb2xkZXI6OmdldChUaHJlYWRJZGVudGlmaWVyIGlkKQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi12b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShUaHJlYWQmIHRocmVhZCkKK1Ro
cmVhZEhvbGRlciYgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYgdGhyZWFk
KQogewotICAgIGlmICghY3VycmVudCgpKSB7Ci0gICAgICAgIC8vIElkZWFsbHkgd2UnZCBoYXZl
IHRoaXMgYXMgYSByZWxlYXNlIGFzc2VydCBldmVyeXdoZXJlLCBidXQgdGhhdCB3b3VsZCBodXJ0
IHBlcmZvcm1hbmNlLgotICAgICAgICAvLyBIYXZpbmcgdGhpcyByZWxlYXNlIGFzc2VydCBoZXJl
IG1lYW5zIHRoYXQgd2Ugd2lsbCBjYXRjaCAiZGlkbid0IGNhbGwKLSAgICAgICAgLy8gV1RGOjpp
bml0aWFsaXplVGhyZWFkaW5nKCkgc29vbiBlbm91Z2giIGJ1Z3MgaW4gcmVsZWFzZSBtb2RlLgot
ICAgICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAgICAg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSBvbmNlIDxyZGFyOi8vcHJv
YmxlbS8zMTc5MzIxMz4gaXMgZml4ZWQuCi0gICAgICAgIGF1dG8qIGhvbGRlciA9IG5ldyBUaHJl
YWRIb2xkZXIodGhyZWFkKTsKLSAgICAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV9rZXksIGhvbGRl
cik7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBs
b2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgICAgICAgICB0aHJlYWRNYXAoKS5hZGQodGhy
ZWFkLmlkKCksIGhvbGRlcik7Ci0gICAgICAgIH0KKyAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxp
ZFRocmVhZFNwZWNpZmljS2V5KTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3Vu
ZCBjb2RlIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KKyAgICBhdXRv
IGlkID0gdGhyZWFkLT5pZCgpOworICAgIGF1dG8qIGhvbGRlciA9IG5ldyBUaHJlYWRIb2xkZXIo
V1RGTW92ZSh0aHJlYWQpKTsKKyAgICB0aHJlYWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsK
KyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFk
TWFwTXV0ZXgoKSk7CisgICAgICAgIHRocmVhZE1hcCgpLmFkZChpZCwgaG9sZGVyKTsKICAgICB9
CisgICAgcmV0dXJuICpob2xkZXI7CiB9CiAKIHZvaWQgVGhyZWFkSG9sZGVyOjpkZXN0cnVjdCh2
b2lkKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggYjNmZmE3Y2Y3MTkzYTYwOTgwZGU3MmUx
MDBlMGE0MDc4MjYwZDY0Mi4uZmZhMDYxOTExMmYyMjEyMDMwNWEyZjg1YWRhN2UyODRiMTA4NjI2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZEhvbGRlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgogCiAjaWYgSEFWRShRT1NfQ0xBU1NFUykKQEAgLTk0LDYgKzk0
LDE0IEBAIGNvbnN0IGNoYXIqIFRocmVhZDo6bm9ybWFsaXplVGhyZWFkTmFtZShjb25zdCBjaGFy
KiB0aHJlYWROYW1lKQogI2VuZGlmCiB9CiAKK3ZvaWQgVGhyZWFkOjppbml0aWFsaXplSW5UaHJl
YWQoKQoreworICAgIEFTU0VSVCghc3RhY2soKS5pc0VtcHR5KCkpOworICAgIG1fc2F2ZWRMYXN0
U3RhY2tUb3AgPSBzdGFjaygpLm9yaWdpbigpOworICAgIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVh
dGUoKnRoaXMpOworICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gbV9kZWZhdWx0QXRv
bWljU3RyaW5nVGFibGU7Cit9CisKIHZvaWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENv
bnRleHQqIG5ld1RocmVhZENvbnRleHQpCiB7CiAgICAgRnVuY3Rpb248dm9pZCgpPiBmdW5jdGlv
bjsKQEAgLTEwNSw3ICsxMTMsNyBAQCB2b2lkIFRocmVhZDo6ZW50cnlQb2ludChOZXdUaHJlYWRD
b250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogICAgICAgICBBU1NFUlQoY29udGV4dC0+c3RhZ2Ug
PT0gTmV3VGhyZWFkQ29udGV4dDo6U3RhZ2U6OkVzdGFibGlzaGVkSGFuZGxlKTsKIAogICAgICAg
ICAvLyBJbml0aWFsaXplIHRocmVhZCBob2xkZXIgd2l0aCBlc3RhYmxpc2hlZCBJRC4KLSAgICAg
ICAgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKGNvbnRleHQtPnRocmVhZC5nZXQoKSk7CisgICAg
ICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShjb250ZXh0LT50aHJlYWQuY29weVJlZigpKTsK
IAogICAgICAgICBUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29udGV4
dC0+bmFtZSk7CiAgICAgICAgIGZ1bmN0aW9uID0gV1RGTW92ZShjb250ZXh0LT5lbnRyeVBvaW50
KTsKQEAgLTExNiw2ICsxMjQsNyBAQCB2b2lkIFRocmVhZDo6ZW50cnlQb2ludChOZXdUaHJlYWRD
b250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogICAgICAgICBjb250ZXh0LT5zdGFnZSA9IE5ld1Ro
cmVhZENvbnRleHQ6OlN0YWdlOjpJbml0aWFsaXplZDsKICAgICAgICAgY29udGV4dC0+Y29uZGl0
aW9uLnNpZ25hbCgpOwogI2VuZGlmCisgICAgICAgIGNvbnRleHQtPnRocmVhZC0+aW5pdGlhbGl6
ZUluVGhyZWFkKCk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFUaHJlYWQ6OmN1cnJlbnQoKS5zdGFj
aygpLmlzRW1wdHkoKSk7CkBAIC0xNTUsMTQgKzE2NCw2IEBAIFJlZlB0cjxUaHJlYWQ+IFRocmVh
ZDo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBlbnRyeVBvaW50
KQogICAgIHJldHVybiBXVEZNb3ZlKHRocmVhZCk7CiB9CiAKLVRocmVhZCogVGhyZWFkOjpjdXJy
ZW50TWF5QmVOdWxsKCkKLXsKLSAgICBUaHJlYWRIb2xkZXIqIGRhdGEgPSBUaHJlYWRIb2xkZXI6
OmN1cnJlbnQoKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgcmV0dXJuICZkYXRhLT50aHJlYWQo
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogc3RhdGljIGJvb2wgc2hvdWxkUmVtb3ZlVGhy
ZWFkRnJvbVRocmVhZEdyb3VwKCkKIHsKICNpZiBPUyhXSU5ET1dTKQpAQCAtMTk3LDYgKzE5OCw5
IEBAIHZvaWQgVGhyZWFkOjpkaWRFeGl0KCkKICAgICAgICAgICAgIHRocmVhZEdyb3VwLT5tX3Ro
cmVhZHMucmVtb3ZlKCp0aGlzKTsKICAgICAgICAgfQogICAgIH0KKyAgICBpZiAobV9hdG9taWNT
dHJpbmdUYWJsZURlc3RydWN0b3IpCisgICAgICAgIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVj
dG9yKG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlKTsKKwogICAgIC8vIFdlIHdvdWxkIGxpa2Ug
dG8gc2F5ICJ0aHJlYWQgaXMgZXhpdGVkIiBhZnRlciB1bnJlZ2lzdGVyaW5nIHRocmVhZHMgZnJv
bSB0aHJlYWQgZ3JvdXBzLgogICAgIC8vIFNvIHdlIG5lZWQgdG8gc2VwYXJhdGUgbV9pc1NodXR0
aW5nRG93biBmcm9tIG1fZGlkRXhpdC4KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4g
bG9ja2VyKG1fbXV0ZXgpOwpAQCAtMjc3LDkgKzI4MSw4IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVLZXk7CiAgICAg
c3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10gewotICAgICAgICBUaHJlYWRIb2xkZXI6
OmluaXRpYWxpemVPbmNlKCk7CiAgICAgICAgIGluaXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0
b3IoKTsKLSAgICAgICAgd3RmVGhyZWFkRGF0YSgpOworICAgICAgICBUaHJlYWQ6OmN1cnJlbnQo
KTsKICAgICAgICAgaW5pdGlhbGl6ZURhdGVzKCk7CiAgICAgICAgIFRocmVhZDo6aW5pdGlhbGl6
ZVBsYXRmb3JtVGhyZWFkaW5nKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGZmNTBiZmE4
OWI3NjhiYzA4MThjNjM5ODlkMmZmM2Y1ZTJjNDE5MjcuLjk4YTMxY2ZmNTc0YzU5MjE5N2UxOGMz
NTRlODMxNjRlMzQ1NWRhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC0zOSw2ICszOSw4IEBACiAjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZEhvbGRlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTAsMTIgKzUyLDEy
IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgQWJzdHJhY3RMb2NrZXI7CitjbGFzcyBBdG9t
aWNTdHJpbmdUYWJsZTsKIGNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhOwogCi1lbnVtIGNsYXNzIFRo
cmVhZEdyb3VwQWRkUmVzdWx0OwordXNpbmcgQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0g
dm9pZCAoKikoQXRvbWljU3RyaW5nVGFibGUqKTsKIAotdXNpbmcgVGhyZWFkSWRlbnRpZmllciA9
IHVpbnQzMl90OwotdHlwZWRlZiB2b2lkICgqVGhyZWFkRnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50
KTsKK2VudW0gY2xhc3MgVGhyZWFkR3JvdXBBZGRSZXN1bHQ7CiAKIGNsYXNzIFRocmVhZEdyb3Vw
OwogY2xhc3MgVGhyZWFkSG9sZGVyOwpAQCAtNjUsNiArNjcsNyBAQCBjbGFzcyBUaHJlYWQgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiBwdWJsaWM6CiAgICAgZnJpZW5k
IGNsYXNzIFRocmVhZEdyb3VwOwogICAgIGZyaWVuZCBjbGFzcyBUaHJlYWRIb2xkZXI7CisgICAg
ZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IH5UaHJlYWQoKTsKIApAQCAtNzMsOCArNzYsNyBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWZQdHI8VGhyZWFkPiBjcmVhdGUoY29uc3QgY2hhciogdGhyZWFkTmFtZSwgRnVuY3Rpb248
dm9pZCgpPiYmKTsKIAogICAgIC8vIFJldHVybnMgVGhyZWFkIG9iamVjdC4KLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwotICAgIHN0YXRpYyBUaHJlYWQq
IGN1cnJlbnRNYXlCZU51bGwoKTsKKyAgICBzdGF0aWMgVGhyZWFkJiBjdXJyZW50KCkgeyByZXR1
cm4gVGhyZWFkSG9sZGVyOjpjdXJyZW50KCkudGhyZWFkKCk7IH0KIAogICAgIC8vIFJldHVybnMg
VGhyZWFkSWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkg
Y2FyZXMgYWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVz
ZXJzIHNob3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBu
b3QgZW5zdXJlCkBAIC0xNDEsNiArMTQzLDQ3IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAgICAgcmV0dXJuIG1fc3RhY2s7CiAgICAg
fQogCisgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKKyAgICB9CisKKyAgICBB
dG9taWNTdHJpbmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKEF0b21pY1N0cmlu
Z1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSkKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZ1Rh
YmxlKiBvbGRBdG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwor
ICAgICAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0cmluZ1RhYmxlOwor
ICAgICAgICByZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisjaWYgRU5BQkxF
KFNUQUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiBzdGFja1N0YXRz
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YWNrU3RhdHM7CisgICAgfQorI2VuZGlmCisK
KyAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkK
KyAgICB7CisgICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50
ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CisgICAgfQorCisgICAgdm9p
ZCBzZXRTYXZlZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCisgICAgeworICAgICAg
ICBtX3NhdmVkTGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOworICAgIH0KKworICAgIHZvaWQq
IG1fYXBpRGF0YSB7IG51bGxwdHIgfTsKKwogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRf
dCBtYWNoVGhyZWFkKCkgeyByZXR1cm4gbV9wbGF0Zm9ybVRocmVhZDsgfQogI2VuZGlmCkBAIC0x
NTAsMTMgKzE5MywxNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8VGhyZWFkPiB7CiBwcm90ZWN0ZWQ6CiAgICAgVGhyZWFkKCk7CiAKKyAgICBzdGF0aWMgUmVm
PFRocmVhZD4gY3JlYXRlQ3VycmVudFRocmVhZCgpOworICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhy
ZWFkKCk7CisKICAgICAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBUaHJlYWQgZXN0YWJs
aXNobWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICBib29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJl
YWRDb250ZXh0Kik7CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0gICAgdm9pZCBlc3RhYmxpc2hQbGF0
Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCk7CisgICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9y
bVNwZWNpZmljSGFuZGxlKFBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKICNlbHNlCi0gICAgdm9pZCBl
c3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKEhBTkRMRSwgVGhyZWFkSWRlbnRpZmllcik7
CisgICAgdm9pZCBlc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKFBsYXRmb3JtVGhyZWFk
SGFuZGxlLCBUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiAjaWYgVVNFKFBUSFJFQURTKSAm
JiAhT1MoREFSV0lOKQpAQCAtMTk3LDIyICsyNDMsMjUgQEAgY2xhc3MgVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIFZlY3RvcjxzdGQ6OndlYWtfcHRy
PFRocmVhZEdyb3VwPj4gbV90aHJlYWRHcm91cHM7CiAgICAgYm9vbCBtX2lzU2h1dHRpbmdEb3du
IHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkRXhpdCB7IGZhbHNlIH07Ci0jaWYgVVNFKFBUSFJF
QURTKQotICAgIHB0aHJlYWRfdCBtX2hhbmRsZTsKLQorICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxl
IG1faGFuZGxlOwogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhy
ZWFkOwotI2Vsc2UKKyNlbGlmIFVTRShQVEhSRUFEUykKICAgICBzZW1fdCBtX3NlbWFwaG9yZUZv
clN1c3BlbmRSZXN1bWU7CiAgICAgUGxhdGZvcm1SZWdpc3RlcnMgbV9wbGF0Zm9ybVJlZ2lzdGVy
czsKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICAgICBzdGQ6OmF0b21pYzxi
b29sPiBtX3N1c3BlbmRlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSNlbGlmIE9TKFdJTkRPV1MpCi0g
ICAgSEFORExFIG1faGFuZGxlIHsgSU5WQUxJRF9IQU5ETEVfVkFMVUUgfTsKLSNlbHNlCi0jZXJy
b3IgVW5rbm93biBTeXN0ZW0KKworICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9t
aWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9kZWZh
dWx0QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07CisgICAgQXRvbWljU3RyaW5nVGFibGVE
ZXN0cnVjdG9yIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIHsgbnVsbHB0ciB9OworCisj
aWYgRU5BQkxFKFNUQUNLX1NUQVRTKQorICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzIG1f
c3RhY2tTdGF0czsKICNlbmRpZgorICAgIHZvaWQqIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50
cnkgeyBudWxscHRyIH07CisgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKIH07CiAKIC8v
IFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWRzLgpAQCAtMjIzLDcg
KzI3Miw2IEBAIGlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQogICAgIHJl
dHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgpOwogfQogCi0KIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5n
IGZ1bmN0aW9ucyByZW1haW4gYmVjYXVzZSB0aGV5IGFyZSB1c2VkIGZyb20gV2ViS2l0IFdpbmRv
d3Mgc3VwcG9ydCBsaWJyYXJ5LAogLy8gV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy5kbGwuIFdo
ZW4gdXBkYXRpbmcgdGhlIHN1cHBvcnQgbGlicmFyeSwgd2Ugc2hvdWxkIHVzZSBuZXcgQVBJIGlu
c3RlYWQKIC8vIGFuZCB0aGUgZm9sbG93aW5nIHdvcmthb3VuZCBzaG91bGQgYmUgcmVtb3ZlZC4g
QW5kIG5ldyBjb2RlIHNob3VsZCBub3QgdXNlIHRoZSBmb2xsb3dpbmcgQVBJcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1ByaW1pdGl2ZXMuaAppbmRleCAzMGM0OTlmZGE5Y2FlMWY2ZGY2NGMxZDRlYWE2
Y2I1YjZmOTgxNzcyLi42ZTg4YWE2YThhMDkwZDk3ZTc3N2MzMWEzYmQyYTY2YWRjMzBjNmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKKysrIGIvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBAIC00NSw2ICs0NSw5IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCit1c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7Cit1c2lu
ZyBUaHJlYWRGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQqIGFyZ3VtZW50KTsKKwogI2lmIFVTRShQ
VEhSRUFEUykKIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0gcHRocmVhZF90OwogdXNpbmcg
UGxhdGZvcm1NdXRleCA9IHB0aHJlYWRfbXV0ZXhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJl
YWRzLmNwcAppbmRleCAxMmQ3YzcxMzg2MTkyZThmNDU1N2UzM2YyOWIzNTIxOTg3NjVlNzhmLi5j
ZmVlYWJiMjM4OGYwZmJjZWU1NDI4NjEwNTFiY2NkNmE3ZTgxYTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0yODYsMTggKzI4NiwxNiBAQCB2b2lkIFRocmVhZDo6ZGV0
YWNoKCkKICAgICAgICAgZGlkQmVjb21lRGV0YWNoZWQoKTsKIH0KIAotVGhyZWFkJiBUaHJlYWQ6
OmN1cnJlbnQoKQotewotICAgIGlmIChUaHJlYWQqIGN1cnJlbnQgPSBjdXJyZW50TWF5QmVOdWxs
KCkpCi0gICAgICAgIHJldHVybiAqY3VycmVudDsKIAorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVh
dGVDdXJyZW50VGhyZWFkKCkKK3sKICAgICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJlYWQsIFRo
cmVhZElkZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8VGhyZWFkPiB0
aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKICAgICB0aHJlYWQtPmVzdGFibGlzaFBs
YXRmb3JtU3BlY2lmaWNIYW5kbGUocHRocmVhZF9zZWxmKCkpOwogICAgIHRocmVhZC0+bV9zdGFj
ayA9IFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKTsKLSAgICBUaHJlYWRI
b2xkZXI6OmluaXRpYWxpemUodGhyZWFkLmdldCgpKTsKKyAgICB0aHJlYWQtPmluaXRpYWxpemVJ
blRocmVhZCgpOwogICAgIGluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRl
ZCgpOwotICAgIHJldHVybiB0aHJlYWQuZ2V0KCk7CisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAog
VGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNw
cAppbmRleCAwNTIzYTJlNmJiNWY2NjI2YWM4YzA0YzkyODlhMDVlNTdmNWUwMTUwLi5lOTMxZGZm
YjhmNGRiZDA3ZThhNjI0NWQyNzNiNjgzODM0YjM4MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5j
cHAKQEAgLTI0MywxMSArMjQzLDggQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAgICAgcmV0dXJuIHNpemVvZihDT05URVhUKTsKIH0K
IAotVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQorUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGVD
dXJyZW50VGhyZWFkKCkKIHsKLSAgICBpZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJl
TnVsbCgpKQotICAgICAgICByZXR1cm4gKmN1cnJlbnQ7Ci0KICAgICAvLyBOb3QgYSBXVEYtY3Jl
YXRlZCB0aHJlYWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAg
ICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKIApAQCAtMjU3
LDkgKzI1NCw5IEBAIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogICAgIHRocmVhZC0+ZXN0
YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRsZShoYW5kbGUsIGN1cnJlbnRJRCgpKTsKICAgICB0
aHJlYWQtPm1fc3RhY2sgPSBTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7
Ci0gICAgVGhyZWFkSG9sZGVyOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFk
LT5pbml0aWFsaXplSW5UaHJlYWQoKTsKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5J
Zk5vbldURkNyZWF0ZWQoKTsKLSAgICByZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0
aHJlYWQ7CiB9CiAKIFRocmVhZElkZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9X
VEZUaHJlYWREYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlNzdkMjU4
NWY4YTYxNDQ0Zjk3NGU3YzNiOGFkMTNhMWNiNjY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXVEZUaHJlYWREYXRhLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdU
YWJsZS5oPgotCi0jaWYgVVNFKFdFQl9USFJFQUQpCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV1RGIHsKLQotI2lmICFIQVZFKEZBU1RfVExTKQotVGhy
ZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7Ci0j
ZW5kaWYKLQotV1RGVGhyZWFkRGF0YTo6V1RGVGhyZWFkRGF0YSgpCi0gICAgOiBtX3N0YWNrQm91
bmRzKFN0YWNrQm91bmRzOjpjdXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKSkKLSAgICAsIG1fc2F2
ZWRMYXN0U3RhY2tUb3Aoc3RhY2soKS5vcmlnaW4oKSkKLXsKLSAgICBBdG9taWNTdHJpbmdUYWJs
ZTo6Y3JlYXRlKCp0aGlzKTsKLSAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IG1fZGVm
YXVsdEF0b21pY1N0cmluZ1RhYmxlOwotfQotCi1XVEZUaHJlYWREYXRhOjp+V1RGVGhyZWFkRGF0
YSgpCi17Ci0gICAgaWYgKG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKQotICAgICAgICBt
X2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcihtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSk7
Ci19Ci0KLSNpZiBIQVZFKEZBU1RfVExTKQotV1RGVGhyZWFkRGF0YSYgV1RGVGhyZWFkRGF0YTo6
Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpCi17Ci0gICAgV1RGVGhyZWFk
RGF0YSogZGF0YSA9IG5ldyBXVEZUaHJlYWREYXRhOwotICAgIF9wdGhyZWFkX3NldHNwZWNpZmlj
X2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZLCBkYXRhKTsKLSAgICBwdGhyZWFkX2tleV9pbml0
X25wKFdURl9USFJFQURfREFUQV9LRVksIFtdKHZvaWQqIGRhdGEpewotICAgICAgICBkZWxldGUg
c3RhdGljX2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KGRhdGEpOwotICAgIH0pOwotICAgIHJldHVybiAq
ZGF0YTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE1ZmY4MTc2NmQ4M2M1NmRiY2FjYjYz
YmFlNmUyNjA4YTYyYzMwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICoKLSAqLwotCi0jaWZuZGVmIFdURlRocmVhZERhdGFfaAotI2RlZmluZSBXVEZUaHJlYWRE
YXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNr
U3RhdHMuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLWNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwotCi10eXBlZGVmIHZvaWQgKCpBdG9taWNT
dHJpbmdUYWJsZURlc3RydWN0b3IpKEF0b21pY1N0cmluZ1RhYmxlKik7Ci0KLWNsYXNzIFdURlRo
cmVhZERhdGEgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdURlRocmVhZERhdGEpOwotcHVi
bGljOgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBXVEZUaHJlYWREYXRhKCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIH5XVEZUaHJlYWREYXRhKCk7Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSog
YXRvbWljU3RyaW5nVGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0b21p
Y1N0cmluZ1RhYmxlOwotICAgIH0KLQotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBzZXRDdXJyZW50
QXRvbWljU3RyaW5nVGFibGUoQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKQot
ICAgIHsKLSAgICAgICAgQXRvbWljU3RyaW5nVGFibGUqIG9sZEF0b21pY1N0cmluZ1RhYmxlID0g
bV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7Ci0gICAgICAgIG1fY3VycmVudEF0b21pY1N0cmlu
Z1RhYmxlID0gYXRvbWljU3RyaW5nVGFibGU7Ci0gICAgICAgIHJldHVybiBvbGRBdG9taWNTdHJp
bmdUYWJsZTsKLSAgICB9Ci0KLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2soKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fc3RhY2tCb3VuZHM7Ci0gICAgfQotCi0jaWYgRU5BQkxFKFNUQUNL
X1NUQVRTKQotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiBzdGFja1N0YXRzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3N0YWNrU3RhdHM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2
b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCi0gICAgewotICAgICAgICByZXR1cm4g
bV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNhdmVk
U3RhY2tQb2ludGVyQXRWTUVudHJ5KHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKLSAgICB7
Ci0gICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZN
RW50cnk7Ci0gICAgfQotCi0gICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRT
YXZlZExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCi0gICAgewotICAgICAgICBtX3Nh
dmVkTGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOwotICAgIH0KLQotICAgIHZvaWQqIG1fYXBp
RGF0YSB7IG51bGxwdHIgfTsKLQotcHJpdmF0ZToKLSAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9j
dXJyZW50QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07Ci0gICAgQXRvbWljU3RyaW5nVGFi
bGUqIG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21pY1N0
cmluZ1RhYmxlRGVzdHJ1Y3RvciBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciB7IG51bGxw
dHIgfTsKLQotICAgIFN0YWNrQm91bmRzIG1fc3RhY2tCb3VuZHM7Ci0jaWYgRU5BQkxFKFNUQUNL
X1NUQVRTKQotICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzIG1fc3RhY2tTdGF0czsKLSNl
bmRpZgotICAgIHZvaWQqIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgeyBudWxscHRyIH07
Ci0gICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKLQotI2lmIEhBVkUoRkFTVF9UTFMpCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBXVEZUaHJlYWREYXRhJiBjcmVhdGVBbmRSZWdp
c3RlckZvckdldHNwZWNpZmljRGlyZWN0KCk7Ci0jZWxzZQotICAgIHN0YXRpYyBXVEZfRVhQT1JU
REFUQSBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPiogc3RhdGljRGF0YTsKLSNlbmRpZgot
Ci0gICAgZnJpZW5kIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKTsKLSAgICBmcmllbmQg
Y2xhc3MgQXRvbWljU3RyaW5nVGFibGU7Ci19OwotCi1pbmxpbmUgV1RGVGhyZWFkRGF0YSYgd3Rm
VGhyZWFkRGF0YSgpCi17Ci0gICAgLy8gV1JUIFdlYkNvcmU6Ci0gICAgLy8gICAgV1RGVGhyZWFk
RGF0YSBpcyB1c2VkIG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1
c2VkCi0gICAgLy8gICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9y
IHN5bmNocm9uaXphdGlvbiBoZXJlLgotICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKLSAgICAv
LyAgICB3dGZUaHJlYWREYXRhKCkgaXMgaW5pdGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVU
aHJlYWRpbmcoKSwgZW5zdXJpbmcKLSAgICAvLyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQg
aW4gYSBwdGhyZWFkX29uY2UgbG9ja2VkIGNvbnRleHQuCi0jaWYgIUhBVkUoRkFTVF9UTFMpCi0g
ICAgaWYgKCFXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhKQotICAgICAgICBXVEZUaHJlYWREYXRh
OjpzdGF0aWNEYXRhID0gbmV3IFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+OwotICAgIHJl
dHVybiAqKldURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7Ci0jZWxzZQotICAgIGlmIChXVEZUaHJl
YWREYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KF9wdGhyZWFkX2dldHNw
ZWNpZmljX2RpcmVjdChXVEZfVEhSRUFEX0RBVEFfS0VZKSkpCi0gICAgICAgIHJldHVybiAqZGF0
YTsKLSAgICByZXR1cm4gV1RGVGhyZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVj
aWZpY0RpcmVjdCgpOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBX
VEY6OldURlRocmVhZERhdGE7Ci11c2luZyBXVEY6Ond0ZlRocmVhZERhdGE7Ci11c2luZyBXVEY6
OkF0b21pY1N0cmluZ1RhYmxlOwotCi0jZW5kaWYgLy8gV1RGVGhyZWFkRGF0YV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggYTRlMDNkZTNhZjY1N2M2OWY3NGQxNjI1MWYw
MDA3MzkxMzZhNTM0NC4uMmEwNjUxMjgzYTk3MjcxZTU3NmEyMjJkZGYwMjMyMGQwNmEwZDJkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKIAotI2luY2x1ZGUg
IkludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisj
aW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CisKICNpbmNsdWRlICJkdG9hLmgi
CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5j
cHAKaW5kZXggMzUyMjQ4NWQ3Yjg0NzNjYzgwZTUyNDBhNzMyYTA1NTNjNDhiYzM0Mi4uMDYzZTRl
ZWI3ZTU3ZTVjZDg1YjBhMTcxOTU0ZDM4OTI0YzE3Nzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZ0ltcGwuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiU3RyaW5n
SGFzaC5oIgogI2luY2x1ZGUgIlN0cmluZ1ByaW50U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGhyZWFk
aW5nLmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L1VURjguaD4KIAogI2lmIFVTRShXRUJfVEhSRUFEKQpAQCAtNzIsNyArNzEsNyBAQCB1c2luZyBT
dHJpbmdUYWJsZUltcGwgPSBIYXNoU2V0PFN0cmluZ0ltcGwqPjsKIAogc3RhdGljIEFMV0FZU19J
TkxJTkUgU3RyaW5nVGFibGVJbXBsJiBzdHJpbmdUYWJsZSgpCiB7Ci0gICAgcmV0dXJuIHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpLT50YWJsZSgpOworICAgIHJldHVybiBUaHJl
YWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpLT50YWJsZSgpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKaW5kZXggZmU4YTQ4ODRkYjdlNjc4ZGVkNmFmMzJkZDQz
NzEyZTU5NWYzYjkzNS4uZjZkNzhmMmJlNmY0OGYyYWE2ODJjMDVkMTBkMjQ2NDY4YjBjMjRmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKQEAgLTI1LDExICsy
NSwxMSBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6
Y3JlYXRlKFdURlRocmVhZERhdGEmIGRhdGEpCit2b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVh
dGUoVGhyZWFkJiB0aHJlYWQpCiB7CiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgLy8gT24gaU9T
LCBvbmUgQXRvbWljU3RyaW5nVGFibGUgaXMgc2hhcmVkIGJldHdlZW4gdGhlIG1haW4gVUkgdGhy
ZWFkIGFuZCB0aGUgV2ViVGhyZWFkLgpAQCAtMzcsMTcgKzM3LDE3IEBAIHZvaWQgQXRvbWljU3Ry
aW5nVGFibGU6OmNyZWF0ZShXVEZUaHJlYWREYXRhJiBkYXRhKQogCiAgICAgYm9vbCBjdXJyZW50
VGhyZWFkSXNXZWJUaHJlYWQgPSBpc1dlYlRocmVhZCgpOwogICAgIGlmIChjdXJyZW50VGhyZWFk
SXNXZWJUaHJlYWQgfHwgaXNVSVRocmVhZCgpKQotICAgICAgICBkYXRhLm1fZGVmYXVsdEF0b21p
Y1N0cmluZ1RhYmxlID0gc2hhcmVkU3RyaW5nVGFibGU7CisgICAgICAgIHRocmVhZC5tX2RlZmF1
bHRBdG9taWNTdHJpbmdUYWJsZSA9IHNoYXJlZFN0cmluZ1RhYmxlOwogICAgIGVsc2UKLSAgICAg
ICAgZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJs
ZTsKKyAgICAgICAgdGhyZWFkLm1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlID0gbmV3IEF0b21p
Y1N0cmluZ1RhYmxlOwogCiAgICAgLy8gV2UgZG8gdGhlIGZvbGxvd2luZyBzbyB0aGF0IGl0cyBk
ZXN0cnVjdGlvbiBoYXBwZW5zIG9ubHkKICAgICAvLyBvbmNlIC0gb24gdGhlIG1haW4gVUkgdGhy
ZWFkLgogICAgIGlmICghY3VycmVudFRocmVhZElzV2ViVGhyZWFkKQotICAgICAgICBkYXRhLm1f
YXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7
CisgICAgICAgIHRocmVhZC5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0
cmluZ1RhYmxlOjpkZXN0cm95OwogI2Vsc2UKLSAgICBkYXRhLm1fZGVmYXVsdEF0b21pY1N0cmlu
Z1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOwotICAgIGRhdGEubV9hdG9taWNTdHJpbmdU
YWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJveTsKKyAgICB0aHJlYWQu
bV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAg
dGhyZWFkLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6
OmRlc3Ryb3k7CiAjZW5kaWYgLy8gVVNFKFdFQl9USFJFQUQpCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nVGFibGUuaAppbmRleCA5NDRhZTkyYmRlYzQ0MzliZjA3MDEyMWI3OGEz
NWY1YTg0ZmM0MDlkLi5kM2JjOWNlNWY2ZTA3Mjc3NTZjYzllYmJlNGYxMjUzN2ZhYWIyYjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oCkBAIC0yNCwxOSArMjQsMTkg
QEAKICNkZWZpbmUgV1RGX0F0b21pY1N0cmluZ1RhYmxlX2gKIAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdJbXBsOwor
Y2xhc3MgVGhyZWFkOwogCiBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BdG9taWNT
dHJpbmdUYWJsZSgpOwogCi0gICAgc3RhdGljIHZvaWQgY3JlYXRlKFdURlRocmVhZERhdGEmKTsK
KyAgICBzdGF0aWMgdm9pZCBjcmVhdGUoVGhyZWFkJik7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBs
Kj4mIHRhYmxlKCkgeyByZXR1cm4gbV90YWJsZTsgfQogCiBwcml2YXRlOgpAQCAtNDYsNSArNDYs
NiBAQCBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZSB7CiB9OwogCiB9Cit1c2luZyBXVEY6OkF0b21p
Y1N0cmluZ1RhYmxlOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcAppbmRleCA4YTAyMzBiYWJmOTVjYmE5N2Y5YThmODYyODE5YWI0MGQxN2ZjZTQy
Li42M2IxZTBlNTc0MTFkMDYzM2M0MTk4ZjRhZTA5MzUzYTAzNTUxMjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYjhmYWY1YThkNzkxMDJmMmVmZGQ4YmRhNjQzMWMwNzdi
ZmYxM2JmMC4uNzczODI5ZDVlN2I0ZWIzM2Q3YmU4MzgwNzE2ZjlhMzMzNzI2ZjRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
cGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvV1RG
VGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTY2LDcgKzY1LDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xv
YmFsRGF0YSgpCiAgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9u
Y2UgcGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKICAgICAvLyBwb2lu
dCB0byBjYWxsIG1ldGhvZHMgdGhhdCBpbnRlcm5hbGx5IHBlcmZvcm0gYSBvbmUtdGltZSBpbml0
aWFsaXphdGlvbiB0aGF0IGlzIG5vdAogICAgIC8vIHRocmVhZHNhZmUuCi0gICAgd3RmVGhyZWFk
RGF0YSgpOworICAgIFRocmVhZDo6Y3VycmVudCgpOwogICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKaW5kZXggNjZlOGU5
OTFlMTI5NjJiNTRmZDc0MzkyZDk1MmU3MzI4ZmQ2NDA5MC4uZWMyNzExYjUyMDcyNTIzMzI0YTZm
ZjA0N2MzNmJkMzg3MDBlOGFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoVklERU9UT09MQk9YKQogCiAjaW5jbHVk
ZSA8Q29yZU1lZGlhL0NNVGltZS5oPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09T
T2JqZWN0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggNjEyMmI0ZjJjNTBiNjRiYTVjN2ZmYzlkZGUzZjRkYTU2MjlhMDM4
Ny4uYzhmMDVhMWEwYWVkNjAyY2JkOGMwOTRlMGE5NzIwM2FmOWM2MDZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzAyLDcg
KzcwMiw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKIHsKICAgICB3ZWJUaHJlYWRT
dGFydGVkID0gVFJVRTsKIAotICAgIC8vIFRocmVhZEdsb2JhbERhdGEgdG91Y2hlcyBBdG9taWNT
dHJpbmcsIHdoaWNoIHJlcXVpcmVzIFdURlRocmVhZERhdGEgYW5kIFRocmVhZGluZyBpbml0aWFs
aXphdGlvbi4KKyAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIHRvdWNoZXMgQXRvbWljU3RyaW5nLCB3
aGljaCByZXF1aXJlcyBUaHJlYWRpbmcgaW5pdGlhbGl6YXRpb24uCiAgICAgV1RGOjppbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKICAgICAvLyBJbml0aWFsaXplIEF0b21pY1N0cmluZyBvbiB0aGUg
bWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
NDI1YzkyNDhkODcwNDgyN2JiMGUwMzgyMWEyYWU4ZGM4YWFjMGQ3MC4uNjgxYTFlZjc1NDgxMDBk
MWEyOTY2MDllNjJjYjdmOWFmYjYyZTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQoKQogICAgIC8vIFdlIGNhbm5vdCBsZXQgYW55IG9iamVjdHMgc3Vydml2ZSBwYXN0IHRo
cmVhZCBleGl0LCBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIHJ1biBHQyBvciBvdGhlcndp
c2UgZGVzdHJveSB0aGVtLgogICAgIHdvcmtlckdsb2JhbFNjb3BlVG9EZWxldGUgPSBudWxscHRy
OwogCi0gICAgLy8gQ2xlYW4gdXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RG
OjpXVEZUaHJlYWREYXRhIGdvZXMgYXdheSEKKyAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpUaHJl
YWRHbG9iYWxEYXRhIGJlZm9yZSBXVEY6OlRocmVhZCBnb2VzIGF3YXkhCiAgICAgdGhyZWFkR2xv
YmFsRGF0YSgpLmRlc3Ryb3koKTsKIAogICAgIC8vIFRoZSB0aHJlYWQgb2JqZWN0IG1heSBiZSBh
bHJlYWR5IGRlc3Ryb3llZCBmcm9tIG5vdGlmaWNhdGlvbiBub3csIGRvbid0IHRyeSB0byBhY2Nl
c3MgInRoaXMiLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316871</attachid>
            <date>2017-08-01 10:42:38 -0700</date>
            <delta_ts>2017-08-01 11:14:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174716-20170802024237.patch</filename>
            <type>text/plain</type>
            <size>73581</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmQxOWY2ODg2MWQ1MjFjMmE5NmJhNWEwNDg3YzA0ZjU1ZDI1MjU2Li4yM2Q5MmM2NjA4ODc2YTQ0
NThjZDgyZTNmYjMyZmYyMzE1MmQ0MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNy0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgVXNlIFRocmVhZDo6Y3Vy
cmVudCgpIGluc3RlYWQuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAo
K1tKU0NvbnRleHQgY3VycmVudENvbnRleHRdKToKKyAgICAgICAgKCtbSlNDb250ZXh0IGN1cnJl
bnRUaGlzXSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjdXJyZW50Q2FsbGVlXSk6CisgICAgICAg
ICgrW0pTQ29udGV4dCBjdXJyZW50QXJndW1lbnRzXSk6CisgICAgICAgICgtW0pTQ29udGV4dCBi
ZWdpbkNhbGxiYWNrV2l0aERhdGE6Y2FsbGVlVmFsdWU6dGhpc1ZhbHVlOmFyZ3VtZW50Q291bnQ6
YXJndW1lbnRzOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgZW5kQ2FsbGJhY2tXaXRoRGF0YTpd
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpyZXF1ZXN0
Q29sbGVjdGlvbik6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6Cisg
ICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1YXRlTW9k
dWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OmxpbmtBbmRF
dmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6CisgICAgICAgICog
cnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6Y2hlY2tD
dXJyZW50QXRvbWljU3RyaW5nVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkaWRBY3F1aXJl
TG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAgICAgICAg
KEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJB
bGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OnVwZGF0
ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmNvbW1pdHRlZFN0YWNrQnl0ZUNvdW50
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjppc1NhZmVUb1Jl
Y3Vyc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUv
Vk1JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTdGFja0NhcGFjaXR5Rm9yKToK
KyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
clBhdHRlcm5Db25zdHJ1Y3Rvcjo6aXNTYWZlVG9SZWN1cnNlIGNvbnN0KToKKwogMjAxNy0wNy0z
MSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgc29tZSBV
TkxJS0VMWXMgdG8gb3BlcmF0aW9uT3B0aW1pemUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDVmMDJhYmVkNjk5ZDVhOGVh
OThlMzAwOTQ2NTA1ZjgzOTY4ZGZlOC4uZThlMTk3MWM1YTIyZTJkOTRjOTgxZGY5MDMzYjhkNDI5
YzMzMTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxNy0wOC0wMSAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBNZXJnZSBXVEZUaHJlYWREYXRhIHRv
IFRocmVhZDo6Y3VycmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAg
ICAgV2UgcGxhY2VkIHRocmVhZCBzcGVjaWZpYyBkYXRhIGluIFdURlRocmVhZERhdGEgcHJldmlv
dXNseS4gQnV0IG5vdywgd2UgaGF2ZSBhIG5ldyBnb29kIHBsYWNlCisgICAgICAgIHRvIHB1dCB0
aHJlYWQgc3BlY2lmaWMgZGF0YTogV1RGOjpUaHJlYWQuIEJlZm9yZSB0aGlzIHBhdGNoLCBXVEZU
aHJlYWREYXRhIGFuZCBXVEY6OlRocmVhZAorICAgICAgICBzb21ldGltZXMgaGF2ZSB0aGUgY29t
cGxldGVseSBzYW1lIGZpZWxkcyAobV9zdGFjayBldGMuKSBkdWUgdG8gaW5pdGlhbGl6YXRpb24g
b3JkZXIgbGltaXRhdGlvbnMuCisgICAgICAgIFRoaXMgcGF0Y2ggbWVyZ2VzIFdURlRocmVhZERh
dGEgdG8gV1RGOjpUaHJlYWQuIFdlIGFwcGx5IFdURlRocmVhZERhdGEncyBpbml0aWFsaXphdGlv
biBzdHlsZQorICAgICAgICB0byBXVEY6OlRocmVhZC4gU28sIFdURjo6VGhyZWFkJ3MgaG9sZGVy
IG5vdyB1c2VzIGZhc3QgVExTIGZvciBkYXJ3aW4gZW52aXJvbm1lbnQuIFRodXMsCisgICAgICAg
IFRocmVhZDo6Y3VycmVudCgpIGFjY2VzcyBpcyBub3cgYWNjZWxlcmF0ZWQuIEFuZCBXVEY6OlRo
cmVhZDo6Y3VycmVudCgpIGNhbiBiZSBhY2Nlc3NlZCBldmVuCisgICAgICAgIGJlZm9yZSBjYWxs
aW5nIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiB3dGYvTG9ja0FsZ29yaXRobS5oOgorICAgICAgICAqIHd0Zi9Mb2NrQWxnb3JpdGhtSW5saW5l
cy5oOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1BhcmtpbmdM
b3QuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1N0YXRzLmNwcDoKKyAgICAgICAgKFdURjo6U3Rh
Y2tTdGF0czo6UGVyVGhyZWFkU3RhdHM6OlBlclRocmVhZFN0YXRzKToKKyAgICAgICAgKFdURjo6
U3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6Q2hlY2tQb2ludCk6CisgICAgICAgIChXVEY6OlN0YWNr
U3RhdHM6OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KToKKyAgICAgICAgKFdURjo6U3RhY2tTdGF0
czo6cHJvYmUpOgorICAgICAgICAoV1RGOjpTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50OjpM
YXlvdXRDaGVja1BvaW50KToKKyAgICAgICAgKiB3dGYvVGhyZWFkSG9sZGVyLmNwcDoKKyAgICAg
ICAgKFdURjo6VGhyZWFkSG9sZGVyOjppbml0aWFsaXplQ3VycmVudCk6CisgICAgICAgICogd3Rm
L1RocmVhZEhvbGRlci5oOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OlRocmVhZEhvbGRl
cik6CisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudE1heUJlTnVsbCk6CisgICAg
ICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3VycmVudCk6CisgICAgICAgICogd3RmL1RocmVhZEhv
bGRlclB0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjplbnN1cmVLZXkp
OgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RG
OjpUaHJlYWRIb2xkZXI6OmRlc3RydWN0KToKKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpp
bml0aWFsaXplT25jZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlRocmVhZEhvbGRlcjo6Y3Vy
cmVudCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZEhvbGRlcldpbi5jcHA6CisgICAg
ICAgIChXVEY6OlRocmVhZEhvbGRlcjo6ZW5zdXJlS2V5KToKKyAgICAgICAgKFdURjo6VGhyZWFk
SG9sZGVyOjpjdXJyZW50RHlpbmcpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmluaXRp
YWxpemUpOgorICAgICAgICAoV1RGOjpUaHJlYWRIb2xkZXI6OmluaXRpYWxpemVPbmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6VGhyZWFkSG9sZGVyOjpjdXJyZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFs
aXplSW5UaHJlYWQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmVudHJ5UG9pbnQpOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6ZGlkRXhpdCk6
CisgICAgICAgIChXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcpOgorICAgICAgICAoV1RGOjpUaHJl
YWQ6OmN1cnJlbnRNYXlCZU51bGwpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcu
aDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50KToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjphdG9taWNTdHJpbmdUYWJsZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2V0Q3VycmVudEF0
b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdGFja1N0YXRzKToKKyAg
ICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSk6CisgICAgICAg
IChXVEY6OlRocmVhZDo6c2V0U2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkpOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9wKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpz
ZXRTYXZlZExhc3RTdGFja1RvcCk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjpU
aHJlYWQ6OmNyZWF0ZUN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmN1cnJl
bnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OmNyZWF0ZUN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6
OmN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAq
IHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OnN0cmluZ1RhYmxlKToKKyAgICAgICAgKiB3dGYv
dGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZ1Rh
YmxlOjpjcmVhdGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg6CisK
IDIwMTctMDctMzEgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjIwMDYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkMGEzMTVhYWI0
MjhhZmU0ZjUxZDAyNDZjZTNkZjdlMzIxM2Q4ZjQuLjBmODJjYzZmZDYxNWVhMzZkMTkyMDg5Y2U1
NDBiNjg0NDE2YTQzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0wOC0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBNZXJnZSBX
VEZUaHJlYWREYXRhIHRvIFRocmVhZDo6Y3VycmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBMYW0uCisKKyAgICAgICAgVXNlIFRocmVhZDo6Y3VycmVudCgpIGluc3RlYWQuCisKKyAgICAg
ICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpU
aHJlYWRHbG9iYWxEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWQubW06CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3
b3JrZXJUaHJlYWQpOgorCiAyMDE3LTA4LTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW1dlYklETF0gU3dhcCBhIGN1c3RvbSBhdHRyaWJ1dGUgZm9yIGEgY3VzdG9t
IG1hcmsgZnVuY3Rpb24gZm9yIEhUTUxUZW1wbGF0ZUVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHQubW0KaW5kZXggNWIxMDBjNzVlMTViOWY0NzY2Mjk0NGFhMGZjNWJiOGRk
MDlmNDZjNS4uYmFlYjE3OGQ0ODFkYmVkZjJiZWQzZGY2ZDRlNjNmZDE4MTU2Yzk5OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE0MSwxNSArMTQxLDE1IEBAIC0g
KEpTVmFsdWUgKilnbG9iYWxPYmplY3QKIAogKyAoSlNDb250ZXh0ICopY3VycmVudENvbnRleHQK
IHsKLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAg
IENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURh
dGE7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFj
a0RhdGEgKmVudHJ5ID0gKENhbGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgcmV0
dXJuIGVudHJ5ID8gZW50cnktPmNvbnRleHQgOiBuaWw7CiB9CiAKICsgKEpTVmFsdWUgKiljdXJy
ZW50VGhpcwogewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRh
KCk7Ci0gICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEgKil0aHJlYWREYXRh
Lm1fYXBpRGF0YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAg
IENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkLm1fYXBpRGF0YTsK
ICAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBbSlNWYWx1
ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOmVudHJ5LT50aGlzVmFsdWUgaW5Db250ZXh0OltKU0NvbnRl
eHQgY3VycmVudENvbnRleHRdXTsKQEAgLTE1Nyw4ICsxNTcsOCBAQCArIChKU1ZhbHVlICopY3Vy
cmVudFRoaXMKIAogKyAoSlNWYWx1ZSAqKWN1cnJlbnRDYWxsZWUKIHsKLSAgICBXVEZUaHJlYWRE
YXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIENhbGxiYWNrRGF0YSAqZW50
cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFkRGF0YS5tX2FwaURhdGE7CisgICAgVGhyZWFkJiB0
aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBDYWxsYmFja0RhdGEgKmVudHJ5ID0gKENh
bGxiYWNrRGF0YSAqKXRocmVhZC5tX2FwaURhdGE7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjplbnRy
eS0+Y2FsbGVlVmFsdWUgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVudENvbnRleHRdXTsKQEAg
LTE2Niw4ICsxNjYsOCBAQCArIChKU1ZhbHVlICopY3VycmVudENhbGxlZQogCiArIChOU0FycmF5
ICopY3VycmVudEFyZ3VtZW50cwogewotICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3
dGZUaHJlYWREYXRhKCk7Ci0gICAgQ2FsbGJhY2tEYXRhICplbnRyeSA9IChDYWxsYmFja0RhdGEg
Kil0aHJlYWREYXRhLm1fYXBpRGF0YTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOworICAgIENhbGxiYWNrRGF0YSAqZW50cnkgPSAoQ2FsbGJhY2tEYXRhICopdGhyZWFk
Lm1fYXBpRGF0YTsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0y
OTQsMjEgKzI5NCwyMSBAQCAtIChCT09MKWJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOihKU1ZhbHVl
UmVmKWV4Y2VwdGlvblZhbHVlCiAKIC0gKHZvaWQpYmVnaW5DYWxsYmFja1dpdGhEYXRhOihDYWxs
YmFja0RhdGEgKiljYWxsYmFja0RhdGEgY2FsbGVlVmFsdWU6KEpTVmFsdWVSZWYpY2FsbGVlVmFs
dWUgdGhpc1ZhbHVlOihKU1ZhbHVlUmVmKXRoaXNWYWx1ZSBhcmd1bWVudENvdW50OihzaXplX3Qp
YXJndW1lbnRDb3VudCBhcmd1bWVudHM6KGNvbnN0IEpTVmFsdWVSZWYgKilhcmd1bWVudHMKIHsK
LSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOworICAgIFRo
cmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgW3NlbGYgcmV0YWluXTsKLSAg
ICBDYWxsYmFja0RhdGEgKnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0aHJlYWREYXRhLm1f
YXBpRGF0YTsKKyAgICBDYWxsYmFja0RhdGEgKnByZXZTdGFjayA9IChDYWxsYmFja0RhdGEgKil0
aHJlYWQubV9hcGlEYXRhOwogICAgICpjYWxsYmFja0RhdGEgPSAoQ2FsbGJhY2tEYXRhKXsgcHJl
dlN0YWNrLCBzZWxmLCBbc2VsZi5leGNlcHRpb24gcmV0YWluXSwgY2FsbGVlVmFsdWUsIHRoaXNW
YWx1ZSwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBuaWwgfTsKLSAgICB0aHJlYWREYXRhLm1f
YXBpRGF0YSA9IGNhbGxiYWNrRGF0YTsKKyAgICB0aHJlYWQubV9hcGlEYXRhID0gY2FsbGJhY2tE
YXRhOwogICAgIHNlbGYuZXhjZXB0aW9uID0gbmlsOwogfQogCiAtICh2b2lkKWVuZENhbGxiYWNr
V2l0aERhdGE6KENhbGxiYWNrRGF0YSAqKWNhbGxiYWNrRGF0YQogewotICAgIFdURlRocmVhZERh
dGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAgVGhyZWFkJiB0aHJlYWQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKICAgICBzZWxmLmV4Y2VwdGlvbiA9IGNhbGxiYWNrRGF0YS0+cHJl
c2VydmVkRXhjZXB0aW9uOwogICAgIFtjYWxsYmFja0RhdGEtPnByZXNlcnZlZEV4Y2VwdGlvbiBy
ZWxlYXNlXTsKICAgICBbY2FsbGJhY2tEYXRhLT5jdXJyZW50QXJndW1lbnRzIHJlbGVhc2VdOwot
ICAgIHRocmVhZERhdGEubV9hcGlEYXRhID0gY2FsbGJhY2tEYXRhLT5uZXh0OworICAgIHRocmVh
ZC5tX2FwaURhdGEgPSBjYWxsYmFja0RhdGEtPm5leHQ7CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZjY1ZWY4NDFhN2MxZTAwNmEy
ZWFiNzE1MjRmZGRlOGE2YWEyYTI2Ny4uM2Q0YmJlMzZlNjMzODU5MWEzODhjYzY1NGZiMDU4Nzg4
M2RhYjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCBib29sIGlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0YXRlKFZNKiB2bSkKIAogYm9v
bCBpc1ZhbGlkVGhyZWFkU3RhdGUoVk0qIHZtKQogewotICAgIGlmICh2bS0+YXRvbWljU3RyaW5n
VGFibGUoKSAhPSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSkKKyAgICBpZiAo
dm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgIT0gV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNT
dHJpbmdUYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodm0tPmlzU2hh
cmVkSW5zdGFuY2UoKSAmJiAhaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUodm0pKQpA
QCAtMjAyMyw3ICsyMDIzLDcgQEAgSGVhcDo6VGlja2V0IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9u
KEdDUmVxdWVzdCByZXF1ZXN0KQogICAgIHN0b3BJZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIEFT
U0VSVCh2bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBSRUxFQVNF
X0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdU
YWJsZSgpID09IFdURjo6VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAg
ICAgCiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7CiAgICAgLy8gV2UgbWF5
IGJlIGFibGUgdG8gc3RlYWwgdGhlIGNvbm4uIFRoYXQgb25seSB3b3JrcyBpZiB0aGUgY29sbGVj
dG9yIGlzIGRlZmluaXRlbHkgbm90IHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggNWIzMDI2NGM3ZjQxMWUzOGQ1ODBmNTVkNWQ3ZDFk
Njg5YjM2MDFlYi4uODgyM2U2ZjYwMTYxMTJiNDczOWZhMDI4ZjQzMWJjN2U4ZDdjOGIzNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTQxLDE0
ICs0MSwxMyBAQAogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCIKLSNpbmNsdWRlIDx3dGYv
V1RGVGhyZWFkRGF0YS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogYm9vbCBjaGVja1N5bnRheChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSogcmV0dXJu
ZWRFeGNlcHRpb24pCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEo
KS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUo
KSk7CiAKICAgICBQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSA9IFByb2dyYW1FeGVjdXRhYmxl
OjpjcmVhdGUoZXhlYywgc291cmNlKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5j
aGVja1N5bnRheChleGVjKTsKQEAgLTY0LDcgKzYzLDcgQEAgYm9vbCBjaGVja1N5bnRheChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSogcmV0dXJuZWRF
eGMKIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cnNlckVycm9yJiBlcnJvcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRv
bWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICByZXR1
cm4gISFwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVy
KCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CkBA
IC03NCw3ICs3Myw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBU
aHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJv
Z3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmlj
dCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5h
bHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CkBAIC05Miw3ICs5MSw3
IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVu
dFRocmVhZCgpKTsKIAogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwpAQCAtMTY3
LDcgKzE2Niw3IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9k
dWxlKGNvbnN0IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0CiBKU0ludGVybmFsUHJvbWlzZSog
bG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1
bGVOYW1lLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgp
ID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXND
b2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRBbmRFdmFs
dWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNoZXIpOwpAQCAt
MTc4LDcgKzE3Nyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmlu
Z1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9s
Rm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CkBAIC0yMDUsNyArMjA0LDcgQEAgc3RhdGljIEpTSW50
ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0
YXRlKiBleGVjLAogSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgp
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9
PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKICAg
ICByZXR1cm4gbG9hZE1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlwdEZldGNo
ZXIpOwpAQCAtMjE2LDcgKzIxNSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpj
dXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3Jl
YXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CkBAIC0yMzQsNyArMjMzLDcgQEAgSlNJ
bnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTVmFsdWUKIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhy
ZWFkKCkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50
cnlHbG9iYWxPYmplY3QoKTsKQEAgLTI0NCw3ICsyNDMsNyBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFs
dWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
SlNWYQogSlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCku
YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09
IFRocmVhZDo6Y3VycmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNT
RVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAg
IHJldHVybiBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5yZXF1
ZXN0SW1wb3J0TW9kdWxlKGV4ZWMsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IDk5MjU2ZDY1ODkz
NDkwNmIyMjAxY2I1YmRlZWRlNTc3MjJlMjBlZDYuLmQ1NTJkMGIxZjYyODcxNWEyNjM2YWI3NzM3
ZWRmYzYxOTczNGMwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShWTSogdm0pCiB7CiAgICAgLy8gQ2hlY2sgdGhlIGlkZW50aWZp
ZXIgdGFibGUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSB0aHJlYWRzcGVjaWZpYyBtYXRjaGVzIHRo
ZQogICAgIC8vIHZtJ3MgaWRlbnRpZmllciB0YWJsZS4KLSAgICBBU1NFUlRfVU5VU0VEKHZtLCB2
bS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CisgICAgQVNTRVJUX1VOVVNFRCh2bSwgdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
VGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiB9CiAKIHZvaWQgSWRlbnRp
Zmllcjo6Y2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoRXhlY1N0YXRlKiBleGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAppbmRleCA5ZWYxNDNhZDQ4ZTcxZDI4YjE3YmE0MTZmYTNiMTRiY2JkYjc0NWFhLi44NTA3
M2I2ZDI5NWI1OTk2M2EyMTNkNTI0NTViODRiNGFkMTY1NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAtNzUs
OCArNzUsOCBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgICAgICBEaXNhbGxvd1ZN
UmVlbnRyeTo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNh
bXBsZXIoKTsKLSAgICAgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERh
dGEoKTsKLSAgICAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZExhc3RTdGFja1RvcCh0aHJlYWREYXRh
LnN0YWNrKCkub3JpZ2luKCkpOworICAgICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOworICAgICAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tUb3AodGhyZWFkLnN0YWNr
KCkub3JpZ2luKCkpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBXYXNtOjpU
aHVua3M6OmluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCmluZGV4IGJhNmM0NGE1ZGY1MTRkZTUxN2M5YTI1ODc1NjFhOThhOWQ5MjQxMGUuLmMyYzgy
NzZhYzMyOTBlZjE2YzlmY2U0YWZhODRhMzlmNjAwY2IzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMTI3LDkgKzEyNyw5IEBAIHZvaWQgSlNMb2NrOjpk
aWRBY3F1aXJlTG9jaygpCiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJl
YWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgIEFTU0VSVCghbV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlKTsKLSAgICBtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB0aHJlYWREYXRh
LnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX3ZtLT5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
KyAgICBtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUgPSB0aHJlYWQuc2V0Q3VycmVudEF0b21pY1N0
cmluZ1RhYmxlKG1fdm0tPmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIEFTU0VSVChtX2VudHJ5
QXRvbWljU3RyaW5nVGFibGUpOwogCiAgICAgaWYgKG1fdm0tPmhlYXAuaGFzQWNjZXNzKCkpCkBA
IC0xNDMsNyArMTQzLDcgQEAgdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKICAgICB2b2lk
KiBwID0gJnA7IC8vIEEgcHJveHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCiAgICAg
bV92bS0+c2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5KHApOwogCi0gICAgbV92bS0+c2V0TGFzdFN0
YWNrVG9wKHRocmVhZERhdGEuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgbV92bS0+c2V0TGFz
dFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKIAogICAgIG1fdm0tPmhlYXAu
bWFjaGluZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQog
ICAgIH0KIAogICAgIGlmIChtX2VudHJ5QXRvbWljU3RyaW5nVGFibGUpIHsKLSAgICAgICAgd3Rm
VGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2VudHJ5QXRvbWljU3Ry
aW5nVGFibGUpOworICAgICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3Ry
aW5nVGFibGUobV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsKICAgICAgICAgbV9lbnRyeUF0b21p
Y1N0cmluZ1RhYmxlID0gbnVsbHB0cjsKICAgICB9CiB9CkBAIC0yMjUsOSArMjI1LDkgQEAgdW5z
aWduZWQgSlNMb2NrOjpkcm9wQWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyKQogCiAgICAg
ZHJvcHBlci0+c2V0RHJvcERlcHRoKG1fbG9ja0Ryb3BEZXB0aCk7CiAKLSAgICBXVEZUaHJlYWRE
YXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwotICAgIHRocmVhZERhdGEuc2V0U2F2
ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkobV92bS0+c3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOwot
ICAgIHRocmVhZERhdGEuc2V0U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0YWNrVG9wKCkp
OworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgdGhyZWFkLnNl
dFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgp
KTsKKyAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0YWNrVG9wKCkp
OwogCiAgICAgdW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCA9IG1fbG9ja0NvdW50OwogICAgIHVu
bG9jayhkcm9wcGVkTG9ja0NvdW50KTsKQEAgLTI1Miw5ICsyNTIsOSBAQCB2b2lkIEpTTG9jazo6
Z3JhYkFsbExvY2tzKERyb3BBbGxMb2NrcyogZHJvcHBlciwgdW5zaWduZWQgZHJvcHBlZExvY2tD
b3VudCkKIAogICAgIC0tbV9sb2NrRHJvcERlcHRoOwogCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhy
ZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKLSAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZN
RW50cnkodGhyZWFkRGF0YS5zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICBtX3Zt
LT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkRGF0YS5zYXZlZExhc3RTdGFja1RvcCgpKTsKKyAgICBU
aHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIG1fdm0tPnNldFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSh0aHJlYWQuc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7CisgICAg
bV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKIH0KIAog
SlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IGM5MWRhZWNiY2RkNjVhOTZkNjMzZjMzMTUzZDU0
YTk0OWFkNjU3M2IuLmRlYTA1MDI4Y2Q3MzVlYjYzOTE3NDcwYzE1MjJiMTgyNDVkZTU3NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC0yNSw3ICsyNSw3IEBACiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZ1RhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDEyNTEwMjQzNDY0Mzc3YTQ0OWFmZWNiYzU5OWZlOTg0MjcwOWZlN2EuLjA2
OTU5YmE0NjVlMTkyYmU2M2E4MTg4ZDlmYzIzNzdmN2NlOTY5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTExNCw3ICsxMTQsNiBAQAogI2luY2x1ZGUgPHd0Zi9TaW1w
bGVTdGF0cy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3lt
Ym9sUmVnaXN0cnkuaD4KIApAQCAtMTc2LDcgKzE3NSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHRvcFZNRW50cnlGcmFtZShudWxscHRyKQogICAg
ICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKICAgICAsIHByb21pc2VEZWZl
cnJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvbWlzZURlZmVycmVkVGltZXI+KCp0aGlzKSkK
LSAgICAsIG1fYXRvbWljU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWRE
YXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKKyAgICAs
IG1fYXRvbWljU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQo
KS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxlKQogICAgICwgcHJv
cGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQogICAgICwg
bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKHN0ZDo6bWFrZV91
bmlxdWU8U2ltcGxlU3RhdHM+KCkpCkBAIC0yMTEsMTMgKzIxMCwxMyBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX3NoYWRvd0NoaWNrZW4oc3RkOjpt
YWtlX3VuaXF1ZTxTaGFkb3dDaGlja2VuPigpKQogewogICAgIGludGVycHJldGVyID0gbmV3IElu
dGVycHJldGVyKCp0aGlzKTsKLSAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEo
KS5zdGFjaygpOworICAgIFN0YWNrQm91bmRzIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3Rh
Y2soKTsKICAgICB1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShPcHRpb25zOjpzb2Z0UmVzZXJ2
ZWRab25lU2l6ZSgpKTsKICAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2luKCkpOwogCiAg
ICAgLy8gTmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50IGhl
cmUKICAgICBKU0xvY2tIb2xkZXIgbG9jayh0aGlzKTsKLSAgICBBdG9taWNTdHJpbmdUYWJsZSog
ZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShtX2F0b21pY1N0cmluZ1RhYmxlKTsKKyAgICBBdG9taWNTdHJp
bmdUYWJsZSogZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gVGhyZWFkOjpjdXJyZW50
KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKG1fYXRvbWljU3RyaW5nVGFibGUpOwogICAg
IHByb3BlcnR5TmFtZXMgPSBuZXcgQ29tbW9uSWRlbnRpZmllcnModGhpcyk7CiAgICAgc3RydWN0
dXJlU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMp
KTsKICAgICBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZVJh
cmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CkBAIC0yNzAsNyAr
MjY5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2ZVN0ZEZ1bmN0aW9u
Q2VsbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNtYWxsU3Ry
aW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKLSAgICB3dGZUaHJlYWREYXRh
KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdU
YWJsZSk7CisgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxl
KGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CiAKICNpZiBFTkFCTEUoSklUKQogICAg
IGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+KCk7CkBAIC02NzIsNyArNjcx
LDcgQEAgaW5saW5lIHZvaWQgVk06OnVwZGF0ZVN0YWNrTGltaXRzKCkKICAgICB2b2lkKiBsYXN0
U29mdFN0YWNrTGltaXQgPSBtX3NvZnRTdGFja0xpbWl0OwogI2VuZGlmCiAKLSAgICBjb25zdCBT
dGFja0JvdW5kcyYgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBjb25zdCBT
dGFja0JvdW5kcyYgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwogICAgIHNpemVf
dCByZXNlcnZlZFpvbmVTaXplID0gT3B0aW9uczo6cmVzZXJ2ZWRab25lU2l6ZSgpOwogICAgIC8v
IFdlIHNob3VsZCBoYXZlIGFscmVhZHkgZW5zdXJlZCB0aGF0IE9wdGlvbnM6OnJlc2VydmVkWm9u
ZVNpemUoKSA+PSBtaW5pbXVtUmVzZXJ2ZVpvbmVTaXplIGF0CiAgICAgLy8gb3B0aW9ucyBpbml0
aWFsaXphdGlvbiB0aW1lLCBhbmQgdGhlIG9wdGlvbiB2YWx1ZSBzaG91bGQgbm90IGhhdmUgYmVl
biBjaGFuZ2VkIHRoZXJlYWZ0ZXIuCkBAIC04ODYsOSArODg1LDkgQEAgc2l6ZV90IFZNOjpjb21t
aXR0ZWRTdGFja0J5dGVDb3VudCgpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXaGVuIHVzaW5n
IHRoZSBDIHN0YWNrLCB3ZSBkb24ndCBrbm93IGhvdyBtYW55IHN0YWNrIHBhZ2VzIGFyZSBhY3R1
YWxseQogICAgIC8vIGNvbW1pdHRlZC4gU28sIHdlIHVzZSB0aGUgY3VycmVudCBzdGFjayB1c2Fn
ZSBhcyBhbiBlc3RpbWF0ZS4KLSAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNH
cm93aW5nRG93bndhcmQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCku
aXNHcm93aW5nRG93bndhcmQoKSk7CiAgICAgaW50OF90KiBjdXJyZW50ID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnQ4X3QqPigmY3VycmVudCk7Ci0gICAgaW50OF90KiBoaWdoID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnQ4X3QqPih3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSk7CisgICAgaW50
OF90KiBoaWdoID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihUaHJlYWQ6OmN1cnJlbnQoKS5z
dGFjaygpLm9yaWdpbigpKTsKICAgICByZXR1cm4gaGlnaCAtIGN1cnJlbnQ7CiAjZWxzZQogICAg
IHJldHVybiBDTG9vcFN0YWNrOjpjb21taXR0ZWRCeXRlQ291bnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IGVlMjMyYTdmMjFjZWNkMDFkZjdlOTMyZjhiNTJlNzRlM2U0OGZh
NmQuLjlmYjRkOGJlNDJjMWY3OGQxZWIwZTUwOWRiYTI5MzQxNmYzYmRmNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjgsNyArNjgsNiBAQAogI2luY2x1ZGUgPHd0Zi9TdG9w
d2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMjQzLDcgKzI0Miw3
IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERv
dWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgLy8gV2ViQ29yZSBoYXMgYSBvbmUtdG8tb25l
IG1hcHBpbmcgb2YgdGhyZWFkcyB0byBWTXM7CiAgICAgLy8gZWl0aGVyIGNyZWF0ZSgpIG9yIGNy
ZWF0ZUxlYWtlZCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlCiAgICAgLy8gb24gYSB0aHJl
YWQsIHRoaXMgaXMgdGhlICdkZWZhdWx0JyBWTSAoaXQgdXNlcyB0aGUKLSAgICAvLyB0aHJlYWQn
cyBkZWZhdWx0IHN0cmluZyB1bmlxdWluZyB0YWJsZSBmcm9tIHd0ZlRocmVhZERhdGEpLgorICAg
IC8vIHRocmVhZCdzIGRlZmF1bHQgc3RyaW5nIHVuaXF1aW5nIHRhYmxlIGZyb20gVGhyZWFkOjpj
dXJyZW50KCkpLgogICAgIC8vIEFQSSBjb250ZXh0cyBjcmVhdGVkIHVzaW5nIHRoZSBuZXcgY29u
dGV4dCBncm91cCBhd2FyZSBpbnRlcmZhY2UKICAgICAvLyBjcmVhdGUgQVBJQ29udGV4dEdyb3Vw
IG9iamVjdHMgd2hpY2ggcmVxdWlyZSBsZXNzIGxvY2tpbmcgb2YgSlNDCiAgICAgLy8gdGhhbiB0
aGUgb2xkIHNpbmdsZXRvbiBBUElTaGFyZWQgVk0gY3JlYXRlZCBmb3IgdXNlIGJ5CkBAIC02OTEs
NyArNjkwLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBw
dWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKIAogICAgIGJvb2wgaXNTYWZlVG9SZWN1
cnNlKHZvaWQqIHN0YWNrTGltaXQpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQod3RmVGhy
ZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgICAgICB2
b2lkKiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJmN1cnIpOwogICAgICAgICByZXR1
cm4gY3VyciA+PSBzdGFja0xpbWl0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCmluZGV4IGMyZDliZGExODhjNDc3MjAyNTZkNDAzMDY0
ODI4NmVjNDVlMzFjNTkuLmQxMWE4ZmZhNjZkYjVmZTMwZmI5ZjQ5ZjQ1MzEzODM2Yjc4ZDIzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcApA
QCAtNDEsNyArNDEsNyBAQCBWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgQVNTRVJUKCFEaXNhbGxvd1ZNUmVlbnRyeTo6aXNJbkVmZmVjdE9uQ3VycmVu
dFRocmVhZCgpKTsKLSAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5n
RG93bndhcmQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93
aW5nRG93bndhcmQoKSk7CiAgICAgaWYgKCF2bS5lbnRyeVNjb3BlKSB7CiAgICAgICAgIHZtLmVu
dHJ5U2NvcGUgPSB0aGlzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5l
cy5oCmluZGV4IDVhNzc2MTk1MGUwY2Y2YjI4ODU2MDE5MzFhZjZiNzFhM2JlMDJkNzguLmJjMGMy
NWY5MWUyYzE3NjFhMjFjYTIwZWIwODgyYTA5M2EyMTUxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogYm9vbCBWTTo6ZW5zdXJlU3RhY2tDYXBhY2l0eUZvcihSZWdpc3RlciogbmV3VG9wT2ZTdGFj
aykKIHsKICNpZiBFTkFCTEUoSklUKQotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2so
KS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkuc3Rh
Y2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICByZXR1cm4gbmV3VG9wT2ZTdGFjayA+PSBt
X3NvZnRTdGFja0xpbWl0OwogI2Vsc2UKICAgICByZXR1cm4gZW5zdXJlU3RhY2tDYXBhY2l0eUZv
ckNMb29wKG5ld1RvcE9mU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uY3BwCmluZGV4IDNhMTEwOTBkMTkwOTNjY2ViZTgwOWJjNzJkM2E2YTUwMmU5YzRiNWQu
LjcyMjJjYzA0NGYwYWRjOTg3ODBhOTlmMDZhM2U0OWJiNDIzZGViODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTMyLDggKzMyLDggQEAKICNpbmNs
dWRlICJZYXJyQ2Fub25pY2FsaXplLmgiCiAjaW5jbHVkZSAiWWFyclBhcnNlci5oIgogI2luY2x1
ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCkBAIC04ODIsNyArODgyLDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25z
dHJ1Y3RvciB7CiAgICAgewogICAgICAgICBpZiAoIW1fc3RhY2tMaW1pdCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNH
cm93aW5nRG93bndhcmQoKSk7CisgICAgICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgICAgICBpbnQ4X3QqIGN1cnIgPSByZWludGVy
cHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsKICAgICAgICAgaW50OF90KiBsaW1pdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50OF90Kj4obV9zdGFja0xpbWl0KTsKICAgICAgICAgcmV0dXJuIGN1cnIg
Pj0gbGltaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
YjgzZmE1ZWJmMzg0Zjk2NDFjZGUyMWFlYmE2MWZiNzZmYmEzOTY1Li5hZTY5Njk4MzZhYTRmZDYw
ODg1NzIxYTNkMGM1OGZlYjhlY2IzODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyMyw3ICsxMjMsNiBAQAogCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIz
RkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1
bHQuY3BwICovOyB9OwogCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcz
NTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCAqLzsgfTsKIAkJQThBNDc0Njkx
NTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThBNDczNTcxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3BwICov
OyB9OwotCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QTE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi87IH07CiAJCUFEODlCNkI3MUU2NDE1
MDgwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4OUI2QjUxRTY0MTUwODAwOTA3MDdGIC8q
IE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi87IH07CiAJCUFEODlCNkJBMUU2NDE1MEYwMDkw
NzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLzsgfTsKIAkJQURGMkNFNjcxRTM5RjEwNjAw
Njg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnRDb2NvYS5jcHAgKi87IH07CkBAIC01MTUsOCArNTE0LDYgQEAKIAkJQThBNDcz
NzAxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNzEx
NTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWZWN0b3JUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWTVRhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8qIGNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlBNDcyN0YxNTFBODI1QTAwNDEyM0ZGIC8qIERpc2Fs
bG93Q1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dDVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4
OEIgLyogRXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwZWN0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5OSw4ICs5OTYsNiBAQAogCQkJ
CTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAogCQkJCUU0QTBBRDM3
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0QTBBRDM4MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKLQkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCi0JCQkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd3RmOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE0MTEsNyArMTQwNiw2IEBACiAJCQkJRTRBMEFEMzkxQTk2
MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQz
RDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZTE1ZDQ1YzYzYzkwZGQ4M2RhYTFh
NzRiNTBmMzI4NzVlOThhOTIzYi4uNWE3NTY4ODRkNjI3ZTBiMjBjNmVhOThkNDAzYWM0Njg0YzBi
ODY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTE1MCw3ICsxNTAsNiBAQCBzZXQoV1RGX0hF
QURFUlMKICAgICBWYXJpYW50LmgKICAgICBWZWN0b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCi0g
ICAgV1RGVGhyZWFkRGF0YS5oCiAgICAgV2FsbFRpbWUuaAogICAgIFdlYWtQdHIuaAogICAgIFdv
cmRMb2NrLmgKQEAgLTI1NCw3ICsyNTMsNiBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBUaHJlYWRp
bmcuY3BwCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAogICAgIFVVSUQuY3BwCi0g
ICAgV1RGVGhyZWFkRGF0YS5jcHAKICAgICBXYWxsVGltZS5jcHAKICAgICBXb3JkTG9jay5jcHAK
ICAgICBXb3JrUXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3Jp
dGhtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtLmgKaW5kZXggNDUxNDg1NDc3YWNm
NjU2NGI4Mjg3N2QzZTY1OWU5MDI3OGM4OTUxZS4uYjhlOTg3YjkwODE1MGYyNjY3NjAwZmE0MzFm
N2I5MjA0ZWYzYjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9ja0FsZ29yaXRobS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG0uaApAQCAtMjgsNyArMjgsNiBAQAog
CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5oIGIvU291cmNlL1dURi93dGYv
TG9ja0FsZ29yaXRobUlubGluZXMuaAppbmRleCA4NDM4ZDJlOTJhYWQzMWVmZDQ1OTk4M2I5YzUy
YzA5YTA2OWZkMGRhLi4wY2JlNWZhNWZhYzgxMGQ5Y2RmMWM5MzgzN2YzMDFlMmU2OGZjNGVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrQWxnb3JpdGhtSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0xvY2tBbGdvcml0aG1JbmxpbmVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgPHd0Zi9Mb2NrQWxnb3JpdGhtLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmtpbmdMb3Qu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIC8vIEl0J3MgYSBnb29kIGlkZWEgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoaXMgaGVhZGVyIGluIHRvbyBtYW55IHBsYWNlcywgc28gdGhhdCBp
dCdzIHBvc3NpYmxlIHRvIGNoYW5nZQogLy8gdGhlIGxvY2sgYWxnb3JpdGhtIHNsb3cgcGF0aCB3
aXRob3V0IHJlY29tcGlsaW5nIHRoZSB3b3JsZC4gUmlnaHQgbm93IHRoaXMgc2hvdWxkIGJlIGlu
Y2x1ZGVkIGluIHR3bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oIGIv
U291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IDE0YjM0NjczYTBiZDg1NzdjMTI3ZmNm
MjY5YjczMjllYjZiMDA3ZjguLmFiOTIxMzRlZDhiOGUxZTEzN2NmOWU3YzYzYmYxYzI4MjRhZmJl
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuY3BwIGIvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAKaW5kZXggY2Mx
YTIxYjllYTVjY2NjNmYxYWNlNGM5NzQ5ODk5YmJkYTVkN2UxMC4uZjhmZWQ4OGIxZjdjOTkyMDk4
NmE5NGU3YWI2YzU1NzFiOTIzY2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFya2lu
Z0xvdC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlICJIYXNoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJpbnRT
dHJlYW0uaCIKICNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgotI2luY2x1ZGUgIlRocmVhZGlu
Z1ByaW1pdGl2ZXMuaCIKKyNpbmNsdWRlICJUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJWZWN0b3Iu
aCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCiAjaW5jbHVkZSAiV29yZExvY2suaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuY3BwIGIvU291cmNlL1dURi93dGYvU3Rh
Y2tTdGF0cy5jcHAKaW5kZXggMDY0ZjJmMDUyYWFmMzhiOWY4MGE2ZGQ0MTEzMmU2NTQ2ZTQ1N2Y0
Mi4uOGNiNDYyMjExZGY3YWQ1NTdlM2M3YWUyNDhlNTY1MjhiNTE4NmM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvU3RhY2tTdGF0cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tT
dGF0cy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKICNp
bmNsdWRlICJEYXRhTG9nLmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5oIgogCiAvLyBEZWZp
bmUgdGhlIGZvbGxvd2luZyBmbGFnIGlmIHlvdSB3YW50IHRvIGNvbGxlY3Qgc3RhdHMgb24gZXZl
cnkgc2luZ2xlCiAvLyBjaGVja3BvaW50LiBCeSBkZWZhdWx0LCB3ZSBvbmx5IGxvZyBjaGVja3Bv
aW50cyB0aGF0IGVzdGFibGlzaCBuZXcKQEAgLTU5LDcgKzU4LDcgQEAgaW50IFN0YWNrU3RhdHM6
OnNfbWF4TGF5b3V0UmVlbnRyeURlcHRoID0gMDsKIAogU3RhY2tTdGF0czo6UGVyVGhyZWFkU3Rh
dHM6OlBlclRocmVhZFN0YXRzKCkKIHsKLSAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB3
dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSBU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwogICAgIG1fcmVlbnRyeURlcHRoID0gMDsKICAgICBt
X3N0YWNrU3RhcnQgPSAoY2hhciopc3RhY2sub3JpZ2luKCk7CiAgICAgbV9jdXJyZW50Q2hlY2tQ
b2ludCA9IDA7CkBAIC03MCw5ICs2OSw5IEBAIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzOjpQ
ZXJUaHJlYWRTdGF0cygpCiBTdGFja1N0YXRzOjpDaGVja1BvaW50OjpDaGVja1BvaW50KCkKIHsK
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhTdGFja1N0YXRzOjpzX3NoYXJl
ZE11dGV4KTsKLSAgICBXVEZUaHJlYWREYXRhKiB0aHJlYWREYXRhID0gY29uc3RfY2FzdDxXVEZU
aHJlYWREYXRhKj4oJnd0ZlRocmVhZERhdGEoKSk7Ci0gICAgU3RhY2tTdGF0czo6UGVyVGhyZWFk
U3RhdHMmIHQgPSB0aHJlYWREYXRhLT5zdGFja1N0YXRzKCk7Ci0gICAgY29uc3QgU3RhY2tCb3Vu
ZHMmIHN0YWNrID0gdGhyZWFkRGF0YS0+c3RhY2soKTsKKyAgICBUaHJlYWQmIHRocmVhZCA9IFRo
cmVhZDo6Y3VycmVudCgpOworICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhy
ZWFkLnN0YWNrU3RhdHMoKTsKKyAgICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQu
c3RhY2soKTsKIAogICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQgPSBzdGFjay5pc0dyb3dpbmdE
b3dud2FyZCgpOwogICAgIGJvb2wgbmVlZFRvTG9nID0gZmFsc2U7CkBAIC0xMjgsOCArMTI3LDgg
QEAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludDo6Q2hlY2tQb2ludCgpCiBTdGFja1N0YXRzOjpDaGVj
a1BvaW50Ojp+Q2hlY2tQb2ludCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+
IGxvY2soU3RhY2tTdGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhy
ZWFkRGF0YSA9IGNvbnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwot
ICAgIFN0YWNrU3RhdHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0
cygpOworICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgU3RhY2tT
dGF0czo6UGVyVGhyZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOwogCiAgICAgLy8g
UG9wIHRvIHByZXZpb3VzIGNoZWNrcG9pbnQ6CiAgICAgdC5tX2N1cnJlbnRDaGVja1BvaW50ID0g
bV9wcmV2OwpAQCAtMTM4LDcgKzEzNyw3IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6On5DaGVj
a1BvaW50KCkKICAgICAvLyBMb2cgdGhpcyBjaGVja3BvaW50IGlmIG5lZWRlZDoKICNpZiBFTkFC
TEUoVkVSQk9TRV9TVEFDS19TVEFUUykKICAgICBpZiAoIW1fcHJldikgewotICAgICAgICBjb25z
dCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFjaygpOworICAgICAgICBjb25z
dCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKICAgICAgICAgYm9vbCBpc0dy
b3dpbmdEb3dud2FyZCA9IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKICAgICAgICAgY2hh
ciogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpOwpAQCAtMTU5LDkgKzE1
OCw5IEBAIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQ6On5DaGVja1BvaW50KCkKIHZvaWQgU3RhY2tT
dGF0czo6cHJvYmUoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFN0
YWNrU3RhdHM6OnNfc2hhcmVkTXV0ZXgpOwotICAgIFdURlRocmVhZERhdGEqIHRocmVhZERhdGEg
PSBjb25zdF9jYXN0PFdURlRocmVhZERhdGEqPigmd3RmVGhyZWFkRGF0YSgpKTsKLSAgICBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgdCA9IHRocmVhZERhdGEtPnN0YWNrU3RhdHMoKTsKLSAg
ICBjb25zdCBTdGFja0JvdW5kcyYgc3RhY2sgPSB0aHJlYWREYXRhLT5zdGFjaygpOworICAgIFRo
cmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgU3RhY2tTdGF0czo6UGVyVGhy
ZWFkU3RhdHMmIHQgPSB0aHJlYWQuc3RhY2tTdGF0cygpOworICAgIGNvbnN0IFN0YWNrQm91bmRz
JiBzdGFjayA9IHRocmVhZC5zdGFjaygpOwogCiAgICAgYm9vbCBpc0dyb3dpbmdEb3dud2FyZCA9
IHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCk7CiAKQEAgLTIyMCw5ICsyMTksOSBAQCBTdGFja1N0
YXRzOjpMYXlvdXRDaGVja1BvaW50OjpMYXlvdXRDaGVja1BvaW50KCkKICAgICBTdGFja1N0YXRz
Ojpwcm9iZSgpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2soU3RhY2tT
dGF0czo6c19zaGFyZWRNdXRleCk7Ci0gICAgV1RGVGhyZWFkRGF0YSogdGhyZWFkRGF0YSA9IGNv
bnN0X2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KCZ3dGZUaHJlYWREYXRhKCkpOwotICAgIFN0YWNrU3Rh
dHM6OlBlclRocmVhZFN0YXRzJiB0ID0gdGhyZWFkRGF0YS0+c3RhY2tTdGF0cygpOwotICAgIGNv
bnN0IFN0YWNrQm91bmRzJiBzdGFjayA9IHRocmVhZERhdGEtPnN0YWNrKCk7CisgICAgVGhyZWFk
JiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRT
dGF0cyYgdCA9IHRocmVhZC5zdGFja1N0YXRzKCk7CisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0
YWNrID0gdGhyZWFkLnN0YWNrKCk7CiAKICAgICBib29sIGlzR3Jvd2luZ0Rvd253YXJkID0gc3Rh
Y2suaXNHcm93aW5nRG93bndhcmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkSG9sZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5jcHAKaW5kZXggZTJh
MzFiZTk5NzhhOWRlNDJlYmZhMzNiMDcwNmE1MjQzM2JkNzJjYi4uNmFjYmIxYjZhNjNiYjc4MTM1
YTdlOGJkYTNlNDk1MDY3NjQxYzE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFk
SG9sZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuY3BwCkBAIC0zNiwx
MSArMzYsMTggQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiAhSEFWRShGQVNUX1RMUykKIFRo
cmVhZFNwZWNpZmljS2V5IFRocmVhZEhvbGRlcjo6bV9rZXkgPSBJbnZhbGlkVGhyZWFkU3BlY2lm
aWNLZXk7CisjZW5kaWYKIAogVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVyKCkKIHsKICAgICBt
X3RocmVhZC0+ZGlkRXhpdCgpOwogfQogCitUaHJlYWRIb2xkZXImIFRocmVhZEhvbGRlcjo6aW5p
dGlhbGl6ZUN1cnJlbnQoKQoreworICAgIHJldHVybiBpbml0aWFsaXplKFRocmVhZDo6Y3JlYXRl
Q3VycmVudFRocmVhZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRl
ci5oCmluZGV4IGIyZjhkZTY4ODUwYzZhZmRjNzllZmRhZGEwOWJlNmRlZmIxODI2YTkuLjQxOGZj
OGVkNDhjMWVkMmUxNzQxOGU2ZTZhMGQyNDU1Zjg1NGNmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1RocmVhZEhvbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlci5o
CkBAIC0yOSwxMyArMjksMjQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNl
CisvLyBGSVhNRTogV2UgaW50ZW50aW9uYWxseSB1c2UgaWZuZGVmIGd1YXJkcyBpbnN0ZWFkIG9m
IGAjcHJhZ21hIG9uY2VgIGhlcmUgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMuCisvLyBXVEYgaGVh
ZGVycyBhcmUgY29waWVkIHRvIGJ1aWxkIGRpcmVjdG9yeS4gQmFzZWQgb24gaG93IHdlIGluY2x1
ZGUgaGVhZGVycywgV1RGIGhlYWRlcnMgbWF5IGJlCisvLyBpbmNsdWRlZCBmcm9tIGVpdGhlciBz
b3VyY2UgZGlyZWN0b3J5IG9yIGJ1aWxkIGRpcmVjdG9yeS4gQ29tcGlsZXJzIGFyZSBjb25mdXNl
ZCB3aXRoIHRoZWlyCisvLyB0d28gZGlmZmVyZW50IHBhdGhzIGFuZCBpbmNsdWRlIHRoZSBzYW1l
IGZpbGUgdHdpY2UuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0OTg2CisjaWZuZGVmIFRocmVhZEhvbGRlcl9oCisjZGVmaW5lIFRocmVhZEhvbGRlcl9oCiAK
KyNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgVGhyZWFkOwor
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisKIC8vIEhvbGRzIFRocmVhZCBpbiB0aGUgdGhy
ZWFkLXNwZWNpZmljIHN0b3JhZ2UuIFRoZSBkZXN0cnVjdG9yIG9mIHRoaXMgaG9sZGVyIHJlbGlh
Ymx5IGRlc3Ryb3kgVGhyZWFkLgogLy8gRm9yIHB0aHJlYWQsIGl0IGVtcGxveXMgcHRocmVhZHMt
c3BlY2lmaWMgMi1wYXNzIGRlc3RydWN0aW9uIHRvIHJlbGlhYmx5IHJlbW92ZSBUaHJlYWQuCiAv
LyBGb3IgV2luZG93cywgd2UgdXNlIHRocmVhZF9sb2NhbCB0byBkZWZlciB0aHJlYWQgaG9sZGVy
IGRlc3RydWN0aW9uLiBJdCBhc3N1bWVzIHJlZ3VsYXIgVGhyZWFkU3BlY2lmaWMKQEAgLTQzLDE3
ICs1NCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRocmVhZEhvbGRlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkSG9sZGVyKTsKIHB1YmxpYzoKKyAgICBmcmllbmQgY2xh
c3MgVGhyZWFkOworICAgIGZyaWVuZCB2b2lkIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
ICAgIH5UaHJlYWRIb2xkZXIoKTsKIAotICAgIC8vIE9uZSB0aW1lIGluaXRpYWxpemF0aW9uIGZv
ciB0aGlzIGNsYXNzIGFzIGEgd2hvbGUuCi0gICAgLy8gVGhpcyBtZXRob2QgbXVzdCBiZSBjYWxs
ZWQgYmVmb3JlIGluaXRpYWxpemUoKSBhbmQgaXQgaXMgbm90IHRocmVhZC1zYWZlLgotICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVPbmNlKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuZCBwdXRzIGFu
IGluc3RhbmNlIG9mIFRocmVhZEhvbGRlciBpbnRvIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlLgot
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVGhyZWFkJik7Ci0KLSAgICAvLyBSZXR1cm5zIDAg
aWYgdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2Ugd2FzIG5vdCBpbml0aWFsaXplZC4KLSAgICBzdGF0
aWMgVGhyZWFkSG9sZGVyKiBjdXJyZW50KCk7CisgICAgc3RhdGljIFRocmVhZEhvbGRlciYgY3Vy
cmVudCgpOwogCiAgICAgVGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsg
fQogCkBAIC02MiwxMiArNjcsMjkgQEAgY2xhc3MgVGhyZWFkSG9sZGVyIHsKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIFRocmVhZEhvbGRlcihUaHJlYWQmIHRocmVhZCkKLSAgICAgICAgOiBtX3Ro
cmVhZCh0aHJlYWQpCisgICAgVGhyZWFkSG9sZGVyKFJlZjxUaHJlYWQ+JiYgdGhyZWFkKQorICAg
ICAgICA6IG1fdGhyZWFkKFdURk1vdmUodGhyZWFkKSkKICAgICAgICAgLCBtX2lzRGVzdHJveWVk
T25jZShmYWxzZSkKICAgICB7CiAgICAgfQogCisgICAgLy8gQ3JlYXRlcyBhbmQgcHV0cyBhbiBp
bnN0YW5jZSBvZiBUaHJlYWRIb2xkZXIgaW50byB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZS4KKyAg
ICBzdGF0aWMgVGhyZWFkSG9sZGVyJiBpbml0aWFsaXplKFJlZjxUaHJlYWQ+JiYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSG9sZGVyJiBpbml0aWFsaXplQ3VycmVudCgp
OworCisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgLy8gT25lIHRpbWUgaW5pdGlhbGl6YXRpb24g
Zm9yIHRoaXMgY2xhc3MgYXMgYSB3aG9sZS4KKyAgICAvLyBUaGlzIG1ldGhvZCBtdXN0IGJlIGNh
bGxlZCBiZWZvcmUgaW5pdGlhbGl6ZSgpIGFuZCBpdCBpcyBub3QgdGhyZWFkLXNhZmUuCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuc3VyZUtleSgpOworI2VuZGlmCisKKyAg
ICAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2Ugd2FzIG5vdCBpbml0aWFs
aXplZC4KKyAgICBzdGF0aWMgVGhyZWFkSG9sZGVyKiBjdXJyZW50TWF5QmVOdWxsKCk7CisKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSG9sZGVy
KiBjdXJyZW50RHlpbmcoKTsKKyNlbmRpZgorCiAgICAgLy8gVGhpcyB0aHJlYWQtc3BlY2lmaWMg
ZGVzdHJ1Y3RvciBpcyBjYWxsZWQgMiB0aW1lcyB3aGVuIHRocmVhZCB0ZXJtaW5hdGVzOgogICAg
IC8vIC0gZmlyc3QsIHdoZW4gYWxsIHRoZSBvdGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3Rv
cnMgYXJlIGNhbGxlZCwgaXQgc2ltcGx5IHJlbWVtYmVycyBpdCB3YXMgJ2Rlc3Ryb3llZCBvbmNl
JwogICAgIC8vIGFuZCAoMSkgcmUtc2V0cyBpdHNlbGYgaW50byB0aGUgdGhyZWFkLXNwZWNpZmlj
IHNsb3Qgb3IgKDIpIGNvbnN0cnVjdHMgdGhyZWFkIGxvY2FsIHZhbHVlIHRvIGNhbGwgaXQgYWdh
aW4gbGF0ZXIuCkBAIC03Nyw3ICs5OSw0MSBAQCBjbGFzcyBUaHJlYWRIb2xkZXIgewogCiAgICAg
UmVmPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgYm9vbCBtX2lzRGVzdHJveWVkT25jZTsKLSAgICBz
dGF0aWMgVGhyZWFkU3BlY2lmaWNLZXkgbV9rZXk7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAg
c3RhdGljIFdURl9FWFBPUlREQVRBIFRocmVhZFNwZWNpZmljS2V5IG1fa2V5OworI2VuZGlmCiB9
OwogCitpbmxpbmUgVGhyZWFkSG9sZGVyKiBUaHJlYWRIb2xkZXI6OmN1cnJlbnRNYXlCZU51bGwo
KQoreworI2lmICFIQVZFKEZBU1RfVExTKQorICAgIEFTU0VSVChtX2tleSAhPSBJbnZhbGlkVGhy
ZWFkU3BlY2lmaWNLZXkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRIb2xkZXIqPih0
aHJlYWRTcGVjaWZpY0dldChtX2tleSkpOworI2Vsc2UKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGhyZWFkSG9sZGVyKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFU
QV9LRVkpKTsKKyNlbmRpZgorfQorCitpbmxpbmUgVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6
OmN1cnJlbnQoKQoreworICAgIC8vIFdSVCBXZWJDb3JlOgorICAgIC8vICAgIFRocmVhZEhvbGRl
ciBpcyB1c2VkIG9uIG1haW4gdGhyZWFkIGJlZm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2Vk
CisgICAgLy8gICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5
bmNocm9uaXphdGlvbiBoZXJlLgorICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKKyAgICAvLyAg
ICBUaHJlYWRIb2xkZXI6OmVuc3VyZUtleSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJvbSBpbml0
aWFsaXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCisgICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkg
Y2FsbGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgorI2lmICFIQVZFKEZBU1Rf
VExTKQorICAgIGlmIChVTkxJS0VMWShUaHJlYWRIb2xkZXI6Om1fa2V5ID09IEludmFsaWRUaHJl
YWRTcGVjaWZpY0tleSkpCisgICAgICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworI2Vu
ZGlmCisgICAgaWYgKGF1dG8qIGhvbGRlciA9IGN1cnJlbnRNYXlCZU51bGwoKSkKKyAgICAgICAg
cmV0dXJuICpob2xkZXI7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoYXV0byogaG9sZGVyID0g
Y3VycmVudER5aW5nKCkpCisgICAgICAgIHJldHVybiAqaG9sZGVyOworI2VuZGlmCisgICAgcmV0
dXJuIGluaXRpYWxpemVDdXJyZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgorI2VuZGlm
IC8vIFRocmVhZEhvbGRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xk
ZXJQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAK
aW5kZXggMjBlNWU4OGY3NmRhYzJmNzYwNzMzNGE4ZWIzYWFlYWNkYWQ1Zjk2My4uOWFlN2I4ZjQ1
MTVhMWRhNGEyOWJhOWQ2MjczNzlhZGRlZGUwM2M0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkSG9sZGVyUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhv
bGRlclB0aHJlYWRzLmNwcApAQCAtMzYsNDEgKzM2LDQ1IEBACiAKIG5hbWVzcGFjZSBXVEYgewog
Ci12b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZU9uY2UoKQorI2lmICFIQVZFKEZBU1RfVExT
KQordm9pZCBUaHJlYWRIb2xkZXI6OmVuc3VyZUtleSgpCiB7CiAgICAgdGhyZWFkU3BlY2lmaWNL
ZXlDcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCk7CiB9CisjZW5kaWYKIAotVGhyZWFkSG9sZGVyKiBU
aHJlYWRIb2xkZXI6OmN1cnJlbnQoKQorVGhyZWFkSG9sZGVyJiBUaHJlYWRIb2xkZXI6OmluaXRp
YWxpemUoUmVmPFRocmVhZD4mJiB0aHJlYWQpCiB7CisgICAgYXV0byogaG9sZGVyID0gbmV3IFRo
cmVhZEhvbGRlcihXVEZNb3ZlKHRocmVhZCkpOworI2lmICFIQVZFKEZBU1RfVExTKQogICAgIEFT
U0VSVChtX2tleSAhPSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUaHJlYWRIb2xkZXIqPih0aHJlYWRTcGVjaWZpY0dldChtX2tleSkpOwotfQotCi12
b2lkIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShUaHJlYWQmIHRocmVhZCkKLXsKLSAgICBpZiAo
IWN1cnJlbnQoKSkgewotICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVs
ZWFzZSBhc3NlcnQgZXZlcnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4K
LSAgICAgICAgLy8gSGF2aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0IHdl
IHdpbGwgY2F0Y2ggImRpZG4ndCBjYWxsCi0gICAgICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpIHNvb24gZW5vdWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAgICAgQVNTRVJU
KG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgICAgIHRocmVhZFNwZWNp
ZmljU2V0KG1fa2V5LCBuZXcgVGhyZWFkSG9sZGVyKHRocmVhZCkpOwotICAgIH0KKyAgICB0aHJl
YWRTcGVjaWZpY1NldChtX2tleSwgaG9sZGVyKTsKKyNlbHNlCisgICAgX3B0aHJlYWRfc2V0c3Bl
Y2lmaWNfZGlyZWN0KFdURl9USFJFQURfREFUQV9LRVksIGhvbGRlcik7CisgICAgcHRocmVhZF9r
ZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCAmZGVzdHJ1Y3QpOworI2VuZGlmCisgICAg
cmV0dXJuICpob2xkZXI7CiB9CiAKIHZvaWQgVGhyZWFkSG9sZGVyOjpkZXN0cnVjdCh2b2lkKiBk
YXRhKQogewotICAgIFRocmVhZEhvbGRlciogdGhyZWFkSWRlbnRpZmllckRhdGEgPSBzdGF0aWNf
Y2FzdDxUaHJlYWRIb2xkZXIqPihkYXRhKTsKLSAgICBBU1NFUlQodGhyZWFkSWRlbnRpZmllckRh
dGEpOworICAgIFRocmVhZEhvbGRlciogaG9sZGVyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSG9sZGVy
Kj4oZGF0YSk7CisgICAgQVNTRVJUKGhvbGRlcik7CiAKLSAgICBpZiAodGhyZWFkSWRlbnRpZmll
ckRhdGEtPm1faXNEZXN0cm95ZWRPbmNlKSB7Ci0gICAgICAgIGRlbGV0ZSB0aHJlYWRJZGVudGlm
aWVyRGF0YTsKKyAgICBpZiAoaG9sZGVyLT5tX2lzRGVzdHJveWVkT25jZSkgeworICAgICAgICBk
ZWxldGUgaG9sZGVyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkSWRlbnRp
ZmllckRhdGEtPm1faXNEZXN0cm95ZWRPbmNlID0gdHJ1ZTsKKyAgICBob2xkZXItPm1faXNEZXN0
cm95ZWRPbmNlID0gdHJ1ZTsKICAgICAvLyBSZS1zZXR0aW5nIHRoZSB2YWx1ZSBmb3Iga2V5IGNh
dXNlcyBhbm90aGVyIGRlc3RydWN0KCkgY2FsbCBhZnRlciBhbGwgb3RoZXIgdGhyZWFkLXNwZWNp
ZmljIGRlc3RydWN0b3JzIHdlcmUgY2FsbGVkLgotICAgIHRocmVhZFNwZWNpZmljU2V0KG1fa2V5
LCB0aHJlYWRJZGVudGlmaWVyRGF0YSk7CisjaWYgIUhBVkUoRkFTVF9UTFMpCisgICAgQVNTRVJU
KG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgdGhyZWFkU3BlY2lmaWNT
ZXQobV9rZXksIGhvbGRlcik7CisjZWxzZQorICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVj
dChXVEZfVEhSRUFEX0RBVEFfS0VZLCBob2xkZXIpOworICAgIHB0aHJlYWRfa2V5X2luaXRfbnAo
V1RGX1RIUkVBRF9EQVRBX0tFWSwgJmRlc3RydWN0KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRIb2xkZXJXaW4uY3BwCmluZGV4IGYwNmI2MmY2OGUyMDEz
NjM1YzYzNTE1ZThjMGU0ZjE1ZmU0NjE2ZGEuLmJlNGUyZTU1ZTkxNWQwYmVmNjRhNTFkMjNmNjE4
MTRkOThkYTFmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEhvbGRlcldpbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyV2luLmNwcApAQCAtNDksMjIgKzQ5
LDE2IEBAIHN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIFRocmVhZEhvbGRlcio+JiB0
aHJlYWRNYXAoKQogICAgIHJldHVybiBtYXAuZ2V0KCk7CiB9CiAKLXZvaWQgVGhyZWFkSG9sZGVy
Ojppbml0aWFsaXplT25jZSgpCit2b2lkIFRocmVhZEhvbGRlcjo6ZW5zdXJlS2V5KCkKIHsKICAg
ICB0aHJlYWRNYXBNdXRleCgpOwogICAgIHRocmVhZE1hcCgpOwogICAgIHRocmVhZFNwZWNpZmlj
S2V5Q3JlYXRlKCZtX2tleSwgZGVzdHJ1Y3QpOwogfQogCi1UaHJlYWRIb2xkZXIqIFRocmVhZEhv
bGRlcjo6Y3VycmVudCgpCitUaHJlYWRIb2xkZXIqIFRocmVhZEhvbGRlcjo6Y3VycmVudER5aW5n
KCkKIHsKICAgICBBU1NFUlQobV9rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKLSAg
ICBUaHJlYWRIb2xkZXIqIGhvbGRlciA9IHN0YXRpY19jYXN0PFRocmVhZEhvbGRlcio+KHRocmVh
ZFNwZWNpZmljR2V0KG1fa2V5KSk7Ci0gICAgaWYgKGhvbGRlcikgewotICAgICAgICBBU1NFUlQo
aG9sZGVyICE9IEludmFsaWRUaHJlYWRIb2xkZXIpOwotICAgICAgICByZXR1cm4gaG9sZGVyOwot
ICAgIH0KLQogICAgIC8vIEFmdGVyIEZMUyBpcyBkZXN0cm95ZWQsIHRoaXMgbWFwIG9mZmVycyB0
aGUgdmFsdWUgdW50aWwgdGhlIHNlY29uZCB0aHJlYWQgZXhpdCBjYWxsYmFjayBpcyBjYWxsZWQu
CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcih0aHJlYWRNYXBNdXRleCgp
KTsKICAgICByZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGN1cnJlbnRUaHJlYWQoKSk7CkBAIC04MCwy
MSArNzQsMTggQEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkSG9sZGVyOjpnZXQoVGhyZWFkSWRlbnRp
ZmllciBpZCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBUaHJlYWRIb2xkZXI6Omlu
aXRpYWxpemUoVGhyZWFkJiB0aHJlYWQpCitUaHJlYWRIb2xkZXImIFRocmVhZEhvbGRlcjo6aW5p
dGlhbGl6ZShSZWY8VGhyZWFkPiYmIHRocmVhZCkKIHsKLSAgICBpZiAoIWN1cnJlbnQoKSkgewot
ICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGlzIGFzIGEgcmVsZWFzZSBhc3NlcnQgZXZl
cnl3aGVyZSwgYnV0IHRoYXQgd291bGQgaHVydCBwZXJmb3JtYW5jZS4KLSAgICAgICAgLy8gSGF2
aW5nIHRoaXMgcmVsZWFzZSBhc3NlcnQgaGVyZSBtZWFucyB0aGF0IHdlIHdpbGwgY2F0Y2ggImRp
ZG4ndCBjYWxsCi0gICAgICAgIC8vIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHNvb24gZW5v
dWdoIiBidWdzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAgICAgQVNTRVJUKG1fa2V5ICE9IEludmFs
aWRUaHJlYWRTcGVjaWZpY0tleSk7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3Jr
YXJvdW5kIGNvZGUgb25jZSA8cmRhcjovL3Byb2JsZW0vMzE3OTMyMTM+IGlzIGZpeGVkLgotICAg
ICAgICBhdXRvKiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVyKHRocmVhZCk7Ci0gICAgICAgIHRo
cmVhZFNwZWNpZmljU2V0KG1fa2V5LCBob2xkZXIpOwotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwotICAg
ICAgICAgICAgdGhyZWFkTWFwKCkuYWRkKHRocmVhZC5pZCgpLCBob2xkZXIpOwotICAgICAgICB9
CisgICAgQVNTRVJUKG1fa2V5ICE9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleSk7CisgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8z
MTc5MzIxMz4gaXMgZml4ZWQuCisgICAgYXV0byBpZCA9IHRocmVhZC0+aWQoKTsKKyAgICBhdXRv
KiBob2xkZXIgPSBuZXcgVGhyZWFkSG9sZGVyKFdURk1vdmUodGhyZWFkKSk7CisgICAgdGhyZWFk
U3BlY2lmaWNTZXQobV9rZXksIGhvbGRlcik7CisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgICAgICB0aHJlYWRN
YXAoKS5hZGQoaWQsIGhvbGRlcik7CiAgICAgfQorICAgIHJldHVybiAqaG9sZGVyOwogfQogCiB2
b2lkIFRocmVhZEhvbGRlcjo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmlu
ZGV4IGIzZmZhN2NmNzE5M2E2MDk4MGRlNzJlMTAwZTBhNDA3ODI2MGQ2NDIuLjE0ZDE1OTNiYzg0
ZDI4NjE2ODJmZjdjNzU0MzgzYjYxYzRkODU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcApAQCAtMzcs
NyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkTWVzc2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0j
aW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmdUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogI2lmIEhB
VkUoUU9TX0NMQVNTRVMpCkBAIC05NCw2ICs5NCwxNSBAQCBjb25zdCBjaGFyKiBUaHJlYWQ6Om5v
cm1hbGl6ZVRocmVhZE5hbWUoY29uc3QgY2hhciogdGhyZWFkTmFtZSkKICNlbmRpZgogfQogCit2
b2lkIFRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKCkKK3sKKyAgICBpZiAobV9zdGFjay5pc0Vt
cHR5KCkpCisgICAgICAgIG1fc3RhY2sgPSBTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNr
Qm91bmRzKCk7CisgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IHN0YWNrKCkub3JpZ2luKCk7Cisg
ICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jdXJyZW50QXRvbWlj
U3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZTsKK30KKwogdm9pZCBUaHJl
YWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkKIHsKICAg
ICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uOwpAQCAtMTA1LDEzICsxMTQsMTMgQEAgdm9pZCBU
aHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCogbmV3VGhyZWFkQ29udGV4dCkKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQtPnN0YWdlID09IE5ld1RocmVhZENvbnRleHQ6OlN0YWdlOjpF
c3RhYmxpc2hlZEhhbmRsZSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aHJlYWQgaG9sZGVy
IHdpdGggZXN0YWJsaXNoZWQgSUQuCi0gICAgICAgIFRocmVhZEhvbGRlcjo6aW5pdGlhbGl6ZShj
b250ZXh0LT50aHJlYWQuZ2V0KCkpOworICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemUo
Y29udGV4dC0+dGhyZWFkLmNvcHlSZWYoKSk7CiAKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXpl
Q3VycmVudFRocmVhZEludGVybmFsKGNvbnRleHQtPm5hbWUpOwogICAgICAgICBmdW5jdGlvbiA9
IFdURk1vdmUoY29udGV4dC0+ZW50cnlQb2ludCk7CisgICAgICAgIGNvbnRleHQtPnRocmVhZC0+
aW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAKICNpZiAhSEFWRShTVEFDS19CT1VORFNfRk9SX05FV19U
SFJFQUQpCi0gICAgICAgIGNvbnRleHQtPnRocmVhZC0+bV9zdGFjayA9IFN0YWNrQm91bmRzOjpj
dXJyZW50VGhyZWFkU3RhY2tCb3VuZHMoKTsKICAgICAgICAgLy8gQWNrIGNvbXBsZXRpb24gb2Yg
aW5pdGlhbGl6YXRpb24gdG8gdGhlIGNyZWF0aW5nIHRocmVhZC4KICAgICAgICAgY29udGV4dC0+
c3RhZ2UgPSBOZXdUaHJlYWRDb250ZXh0OjpTdGFnZTo6SW5pdGlhbGl6ZWQ7CiAgICAgICAgIGNv
bnRleHQtPmNvbmRpdGlvbi5zaWduYWwoKTsKQEAgLTEyNCw2ICsxMzMsNyBAQCB2b2lkIFRocmVh
ZDo6ZW50cnlQb2ludChOZXdUaHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQogCiBSZWZQ
dHI8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5jdGlvbjx2b2lk
KCk+JiYgZW50cnlQb2ludCkKIHsKKyAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAg
ICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKICAgICBSZWY8
TmV3VGhyZWFkQ29udGV4dD4gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgTmV3VGhyZWFkQ29udGV4
dCB7IG5hbWUsIFdURk1vdmUoZW50cnlQb2ludCksIHRocmVhZC5jb3B5UmVmKCkgfSk7CiAgICAg
Ly8gSW5jcmVtZW50IHRoZSBjb250ZXh0IHJlZiBvbiBiZWhhbGYgb2YgdGhlIGNyZWF0ZWQgdGhy
ZWFkLiBXZSBkbyBub3QganVzdCB1c2UgYSB1bmlxdWVfcHRyIGFuZCBsZWFrIGl0IHRvIHRoZSBj
cmVhdGVkIHRocmVhZCBiZWNhdXNlIGJvdGggdGhlIGNyZWF0b3IgYW5kIGNyZWF0ZWQgdGhyZWFk
IGhhcyBhIG5lZWQgdG8ga2VlcCB0aGUgY29udGV4dCBhbGl2ZToKQEAgLTE1NSwxNCArMTY1LDYg
QEAgUmVmUHRyPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgRnVuY3Rp
b248dm9pZCgpPiYmIGVudHJ5UG9pbnQpCiAgICAgcmV0dXJuIFdURk1vdmUodGhyZWFkKTsKIH0K
IAotVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQotewotICAgIFRocmVhZEhvbGRl
ciogZGF0YSA9IFRocmVhZEhvbGRlcjo6Y3VycmVudCgpOwotICAgIGlmIChkYXRhKQotICAgICAg
ICByZXR1cm4gJmRhdGEtPnRocmVhZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCiBzdGF0
aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRGcm9tVGhyZWFkR3JvdXAoKQogewogI2lmIE9TKFdJ
TkRPV1MpCkBAIC0xOTcsNiArMTk5LDkgQEAgdm9pZCBUaHJlYWQ6OmRpZEV4aXQoKQogICAgICAg
ICAgICAgdGhyZWFkR3JvdXAtPm1fdGhyZWFkcy5yZW1vdmUoKnRoaXMpOwogICAgICAgICB9CiAg
ICAgfQorICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKKyAgICAgICAgbV9h
dG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUpOwor
CiAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBzYXkgInRocmVhZCBpcyBleGl0ZWQiIGFmdGVyIHVu
cmVnaXN0ZXJpbmcgdGhyZWFkcyBmcm9tIHRocmVhZCBncm91cHMuCiAgICAgLy8gU28gd2UgbmVl
ZCB0byBzZXBhcmF0ZSBtX2lzU2h1dHRpbmdEb3duIGZyb20gbV9kaWRFeGl0LgogICAgIHN0ZDo6
bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CkBAIC0yNzcsOSArMjgyLDEw
IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGluaXRpYWxpemVLZXk7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10g
ewotICAgICAgICBUaHJlYWRIb2xkZXI6OmluaXRpYWxpemVPbmNlKCk7CiAgICAgICAgIGluaXRp
YWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IoKTsKLSAgICAgICAgd3RmVGhyZWFkRGF0YSgpOwor
I2lmICFIQVZFKEZBU1RfVExTKQorICAgICAgICBUaHJlYWRIb2xkZXI6OmVuc3VyZUtleSgpOwor
I2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVEYXRlcygpOwogICAgICAgICBUaHJlYWQ6OmluaXRp
YWxpemVQbGF0Zm9ybVRocmVhZGluZygpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRleCBmZjUw
YmZhODliNzY4YmMwODE4YzYzOTg5ZDJmZjNmNWUyYzQxOTI3Li45OGEzMWNmZjU3NGM1OTIxOTdl
MThjMzU0ZTgzMTY0ZTM0NTVkYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtMzksNiArMzksOCBAQAog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0
cy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRIb2xkZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUwLDEyICs1
MiwxMiBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIEFic3RyYWN0TG9ja2VyOworY2xhc3Mg
QXRvbWljU3RyaW5nVGFibGU7CiBjbGFzcyBUaHJlYWRNZXNzYWdlRGF0YTsKIAotZW51bSBjbGFz
cyBUaHJlYWRHcm91cEFkZFJlc3VsdDsKK3VzaW5nIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3Rv
ciA9IHZvaWQgKCopKEF0b21pY1N0cmluZ1RhYmxlKik7CiAKLXVzaW5nIFRocmVhZElkZW50aWZp
ZXIgPSB1aW50MzJfdDsKLXR5cGVkZWYgdm9pZCAoKlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1
bWVudCk7CitlbnVtIGNsYXNzIFRocmVhZEdyb3VwQWRkUmVzdWx0OwogCiBjbGFzcyBUaHJlYWRH
cm91cDsKIGNsYXNzIFRocmVhZEhvbGRlcjsKQEAgLTY1LDYgKzY3LDcgQEAgY2xhc3MgVGhyZWFk
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogcHVibGljOgogICAgIGZy
aWVuZCBjbGFzcyBUaHJlYWRHcm91cDsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkSG9sZGVyOwor
ICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB+VGhyZWFkKCk7CiAKQEAgLTczLDggKzc2LDcgQEAgY2xhc3MgVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPFRocmVhZD4gY3JlYXRlKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUsIEZ1bmN0
aW9uPHZvaWQoKT4mJik7CiAKICAgICAvLyBSZXR1cm5zIFRocmVhZCBvYmplY3QuCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKLSAgICBzdGF0aWMgVGhy
ZWFkKiBjdXJyZW50TWF5QmVOdWxsKCk7CisgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpIHsg
cmV0dXJuIFRocmVhZEhvbGRlcjo6Y3VycmVudCgpLnRocmVhZCgpOyB9CiAKICAgICAvLyBSZXR1
cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBpZiB0aGUgdXNlciBv
bmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4gQXQgdGhhdCB0aW1l
LCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJZGVudGlmaWVyIGRv
ZXMgbm90IGVuc3VyZQpAQCAtMTQxLDYgKzE0Myw0NyBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgICAgIHJldHVybiBtX3N0YWNrOwog
ICAgIH0KIAorICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGU7CisgICAgfQorCisg
ICAgQXRvbWljU3RyaW5nVGFibGUqIHNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShBdG9taWNT
dHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUpCisgICAgeworICAgICAgICBBdG9taWNTdHJp
bmdUYWJsZSogb2xkQXRvbWljU3RyaW5nVGFibGUgPSBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJs
ZTsKKyAgICAgICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBhdG9taWNTdHJpbmdUYWJs
ZTsKKyAgICAgICAgcmV0dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxlOworICAgIH0KKworI2lmIEVO
QUJMRShTVEFDS19TVEFUUykKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgc3RhY2tT
dGF0cygpCisgICAgeworICAgICAgICByZXR1cm4gbV9zdGFja1N0YXRzOworICAgIH0KKyNlbmRp
ZgorCisgICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50
cnkpCisgICAgeworICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQ
b2ludGVyQXRWTUVudHJ5OworICAgIH0KKworICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOworICAgIH0KKworICAg
IHZvaWQgc2V0U2F2ZWRMYXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQorICAgIHsKKyAg
ICAgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsKKyAgICB9CisKKyAgICB2
b2lkKiBtX2FwaURhdGEgeyBudWxscHRyIH07CisKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9w
b3J0X3QgbWFjaFRocmVhZCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1UaHJlYWQ7IH0KICNlbmRpZgpA
QCAtMTUwLDEzICsxOTMsMTYgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRocmVhZD4gewogcHJvdGVjdGVkOgogICAgIFRocmVhZCgpOwogCisgICAgc3RhdGlj
IFJlZjxUaHJlYWQ+IGNyZWF0ZUN1cnJlbnRUaHJlYWQoKTsKKyAgICB2b2lkIGluaXRpYWxpemVJ
blRocmVhZCgpOworCiAgICAgLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgVGhyZWFkIGVz
dGFibGlzaG1lbnQgaW1wbGVtZW50YXRpb24uCiAgICAgYm9vbCBlc3RhYmxpc2hIYW5kbGUoTmV3
VGhyZWFkQ29udGV4dCopOwogCiAjaWYgVVNFKFBUSFJFQURTKQotICAgIHZvaWQgZXN0YWJsaXNo
UGxhdGZvcm1TcGVjaWZpY0hhbmRsZShwdGhyZWFkX3QpOworICAgIHZvaWQgZXN0YWJsaXNoUGxh
dGZvcm1TcGVjaWZpY0hhbmRsZShQbGF0Zm9ybVRocmVhZEhhbmRsZSk7CiAjZWxzZQotICAgIHZv
aWQgZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRsZShIQU5ETEUsIFRocmVhZElkZW50aWZp
ZXIpOworICAgIHZvaWQgZXN0YWJsaXNoUGxhdGZvcm1TcGVjaWZpY0hhbmRsZShQbGF0Zm9ybVRo
cmVhZEhhbmRsZSwgVGhyZWFkSWRlbnRpZmllcik7CiAjZW5kaWYKIAogI2lmIFVTRShQVEhSRUFE
UykgJiYgIU9TKERBUldJTikKQEAgLTE5NywyMiArMjQzLDI1IEBAIGNsYXNzIFRocmVhZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBWZWN0b3I8c3RkOjp3ZWFr
X3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBzOwogICAgIGJvb2wgbV9pc1NodXR0aW5n
RG93biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwotI2lmIFVTRShQ
VEhSRUFEUykKLSAgICBwdGhyZWFkX3QgbV9oYW5kbGU7Ci0KKyAgICBQbGF0Zm9ybVRocmVhZEhh
bmRsZSBtX2hhbmRsZTsKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbV9wbGF0Zm9y
bVRocmVhZDsKLSNlbHNlCisjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgc2VtX3QgbV9zZW1hcGhv
cmVGb3JTdXNwZW5kUmVzdW1lOwogICAgIFBsYXRmb3JtUmVnaXN0ZXJzIG1fcGxhdGZvcm1SZWdp
c3RlcnM7CiAgICAgdW5zaWduZWQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAgICAgc3RkOjphdG9t
aWM8Ym9vbD4gbV9zdXNwZW5kZWQgeyBmYWxzZSB9OwogI2VuZGlmCi0jZWxpZiBPUyhXSU5ET1dT
KQotICAgIEhBTkRMRSBtX2hhbmRsZSB7IElOVkFMSURfSEFORExFX1ZBTFVFIH07Ci0jZWxzZQot
I2Vycm9yIFVua25vd24gU3lzdGVtCisKKyAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9jdXJyZW50
QXRvbWljU3RyaW5nVGFibGUgeyBudWxscHRyIH07CisgICAgQXRvbWljU3RyaW5nVGFibGUqIG1f
ZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlIHsgbnVsbHB0ciB9OworICAgIEF0b21pY1N0cmluZ1Rh
YmxlRGVzdHJ1Y3RvciBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciB7IG51bGxwdHIgfTsK
KworI2lmIEVOQUJMRShTVEFDS19TVEFUUykKKyAgICBTdGFja1N0YXRzOjpQZXJUaHJlYWRTdGF0
cyBtX3N0YWNrU3RhdHM7CiAjZW5kaWYKKyAgICB2b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5IHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CiB9Owog
CiAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkcy4KQEAgLTIy
Myw3ICsyNzIsNiBAQCBpbmxpbmUgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKICAg
ICByZXR1cm4gVGhyZWFkOjpjdXJyZW50SUQoKTsKIH0KIAotCiAvLyBGSVhNRTogVGhlIGZvbGxv
d2luZyBmdW5jdGlvbnMgcmVtYWluIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBmcm9tIFdlYktpdCBX
aW5kb3dzIHN1cHBvcnQgbGlicmFyeSwKIC8vIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMuZGxs
LiBXaGVuIHVwZGF0aW5nIHRoZSBzdXBwb3J0IGxpYnJhcnksIHdlIHNob3VsZCB1c2UgbmV3IEFQ
SSBpbnN0ZWFkCiAvLyBhbmQgdGhlIGZvbGxvd2luZyB3b3JrYW91bmQgc2hvdWxkIGJlIHJlbW92
ZWQuIEFuZCBuZXcgY29kZSBzaG91bGQgbm90IHVzZSB0aGUgZm9sbG93aW5nIEFQSXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggMzBjNDk5ZmRhOWNhZTFmNmRmNjRjMWQ0
ZWFhNmNiNWI2Zjk4MTc3Mi4uNmU4OGFhNmE4YTA5MGQ5N2U3NzdjMzFhM2JkMmE2NmFkYzMwYzZk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtNDUsNiArNDUsOSBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAordXNpbmcgVGhyZWFkSWRlbnRpZmllciA9IHVpbnQzMl90Owor
dXNpbmcgVGhyZWFkRnVuY3Rpb24gPSB2b2lkICgqKSh2b2lkKiBhcmd1bWVudCk7CisKICNpZiBV
U0UoUFRIUkVBRFMpCiB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRfdDsKIHVz
aW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQ
dGhyZWFkcy5jcHAKaW5kZXggMTJkN2M3MTM4NjE5MmU4ZjQ1NTdlMzNmMjliMzUyMTk4NzY1ZTc4
Zi4uMmUwZmJjZWE2Njg3MzZkYzA4NmUzYmY0YmEwY2E2YmZlOTcxZjliZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAtMjg2LDE4ICsyODYsMTUgQEAgdm9pZCBUaHJlYWQ6
OmRldGFjaCgpCiAgICAgICAgIGRpZEJlY29tZURldGFjaGVkKCk7CiB9CiAKLVRocmVhZCYgVGhy
ZWFkOjpjdXJyZW50KCkKLXsKLSAgICBpZiAoVGhyZWFkKiBjdXJyZW50ID0gY3VycmVudE1heUJl
TnVsbCgpKQotICAgICAgICByZXR1cm4gKmN1cnJlbnQ7CiAKK1JlZjxUaHJlYWQ+IFRocmVhZDo6
Y3JlYXRlQ3VycmVudFRocmVhZCgpCit7CiAgICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFk
LCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCiAgICAgUmVmPFRocmVh
ZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAgICAgdGhyZWFkLT5lc3RhYmxp
c2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfc2VsZigpKTsKLSAgICB0aHJlYWQtPm1f
c3RhY2sgPSBTdGFja0JvdW5kczo6Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCk7Ci0gICAgVGhy
ZWFkSG9sZGVyOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7CisgICAgdGhyZWFkLT5pbml0aWFs
aXplSW5UaHJlYWQoKTsKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5vbldURkNy
ZWF0ZWQoKTsKLSAgICByZXR1cm4gdGhyZWFkLmdldCgpOworICAgIHJldHVybiB0aHJlYWQ7CiB9
CiAKIFRocmVhZElkZW50aWZpZXIgVGhyZWFkOjpjdXJyZW50SUQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dp
bi5jcHAKaW5kZXggMDUyM2EyZTZiYjVmNjYyNmFjOGMwNGM5Mjg5YTA1ZTU3ZjVlMDE1MC4uNTVh
YmIzZDYzYjRlYzI0ZmJlZDFiODZjMzMyOTlmODBiMjQyOTUzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdX
aW4uY3BwCkBAIC0yNDMsMTEgKzI0Myw4IEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7
CiB9CiAKLVRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKK1JlZjxUaHJlYWQ+IFRocmVhZDo6Y3Jl
YXRlQ3VycmVudFRocmVhZCgpCiB7Ci0gICAgaWYgKFRocmVhZCogY3VycmVudCA9IGN1cnJlbnRN
YXlCZU51bGwoKSkKLSAgICAgICAgcmV0dXJuICpjdXJyZW50OwotCiAgICAgLy8gTm90IGEgV1RG
LWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQu
CiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gYWRvcHRSZWYoKm5ldyBUaHJlYWQoKSk7CiAKQEAg
LTI1NiwxMCArMjUzLDkgQEAgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzU3VjY2Vzc2Z1bCk7CiAKICAgICB0aHJlYWQtPmVzdGFibGlzaFBsYXRmb3JtU3Bl
Y2lmaWNIYW5kbGUoaGFuZGxlLCBjdXJyZW50SUQoKSk7Ci0gICAgdGhyZWFkLT5tX3N0YWNrID0g
U3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpOwotICAgIFRocmVhZEhvbGRl
cjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOworICAgIHRocmVhZC0+aW5pdGlhbGl6ZUluVGhy
ZWFkKCk7CiAgICAgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRFdmVuSWZOb25XVEZDcmVhdGVkKCk7
Ci0gICAgcmV0dXJuIHRocmVhZC5nZXQoKTsKKyAgICByZXR1cm4gdGhyZWFkOwogfQogCiBUaHJl
YWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1dURlRocmVhZERhdGEuY3BwIGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZTc3ZDI1ODVmOGE2MTQ0NGY5NzRlN2Mz
YjhhZDEzYTFjYjY2OTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV1RGVGhyZWFkRGF0
YS5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KLQotI2lmIFVT
RShXRUJfVEhSRUFEKQotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLSNpZiAhSEFWRShGQVNUX1RMUykKLVRocmVhZFNwZWNpZmljPFdURlRo
cmVhZERhdGE+KiBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwotI2VuZGlmCi0KLVdURlRocmVh
ZERhdGE6OldURlRocmVhZERhdGEoKQotICAgIDogbV9zdGFja0JvdW5kcyhTdGFja0JvdW5kczo6
Y3VycmVudFRocmVhZFN0YWNrQm91bmRzKCkpCi0gICAgLCBtX3NhdmVkTGFzdFN0YWNrVG9wKHN0
YWNrKCkub3JpZ2luKCkpCi17Ci0gICAgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgqdGhpcyk7
Ci0gICAgbV9jdXJyZW50QXRvbWljU3RyaW5nVGFibGUgPSBtX2RlZmF1bHRBdG9taWNTdHJpbmdU
YWJsZTsKLX0KLQotV1RGVGhyZWFkRGF0YTo6fldURlRocmVhZERhdGEoKQotewotICAgIGlmICht
X2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKLSAgICAgICAgbV9hdG9taWNTdHJpbmdUYWJs
ZURlc3RydWN0b3IobV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGUpOwotfQotCi0jaWYgSEFWRShG
QVNUX1RMUykKLVdURlRocmVhZERhdGEmIFdURlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVy
Rm9yR2V0c3BlY2lmaWNEaXJlY3QoKQotewotICAgIFdURlRocmVhZERhdGEqIGRhdGEgPSBuZXcg
V1RGVGhyZWFkRGF0YTsKLSAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVB
RF9EQVRBX0tFWSwgZGF0YSk7Ci0gICAgcHRocmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RB
VEFfS0VZLCBbXSh2b2lkKiBkYXRhKXsKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdURlRo
cmVhZERhdGEqPihkYXRhKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKmRhdGE7Ci19Ci0jZW5kaWYK
LQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJl
YWREYXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJhNWZmODE3NjZkODNjNTZkYmNhY2I2M2JhZTZlMjYwOGE2MmMzMDIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dU
Ri93dGYvV1RGVGhyZWFkRGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2lm
bmRlZiBXVEZUaHJlYWREYXRhX2gKLSNkZWZpbmUgV1RGVGhyZWFkRGF0YV9oCi0KLSNpbmNsdWRl
IDx3dGYvRmFzdFRMUy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi9TdGFja0JvdW5kcy5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBBdG9t
aWNTdHJpbmdUYWJsZTsKLQotdHlwZWRlZiB2b2lkICgqQXRvbWljU3RyaW5nVGFibGVEZXN0cnVj
dG9yKShBdG9taWNTdHJpbmdUYWJsZSopOwotCi1jbGFzcyBXVEZUaHJlYWREYXRhIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXVEZUaHJlYWREYXRhKTsKLXB1YmxpYzoKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V1RG
VGhyZWFkRGF0YSgpOwotCi0gICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxl
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZTsKLSAg
ICB9Ci0KLSAgICBBdG9taWNTdHJpbmdUYWJsZSogc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxl
KEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSkKLSAgICB7Ci0gICAgICAgIEF0
b21pY1N0cmluZ1RhYmxlKiBvbGRBdG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0
cmluZ1RhYmxlOwotICAgICAgICBtX2N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZSA9IGF0b21pY1N0
cmluZ1RhYmxlOwotICAgICAgICByZXR1cm4gb2xkQXRvbWljU3RyaW5nVGFibGU7Ci0gICAgfQot
Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X3N0YWNrQm91bmRzOwotICAgIH0KLQotI2lmIEVOQUJMRShTVEFDS19TVEFUUykKLSAgICBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0cyYgc3RhY2tTdGF0cygpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9zdGFja1N0YXRzOwotICAgIH0KLSNlbmRpZgotCi0gICAgdm9pZCogc2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1F
bnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50cnkpCi0gICAgewotICAgICAgICBtX3NhdmVk
U3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5OwotICAgIH0KLQot
ICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Nh
dmVkTGFzdFN0YWNrVG9wOwotICAgIH0KLQotICAgIHZvaWQgc2V0U2F2ZWRMYXN0U3RhY2tUb3Ao
dm9pZCogbGFzdFN0YWNrVG9wKQotICAgIHsKLSAgICAgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9
IGxhc3RTdGFja1RvcDsKLSAgICB9Ci0KLSAgICB2b2lkKiBtX2FwaURhdGEgeyBudWxscHRyIH07
Ci0KLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nVGFibGUqIG1fY3VycmVudEF0b21pY1N0cmlu
Z1RhYmxlIHsgbnVsbHB0ciB9OwotICAgIEF0b21pY1N0cmluZ1RhYmxlKiBtX2RlZmF1bHRBdG9t
aWNTdHJpbmdUYWJsZSB7IG51bGxwdHIgfTsKLSAgICBBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0
b3IgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgeyBudWxscHRyIH07Ci0KLSAgICBTdGFj
a0JvdW5kcyBtX3N0YWNrQm91bmRzOwotI2lmIEVOQUJMRShTVEFDS19TVEFUUykKLSAgICBTdGFj
a1N0YXRzOjpQZXJUaHJlYWRTdGF0cyBtX3N0YWNrU3RhdHM7Ci0jZW5kaWYKLSAgICB2b2lkKiBt
X3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5IHsgbnVsbHB0ciB9OwotICAgIHZvaWQqIG1fc2F2
ZWRMYXN0U3RhY2tUb3A7Ci0KLSNpZiBIQVZFKEZBU1RfVExTKQotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgV1RGVGhyZWFkRGF0YSYgY3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZp
Y0RpcmVjdCgpOwotI2Vsc2UKLSAgICBzdGF0aWMgV1RGX0VYUE9SVERBVEEgVGhyZWFkU3BlY2lm
aWM8V1RGVGhyZWFkRGF0YT4qIHN0YXRpY0RhdGE7Ci0jZW5kaWYKLQotICAgIGZyaWVuZCBXVEZU
aHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCk7Ci0gICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmlu
Z1RhYmxlOwotfTsKLQotaW5saW5lIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKQotewot
ICAgIC8vIFdSVCBXZWJDb3JlOgotICAgIC8vICAgIFdURlRocmVhZERhdGEgaXMgdXNlZCBvbiBt
YWluIHRocmVhZCBiZWZvcmUgaXQgY291bGQgcG9zc2libHkgYmUgdXNlZAotICAgIC8vICAgIG9u
IHNlY29uZGFyeSBvbmVzLCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24g
aGVyZS4KLSAgICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6Ci0gICAgLy8gICAgd3RmVGhyZWFkRGF0
YSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJvbSBpbml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3Vy
aW5nCi0gICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNl
IGxvY2tlZCBjb250ZXh0LgotI2lmICFIQVZFKEZBU1RfVExTKQotICAgIGlmICghV1RGVGhyZWFk
RGF0YTo6c3RhdGljRGF0YSkKLSAgICAgICAgV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSA9IG5l
dyBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPjsKLSAgICByZXR1cm4gKipXVEZUaHJlYWRE
YXRhOjpzdGF0aWNEYXRhOwotI2Vsc2UKLSAgICBpZiAoV1RGVGhyZWFkRGF0YSogZGF0YSA9IHN0
YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RG
X1RIUkVBRF9EQVRBX0tFWSkpKQotICAgICAgICByZXR1cm4gKmRhdGE7Ci0gICAgcmV0dXJuIFdU
RlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3QoKTsKLSNl
bmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpXVEZUaHJlYWREYXRh
OwotdXNpbmcgV1RGOjp3dGZUaHJlYWREYXRhOwotdXNpbmcgV1RGOjpBdG9taWNTdHJpbmdUYWJs
ZTsKLQotI2VuZGlmIC8vIFdURlRocmVhZERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuY3BwCmluZGV4IGE0ZTAzZGUzYWY2NTdjNjlmNzRkMTYyNTFmMDAwNzM5MTM2YTUzNDQuLjJh
MDY1MTI4M2E5NzI3MWU1NzZhMjIyZGRmMDIzMjBkMDZhMGQyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5jcHAKQEAgLTIzLDggKzIzLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAKLSNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZC5oIgorI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5oPgorCiAjaW5jbHVkZSAiZHRvYS5oIgogCiBuYW1lc3BhY2UgV1RG
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCmluZGV4IDM1MjI0ODVk
N2I4NDczY2M4MGU1MjQwYTczMmEwNTUzYzQ4YmMzNDIuLjA2M2U0ZWViN2U1N2U1Y2Q4NWIwYTE3
MTk1NGQzODkyNGMxNzc5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBs
LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRl
ICJTdHJpbmdQcmludFN0cmVhbS5oIgogI2luY2x1ZGUgIlRocmVhZGluZy5oIgotI2luY2x1ZGUg
IldURlRocmVhZERhdGEuaCIKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKICNpZiBV
U0UoV0VCX1RIUkVBRCkKQEAgLTcyLDcgKzcxLDcgQEAgdXNpbmcgU3RyaW5nVGFibGVJbXBsID0g
SGFzaFNldDxTdHJpbmdJbXBsKj47CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFN0cmluZ1RhYmxl
SW1wbCYgc3RyaW5nVGFibGUoKQogewotICAgIHJldHVybiB3dGZUaHJlYWREYXRhKCkuYXRvbWlj
U3RyaW5nVGFibGUoKS0+dGFibGUoKTsKKyAgICByZXR1cm4gVGhyZWFkOjpjdXJyZW50KCkuYXRv
bWljU3RyaW5nVGFibGUoKS0+dGFibGUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ1RhYmxlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFi
bGUuY3BwCmluZGV4IGZlOGE0ODg0ZGI3ZTY3OGRlZDZhZjMyZGQ0MzcxMmU1OTVmM2I5MzUuLmY2
ZDc4ZjJiZTZmNDhmMmFhNjgyYzA1ZDEwZDI0NjQ2OGIwYzI0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRl
IDx3dGYvV1RGVGhyZWFkRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFt
ZXNwYWNlIFdURiB7CiAKLXZvaWQgQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZShXVEZUaHJlYWRE
YXRhJiBkYXRhKQordm9pZCBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKFRocmVhZCYgdGhyZWFk
KQogewogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIC8vIE9uIGlPUywgb25lIEF0b21pY1N0cmlu
Z1RhYmxlIGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSBtYWluIFVJIHRocmVhZCBhbmQgdGhlIFdlYlRo
cmVhZC4KQEAgLTM3LDE3ICszNywxNyBAQCB2b2lkIEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUo
V1RGVGhyZWFkRGF0YSYgZGF0YSkKIAogICAgIGJvb2wgY3VycmVudFRocmVhZElzV2ViVGhyZWFk
ID0gaXNXZWJUaHJlYWQoKTsKICAgICBpZiAoY3VycmVudFRocmVhZElzV2ViVGhyZWFkIHx8IGlz
VUlUaHJlYWQoKSkKLSAgICAgICAgZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IHNo
YXJlZFN0cmluZ1RhYmxlOworICAgICAgICB0aHJlYWQubV9kZWZhdWx0QXRvbWljU3RyaW5nVGFi
bGUgPSBzaGFyZWRTdHJpbmdUYWJsZTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEubV9kZWZhdWx0
QXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisgICAgICAgIHRocmVh
ZC5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9taWNTdHJpbmdUYWJsZTsKIAog
ICAgIC8vIFdlIGRvIHRoZSBmb2xsb3dpbmcgc28gdGhhdCBpdHMgZGVzdHJ1Y3Rpb24gaGFwcGVu
cyBvbmx5CiAgICAgLy8gb25jZSAtIG9uIHRoZSBtYWluIFVJIHRocmVhZC4KICAgICBpZiAoIWN1
cnJlbnRUaHJlYWRJc1dlYlRocmVhZCkKLSAgICAgICAgZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxl
RGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OworICAgICAgICB0aHJlYWQu
bV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVzdHJv
eTsKICNlbHNlCi0gICAgZGF0YS5tX2RlZmF1bHRBdG9taWNTdHJpbmdUYWJsZSA9IG5ldyBBdG9t
aWNTdHJpbmdUYWJsZTsKLSAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0g
QXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisgICAgdGhyZWFkLm1fZGVmYXVsdEF0b21pY1N0
cmluZ1RhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOworICAgIHRocmVhZC5tX2F0b21pY1N0
cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95OwogI2VuZGlm
IC8vIFVTRShXRUJfVEhSRUFEKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZ1RhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ1Rh
YmxlLmgKaW5kZXggOTQ0YWU5MmJkZWM0NDM5YmYwNzAxMjFiNzhhMzVmNWE4NGZjNDA5ZC4uZDNi
YzljZTVmNmUwNzI3NzU2Y2M5ZWJiZTRmMTI1MzdmYWFiMmI3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nVGFibGUuaApAQCAtMjQsMTkgKzI0LDE5IEBACiAjZGVmaW5lIFdURl9B
dG9taWNTdHJpbmdUYWJsZV9oCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU3RyaW5nSW1wbDsKK2NsYXNzIFRocmVhZDsKIAog
Y2xhc3MgQXRvbWljU3RyaW5nVGFibGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+QXRvbWljU3RyaW5nVGFibGUoKTsKIAot
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShXVEZUaHJlYWREYXRhJik7CisgICAgc3RhdGljIHZvaWQg
Y3JlYXRlKFRocmVhZCYpOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiB0YWJsZSgpIHsgcmV0
dXJuIG1fdGFibGU7IH0KIAogcHJpdmF0ZToKQEAgLTQ2LDUgKzQ2LDYgQEAgY2xhc3MgQXRvbWlj
U3RyaW5nVGFibGUgewogfTsKIAogfQordXNpbmcgV1RGOjpBdG9taWNTdHJpbmdUYWJsZTsKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXgg
OGEwMjMwYmFiZjk1Y2JhOTdmOWE4Zjg2MjgxOWFiNDBkMTdmY2U0Mi4uNjNiMWUwZTU3NDExZDA2
MzNjNDE5OGY0YWUwOTM1M2EwMzU1MTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9i
YWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
CmluZGV4IGI4ZmFmNWE4ZDc5MTAyZjJlZmRkOGJkYTY0MzFjMDc3YmZmMTNiZjAuLjc3MzgyOWQ1
ZTdiNGViMzNkN2JlODM4MDcxNmY5YTMzMzcyNmY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02
Niw3ICs2NSw3IEBAIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQogICAgIC8v
IGFueSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0
aGlzIG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CiAgICAgLy8gcG9pbnQgdG8gY2FsbCBtZXRob2Rz
IHRoYXQgaW50ZXJuYWxseSBwZXJmb3JtIGEgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gdGhhdCBp
cyBub3QKICAgICAvLyB0aHJlYWRzYWZlLgotICAgIHd0ZlRocmVhZERhdGEoKTsKKyAgICBUaHJl
YWQ6OmN1cnJlbnQoKTsKICAgICBTdHJpbmdJbXBsOjplbXB0eSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oCmluZGV4IDY2ZThlOTkxZTEyOTYyYjU0ZmQ3NDM5
MmQ5NTJlNzMyOGZkNjQwOTAuLmVjMjcxMWI1MjA3MjUyMzMyNGE2ZmYwNDdjMzZiZDM4NzAwZThh
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgVVNFKFZJREVPVE9PTEJPWCkKIAogI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRp
bWUuaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4
IDYxMjJiNGYyYzUwYjY0YmE1YzdmZmM5ZGRlM2Y0ZGE1NjI5YTAzODcuLmM4ZjA1YTFhMGFlZDYw
MmNiZDhjMDk0ZTBhOTcyMDNhZjljNjA2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMg
dm9pZCBTdGFydFdlYlRocmVhZCgpCiB7CiAgICAgd2ViVGhyZWFkU3RhcnRlZCA9IFRSVUU7CiAK
LSAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIHRvdWNoZXMgQXRvbWljU3RyaW5nLCB3aGljaCByZXF1
aXJlcyBXVEZUaHJlYWREYXRhIGFuZCBUaHJlYWRpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgLy8g
VGhyZWFkR2xvYmFsRGF0YSB0b3VjaGVzIEF0b21pY1N0cmluZywgd2hpY2ggcmVxdWlyZXMgVGhy
ZWFkaW5nIGluaXRpYWxpemF0aW9uLgogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSBBdG9taWNTdHJpbmcgb24gdGhlIG1haW4gdGhyZWFkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDQyNWM5MjQ4ZDg3MDQ4Mjdi
YjBlMDM4MjFhMmFlOGRjOGFhYzBkNzAuLjY4MWExZWY3NTQ4MTAwZDFhMjk2NjA5ZTYyY2I3Zjlh
ZmI2MmUwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTIx
Niw3ICsyMTYsNyBAQCB2b2lkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKICAgICAvLyBX
ZSBjYW5ub3QgbGV0IGFueSBvYmplY3RzIHN1cnZpdmUgcGFzdCB0aHJlYWQgZXhpdCwgYmVjYXVz
ZSBubyBvdGhlciB0aHJlYWQgd2lsbCBydW4gR0Mgb3Igb3RoZXJ3aXNlIGRlc3Ryb3kgdGhlbS4K
ICAgICB3b3JrZXJHbG9iYWxTY29wZVRvRGVsZXRlID0gbnVsbHB0cjsKIAotICAgIC8vIENsZWFu
IHVwIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEgYmVmb3JlIFdURjo6V1RGVGhyZWFkRGF0YSBn
b2VzIGF3YXkhCisgICAgLy8gQ2xlYW4gdXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZv
cmUgV1RGOjpUaHJlYWQgZ29lcyBhd2F5IQogICAgIHRocmVhZEdsb2JhbERhdGEoKS5kZXN0cm95
KCk7CiAKICAgICAvLyBUaGUgdGhyZWFkIG9iamVjdCBtYXkgYmUgYWxyZWFkeSBkZXN0cm95ZWQg
ZnJvbSBub3RpZmljYXRpb24gbm93LCBkb24ndCB0cnkgdG8gYWNjZXNzICJ0aGlzIi4K
</data>
<flag name="review"
          id="337491"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>