<?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>58483</bug_id>
          
          <creation_ts>2011-04-13 14:55:43 -0700</creation_ts>
          <short_desc>GC allocate Structure</short_desc>
          <delta_ts>2011-09-09 22:21:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>nlawrence</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385269</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 14:55:43 -0700</bug_when>
    <thetext>GC allocate Structure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385281</commentid>
    <comment_count>1</comment_count>
      <attachid>89472</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 15:08:15 -0700</bug_when>
    <thetext>Created attachment 89472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385287</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-13 15:12:06 -0700</bug_when>
    <thetext>Attachment 89472 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackConstr...&quot; exit_code: 1

Source/JavaScriptCore/interpreter/Interpreter.cpp:2703:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2958:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2982:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:3006:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _proto is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9 in 182 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>385302</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-13 15:26:26 -0700</bug_when>
    <thetext>Attachment 89472 did not build on qt:
Build output: http://queues.webkit.org/results/8404415</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385319</commentid>
    <comment_count>4</comment_count>
      <attachid>89472</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-13 15:42:09 -0700</bug_when>
    <thetext>Comment on attachment 89472
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/Instruction.h:146
&gt; +            u.structure.clear();

No need for clear here.

&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:154
&gt; +            HandleHeap::heapFor(slot)-&gt;makeWeak(slot, 0, 0);

No need for 0, 0 here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385330</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-13 15:59:58 -0700</bug_when>
    <thetext>Attachment 89472 did not build on win:
Build output: http://queues.webkit.org/results/8397434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385339</commentid>
    <comment_count>6</comment_count>
      <attachid>89487</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 16:18:00 -0700</bug_when>
    <thetext>Created attachment 89487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385344</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-13 16:21:11 -0700</bug_when>
    <thetext>Attachment 89487 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/fast/dom/gc-10.html&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/interpreter/Interpreter.cpp:2703:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2958:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2982:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:3006:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _proto is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9 in 184 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>385350</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-13 16:33:36 -0700</bug_when>
    <thetext>Attachment 89487 did not build on qt:
Build output: http://queues.webkit.org/results/8404433</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385364</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-13 16:59:26 -0700</bug_when>
    <thetext>Attachment 89487 did not build on win:
Build output: http://queues.webkit.org/results/8400486</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385370</commentid>
    <comment_count>10</comment_count>
      <attachid>89494</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 17:04:47 -0700</bug_when>
    <thetext>Created attachment 89494
qt fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385372</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-13 17:09:35 -0700</bug_when>
    <thetext>Attachment 89494 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/fast/dom/gc-10.html&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/interpreter/Interpreter.cpp:2703:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2958:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2982:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:3006:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _proto is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9 in 188 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>385399</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-13 17:47:03 -0700</bug_when>
    <thetext>Attachment 89494 did not build on win:
Build output: http://queues.webkit.org/results/8398476</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385423</commentid>
    <comment_count>13</comment_count>
      <attachid>89510</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 18:15:46 -0700</bug_when>
    <thetext>Created attachment 89510
windows fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385425</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-13 18:18:22 -0700</bug_when>
    <thetext>Attachment 89510 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/fast/dom/gc-10.html&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/interpreter/Interpreter.cpp:2703:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2958:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:2982:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/interpreter/Interpreter.cpp:3006:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:70:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:78:  _proto is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9 in 188 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>385476</commentid>
    <comment_count>15</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 20:29:08 -0700</bug_when>
    <thetext>Committed r83808: &lt;http://trac.webkit.org/changeset/83808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385567</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-14 00:28:15 -0700</bug_when>
    <thetext>This seems to have seriously broken GTK 32-bits Release. 20+ tests failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385788</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-14 08:52:49 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; This seems to have seriously broken GTK 32-bits Release. 20+ tests failing.

Rolling out these revisions fixes the issue on GTK:

83827
83810
83809
83808

In case no other follow-up commit lands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385820</commentid>
    <comment_count>18</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-14 09:40:43 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; This seems to have seriously broken GTK 32-bits Release. 20+ tests failing.
&gt; 
&gt; Rolling out these revisions fixes the issue on GTK:
&gt; 
&gt; 83827
&gt; 83810
&gt; 83809
&gt; 83808
&gt; 
&gt; In case no other follow-up commit lands

What is the build bot on build.webkit.org?  That seemed to be all green once i landed the follow up 32bit fix...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386002</commentid>
    <comment_count>19</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-14 13:41:11 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; This seems to have seriously broken GTK 32-bits Release. 20+ tests failing.
&gt; &gt; 
&gt; &gt; Rolling out these revisions fixes the issue on GTK:
&gt; &gt; 
&gt; &gt; 83827
&gt; &gt; 83810
&gt; &gt; 83809
&gt; &gt; 83808
&gt; &gt; 
&gt; &gt; In case no other follow-up commit lands
&gt; 
&gt; What is the build bot on build.webkit.org?  That seemed to be all green once i landed the follow up 32bit fix...

Simply http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386009</commentid>
    <comment_count>20</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-14 13:50:37 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; &gt; This seems to have seriously broken GTK 32-bits Release. 20+ tests failing.
&gt; &gt; &gt; 
&gt; &gt; &gt; Rolling out these revisions fixes the issue on GTK:
&gt; &gt; &gt; 
&gt; &gt; &gt; 83827
&gt; &gt; &gt; 83810
&gt; &gt; &gt; 83809
&gt; &gt; &gt; 83808
&gt; &gt; &gt; 
&gt; &gt; &gt; In case no other follow-up commit lands
&gt; &gt; 
&gt; &gt; What is the build bot on build.webkit.org?  That seemed to be all green once i landed the follow up 32bit fix...
&gt; 
&gt; Simply http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release

Why are there no crash logs being reported by that bot?

Is that an interpreter bot? (I tested interpreter, though maybe only 64bit?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386013</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-14 13:57:17 -0700</bug_when>
    <thetext>That bot doesn&apos;t dump stack-traces indeed :/ Gustavo manages that bot, maybe he could install the scripts we use in the Igalia Debug bots ;)

IIRC the crash happens in cti_op_get_by_val() that&apos;s the only info I could extract from the stack-trace I got locally :( Being a release build we don&apos;t get dbg symbols...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386454</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-15 00:44:06 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/83955</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386703</commentid>
    <comment_count>23</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-15 10:12:45 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Rolled out in http://trac.webkit.org/changeset/83955
Pardon? You rolled it out because it broke a non-core builder, having failed to provide any information that actually helped diagnose the problem, when every other platform was fine with the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386706</commentid>
    <comment_count>24</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-15 10:13:59 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Rolled out in http://trac.webkit.org/changeset/83955

In future if you feel the desire to rollout a change like this actually ask first, don&apos;t blindly roll out with the assumption that that is the right choice, given the absence of further information i&apos;m assuming it&apos;s a gtk specific bug, that i cannot fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386710</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-15 10:18:39 -0700</bug_when>
    <thetext>It broke a core builder.

And if there was a 64-bits Release builder it would have failed as well. My local 64-bits build was also broken.

I&apos;m willing to test any new version of this patch BTW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386750</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-04-15 10:59:21 -0700</bug_when>
    <thetext>gdb -args  WebKitBuild/Release/Programs/DumpRenderTree LayoutTests/editing/selection/find-yensign-and-backslash-with-japanese-fonts.html

(gdb) bt
#0  0x00007ffff75cef44 in cti_op_get_by_val ()
   from /home/phil/gst/jhbuild/build/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-1.0.so.0
#1  0x00007fff9e4d4f2e in ?? ()
#2  0x00007fff9e0a8150 in ?? ()
#3  0x00007fff9e0ba910 in ?? ()
#4  0xffff00000000000d in ?? ()
#5  0x00007fff9dea8e90 in ?? ()
#6  0x00007fff9e4d53bf in ?? ()
#7  0x00007fffffffca90 in ?? ()
#8  0x0000000000000000 in ?? ()

This is a Release build indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386753</commentid>
    <comment_count>27</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-15 11:01:05 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; gdb -args  WebKitBuild/Release/Programs/DumpRenderTree LayoutTests/editing/selection/find-yensign-and-backslash-with-japanese-fonts.html
&gt; 
&gt; (gdb) bt
&gt; #0  0x00007ffff75cef44 in cti_op_get_by_val ()
&gt;    from /home/phil/gst/jhbuild/build/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-1.0.so.0
&gt; #1  0x00007fff9e4d4f2e in ?? ()
&gt; #2  0x00007fff9e0a8150 in ?? ()
&gt; #3  0x00007fff9e0ba910 in ?? ()
&gt; #4  0xffff00000000000d in ?? ()
&gt; #5  0x00007fff9dea8e90 in ?? ()
&gt; #6  0x00007fff9e4d53bf in ?? ()
&gt; #7  0x00007fffffffca90 in ?? ()
&gt; #8  0x0000000000000000 in ?? ()
&gt; 
&gt; This is a Release build indeed.

needs line number information, can you build without symbols stripped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387044</commentid>
    <comment_count>28</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-15 17:00:38 -0700</bug_when>
    <thetext>Committed r84052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387132</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-15 18:22:06 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84052 might have broken WinCairo Debug (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465220</commentid>
    <comment_count>30</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-09 22:21:47 -0700</bug_when>
    <thetext>*** Bug 43641 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89472</attachid>
            <date>2011-04-13 15:08:15 -0700</date>
            <delta_ts>2011-04-13 16:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58483-20110413150813.patch</filename>
            <type>text/plain</type>
            <size>375663</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAppbmRleCBlOGFlMjc0OWI3NDdiNDJhNjM3
YzZiZTYyZWY5YWYyNjZiMWRjY2Q5Li5mYTlkMjE2ZGQxMTI1MDEyN2VlNjg1ZmUxZWM4ZDU5ZmYy
NjhjOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
Q29uc3RydWN0b3IuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25z
dCBDbGFzc0luZm8gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJDYWxsYmFja0Nv
bnN0cnVjdG9yIiwgJkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAK
LUpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBj
YWxsYmFjaykKK0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNz
UmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykK
ICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkK
ICAgICAsIG1fY2xhc3MoanNDbGFzcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAppbmRl
eCAwMDFjNDE2MTZkZjA4NzYwNGU3ODY4ZDAzMGU1MTMxZDNkYmIzNjdiLi42NGIyMzdkZmQzZDhi
YWFjYzhhOTkzODkzODBmMDVlZGVhNjkyMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKQEAgLTMzLDEzICszMywxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yIDogcHVibGljIEpTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFja0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNDbGFzc1Jl
ZiwgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrKTsKKyAgICBKU0NhbGxiYWNrQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU0NsYXNzUmVmLCBKU09iamVj
dENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIHZpcnR1YWwgfkpTQ2FsbGJhY2tDb25z
dHJ1Y3RvcigpOwogICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYoKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzOyB9CiAgICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxiYWNrKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsYmFjazsgfQogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvKSAKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IDExZmI5NWM1YzEwZjIzOGM2ODcxMjA3
ZGY3OGYyMTM5MjhjYzFiZGYuLjU1YzllZDRhZTg3YzIyOTBlZmI0ODA0NDZlOTgwNjVkOWMxODQ5
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
aApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gSW50ZXJuYWxGdW5jdGlv
biBtaXNoLW1hc2hlcyBjb25zdHJ1Y3RvciBhbmQgZnVuY3Rpb24gYmVoYXZpb3IgLS0gd2Ugc2hv
dWxkIAogICAgIC8vIHJlZmFjdG9yIHRoZSBjb2RlIHNvIHRoaXMgb3ZlcnJpZGUgaXNuJ3QgbmVj
ZXNzYXJ5Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvKSAKICAgICB7IAogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA2MGZkOGNkM2E2ZjNjOTc0ZTVmYzIwYzllYTE1
ZmI0ODdhMjQxYjI2Li5kMmUwZGNiN2EzYTQ4OWI4NTlmOGJiZGI1NjgyNWM0YWIyNjFmNjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTE3
LDggKzExNyw4IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25l
ciB7CiB0ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJs
aWMgQmFzZSB7CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpTQ2xhc3NSZWYsIHZv
aWQqIGRhdGEpOwotICAgIEpTQ2FsbGJhY2tPYmplY3QoSlNDbGFzc1JlZiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPik7CisgICAgSlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTQ2xhc3NSZWYsIHZvaWQqIGRhdGEpOworICAgIEpT
Q2FsbGJhY2tPYmplY3QoSlNHbG9iYWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7CiAK
ICAgICB2b2lkIHNldFByaXZhdGUodm9pZCogZGF0YSk7CiAgICAgdm9pZCogZ2V0UHJpdmF0ZSgp
OwpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBKU0NsYXNzUmVmIGNsYXNzUmVmKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdERhdGEtPmpzQ2xhc3M7IH0KICAgICBib29s
IGluaGVyaXRzKEpTQ2xhc3NSZWYpIGNvbnN0OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvKSAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKICAgICB7IAogICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQmFzZTo6QW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgCiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaAppbmRleCA1MGI4NGM3NmYyYTYwODk1OWQyY2IwNzEzODljYjZkMDMzZWI5
NTBiLi44NjM5ZTFhZWY5OTk1ZjJjZjFlODkzNGQ2YzFjOWQ2YmJmNWUzNzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aApAQCAtNTAsNyArNTAsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxCYXNlPiogSlNDYWxs
YmFja09iamVjdDxCYXNlPjo6YXNDYWxsYmFja09iamVjdChKU1ZhbHVlCiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBCYXNlPgotSlNDYWxsYmFja09iamVjdDxCYXNlPjo6SlNDYWxsYmFja09iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIHZvaWQqIGRh
dGEpCitKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShhZG9wdFB0cihuZXcgSlND
YWxsYmFja09iamVjdERhdGEoZGF0YSwganNDbGFzcykpKQogewpAQCAtNjEsOCArNjEsOCBAQCBK
U0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbAogLy8gR2xvYmFsIG9iamVjdCBjb25zdHJ1Y3Rvci4KIC8v
IEZJWE1FOiBNb3ZlIHRoaXMgaW50byBhIHNlcGFyYXRlIEpTR2xvYmFsQ2FsbGJhY2tPYmplY3Qg
Y2xhc3MgZGVyaXZlZCBmcm9tIHRoaXMgb25lLgogdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1KU0Nh
bGxiYWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxiYWNrT2JqZWN0KEpTQ2xhc3NSZWYganNDbGFzcywg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBCYXNlKHN0cnVj
dHVyZSkKK0pTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogQmFzZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2NhbGxiYWNrT2Jq
ZWN0RGF0YShhZG9wdFB0cihuZXcgSlNDYWxsYmFja09iamVjdERhdGEoMCwganNDbGFzcykpKQog
ewogICAgIEFTU0VSVChCYXNlOjppbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggMTU4YjI1NjI2ZDJhMTQ2MjY0YTUzYjlj
M2RiMDA3OTczN2NhMmMyNS4uMDNkMDYyMjRjOGE2MDk0NWM3NDUxNDIzNDNhYzg0OWUxNDFmMjM2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtOTcs
NyArOTcsNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91
cChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNDbGFzcwogICAgICAgICByZXR1cm4gSlNHbG9i
YWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKSk7
CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoZ2xvYmFs
RGF0YS5nZXQoKSkgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0
Q2xhc3MsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUo
Kmdsb2JhbERhdGEsIGpzTnVsbCgpKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG5ldyAoZ2xvYmFsRGF0YS5nZXQoKSkgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4oKmdsb2JhbERhdGEsIGdsb2JhbE9iamVjdENsYXNzLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xv
YmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwoKSkpOwogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0Q2xhc3MtPnByb3RvdHlwZShleGVjKTsKICAgICBp
ZiAoIXByb3RvdHlwZSkKQEAgLTE0MSw5ICsxNDEsMTAgQEAgdm9pZCBKU0dsb2JhbENvbnRleHRS
ZWxlYXNlKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCiAgICAgLy8gICBpdCBtYXkgIHJlbGVhc2Ug
YSBsb3Qgb2YgR0MgbWVtb3J5IC0gcnVuIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBub3cuCiAgICAg
Ly8gKiBJZiB0aGVyZSBhcmUgbW9yZSByZWZlcmVuY2VzIHJlbWFpbmluZyB0aGUgdGhlIGdsb2Jh
bCBvYmplY3QsIHRoZW4gZG8gbm90aGluZwogICAgIC8vICAgKHNwZWNpZmljYWxseSB0aGF0IGlz
IG1vcmUgcHJvdGVjdHMsIHdoaWNoIHdlIGFzc3VtZSBjb21lIGZyb20gb3RoZXIgSlNHbG9iYWxD
b250ZXh0UmVmcykuCi0gICAgaWYgKHJlbGVhc2luZ0NvbnRleHRHcm91cCkKKyAgICBpZiAocmVs
ZWFzaW5nQ29udGV4dEdyb3VwKSB7CisgICAgICAgIGdsb2JhbERhdGEuY2xlYXJCdWlsdGluU3Ry
dWN0dXJlcygpOwogICAgICAgICBnbG9iYWxEYXRhLmhlYXAuZGVzdHJveSgpOwotICAgIGVsc2Ug
aWYgKHJlbGVhc2luZ0dsb2JhbE9iamVjdCkKKyAgICB9IGVsc2UgaWYgKHJlbGVhc2luZ0dsb2Jh
bE9iamVjdCkKICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAK
ICAgICBnbG9iYWxEYXRhLmRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBmYTAz
NjdkNDJkNDlmMGU3MGE1OGNiNDdkZDlkMzg4YzViNmM2ODk1Li42ZDZjYjg2ODRhYzBlZDBmMWQ0
ZjcyMzY5NzgzOGQ2ZTllNTUxOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSw0MTIgQEAKIDIwMTEtMDQtMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHQyBhbGxvY2F0
ZSBTdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4NDgzCisKKyAgICAgICAgVHVybiBTdHJ1Y3R1cmUgaW50byBhIEdDIGFsbG9jYXRlZCBv
YmplY3QuICBNb3N0IG9mIHRoaXMgcGF0Y2gKKyAgICAgICAgaXMgdGhlIG1lY2hhbmljYWwgY2hh
bmdlIG9mIHJlcGxhY2luZyB2YXJpYXRpb25zIG9uIFJlZlB0cjxTdHJ1Y3R1cmU+CisgICAgICAg
IHdpdGggZWl0aGVyIFN0cnVjdHVyZSogKGZvciBhcmd1bWVudHMgYW5kIGxvY2FscyksIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+CisgICAgICAgIGZvciB0aGUgZmV3IGNhc2VzIHdoZXJlIFN0cnVj
dHVyZXMgYXJlIGhlbGQgYnkgR0MgYWxsb2NhdGVkIG9iamVjdHMKKyAgICAgICAgYW5kIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGZvciB0aGUgcm9vdCBzdHJ1Y3R1cmUgb2JqZWN0cyBpbiBHbG9iYWxEYXRh
LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlND
OjpKU0NhbGxiYWNrT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIEFQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6SlNDYWxsYmFja09iamVj
dCk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUuSlNWQUxVRTMyXzY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuSlNW
QUxVRTY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya1N0cnVjdHVyZXMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua0luZm86OnNldFNlZW4pOgor
ICAgICAgICAoSlNDOjpHbG9iYWxSZXNvbHZlSW5mbzo6R2xvYmFsUmVzb2x2ZUluZm8pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdDo6UG9seW1vcnBoaWNTdHViSW5mbzo6c2V0KToKKyAgICAgICAg
KEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3Q6Om1hcmtBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmRlcmVmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86Om1hcmtBZ2dyZWdhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZFNl
bGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEdldEJ5SWRQcm90byk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZENoYWluKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkVHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0UHV0QnlJZFJlcGxhY2UpOgorICAg
ICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkRl
YnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9uKToKKyAgICAgICAgKiBkZWJ1Z2dl
ci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGhlYXAvSGFuZGxlLmg6CisgICAgICAgICog
aGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6Om1hcmtDaGlsZHJl
bik6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAqIGhlYXAvU3Ryb25n
Lmg6CisgICAgICAgIChKU0M6OlN0cm9uZzo6U3Ryb25nKToKKyAgICAgICAgKEpTQzo6U3Ryb25n
OjpzZXQpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVuY2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjp1bmNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hNZXRo
b2RDYWxsUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cGF0Y2hNZXRob2RD
YWxsUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3Rv
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvSklU
U3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnRyeUNhY2hlUHV0QnlJRCk6Cisg
ICAgICAgIChKU0M6OkpJVFRodW5rczo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6
REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpnZXRQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3RTbG90KToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAg
ICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OnN0b3JlUHRyV2l0aFdyaXRlQmFycmllcik6Cisg
ICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGNsZWFudXBHbG9iYWxEYXRhKToKKyAgICAgICAg
KiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6QXJndW1lbnRzKToKKyAgICAgICAg
KEpTQzo6SlNBY3RpdmF0aW9uOjpjb3B5UmVnaXN0ZXJzKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9yOjpBcnJh
eUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJr
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OkFy
cmF5UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9CYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplci5oOgorICAgICAgICAoSlNDOjpCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
cjo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVh
bkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbkNvbnN0cnVjdG9yOjpCb29s
ZWFuQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Qm9v
bGVhbk9iamVjdDo6Qm9vbGVhbk9iamVjdCk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Qm9v
bGVhblByb3RvdHlwZTo6Qm9vbGVhblByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9Cb29s
ZWFuUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkRhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKToKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFu
Y2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6RGF0ZVByb3RvdHlwZTo6RGF0ZVByb3RvdHlwZSk6CisgICAgICAg
ICogcnVudGltZS9EYXRlUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkRhdGVQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAg
IChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKToKKyAg
ICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjo6SW50ZXJydXB0ZWRFeGVj
dXRpb25FcnJvcik6CisgICAgICAgIChKU0M6OlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6VGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQmFzZTo6RXhlY3V0YWJsZUJhc2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0
YWJsZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvbnN0
cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAg
ICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVy
U2V0dGVyLmg6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6R2V0dGVyU2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVU
aHJlYWRpbmdPbmNlKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTQVBJVmFsdWVX
cmFwcGVyLmg6CisgICAgICAgIChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0FQSVZhbHVlV3JhcHBlcjo6SlNBUElWYWx1ZVdyYXBwZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNB
Y3RpdmF0aW9uOjpKU0FjdGl2YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9u
Lmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpKU0FycmF5
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6SlNC
eXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJh
eS5oOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6aXNab21iaWUpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjpKU0NlbGwp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6YWRkcmVzc09mU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6SlNDZWxsOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTVmFs
dWU6OmlzWm9tYmllKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6c3RvcmVWUHRycyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxE
YXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVz
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OmFsbG9jYXRlR2xvYmFsSGFu
ZGxlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
Om1hcmtDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpjb3B5R2xvYmFs
c0Zyb20pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJv
dG90eXBlQ2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzVmFsaWQpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RFbXB0eUFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5P
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6SlNOb3RBbk9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTTm90QW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPTk9iamVjdDo6SlNPTk9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
T05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6ZGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNlYWwp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZnJlZXplKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnByZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURp
cmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbmhlcml0b3JJRCk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNOb25GaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SlNOb25GaW5hbE9iamVjdDo6SlNOb25GaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmlu
YWxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OkpTRmluYWxPYmplY3QpOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdCk6CisgICAgICAgIChKU0M6OmNyZWF0
ZUVtcHR5T2JqZWN0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6On5KU09iamVj
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaGVy
aXRvcklEKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyYW5zaXRpb25Ubyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
OjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0OjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpzZXRDYWNoZWRTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Nj
b3BlT2JqZWN0OjpKU1N0YXRpY1Njb3BlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNTdGF0aWNT
Y29wZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5n
Lmg6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjpKU1N0cmluZyk6CisgICAgICAgIChKU0M6
OlJvcGVCdWlsZGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
Lmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJ
bmZvOjpUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICog
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OkpT
VmFyaWFibGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0Ojpjb3B5UmVn
aXN0ZXJBcnJheSk6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNXcmFwcGVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdCk6CisgICAgICAgICogcnVudGltZS9K
U1pvbWJpZS5jcHA6CisgICAgICAgICogcnVudGltZS9KU1pvbWJpZS5oOgorICAgICAgICAoSlND
OjpKU1pvbWJpZTo6SlNab21iaWUpOgorICAgICAgICAoSlNDOjpKU1pvbWJpZTo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpNYXRoT2JqZWN0OjpNYXRoT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVy
cm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5h
dGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL051bWJlck9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6TnVtYmVyT2JqZWN0KToKKyAgICAgICAg
KiBydW50aW1lL051bWJlck9iamVjdC5oOgorICAgICAgICAoSlNDOjpOdW1iZXJPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZSk6CisgICAgICAg
ICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisgICAg
ICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90
eXBlOjpPYmplY3RQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OlJl
Z0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdF
eHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmpl
Y3Q6OlJlZ0V4cE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBl
OjpSZWdFeHBQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6
CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hh
aW5Ob2RlOjpTY29wZUNoYWluTm9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDo6U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpTdHJp
bmdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnJlbW92ZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5T
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlN
YXApOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnBy
ZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Zmxh
dHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNvcHlQ
cm9wZXJ0eVRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwdXQpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6Om1hcmtDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNyZWF0
ZUR1bW15U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
OjpXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFjazo6a2V5Rm9yRmluYWxpemVyKToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OlN0cnVjdHVyZUNoYWluKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46Om1hcmtD
aGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OmhlYWQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OldlYWtHQ01hcEZpbmFsaXplckNhbGxi
YWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlOjp+U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlOjpzbG90KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlOjpzZXRNYXApOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OnNpbmdsZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6OmNsZWFyU2luZ2xlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTo6c2V0U2luZ2xlVHJhbnNpdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKEpTQzo6RGVmYXVsdFdlYWtHQ01hcEZpbmFsaXplckNh
bGxiYWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKToKKyAgICAgICAgKEpTQzo6RGVmYXVsdFdlYWtH
Q01hcEZpbmFsaXplckNhbGxiYWNrOjprZXlGb3JGaW5hbGl6ZXIpOgorICAgICAgICAoSlNDOjpX
ZWFrR0NNYXA6OmNvbnRhaW5zKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpmaW5kKToKKyAg
ICAgICAgKEpTQzo6V2Vha0dDTWFwOjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6
OmFkZCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6c2V0KToKKyAgICAgICAgKEpTQzo6V2Vh
a0dDTWFwOjpmaW5hbGl6ZSk6CisgICAgICAgICogcnVudGltZS9Xcml0ZUJhcnJpZXIuaDoKKyAg
ICAgICAgKEpTQzo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFz
ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3IqKToKKyAg
ICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6
OldyaXRlQmFycmllckJhc2U6OnNldFdpdGhvdXRXcml0ZUJhcnJpZXIpOgorCisyMDExLTA0LTEz
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkg
R2F2aW4gQmFycmFjbG91Z2guCiAKICAgICAgICAgTWFrZSBQcm9wZXJ0eU1hcEVudHJ5IHVzZSBh
IFdyaXRlQmFycmllciBmb3Igc3BlY2lmaWNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHkuZXhwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHkuZXhwCmluZGV4IDJm
MTE2NmMxZWVlODc5Y2NiN2FhZDdlN2IwMGQ4NGQxZGZmMTU4NTAuLmY5ZWVlODVmY2M3ZDQzZGZk
ZmM0MGMzZmE4N2U5YTM4NTY5Y2RhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0b25seS5leHAKQEAgLTEgKzEgQEAK
LV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmpl
Y3RFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVpUktOU18xMElkZW50
aWZpZXJFUEZ4UzJfRQorX19aTjNKU0MxMEpTRnVuY3Rpb25DMUVQTlNfOUV4ZWNTdGF0ZUVQTlNf
MTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVpUktOU18xMElkZW50aWZpZXJFUEZ4UzJf
RQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFM
VUU2NG9ubHkuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFM
VUU2NG9ubHkuZXhwCmluZGV4IGM2OTMzMjI1NmY4OTI0ZWU0NzdiNjFlZmI5OGYwNmJlNTg2NTY4
ZmIuLmVhYTlmNTEzOWYyMmUwM2M4MGVkN2NmNDc5MmU0OGRhZjkxNmE2MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5l
eHAKQEAgLTEgKzEgQEAKLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVFUE5T
XzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVF
RUVpUktOU18xMElkZW50aWZpZXJFUEZQdlMyX0UKK19fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5T
XzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJ
ZGVudGlmaWVyRVBGUHZTMl9FCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAppbmRleCA1ZWMzM2Y2MjIxOGQ1Y2E2NzZjMmQzMzU5MDYzMDIwNWRiN2VlN2U4Li5lMjA5Mjg5
MGUxYzE3MzNkYTEyOWUyZTVmOTRiZGRjY2YyNTQxZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTExNCwxNCArMTE0LDE0IEBAIF9fWk4zSlNDMTB0aHJv
d0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMHRocm93RXJyb3JF
UE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTEzc19k
ZWZhdWx0SW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTE1Y3JlYXRlU3RydWN0dXJlRVJOU18x
MkpTR2xvYmFsRGF0YUVOU183SlNWYWx1ZUVQS05TXzlDbGFzc0luZm9FCi1fX1pOM0pTQzExSlNC
eXRlQXJyYXlDMUVQTlNfOUV4ZWNTdGF0ZUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0
cnVjdHVyZUVFRVBOUzNfOUJ5dGVBcnJheUUKK19fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185
RXhlY1N0YXRlRVBOU185U3RydWN0dXJlRVBOM1dURjlCeXRlQXJyYXlFCiBfX1pOM0pTQzExTWFy
a2VkU3BhY2UyMWFsbG9jYXRlRnJvbVNpemVDbGFzc0VSTlMwXzlTaXplQ2xhc3NFCiBfX1pOM0pT
QzExUGFyc2VyQXJlbmE1cmVzZXRFdgogX19aTjNKU0MxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0
YXRlRVJLTlNfMTBTb3VyY2VDb2RlRQogX19aTjNKU0MxMWNyZWF0ZUVycm9yRVBOU185RXhlY1N0
YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzExcmVnRXhwRmxhZ3NFUktOU183VVN0cmluZ0UK
IF9fWk4zSlNDMTJEYXRlSW5zdGFuY2U2c19pbmZvRQotX19aTjNKU0MxMkRhdGVJbnN0YW5jZUMx
RVBOU185RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVF
ZAorX19aTjNKU0MxMkRhdGVJbnN0YW5jZUMxRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJl
RWQKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMENsaWVudERhdGFEMkV2CiBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTFqc0FycmF5VlB0ckUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMmNyZWF0ZUxl
YWtlZEVOU18xNVRocmVhZFN0YWNrVHlwZUUKQEAgLTEzMiwxMCArMTMyLDExIEBAIF9fWk4zSlND
MTJKU0dsb2JhbERhdGExNGR1bXBTYW1wbGVEYXRhRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0Mx
MkpTR2xvYmFsRGF0YTE0cmVzZXREYXRlQ2FjaGVFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0
c2hhcmVkSW5zdGFuY2VFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE1ZHVtcFJlZ0V4cFRyYWNl
RXYKK19fWk4zSlNDMTJKU0dsb2JhbERhdGEyMmNsZWFyQnVpbHRpblN0cnVjdHVyZXNFdgogX19a
TjNKU0MxMkpTR2xvYmFsRGF0YTZjcmVhdGVFTlNfMTVUaHJlYWRTdGFja1R5cGVFCiBfX1pOM0pT
QzEySlNHbG9iYWxEYXRhRDFFdgogX19aTjNKU0MxMlJlZ0V4cE9iamVjdDZzX2luZm9FCi1fX1pO
M0pTQzEyUmVnRXhwT2JqZWN0QzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQ
YXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVOUzRfSU5TXzZSZWdFeHBFRUUKK19fWk4zSlNDMTJS
ZWdFeHBPYmplY3RDMUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVOM1dURjE3
Tm9uTnVsbFBhc3NSZWZQdHJJTlNfNlJlZ0V4cEVFRQogX19aTjNKU0MxMlNhbXBsaW5nVG9vbDVz
ZXR1cEV2CiBfX1pOM0pTQzEyU21hbGxTdHJpbmdzMTdjcmVhdGVFbXB0eVN0cmluZ0VQTlNfMTJK
U0dsb2JhbERhdGFFCiBfX1pOM0pTQzEyU21hbGxTdHJpbmdzMjdjcmVhdGVTaW5nbGVDaGFyYWN0
ZXJTdHJpbmdFUE5TXzEySlNHbG9iYWxEYXRhRWgKQEAgLTE0Niw3ICsxNDcsNyBAQCBfX1pOM0pT
QzEyU3RyaW5nT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18x
N1Byb3BlcnR5TmFtZUFycgogX19aTjNKU0MxMlN0cmluZ09iamVjdDI0Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5
RGVzY3JpcHRvckUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4z
SlNDMTJTdHJpbmdPYmplY3Q2c19pbmZvRQotX19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185
RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU183
VVN0cmluZ0UKK19fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0
cnVjdHVyZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0MxMm5vbklubGluZU5hTkV2CiBfX1pOM0pT
QzEzU2FtcGxpbmdGbGFnczRzdG9wRXYKIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzNXN0YXJ0RXYK
QEAgLTE3NCw3ICsxNzUsNyBAQCBfX1pOM0pTQzE1Y3JlYXRlVHlwZUVycm9yRVBOU185RXhlY1N0
YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjEydnRhYmxlQW5j
aG9yRXYKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjZzX2luZm9FCi1fX1pOM0pTQzE2SW50ZXJuYWxGdW5j
dGlvbkMyRVBOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVOM1dURjE3Tm9u
TnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfMTBJZGVudGlmaWVyRQorX19aTjNK
U0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxP
YmplY3RFUE5TXzlTdHJ1Y3R1cmVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SlNWYXJp
YWJsZU9iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElk
ZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVP
YmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlO
YW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCkBAIC0yMDUsNyArMjA2LDggQEAgX19aTjNK
U0MyM0Fic3RyYWN0U2FtcGxpbmdDb3VudGVyNGR1bXBFdgogX19aTjNKU0MyM29iamVjdFByb3Rv
RnVuY1RvU3RyaW5nRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rp
b25TbG90RVBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNf
MTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMjREeW5hbWljR2xvYmFs
T2JqZWN0U2NvcGVDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFCi1f
X1pOM0pTQzI0SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QzJFUE5TXzE0SlNHbG9iYWxPYmplY3RF
TjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUUKK19fWk4zSlNDMjRKU09i
amVjdFdpdGhHbG9iYWxPYmplY3RDMkVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVy
ZUUKK19fWk4zSlNDMjRKU09iamVjdFdpdGhHbG9iYWxPYmplY3RDMkVSTlNfMTJKU0dsb2JhbERh
dGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzI0Y3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyNWV2YWx1YXRlSW5H
bG9iYWxDYWxsRnJhbWVFUktOU183VVN0cmluZ0VSTlNfN0pTVmFsdWVFUE5TXzE0SlNHbG9iYWxP
YmplY3RFCiBfX1pOM0pTQzM1Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25FUE5T
XzEySlNHbG9iYWxEYXRhRQpAQCAtMjU0LDkgKzI1Niw5IEBAIF9fWk4zSlNDN0pTQXJyYXkxNXNl
dFN1YmNsYXNzRGF0YUVQdgogX19aTjNKU0M3SlNBcnJheTE4Z2V0T3duUHJvcGVydHlTbG90RVBO
U185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzdKU0FycmF5NnNfaW5m
b0UKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVuZ3RoRWoKLV9fWk4zSlNDN0pTQXJyYXlDMUVOM1dU
RjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRQotX19aTjNKU0M3SlNBcnJheUMx
RVJOU18xMkpTR2xvYmFsRGF0YUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVy
ZUVFRVJLTlNfN0FyZ0xpc3RFCi1fX1pOM0pTQzdKU0FycmF5QzJFTjNXVEYxN05vbk51bGxQYXNz
UmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUUKK19fWk4zSlNDN0pTQXJyYXlDMUVSTlNfMTJKU0dsb2Jh
bERhdGFFUE5TXzlTdHJ1Y3R1cmVFCitfX1pOM0pTQzdKU0FycmF5QzFFUk5TXzEySlNHbG9iYWxE
YXRhRVBOU185U3RydWN0dXJlRVJLTlNfN0FyZ0xpc3RFCitfX1pOM0pTQzdKU0FycmF5QzJFUk5T
XzEySlNHbG9iYWxEYXRhRVBOU185U3RydWN0dXJlRQogX19aTjNKU0M3SlNBcnJheUQyRXYKIF9f
Wk4zSlNDN0pTVmFsdWUxM2lzVmFsaWRDYWxsZWVFdgogX19aTjNKU0M3UHJvZmlsZTEwcmVzdG9y
ZUFsbEV2CkBAIC0zMDksMTIgKzMxMSwxMSBAQCBfX1pOM0pTQzhQcm9maWxlcjEzc3RvcFByb2Zp
bGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmlsZXIxNHN0
YXJ0UHJvZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzhQcm9m
aWxlcjhwcm9maWxlckV2CiBfX1pOM0pTQzhldmFsdWF0ZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRT
Y29wZUNoYWluTm9kZUVSS05TXzEwU291cmNlQ29kZUVOU183SlNWYWx1ZUUKK19fWk4zSlNDOGlz
Wm9tYmllRVBLTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOUNvZGVCbG9ja0QxRXYKIF9fWk4zSlNDOUNv
ZGVCbG9ja0QyRXYKIF9fWk4zSlNDOU1hcmtTdGFjazEwc19wYWdlU2l6ZUUKIF9fWk4zSlNDOU1h
cmtTdGFjazE4aW5pdGlhbGl6ZVBhZ2VzaXplRXYKLV9fWk4zSlNDOVN0cnVjdHVyZTE3c3RvcEln
bm9yaW5nTGVha3NFdgotX19aTjNKU0M5U3RydWN0dXJlMThzdGFydElnbm9yaW5nTGVha3NFdgog
X19aTjNKU0M5U3RydWN0dXJlMjFhZGRQcm9wZXJ0eVRyYW5zaXRpb25FUk5TXzEySlNHbG9iYWxE
YXRhRVBTMF9SS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFUm0KIF9fWk4zSlNDOVN0cnVj
dHVyZTIybWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEVSTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pT
QzlTdHJ1Y3R1cmUyNWNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb25FUk5TXzEySlNHbG9iYWxEYXRh
RVBTMF9OU183SlNWYWx1ZUUKQEAgLTMyMyw3ICszMjQsNyBAQCBfX1pOM0pTQzlTdHJ1Y3R1cmUy
N2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUFMwX1JLTlNf
MTBJZAogX19aTjNKU0M5U3RydWN0dXJlMjhhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uRVJO
U18xMkpTR2xvYmFsRGF0YUVSS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFCiBfX1pOM0pT
QzlTdHJ1Y3R1cmUzZ2V0RVJOU18xMkpTR2xvYmFsRGF0YUVQTjNXVEYxMFN0cmluZ0ltcGxFUmpS
UE5TXzZKU0NlbGxFCiBfX1pOM0pTQzlTdHJ1Y3R1cmU0MGFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmVFUFMwX1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQot
X19aTjNKU0M5U3RydWN0dXJlQzFFTlNfN0pTVmFsdWVFUktOU184VHlwZUluZm9FalBLTlNfOUNs
YXNzSW5mb0UKK19fWk4zSlNDOVN0cnVjdHVyZUMxRVJOU18xMkpTR2xvYmFsRGF0YUVOU183SlNW
YWx1ZUVSS05TXzhUeXBlSW5mb0VqUEtOU185Q2xhc3NJbmZvRQogX19aTjNKU0M5U3RydWN0dXJl
RDFFdgogX19aTjNKU0M5Y29uc3RydWN0RVBOU185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRU5TXzEz
Q29uc3RydWN0VHlwZUVSS05TXzEzQ29uc3RydWN0RGF0YUVSS05TXzdBcmdMaXN0RQogX19aTjNK
U0NlcUVSS05TXzdVU3RyaW5nRVBLYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCBiMjBjYTQ0ZDU5MDAwZTlhNTU4MzZkNWI0ZDBhYWIwYTViM2Vh
MDU2Li4wZTY0OGJhODAzZDgwOWNjZTM3Y2U3YjU1MmQxZWU5M2RhZmE5MjI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTM5MCwzMSArMTM5
MCw5IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgQ29kZVR5cGUgY29kZVR5cGUsIEpTR2xvCiAKIENvZGVCbG9jazo6fkNvZGVCbG9jaygp
CiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgZGVyZWZTdHJ1Y3R1cmVzKCZtX2luc3RydWN0aW9uc1ttX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnNbaV1dKTsKLQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGRlcmVm
U3RydWN0dXJlcygmbV9pbnN0cnVjdGlvbnNbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XV0pOwotI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9n
bG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICBpZiAobV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlKQotICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlLT5kZXJlZigpOwotICAgIH0KLQogICAgIGZv
ciAoc2l6ZV90IHNpemUgPSBtX3N0cnVjdHVyZVN0dWJJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQogICAgICAgICBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXS5kZXJlZigpOwotCi0g
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1f
bWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIHN0
cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgICAgIC8vIEJvdGggbWVtYmVycyBtdXN0IGJlIGZp
bGxlZCBhdCB0aGUgc2FtZSB0aW1lCi0gICAgICAgICAgICBBU1NFUlQoISFtX21ldGhvZENhbGxM
aW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICAgICAgICAgIG1fbWV0
aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjaWYgRFVNUF9DT0RF
X0JMT0NLX1NUQVRJU1RJQ1MKQEAgLTE0MjIsMzUgKzE0MDAsMzcgQEAgQ29kZUJsb2NrOjp+Q29k
ZUJsb2NrKCkKICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6ZGVyZWZTdHJ1Y3R1cmVzKElu
c3RydWN0aW9uKiB2UEMpIGNvbnN0Cit2b2lkIENvZGVCbG9jazo6bWFya1N0cnVjdHVyZXMoTWFy
a1N0YWNrJiBtYXJrU3RhY2ssIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiB7CiAgICAgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKIAogICAgIGlm
ICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRf
c2VsZikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0
X2J5X2lkX2dldHRlcl9zZWxmKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGYpKSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0
cnVjdHVyZS0+ZGVyZWYoKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3Ry
dWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2Rl
ID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3Byb3RvKSB8fCB2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3By
b3RvKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRf
YnlfaWRfY3VzdG9tX3Byb3RvKSkgewotICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPmRlcmVm
KCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKKyAgICAgICAgbWFya1N0
YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZCgmdlBDWzVdLnUuc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
dlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2No
YWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRf
YnlfaWRfZ2V0dGVyX2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluKSkgewotICAgICAgICB2UENbNF0udS5z
dHJ1Y3R1cmUtPmRlcmVmKCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51LnN0
cnVjdHVyZSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1XS51LnN0cnVjdHVyZUNo
YWluKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7Ci0gICAg
ICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdlBDWzVdLnUuc3RydWN0
dXJlLT5kZXJlZigpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1
cmUpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNV0udS5zdHJ1Y3R1cmUpOworICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9yZXBsYWNlKSkgewotICAgICAgICB2UENbNF0udS5zdHJ1
Y3R1cmUtPmRlcmVmKCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51LnN0cnVj
dHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3Jlc29sdmVfZ2xvYmFsKSB8fCB2UENbMF0udS5v
cGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
KSkgewogICAgICAgICBpZiAodlBDWzNdLnUuc3RydWN0dXJlKQotICAgICAgICAgICAgdlBDWzNd
LnUuc3RydWN0dXJlLT5kZXJlZigpOworICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBD
WzNdLnUuc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoKHZQQ1sw
XS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9wcm90b19s
aXN0KSkKQEAgLTE0NjAsNyArMTQ0MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkZXJlZlN0cnVjdHVy
ZXMoSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKICAgICAgICAgfHwgKHZQQ1swXS51Lm9wY29kZSA9
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG9fbGlzdCkp
CiAgICAgICAgIHx8ICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9nZXRfYnlfaWRfY3VzdG9tX3NlbGZfbGlzdCkpKSB7CiAgICAgICAgIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0gdlBDWzRdLnUucG9seW1v
cnBoaWNTdHJ1Y3R1cmVzOwotICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPmRlcmVmU3Ry
dWN0dXJlcyh2UENbNV0udS5vcGVyYW5kKTsKKyAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVz
LT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjaywgdlBDWzVdLnUub3BlcmFuZCk7CiAgICAgICAgIGRl
bGV0ZSBwb2x5bW9ycGhpY1N0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
NDY5LDM3ICsxNDQ5LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJlcyhJbnN0cnVj
dGlvbiogdlBDKSBjb25zdAogICAgIEFTU0VSVCh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWQpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9nZW5lcmljKSB8fCB2UENb
MF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVuZ3Ro
KSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfc3Ry
aW5nX2xlbmd0aCkpOwogfQogCi12b2lkIENvZGVCbG9jazo6cmVmU3RydWN0dXJlcyhJbnN0cnVj
dGlvbiogdlBDKSBjb25zdAotewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xv
YmFsRGF0YS0+aW50ZXJwcmV0ZXI7Ci0KLSAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3NlbGYpIHx8IHZQQ1swXS51Lm9wY29kZSA9
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZikgfHwgdlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3Rv
bV9zZWxmKSkgewotICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG8pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG8pIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG8p
KSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51
LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHZQQ1sw
XS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikg
fHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lk
X2dldHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0
dXJlLT5yZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodlBDWzBdLnUub3Bj
b2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7
Ci0gICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0
cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9yZXBsYWNlKSkg
ewotICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCByZWYgdGhlaXIgU3Ry
dWN0dXJlcy4KLSAgICBBU1NFUlQodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfZ2V0X2J5X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9wdXRfYnlfaWQpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZW5lcmljKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfZ2VuZXJpYykpOwotfQotCiB2b2lkIEV2
YWxDb2RlQ2FjaGU6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAg
RXZhbENhY2hlTWFwOjppdGVyYXRvciBlbmQgPSBtX2NhY2hlTWFwLmVuZCgpOwpAQCAtMTUyNCwz
MCArMTQ3MywyNCBAQCB2b2lkIENvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1h
cmtTdGFjaykKICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmNhbGxMaW5rSW5mbyhpKS5j
YWxsZWUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7Ci0gICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICBJbnN0cnVjdGlvbiogdlBDID0gJm1faW5zdHJ1Y3Rpb25z
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwotICAgICAgICBpZiAodlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSB8fCB2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0
dGVyX2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluKSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
JnZQQ1s1XS51LnN0cnVjdHVyZUNoYWluKTsKLSAgICAgICAgZWxzZSBpZiAodlBDWzBdLnUub3Bj
b2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKQot
ICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pOwot
ICAgIH0KKyAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
cy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtYXJrU3RydWN0dXJlcyht
YXJrU3RhY2ssICZtX2luc3RydWN0aW9uc1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ld
XSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2ds
b2JhbFJlc29sdmVJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAg
IGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVj
dHVyZSkKLSAgICAgICAgICAgIHN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwor
ICAgICAgICBpZiAobV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlKQorICAgICAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmbV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlKTsK
ICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6
ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3Nb
aV0ubWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
bWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAg
ICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5j
YWNoZWRTdHJ1Y3R1cmUpIHsKKyAgICAgICAgaWYgKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5j
YWNoZWRTdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIC8vIEJvdGggbWVtYmVycyBtdXN0IGJlIGZp
bGxlZCBhdCB0aGUgc2FtZSB0aW1lCi0gICAgICAgICAgICBzdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdh
dGUobWFya1N0YWNrKTsKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fbWV0aG9kQ2Fs
bExpbmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgQVNTRVJUKCEhbV9t
ZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICBtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLT5t
YXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZt
X21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAg
ICAgfQogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCmluZGV4IDI1ZTY1ZjQ3NTNjZjM1NWNlYjg5YWNjMzI0NGJlYzg5NTJlODIyNWEuLmFm
NjhlYjU4MWNhZGFkMjc1YTljZmY0OGQ4MDQ0MTgwYzYyOTVlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEyMiw4ICsxMjIsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIHN0cnVjdCBNZXRob2RDYWxsTGlua0luZm8gewogICAgICAgICBNZXRo
b2RDYWxsTGlua0luZm8oKQotICAgICAgICAgICAgOiBjYWNoZWRTdHJ1Y3R1cmUoMCkKLSAgICAg
ICAgICAgICwgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlKDApCiAgICAgICAgIHsKICAgICAgICAg
fQogCkBAIC0xNDIsMjQgKzE0MCwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC8v
ICAgICAtIE9uY2UgdGhpcyB0cmFuc2l0aW9uIGhhcyBiZWVuIHRha2VuIG9uY2UsIGNhY2hlZFN0
cnVjdHVyZSBpcwogICAgICAgICAgICAgLy8gICAgICAgbnVsbCBhbmQgY2FjaGVkUHJvdG90eXBl
U3RydWN0dXJlIGlzIHNldCB0byBhIG51bi1udWxsIHZhbHVlLgogICAgICAgICAgICAgLy8gICAg
IC0gT25jZSB0aGUgY2FsbCBpcyBsaW5rZWQgYm90aCBzdHJ1Y3R1cmVzIGFyZSBzZXQgdG8gbm9u
LW51bGwgdmFsdWVzLgotICAgICAgICAgICAgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlID0gKFN0
cnVjdHVyZSopMTsKKyAgICAgICAgICAgIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS5zZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKChTdHJ1Y3R1cmUqKTEpOwogICAgICAgICB9CiAKICAgICAgICAgQ29k
ZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb247CiAgICAgICAgIENvZGVMb2NhdGlvbkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbDsKLSAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1
Y3R1cmU7Ci0gICAgICAgIFN0cnVjdHVyZSogY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOworICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBjYWNoZWRTdHJ1Y3R1cmU7CisgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZTsKICAgICB9Owog
CiAgICAgc3RydWN0IEdsb2JhbFJlc29sdmVJbmZvIHsKICAgICAgICAgR2xvYmFsUmVzb2x2ZUlu
Zm8odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICA6IHN0cnVjdHVyZSgwKQot
ICAgICAgICAgICAgLCBvZmZzZXQoMCkKKyAgICAgICAgICAgIDogb2Zmc2V0KDApCiAgICAgICAg
ICAgICAsIGJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gc3RydWN0dXJlOwogICAgICAgICB1bnNpZ25lZCBvZmZzZXQ7CiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OwogICAgIH07CkBAIC0yMTUsOCArMjEyLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgfkNvZGVCbG9jaygpOwogCiAgICAgICAgIHZv
aWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smKTsKLSAgICAgICAgdm9pZCByZWZTdHJ1Y3R1cmVz
KEluc3RydWN0aW9uKiB2UEMpIGNvbnN0OwotICAgICAgICB2b2lkIGRlcmVmU3RydWN0dXJlcyhJ
bnN0cnVjdGlvbiogdlBDKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlz
dGljcygpOwogCkBAIC00ODYsNiArNDgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1
Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAg
dm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogI2VuZGlm
CisgICAgICAgIHZvaWQgbWFya1N0cnVjdHVyZXMoTWFya1N0YWNrJiwgSW5zdHJ1Y3Rpb24qIHZQ
QykgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApp
bmRleCBiNWU1YzUyZjBmNWM0Yzg1OTUzMTQ5ZGVkNWQ0MzZjZDVhYjg1OTY1Li5kOWNiYjExYWQ4
NjYwYTRmZGEwYzI0OTBiYWJlMmNmMzg5MjAwMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtNjEsNDUgKzYxLDQ1IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdHJ1Y3QgUG9seW1vcnBoaWNTdHViSW5mbyB7CiAgICAgICAgICAgICBi
b29sIGlzQ2hhaW47CiAgICAgICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RT
dHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmU7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIGJhc2U7
CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBiYXNlOwogICAgICAgICAgICAg
dW5pb24gewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG87CisgICAgICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IHByb3RvOwogICAgICAgICAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOwogICAgICAgICAgICAgfSB1Owog
Ci0gICAgICAgICAgICB2b2lkIHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHVi
Um91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlKQorICAgICAgICAgICAg
dm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1
Y3R1cmUqIF9iYXNlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5l
ID0gX3N0dWJSb3V0aW5lOwotICAgICAgICAgICAgICAgIGJhc2UgPSBfYmFzZTsKLSAgICAgICAg
ICAgICAgICB1LnByb3RvID0gMDsKKyAgICAgICAgICAgICAgICBiYXNlLnNldChnbG9iYWxEYXRh
LCBvd25lciwgX2Jhc2UpOworICAgICAgICAgICAgICAgIHUucHJvdG8uY2xlYXIoKTsKICAgICAg
ICAgICAgICAgICBpc0NoYWluID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIHZvaWQgc2V0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJS
b3V0aW5lVHlwZSBfc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogX2Jhc2UsIFN0cnVjdHVyZSogX3By
b3RvKQorICAgICAgICAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0Nl
bGwqIG93bmVyLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUg
X3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1cmUqIF9wcm90bykKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHViUm91dGluZSA9IF9zdHViUm91dGluZTsKLSAg
ICAgICAgICAgICAgICBiYXNlID0gX2Jhc2U7Ci0gICAgICAgICAgICAgICAgdS5wcm90byA9IF9w
cm90bzsKKyAgICAgICAgICAgICAgICBiYXNlLnNldChnbG9iYWxEYXRhLCBvd25lciwgX2Jhc2Up
OworICAgICAgICAgICAgICAgIHUucHJvdG8uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBfcHJvdG8p
OwogICAgICAgICAgICAgICAgIGlzQ2hhaW4gPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NlbGwqIG93bmVyLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5
cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1cmVDaGFpbiogX2NoYWlu
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lID0gX3N0dWJSb3V0
aW5lOwotICAgICAgICAgICAgICAgIGJhc2UgPSBfYmFzZTsKKyAgICAgICAgICAgICAgICBiYXNl
LnNldChnbG9iYWxEYXRhLCBvd25lciwgX2Jhc2UpOwogICAgICAgICAgICAgICAgIHUuY2hhaW4u
c2V0KGdsb2JhbERhdGEsIG93bmVyLCBfY2hhaW4pOwogICAgICAgICAgICAgICAgIGlzQ2hhaW4g
PSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGxpc3RbUE9MWU1PUlBISUNfTElTVF9D
QUNIRV9TSVpFXTsKICAgICAgICAgCi0gICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJv
dXRpbmUsIFN0cnVjdHVyZSogZmlyc3RCYXNlKQorICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUsIFN0
cnVjdHVyZSogZmlyc3RCYXNlKQogICAgICAgICB7Ci0gICAgICAgICAgICBsaXN0WzBdLnNldChz
dHViUm91dGluZSwgZmlyc3RCYXNlKTsKKyAgICAgICAgICAgIGxpc3RbMF0uc2V0KGdsb2JhbERh
dGEsIG93bmVyLCBzdHViUm91dGluZSwgZmlyc3RCYXNlKTsKICAgICAgICAgfQogCi0gICAgICAg
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogZmlyc3RCYXNlLCBT
dHJ1Y3R1cmUqIGZpcnN0UHJvdG8pCisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0dXJl
KiBmaXJzdEJhc2UsIFN0cnVjdHVyZSogZmlyc3RQcm90bykKICAgICAgICAgewotICAgICAgICAg
ICAgbGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RQcm90byk7CisgICAg
ICAgICAgICBsaXN0WzBdLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3R1YlJvdXRpbmUsIGZpcnN0
QmFzZSwgZmlyc3RQcm90byk7CiAgICAgICAgIH0KIAogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUs
IFN0cnVjdHVyZSogZmlyc3RCYXNlLCBTdHJ1Y3R1cmVDaGFpbiogZmlyc3RDaGFpbikKQEAgLTEw
NywyNyArMTA3LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbGlzdFswXS5zZXQo
Z2xvYmFsRGF0YSwgb3duZXIsIHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0Q2hhaW4pOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkZXJlZlN0cnVjdHVyZXMoaW50IGNvdW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBQb2x5bW9ycGhpY1N0dWJJbmZvJiBpbmZvID0gbGlzdFtpXTsKLQotICAg
ICAgICAgICAgICAgIEFTU0VSVChpbmZvLmJhc2UpOwotICAgICAgICAgICAgICAgIGluZm8uYmFz
ZS0+ZGVyZWYoKTsKLQotICAgICAgICAgICAgICAgIGlmIChpbmZvLnUucHJvdG8pIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpbmZvLmlzQ2hhaW4pCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvLnUucHJvdG8tPmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KICAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFy
a1N0YWNrLCBpbnQgY291bnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIFBvbHltb3JwaGljU3R1YkluZm8m
IGluZm8gPSBsaXN0W2ldOwogICAgICAgICAgICAgICAgIEFTU0VSVChpbmZvLmJhc2UpOwogICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmluZm8uYmFz
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGluZm8udS5wcm90byAmJiAhaW5mby5pc0NoYWluKQor
ICAgICAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLnUucHJvdG8pOwogICAg
ICAgICAgICAgICAgIGlmIChpbmZvLnUuY2hhaW4gJiYgaW5mby5pc0NoYWluKQogICAgICAgICAg
ICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLnUuY2hhaW4pOwogICAgICAgICAgICAg
fQpAQCAtMTUzLDcgKzE0MSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHUub3Bl
cmFuZCA9IG9wZXJhbmQ7CiAgICAgICAgIH0KIAotICAgICAgICBJbnN0cnVjdGlvbihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgeyB1LnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsgfQorICAgICAgICBJbnN0
cnVjdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICB1LnN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgdS5zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1
cmUpOworICAgICAgICB9CiAgICAgICAgIEluc3RydWN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKQogICAg
ICAgICB7CiAgICAgICAgICAgICB1LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CkBAIC0xNzAsNyAr
MTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIE9w
Y29kZSBvcGNvZGU7CiAgICAgICAgICAgICBpbnQgb3BlcmFuZDsKLSAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZTsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+
IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpz
Q2VsbDsKICAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1v
cnBoaWNTdHJ1Y3R1cmVzOwpAQCAtMTc5LDYgKzE3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBJbnN0cnVjdGlvbihTdHJ1Y3R1cmVDaGFpbiop
OworICAgICAgICBJbnN0cnVjdGlvbihTdHJ1Y3R1cmUqKTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCmluZGV4IGUxMGRjNWNmNWUxNzA1ODYzYzcyM2U3MjhlZjllZGRiYjVm
MDRjNWMuLmJlNTc2MGExYThkYjQ3NTkwMTI5OWViZGViZDY1MmFlMjU1ODA1OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cApAQCAtMzUsNDIgKzM1LDI4IEBAIG5hbWVzcGFjZSBKU0Mgewogdm9pZCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6ZGVyZWYoKQogewogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewotICAgIGNhc2UgYWNj
ZXNzX2dldF9ieV9pZF9zZWxmOgotICAgICAgICB1LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIGFjY2Vzc19nZXRfYnlf
aWRfcHJvdG86Ci0gICAgICAgIHUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmRl
cmVmKCk7Ci0gICAgICAgIHUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZS0+ZGVyZWYo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAg
ICAgICAgdS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmX2xpc3Q6IHsKICAgICAg
ICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMg
PSB1LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0OwotICAgICAgICBwb2x5bW9ycGhpY1N0
cnVjdHVyZXMtPmRlcmVmU3RydWN0dXJlcyh1LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7CiAg
ICAgICAgIGRlbGV0ZSBwb2x5bW9ycGhpY1N0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6IHsKICAgICAgICAgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMgPSB1Lmdl
dEJ5SWRQcm90b0xpc3Quc3RydWN0dXJlTGlzdDsKLSAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1
cmVzLT5kZXJlZlN0cnVjdHVyZXModS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXplKTsKICAgICAg
ICAgZGVsZXRlIHBvbHltb3JwaGljU3RydWN0dXJlczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKKyAgICBjYXNlIGFjY2Vzc19nZXRfYnlf
aWRfcHJvdG86CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOgogICAgIGNhc2UgYWNj
ZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uOgotICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnBy
ZXZpb3VzU3RydWN0dXJlLT5kZXJlZigpOwotICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnN0
cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX3B1dF9i
eV9pZF9yZXBsYWNlOgotICAgICAgICB1LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1
cmUtPmRlcmVmKCk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWQ6
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkOgogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9n
ZW5lcmljOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9nZW5lcmljOgogICAgIGNhc2UgYWNj
ZXNzX2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X3N0cmluZ19sZW5ndGg6
Ci0gICAgICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCByZWYgdGhlaXIgU3RydWN0dXJl
cy4KKyAgICAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IGhhdmUgdG8gcmVsZWFzZSBh
bnkgYWxsb2NhdGVkIG1lbW9yeQogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04MSwxNCArNjcsMTQgQEAgdm9pZCBTdHJ1Y3R1
cmVTdHViSW5mbzo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBz
d2l0Y2ggKGFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAg
ICAgICAgdS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1h
cmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUuZ2V0QnlJZFNlbGYuYmFzZU9i
amVjdFN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlf
aWRfcHJvdG86Ci0gICAgICAgIHUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPm1h
cmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKLSAgICAgICAgdS5nZXRCeUlkUHJvdG8ucHJvdG90eXBl
U3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOgotICAgICAgICB1Lmdl
dEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7
CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1
Y3R1cmUpOwogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRDaGFpbi5jaGFpbik7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OiB7
CkBAIC0xMDIsMTIgKzg4LDEyIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86Om1hcmtBZ2dyZWdh
dGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb246Ci0gICAgICAgIHUucHV0QnlJZFRyYW5zaXRp
b24ucHJldmlvdXNTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKLSAgICAgICAg
dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsK
KyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0
cnVjdHVyZSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24u
c3RydWN0dXJlKTsKICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5wdXRCeUlkVHJhbnNpdGlv
bi5jaGFpbik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVw
bGFjZToKLSAgICAgICAgdS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJr
QWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJ
ZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IGFjY2Vzc19nZXRfYnlfaWQ6CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkOgpAQCAtMTE1LDcg
KzEwMSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNr
JiBtYXJrU3RhY2spCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX2dlbmVyaWM6CiAgICAgY2Fz
ZSBhY2Nlc3NfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xl
bmd0aDoKLSAgICAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IHJlZiB0aGVpciBTdHJ1
Y3R1cmVzLgorICAgICAgICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgbmVlZCB0byBtYXJr
IGFueXRoaW5nCiAgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggNjcwMmRjZWNkNDk3OWUzNTY1MjZkODU5OGM4NDM3Y2Fl
NDQ4MDY1YS4uYmZlZWIxZWFkMDMxZGY0OWI5ZjUxZWEwNTlkNGE4MWIzYTJhZjQ5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgK
QEAgLTU4LDMyICs1OCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBpbml0R2V0QnlJZFNlbGYoU3RydWN0dXJlKiBiYXNlT2JqZWN0U3Ry
dWN0dXJlKQorICAgICAgICB2b2lkIGluaXRHZXRCeUlkU2VsZihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSkKICAg
ICAgICAgewogICAgICAgICAgICAgYWNjZXNzVHlwZSA9IGFjY2Vzc19nZXRfYnlfaWRfc2VsZjsK
IAotICAgICAgICAgICAgdS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlID0gYmFzZU9i
amVjdFN0cnVjdHVyZTsKLSAgICAgICAgICAgIGJhc2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOwor
ICAgICAgICAgICAgdS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLnNldChnbG9iYWxE
YXRhLCBvd25lciwgYmFzZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIGluaXRHZXRCeUlkUHJvdG8oU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSkKKyAgICAgICAgdm9pZCBpbml0R2V0QnlJZFByb3Rv
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBiYXNl
T2JqZWN0U3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSkKICAgICAgICAg
ewogICAgICAgICAgICAgYWNjZXNzVHlwZSA9IGFjY2Vzc19nZXRfYnlfaWRfcHJvdG87CiAKLSAg
ICAgICAgICAgIHUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0
U3RydWN0dXJlOwotICAgICAgICAgICAgYmFzZU9iamVjdFN0cnVjdHVyZS0+cmVmKCk7Ci0KLSAg
ICAgICAgICAgIHUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0
cnVjdHVyZTsKLSAgICAgICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZS0+cmVmKCk7CisgICAgICAg
ICAgICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBv
d25lciwgYmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgICAgICAgICB1LmdldEJ5SWRQcm90by5w
cm90b3R5cGVTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBwcm90b3R5cGVTdHJ1Y3R1
cmUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBpbml0R2V0QnlJZENoYWluKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIGFj
Y2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOwogCi0gICAgICAgICAgICB1LmdldEJ5
SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlID0gYmFzZU9iamVjdFN0cnVjdHVyZTsKLSAgICAg
ICAgICAgIGJhc2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOwotCisgICAgICAgICAgICB1LmdldEJ5
SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgYmFzZU9i
amVjdFN0cnVjdHVyZSk7CiAgICAgICAgICAgICB1LmdldEJ5SWRDaGFpbi5jaGFpbi5zZXQoZ2xv
YmFsRGF0YSwgb3duZXIsIGNoYWluKTsKICAgICAgICAgfQogCkBAIC0xMDksMjEgKzEwMywxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgYWNjZXNzVHlwZSA9IGFj
Y2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbjsKIAotICAgICAgICAgICAgdS5wdXRCeUlkVHJhbnNp
dGlvbi5wcmV2aW91c1N0cnVjdHVyZSA9IHByZXZpb3VzU3RydWN0dXJlOwotICAgICAgICAgICAg
cHJldmlvdXNTdHJ1Y3R1cmUtPnJlZigpOwotCi0gICAgICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0
aW9uLnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICAgICAgICAgIHN0cnVjdHVyZS0+cmVmKCk7
Ci0KKyAgICAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUuc2V0
KGdsb2JhbERhdGEsIG93bmVyLCBwcmV2aW91c1N0cnVjdHVyZSk7CisgICAgICAgICAgICB1LnB1
dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLnNldChnbG9iYWxEYXRh
LCBvd25lciwgY2hhaW4pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbml0UHV0QnlJZFJl
cGxhY2UoU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlKQorICAgICAgICB2b2lkIGluaXRQ
dXRCeUlkUmVwbGFjZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0
cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgYWNj
ZXNzVHlwZSA9IGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTsKICAgICAKLSAgICAgICAgICAgIHUu
cHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZSA9IGJhc2VPYmplY3RTdHJ1Y3R1cmU7
Ci0gICAgICAgICAgICBiYXNlT2JqZWN0U3RydWN0dXJlLT5yZWYoKTsKKyAgICAgICAgICAgIHUu
cHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIs
IGJhc2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkZXJlZigp
OwpAQCAtMTQ0LDE0ICsxMzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VP
YmplY3RTdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1
cmU+IGJhc2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgICAgICB9IGdldEJ5SWRTZWxmOwogICAg
ICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RT
dHJ1Y3R1cmU7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmU7
CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IGJhc2VPYmplY3RT
dHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IHBy
b3RvdHlwZVN0cnVjdHVyZTsKICAgICAgICAgICAgIH0gZ2V0QnlJZFByb3RvOwogICAgICAgICAg
ICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1
cmU7CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IGJhc2VPYmpl
Y3RTdHJ1Y3R1cmU7CiAgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVD
aGFpbj4gY2hhaW47CiAgICAgICAgICAgICB9IGdldEJ5SWRDaGFpbjsKICAgICAgICAgICAgIHN0
cnVjdCB7CkBAIC0xNjMsMTIgKzE1MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICBpbnQgbGlzdFNpemU7CiAgICAgICAgICAgICB9IGdldEJ5SWRQcm90b0xpc3Q7CiAgICAg
ICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNTdHJ1
Y3R1cmU7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IHByZXZpb3VzU3RydWN0dXJlOworICAg
ICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBzdHJ1Y3R1cmU7CiAgICAg
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gY2hhaW47CiAgICAg
ICAgICAgICB9IHB1dEJ5SWRUcmFuc2l0aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKLSAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmU7CisgICAgICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IGJhc2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAg
ICAgICAgICB9IHB1dEJ5SWRSZXBsYWNlOwogICAgICAgICB9IHU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKaW5kZXgg
NTBiYTc0NmVlZDE2ZGIzMGFiZDI4ZWNjNDA0ZGY3YzBiN2E4MDczOS4uNjdhNzk2YTZhYzc0ODRj
MWU3YzMyYzAzZTlkZjk3NTg5OWUwOTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBEZWJ1Z2dlckFjdGl2YXRpb246OkRlYnVnZ2VyQWN0aXZhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBhY3RpdmF0aW9uKQotICAgIDog
SlNOb25GaW5hbE9iamVjdChEZWJ1Z2dlckFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShnbG9i
YWxEYXRhLCBqc051bGwoKSkpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIERl
YnVnZ2VyQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbERhdGEsIGpzTnVsbCgpKSkK
IHsKICAgICBBU1NFUlQoYWN0aXZhdGlvbik7CiAgICAgQVNTRVJUKGFjdGl2YXRpb24tPmlzQWN0
aXZhdGlvbk9iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCBmMjJkMmZmYmQ5MTk0M2FlNDhmYzkzZjNjN2U4
MGEyMWFiYTRjOTZkLi5iZmIzNmRiNTMzYjdmZGQzNmFiZTM1Yzc5OTQ4ZTg0Nzk4NmEzM2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IEpTVmFsdWUgbG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBsb29rdXBTZXR0ZXIoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIAog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IAogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hhbmRsZS5oCmluZGV4IDQ3MzRlNDIyMDA4M2EzYThkOTQxMjZkOWU0YmFlYzcyN2ZiZjEyM2Mu
LjUzMWQ1MzU0NzJlYTEzMzViZGVkMjNkNTViMjJjZmYyOWQwNzI3MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZS5oCkBAIC00NCw5ICs0NCwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y2xhc3MgSGFuZGxlOwogLy8gQ3JlYXRpbmcgYSBKU1ZhbHVlIEhhbmRsZSBpcyBpbnZhbGlkCiB0
ZW1wbGF0ZSA8PiBjbGFzcyBIYW5kbGU8SlNWYWx1ZT47CiAKKy8vIEZvcndhcmQgZGVjbGFyZSBX
ZWFrR0NNYXAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUs
IHR5cGVuYW1lIEZpbmFsaXplckNhbGxiYWNrLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBL
ZXlUcmFpdHNBcmc+IGNsYXNzIFdlYWtHQ01hcDsKKwogY2xhc3MgSGFuZGxlQmFzZSB7CiAgICAg
ZnJpZW5kIGNsYXNzIEhhbmRsZUhlYXA7CiAgICAgZnJpZW5kIHN0cnVjdCBKU0NhbGxiYWNrT2Jq
ZWN0RGF0YTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVk
VHlwZSwgdHlwZW5hbWUgRmluYWxpemVyQ2FsbGJhY2ssIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZz4gZnJpZW5kIGNsYXNzIFdlYWtHQ01hcDsKIAogcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc2xvdCB8fCAhKm1fc2xvdDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggNWI0YWM1YTAxOGMw
OTc4ZjQ4MmMxNjgxNDZkZmFhZTIyZjA2ODRkZi4uM2ZiMWE5OGRmYmFlYjU5Yjg1MTZlMDAxYTU5
ZjBiMGViM2EyODljZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
CkBAIC01Nyw3ICs1NywxMyBAQCB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKENvbnNlcnZhdGl2ZVJv
b3RzJiBjb25zZXJ2YXRpdmVSb290cykKIGlubGluZSB2b2lkIE1hcmtTdGFjazo6bWFya0NoaWxk
cmVuKEpTQ2VsbCogY2VsbCkKIHsKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwor
ICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5
cGUpIHsKKyAgICAgICAgY2VsbC0+SlNDZWxsOjptYXJrQ2hpbGRyZW4oKnRoaXMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNNYXJrQ2hpbGRyZW4oKSkgeworICAgICAgICBBU1NFUlQoY2VsbC0+aXNPYmpl
Y3QoKSk7CiAjaWZkZWYgTkRFQlVHCiAgICAgICAgIGFzT2JqZWN0KGNlbGwpLT5tYXJrQ2hpbGRy
ZW5EaXJlY3QoKnRoaXMpOwogI2Vsc2UKQEAgLTEwNSw2ICsxMTEsNyBAQCB2b2lkIE1hcmtTdGFj
azo6ZHJhaW4oKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY2VsbC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpIDwgQ29tcG91bmRUeXBlKSB7CisgICAgICAgICAgICAg
ICAgY2VsbC0+SlNDZWxsOjptYXJrQ2hpbGRyZW4oKnRoaXMpOwogICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50Lm1fdmFsdWVzID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBtX21hcmtT
ZXRzLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKaW5kZXggMzk4ZDQzMzI1YzY0ZDJj
ZTJkYjQ0ZWViNzUyZDIzY2ZmZjkzY2Y3OC4uYTEwYTc3ODVjM2Q5NmY2MzM3NmFmNGNlNjNiNjkw
YjQxMWQ5NDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cApAQCAtNjAsMTQgKzYwLDEyIEBAIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhjb25zdCBQYWdl
QWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIEpTR2xvYmFsRGF0YSoKIAogICAgIFN0cnVj
dHVyZSogZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUgPSBnbG9iYWxEYXRhLT5kdW1teU1hcmth
YmxlQ2VsbFN0cnVjdHVyZS5nZXQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7
IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpCi0gICAgICAgIG5ldyAoJmF0b21z
KClbaV0pIEpTQ2VsbChkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSk7CisgICAgICAgIG5ldyAo
JmF0b21zKClbaV0pIEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1
cmUpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpzd2VlcCgpCiB7Ci0jaWYgIUVOQUJMRShKU0Nf
Wk9NQklFUykKICAgICBTdHJ1Y3R1cmUqIGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlID0gbV9o
ZWFwLT5nbG9iYWxEYXRhKCktPmR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlLmdldCgpOwotI2Vu
ZGlmCiAKICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkg
Kz0gbV9hdG9tc1BlckNlbGwpIHsKICAgICAgICAgaWYgKG1fbWFya3MuZ2V0KGkpKQpAQCAtNzUs
MTUgKzczLDE1IEBAIHZvaWQgTWFya2VkQmxvY2s6OnN3ZWVwKCkKIAogICAgICAgICBKU0NlbGwq
IGNlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKICNpZiBFTkFC
TEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIGlmICghY2VsbC0+aXNab21iaWUoKSkgeworICAgICAg
ICBpZiAoY2VsbC0+c3RydWN0dXJlKCkgJiYgY2VsbC0+c3RydWN0dXJlKCkgIT0gZHVtbXlNYXJr
YWJsZUNlbGxTdHJ1Y3R1cmUgJiYgIWNlbGwtPmlzWm9tYmllKCkpIHsKICAgICAgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogaW5mbyA9IGNlbGwtPmNsYXNzSW5mbygpOwogICAgICAgICAgICAgY2Vs
bC0+fkpTQ2VsbCgpOwotICAgICAgICAgICAgbmV3IChjZWxsKSBKU1pvbWJpZShpbmZvLCBKU1pv
bWJpZTo6bGVha2VkWm9tYmllU3RydWN0dXJlKCptX2hlYXAtPmdsb2JhbERhdGEoKSkpOworICAg
ICAgICAgICAgbmV3IChjZWxsKSBKU1pvbWJpZSgqbV9oZWFwLT5nbG9iYWxEYXRhKCksIGluZm8s
IG1faGVhcC0+Z2xvYmFsRGF0YSgpLT56b21iaWVTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAg
ICAgbV9tYXJrcy5zZXQoaSk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGNlbGwtPn5KU0Nl
bGwoKTsKLSAgICAgICAgbmV3IChjZWxsKSBKU0NlbGwoZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1
cmUpOworICAgICAgICBuZXcgKGNlbGwpIEpTQ2VsbCgqbV9oZWFwLT5nbG9iYWxEYXRhKCksIGR1
bW15TWFya2FibGVDZWxsU3RydWN0dXJlKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Ryb25nLmgKaW5kZXggMzk0ZDJhYWNhNzA2MjRkOTNlODIyMGM0OTFhMmUxNjQ0
YzVhMmI1Zi4uOGI5MmFlOWY3YzY1NjMyYTEzNjE0Njg1MDM1MDk4OTZmMzBlYzBiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUg
IkFzc2VydGlvbnMuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKICNpbmNsdWRlICJIYW5kbGVIZWFw
LmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFz
cyBKU0dsb2JhbERhdGE7CitIYW5kbGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKEpTR2xvYmFs
RGF0YSYpOworCiAvLyBBIHN0cm9uZ2x5IHJlZmVyZW5jZWQgaGFuZGxlIHRoYXQgcHJldmVudHMg
dGhlIG9iamVjdCBpdCBwb2ludHMgdG8gZnJvbSBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZC4KIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmcgOiBwdWJsaWMgSGFuZGxlPFQ+IHsKICAg
ICB1c2luZyBIYW5kbGU8VD46OnNsb3Q7CkBAIC00NywxMyArNDksMTMgQEAgcHVibGljOgogICAg
IH0KICAgICAKICAgICBTdHJvbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5
cGUgdmFsdWUgPSBFeHRlcm5hbFR5cGUoKSkKLSAgICAgICAgOiBIYW5kbGU8VD4oZ2xvYmFsRGF0
YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpKQorICAgICAgICA6IEhhbmRsZTxUPihhbGxvY2F0ZUds
b2JhbEhhbmRsZShnbG9iYWxEYXRhKSkKICAgICB7CiAgICAgICAgIHNldCh2YWx1ZSk7CiAgICAg
fQogCiAgICAgU3Ryb25nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSGFuZGxlPFQ+IGhhbmRs
ZSkKLSAgICAgICAgOiBIYW5kbGU8VD4oZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgp
KQorICAgICAgICA6IEhhbmRsZTxUPihhbGxvY2F0ZUdsb2JhbEhhbmRsZShnbG9iYWxEYXRhKSkK
ICAgICB7CiAgICAgICAgIHNldChoYW5kbGUuZ2V0KCkpOwogICAgIH0KQEAgLTk2LDcgKzk4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJu
YWxUeXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFzbG90KCkpCi0gICAgICAgICAgICBz
ZXRTbG90KGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSk7CisgICAgICAgICAgICBz
ZXRTbG90KGFsbG9jYXRlR2xvYmFsSGFuZGxlKGdsb2JhbERhdGEpKTsKICAgICAgICAgc2V0KHZh
bHVlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IGQ3OWM1ODFlMzYxNzFmNGNjY2ZhZDU3YmMzM2JkNTM2NTcy
NDk0YmEuLjcyNGY2OGYzNGU5OWMzODYyMjI1YWNiZWUxZTBkYjZhYzZiYTk5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xv
YmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnVjdGlvbioKICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKICAgICBpbnQgcHJvcGVydHkgPSB2UENb
Ml0udS5vcGVyYW5kOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzNdLnUuc3RydWN0
dXJlOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzNdLnUuc3RydWN0dXJlLmdldCgp
OwogICAgIGludCBvZmZzZXQgPSB2UENbNF0udS5vcGVyYW5kOwogCiAgICAgaWYgKHN0cnVjdHVy
ZSA9PSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKSB7CkBAIC0xNzcsMTAgKzE3Nyw3IEBAIE5F
VkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBJbnN0cnVjdGlvbioKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNs
b3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBz
bG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwogICAgICAgICBpZiAoc2xvdC5pc0NhY2hl
YWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewotICAgICAg
ICAgICAgaWYgKHZQQ1szXS51LnN0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICB2UENbM10udS5z
dHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgICAgICBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgp
LT5yZWYoKTsKLSAgICAgICAgICAgIHZQQ1szXSA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCk7
CisgICAgICAgICAgICB2UENbM10udS5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgIHZQQ1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAg
ICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA0LDcgKzIwMSw3IEBAIE5FVkVSX0lOTElORSBib29s
IEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SW5zdHJ1CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7
CiAgICAgaW50IHByb3BlcnR5ID0gdlBDWzJdLnUub3BlcmFuZDsKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHZQQ1szXS51LnN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHZQQ1szXS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICBpbnQgb2Zmc2V0ID0gdlBDWzRdLnUub3Bl
cmFuZDsKICAgICBpbnQgc2tpcCA9IHZQQ1s1XS51Lm9wZXJhbmQ7CiAgICAgCkBAIC0yNTUsMTAg
KzI1Miw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHlu
YW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgaWYgKGdsb2JhbE9iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKICAgICAgICAgaWYg
KHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmpl
Y3QpIHsKLSAgICAgICAgICAgIGlmICh2UENbM10udS5zdHJ1Y3R1cmUpCi0gICAgICAgICAgICAg
ICAgdlBDWzNdLnUuc3RydWN0dXJlLT5kZXJlZigpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+cmVmKCk7Ci0gICAgICAgICAgICB2UENbM10gPSBnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpOworICAgICAgICAgICAgdlBDWzNdLnUuc3RydWN0dXJlLnNldChjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB2UENbNF0gPSBzbG90LmNhY2hlZE9mZnNl
dCgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgICAgICBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKQEAgLTEyMjUsMTEgKzEyMTksMTEg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlUHV0QnlJRChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogICAgIH0KIAogICAgIC8vIENhY2hlIG1pc3M6IHJl
Y29yZCBTdHJ1Y3R1cmUgdG8gY29tcGFyZSBhZ2FpbnN0IG5leHQgdGltZS4KLSAgICBTdHJ1Y3R1
cmUqIGxhc3RTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBs
YXN0U3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmIChzdHJ1Y3R1
cmUgIT0gbGFzdFN0cnVjdHVyZSkgewogICAgICAgICAvLyBGaXJzdCBtaXNzOiByZWNvcmQgU3Ry
dWN0dXJlIHRvIGNvbXBhcmUgYWdhaW5zdCBuZXh0IHRpbWUuCiAgICAgICAgIGlmICghbGFzdFN0
cnVjdHVyZSkgewotICAgICAgICAgICAgdlBDWzRdID0gc3RydWN0dXJlOworICAgICAgICAgICAg
dlBDWzRdLnUuc3RydWN0dXJlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xMjU1LDI0ICsxMjQ5LDIzIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVy
cHJldGVyOjp0cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoK
IAogICAgICAgICAvLyBwdXRfYnlfaWRfdHJhbnNpdGlvbiBjaGVja3MgdGhlIHByb3RvdHlwZSBj
aGFpbiBmb3Igc2V0dGVycy4KICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oY2FsbEZy
YW1lLCBiYXNlQ2VsbCk7Ci0KKyAgICAgICAgSlNDZWxsKiBvd25lciA9IGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCk7CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpOwogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb24pOwotICAgICAgICB2UENbNF0gPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KTsKLSAgICAgICAgdlBDWzVdID0gc3RydWN0dXJlOwotICAgICAgICB2UENbNl0gPSBJbnN0cnVj
dGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKKyAgICAgICAgdlBDWzRd
LnUuc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOworICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBz
dHJ1Y3R1cmUpOworICAgICAgICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+
cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lKSk7CisgICAgICAgIEFTU0VSVCh2UENbNl0udS5zdHJ1
Y3R1cmVDaGFpbik7CiAgICAgICAgIHZQQ1s3XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Ci0gICAg
ICAgIGNvZGVCbG9jay0+cmVmU3RydWN0dXJlcyh2UEMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9yZXBsYWNlKTsKICAgICB2
UENbNV0gPSBzbG90LmNhY2hlZE9mZnNldCgpOwotICAgIGNvZGVCbG9jay0+cmVmU3RydWN0dXJl
cyh2UEMpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dW5jYWNoZVB1dEJ5
SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiB2UEMpCitORVZFUl9JTkxJTkUg
dm9pZCBJbnRlcnByZXRlcjo6dW5jYWNoZVB1dEJ5SUQoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24q
IHZQQykKIHsKLSAgICBjb2RlQmxvY2stPmRlcmVmU3RydWN0dXJlcyh2UEMpOwogICAgIHZQQ1sw
XSA9IGdldE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIHZQQ1s0XSA9IDA7CiB9CkBAIC0xMzE0
LDExICsxMzA3LDExIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUdl
dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAgICB9CiAKICAgICAvLyBD
YWNoZSBtaXNzCi0gICAgU3RydWN0dXJlKiBsYXN0U3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0
dXJlOworICAgIFN0cnVjdHVyZSogbGFzdFN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5n
ZXQoKTsKICAgICBpZiAoc3RydWN0dXJlICE9IGxhc3RTdHJ1Y3R1cmUpIHsKICAgICAgICAgLy8g
Rmlyc3QgbWlzczogcmVjb3JkIFN0cnVjdHVyZSB0byBjb21wYXJlIGFnYWluc3QgbmV4dCB0aW1l
LgogICAgICAgICBpZiAoIWxhc3RTdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIHZQQ1s0XSA9IHN0
cnVjdHVyZTsKKyAgICAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS5zZXQoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTM0NCw4ICsxMzM3LDYgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKgogICAgICAgICAgICAgdlBDWzVdID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgY29kZUJsb2Nr
LT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODMs
OSArMTM3NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUdldEJ5
SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAgICAgICAgICAgIHZQQ1s2XSA9
IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHZQQ1s1XSA9
IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpOwotCi0gICAgICAgIGNvZGVCbG9jay0+cmVmU3RydWN0
dXJlcyh2UEMpOworICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBiYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTEsMTUgKzE0MDAsMTMg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogICAgICAgICB2UENbN10gPSBvZmZzZXQ7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICB2UENbNF0gPSBzdHJ1Y3R1cmU7Ci0gICAgdlBDWzVdID0g
SW5zdHJ1Y3Rpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lKSk7CisgICAgdlBD
WzRdLnUuc3RydWN0dXJlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICB2UENbNV0udS5zdHJ1Y3R1cmVDaGFp
bi5zZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lKSk7CiAgICAgdlBDWzZdID0g
Y291bnQ7Ci0gICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CiB9CiAKLU5FVkVSX0lO
TElORSB2b2lkIEludGVycHJldGVyOjp1bmNhY2hlR2V0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSW5zdHJ1Y3Rpb24qIHZQQykKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp1bmNh
Y2hlR2V0QnlJRChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogdlBDKQogewotICAgIGNvZGVCbG9j
ay0+ZGVyZWZTdHJ1Y3R1cmVzKHZQQyk7CiAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9i
eV9pZCk7CiAgICAgdlBDWzRdID0gMDsKIH0KQEAgLTI1MjgsNyArMjUxNSw3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJG
aWxlKiByZWdpc3RlckZpCiAKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkp
KSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwot
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7Cisg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQo
KTsKIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3Ry
dWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7
CkBAIC0yNTU5LDEyICsyNTQ2LDEyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVj
dXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAKICAgICAg
ICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQoKTsKIAogICAgICAgICAgICAgaWYgKExJ
S0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpLmlzT2Jq
ZWN0KCkpOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFzT2JqZWN0
KHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0dXJlOwor
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUu
c3RydWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKExJS0VMWShwcm90b09iamVj
dC0+c3RydWN0dXJlKCkgPT0gcHJvdG90eXBlU3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAg
ICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKQEAgLTI1OTgsMTIgKzI1ODUsMTIgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgCiAgICAgICAgIGlmIChMSUtFTFkoYmFz
ZVZhbHVlLmlzQ2VsbCgpKSkgewogICAgICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VW
YWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRd
LnUuc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChMSUtFTFko
YmFzZUNlbGwtPnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKS5pc09iamVjdCgp
KTsKICAgICAgICAgICAgICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSBhc09iamVjdChzdHJ1
Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKLSAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVjdHVyZTsKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVj
dHVyZS5nZXQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoTElLRUxZ
KHByb3RvT2JqZWN0LT5zdHJ1Y3R1cmUoKSA9PSBwcm90b3R5cGVTdHJ1Y3R1cmUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwpAQCAtMjY0MywxMiAr
MjYzMCwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAKICAgICAgICAgaWYg
KExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VD
ZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUp
LmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFz
T2JqZWN0KHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0
dXJlOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBD
WzVdLnUuc3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmIChMSUtFTFkocHJvdG9PYmplY3QtPnN0cnVjdHVyZSgpID09IHByb3RvdHlwZVN0cnVjdHVy
ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CkBA
IC0yNzEyLDYgKzI2OTksOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShF
eGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICB2UEMg
Kz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCk7CiAgICAgICAgIE5FWFRf
SU5TVFJVQ1RJT04oKTsKICAgICB9CisjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9V
TkQpCisgICAgZ290byAqKCYmc2tpcF9nZXRfYnlfaWRfY2hhaW4pOworI2VuZGlmCiAgICAgREVG
SU5FX09QQ09ERShvcF9nZXRfYnlfaWRfY2hhaW4pIHsKICAgICAgICAgLyogb3BfZ2V0X2J5X2lk
X2NoYWluIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1
cmVDaGFpbihjaGFpbikgY291bnQobikgb2Zmc2V0KG4pCiAKQEAgLTI3MjQsMTIgKzI3MTQsMTIg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFn
LCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1
ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUu
YXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0
cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3Ry
dWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1
cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4q
IGl0ID0gdlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4tPmhlYWQoKTsKKyAgICAgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVh
ZCgpOwogICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHZQQ1s2XS51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291bnQ7CisgICAg
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291bnQ7CiAK
ICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKS0+cHJvdG90
eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwpAQCAtMjc1OSw2ICsyNzQ5LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZp
bGUqIHJlZ2lzdGVyRmkKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KICNpZiBV
U0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKKyAgICBza2lwX2dldF9ieV9pZF9jaGFp
bjoKICAgICBnb3RvICooJiZza2lwX2lkX2dldHRlcl9zZWxmKTsKICNlbmRpZgogICAgIERFRklO
RV9PUENPREUob3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmKSB7CkBAIC0yNzczLDcgKzI3NjQsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAKICAgICAgICAgaWYgKExJS0VMWShi
YXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENb
NF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0
XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VM
WShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAg
IEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CkBAIC0yODE2LDcgKzI4MDcsNyBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5z
dHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0
cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNl
Q2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VS
VChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CkBAIC0yODczLDEyICsyODY0LDEyIEBAIHNraXBfaWRf
Y3VzdG9tX3NlbGY6CiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0Nl
bGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxs
KCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVy
ZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJl
LmdldCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5z
dHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4qIGl0ID0gdlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4tPmhlYWQoKTsKKyAgICAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFp
bi0+aGVhZCgpOwogICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHZQQ1s2XS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291bnQ7
CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291
bnQ7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2Vs
bC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKQEAgLTI5Mjgs
MTIgKzI5MTksMTIgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgCiAgICAgICAgIGlm
IChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkgewogICAgICAgICAgICAgSlNDZWxsKiBiYXNl
Q2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSkpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFp
bi0+aGVhZCgpOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9
IHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IGNvdW50ID0gdlBDWzZdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiogZW5kID0gaXQgKyBjb3VudDsKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSkpOwpAQCAtMjk2NCw2ICsyOTU1LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICB9CiAjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQpCiAgICAgc2tpcF9p
ZF9jdXN0b21fY2hhaW46CisgICAgZ290byAqKCYmc2tpcF9nZXRfYXJyYXlfbGVuZ3RoKTsKICNl
bmRpZgogICAgIERFRklORV9PUENPREUob3BfZ2V0X2FycmF5X2xlbmd0aCkgewogICAgICAgICAv
KiBvcF9nZXRfYXJyYXlfbGVuZ3RoIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5KGlkKSBub3Aoc0lE
KSBub3Aobikgbm9wKG4pIG5vcChuKQpAQCAtMjk4NSw2ICsyOTc3LDEwIEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAgICAgICAgIHVuY2FjaGVHZXRCeUlEKGNvZGVCbG9jaywgdlBDKTsKICAgICAg
ICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KKyNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9f
V09SS0FST1VORCkKKyAgICBza2lwX2dldF9hcnJheV9sZW5ndGg6CisgICAgZ290byAqKCYmc2tp
cF9nZXRfc3RyaW5nX2xlbmd0aCk7CisjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX2dldF9z
dHJpbmdfbGVuZ3RoKSB7CiAgICAgICAgIC8qIG9wX2dldF9zdHJpbmdfbGVuZ3RoIGRzdChyKSBi
YXNlKHIpIHByb3BlcnR5KGlkKSBub3Aoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0z
MDA1LDYgKzMwMDEsMTAgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgdW5jYWNoZUdl
dEJ5SUQoY29kZUJsb2NrLCB2UEMpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAg
fQorI2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EKQorICAgIHNraXBfZ2V0X3N0
cmluZ19sZW5ndGg6CisgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOworI2VuZGlmCiAgICAg
REVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2Uo
cikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJl
Y3QoYikKIApAQCAtMzAzOCw2ICszMDM4LDkgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcHV0X2J5X2lkKTsKICAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOwogICAgIH0KKyNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkK
KyAgICAgIHNraXBfcHV0X2J5X2lkOgorI2VuZGlmCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbikgewogICAgICAgICAvKiBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiBi
YXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBvbGRTdHJ1Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1
cmUoc0lEKSBzdHJ1Y3R1cmVDaGFpbihjaGFpbikgb2Zmc2V0KG4pIGRpcmVjdChiKQogICAgICAg
ICAgCkBAIC0zMDU0LDggKzMwNTcsOCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAK
ICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1Y3R1cmUuZ2V0KCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVjdHVy
ZSgpID09IG9sZFN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZUNlbGwt
PmlzT2JqZWN0KCkpOwpAQCAtMzA2Myw3ICszMDY2LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0ID0gdlBDWzhdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIWRpcmVjdCkgewotICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVh
ZCgpOworICAgICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSB2
UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOwogCiAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWUgcHJvdG8gPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghcHJvdG8uaXNOdWxsKCkp
IHsKQEAgLTMwNzUsMTEgKzMwNzgsMTEgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb3RvID0gYXNPYmplY3QocHJvdG8pLT5zdHJ1Y3R1cmUoKS0+cHJv
dG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+dHJhbnNpdGlvblRvKG5l
d1N0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+dHJhbnNpdGlvblRvKCpn
bG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0g
dlBDWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENb
N10udS5vcGVyYW5kOwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRG
b3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbihjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRp
b24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oKmdsb2JhbERhdGEsIGNvZGVCbG9jay0+
aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBv
ZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIAogICAgICAgICAgICAgICAg
IHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKTsKQEAgLTMxMDYs
NyArMzEwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgaWYgKExJS0VMWShi
YXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENb
NF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0
XS51LnN0cnVjdHVyZS5nZXQoKTsKIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+
c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
Q2VsbC0+aXNPYmplY3QoKSk7CkBAIC0zMTE0LDcgKzMxMTcsNyBAQCBza2lwX2lkX2N1c3RvbV9z
ZWxmOgogICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdlBDWzVdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9j
YXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJh
c2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKCpnbG9iYWxEYXRhLCBjb2RlQmxvY2stPmlkZW50
aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGJh
c2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgb2Zmc2V0
LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAgICB2UEMg
Kz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfcmVwbGFjZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCAzZDg3ZTUxMTFkMDJmZGI5ZWM2ODMzOWVmOGM1ZDMzMjk5ZTcwZWM4Li42Yjhj
NmRkNDY4OWNjNTg5Zjk4NTNmODIwNTk2N2FjYWU2NGE5NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTIzNSw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0
aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxh
Y2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29s
IGRpcmVjdCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoTWV0aG9kQ2FsbFByb3RvKENvZGVC
bG9jayogY29kZWJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mLCBKU0Z1bmN0aW9uKiwgU3RydWN0
dXJlKiwgSlNPYmplY3QqLCBSZXR1cm5BZGRyZXNzUHRyKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ss
IE1ldGhvZENhbGxMaW5rSW5mbyYsIEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCos
IFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA3NjMzYjZh
NmFjN2Y0MzdiYTlkNDFjNjBhN2I0NjhjOGQ0MjhiMDgyLi5hMWYxZmU2NjgzZDBiZTM5ODdjNTlj
ZTZkM2EwMTI5NzlmYTY2MTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlCiAKICAgICAvLyBlY3ggPSBiYXNlT2JqZWN0LT5tX3N0cnVjdHVyZQogICAgIGlmICgh
ZGlyZWN0KSB7Ci0gICAgICAgIGZvciAoUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhl
YWQoKTsgKml0OyArK2l0KQorICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBp
dCA9IGNoYWluLT5oZWFkKCk7ICppdDsgKytpdCkKICAgICAgICAgICAgIHRlc3RQcm90b3R5cGUo
KCppdCktPnN0b3JlZFByb3RvdHlwZSgpLCBmYWlsdXJlQ2FzZXMpOwogICAgIH0KIApAQCAtNjA2
LDExICs2MDYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZQogICAgICAgICByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMyk7CiAgICAgfQogCi0gICAgLy8gQXNzdW1lcyBt
X3JlZkNvdW50IGNhbiBiZSBkZWNyZW1lbnRlZCBlYXNpbHksIHJlZmNvdW50IGRlY3JlbWVudCBp
cyBzYWZlIGFzIAotICAgIC8vIGNvZGVibG9jayBzaG91bGQgZW5zdXJlIG9sZFN0cnVjdHVyZS0+
bV9yZWZDb3VudCA+IDAKLSAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVz
cyhvbGRTdHJ1Y3R1cmUtPmFkZHJlc3NPZkNvdW50KCkpKTsKLSAgICBhZGQzMihUcnVzdGVkSW1t
MzIoMSksIEFic29sdXRlQWRkcmVzcyhuZXdTdHJ1Y3R1cmUtPmFkZHJlc3NPZkNvdW50KCkpKTsK
LSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZVB0cldpdGhXcml0ZUJhcnJp
ZXIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCByZWdUMCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAgLy8gd3JpdGUgdGhlIHZhbHVlCiAgICAg
Y29tcGlsZVB1dERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDEsIG5ld1N0cnVjdHVyZSwgY2FjaGVk
T2Zmc2V0KTsKQEAgLTY1MiwxNyArNjQ4LDE1IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxm
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0CiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVs
MzJBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRQcm9wZXJ0eU1hcE9mZnNldCksIG9mZnNldCk7
CiB9CiAKLXZvaWQgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNh
bGxlZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90bywgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5r
SW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU09iamVjdCogcHJvdG8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIAogICAg
IEFTU0VSVCghbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZSk7Ci0gICAgbWV0aG9k
Q2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBzdHJ1Y3R1cmUt
PnJlZigpOworICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1Y3R1cmUuc2V0KGdsb2Jh
bERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAKICAgICBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvLT5zdHJ1Y3R1cmUoKTsKLSAgICBt
ZXRob2RDYWxsTGlua0luZm8uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG90eXBlU3Ry
dWN0dXJlOwotICAgIHByb3RvdHlwZVN0cnVjdHVyZS0+cmVmKCk7CisgICAgbWV0aG9kQ2FsbExp
bmtJbmZvLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgcHJvdG90eXBlU3RydWN0dXJlKTsKIAogICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChtZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwsIHN0cnVjdHVy
ZSk7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5rSW5mby5zdHJ1Y3R1
cmVMYWJlbC5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhvZENoZWNrUHJvdG9P
YmopLCBwcm90byk7CkBAIC03MzUsNyArNzI5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIK
ICAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJl
KTsKIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhhZCBu
b3QgY2hhbmdlZC4KLSAgICBTdHJ1Y3R1cmUqIGNvbnN0ICogcHJvdG90eXBlU3RydWN0dXJlQWRk
cmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUoKTsKKyAgICBjb25zdCB2b2lk
KiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVj
dHVyZSgpOwogI2lmIENQVShYODZfNjQpCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb3RvdHlw
ZVN0cnVjdHVyZSksIHJlZ1QzKTsKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVn
VDMpOwpAQCAtODM5LDggKzgzMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRT
ZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljCiAKICAgICBD
b2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVsID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlQWRk
ZW5kdW0oKTsKIAotICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgcG9seW1vcnBoaWNTdHJ1Y3R1
cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGVudHJ5TGFiZWwsIHN0cnVjdHVyZSk7CisgICAg
cG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KCptX2dsb2JhbERh
dGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0dXJl
KTsKIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4g
dGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAg
anVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQocGF0Y2hP
ZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7CkBAIC04NTgsNyArODUxLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFBvbHltb3JwaGkKICAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBjaGVja1N0cnVjdHVy
ZShyZWdUMCwgc3RydWN0dXJlKTsKIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0
J3MgU3RydWN0dXJlIGhhZCBub3QgY2hhbmdlZC4KLSAgICBTdHJ1Y3R1cmUqIGNvbnN0ICogcHJv
dG90eXBlU3RydWN0dXJlQWRkcmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUo
KTsKKyAgICBjb25zdCB2b2lkKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmpl
Y3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOwogI2lmIENQVShYODZfNjQpCiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKHByb3RvdHlwZVN0cnVjdHVyZSksIHJlZ1QzKTsKICAgICBKdW1wIGZhaWx1cmVD
YXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1
Y3R1cmVBZGRyZXNzKSwgcmVnVDMpOwpAQCAtOTA3LDEwICs5MDAsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaQogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFB1dFJlc3VsdCkpOwogCiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJlbCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29k
ZUFkZGVuZHVtKCk7Ci0KLSAgICBzdHJ1Y3R1cmUtPnJlZigpOwotICAgIHByb3RvdHlwZVN0cnVj
dHVyZS0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhd
LnNldChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSk7CisgICAgcHJv
dG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldCgqbV9nbG9iYWxEYXRhLCBt
X2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgcHJv
dG90eXBlU3RydWN0dXJlKTsKIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xv
dyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENv
ZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1w
QXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7CkBAIC05MjgsNyAr
OTE4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVu
ZChiYXNlT2JqZWN0Q2hlY2spOwogCiAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3Ry
dWN0dXJlOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKICAgICBKU09iamVj
dCogcHJvdG9PYmplY3QgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsg
KytpLCArK2l0KSB7CiAgICAgICAgIHByb3RvT2JqZWN0ID0gYXNPYmplY3QoY3VyclN0cnVjdHVy
ZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwpAQCAtOTc4LDcgKzk2OCw2IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJlbCA9
IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVuZHVtKCk7CiAKICAgICAvLyBUcmFjayB0aGUg
c3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCi0g
ICAgc3RydWN0dXJlLT5yZWYoKTsKICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJl
bnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgY2hhaW4pOwogCiAgICAgLy8gRmlu
YWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8g
anVtcCBoZXJlIGluc3RlYWQuCkBAIC05OTcsNyArOTg2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHIKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChjaGVja1N0cnVjdHVyZShyZWdUMCwgc3Ry
dWN0dXJlKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0g
ICAgUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKKyAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09i
amVjdCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQp
IHsKICAgICAgICAgcHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5
cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA5Mzc5ZjdhYzNmN2YzZWRiMjZl
Yjk0NGI5YzkyYjU2MWFlYTYyYzlhLi5kMGMzNjg4MjZjMWNiNjMxY2QyNmE4ZDQ2YmZkNmQ4Y2Ex
YjQ5MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZQogICAgIAogICAgIGlmICghZGlyZWN0KSB7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IG5v
dGhpbmcgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIgZm9yIHRoaXMgcHJvcGVy
dHkuIAotICAgICAgICBmb3IgKFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7
ICppdDsgKytpdCkKKyAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSBj
aGFpbi0+aGVhZCgpOyAqaXQ7ICsraXQpCiAgICAgICAgICAgICB0ZXN0UHJvdG90eXBlKCgqaXQp
LT5zdG9yZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKICAgICB9CiAKQEAgLTYxOSwxMCAr
NjE5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUKICAgICAgICAgCiAgICAgICAgIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QzKTsKICAgICB9Ci0gICAgCi0gICAgc3Vi
MzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Mob2xkU3RydWN0dXJlLT5hZGRyZXNz
T2ZDb3VudCgpKSk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Mo
bmV3U3RydWN0dXJlLT5hZGRyZXNzT2ZDb3VudCgpKSk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cihuZXdTdHJ1Y3R1cmUpLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CisKKyAgICBzdG9yZVB0cldpdGhXcml0ZUJhcnJpZXIoVHJ1c3RlZEltbVB0cihuZXdT
dHJ1Y3R1cmUpLCByZWdUMCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSkpOwogICAgIAogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KQogICAgIC8vIEZvciBNSVBTLCB3
ZSBkb24ndCBhZGQgc2l6ZW9mKHZvaWQqKSB0byB0aGUgc3RhY2sgb2Zmc2V0LgpAQCAtNjc0LDE3
ICs2NzIsMTQgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3QKICAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHBhdGNoT2Zm
c2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0MiksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCiB9CiAKLXZvaWQgSklUOjpwYXRjaE1ldGhv
ZENhbGxQcm90byhDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRo
b2RDYWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNhbGxlZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTT2JqZWN0KiBwcm90bywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBK
SVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvLCBK
U0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogcHJvdG8s
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJl
cGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAKICAgICBBU1NFUlQoIW1ldGhvZENhbGxMaW5r
SW5mby5jYWNoZWRTdHJ1Y3R1cmUpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgc3RydWN0dXJlLT5yZWYoKTsKLSAgICAKKyAgICBtZXRo
b2RDYWxsTGlua0luZm8uY2FjaGVkU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlID0gcHJvdG8tPnN0cnVjdHVyZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5j
YWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGVTdHJ1Y3R1cmU7Ci0gICAgcHJvdG90
eXBlU3RydWN0dXJlLT5yZWYoKTsKKyAgICBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVkUHJvdG90
eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgIAogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaCht
ZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwsIHN0cnVjdHVyZSk7CiAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5rSW5mby5zdHJ1Y3R1cmVMYWJlbC5kYXRhTGFi
ZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhvZENoZWNrUHJvdG9PYmopLCBwcm90byk7CkBA
IC03NjIsNyArNzU3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKICAgICBKdW1wIGZhaWx1
cmVDYXNlczEgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKICAgICAKICAgICAv
LyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVjdHVyZSBoYWQgbm90IGNoYW5nZWQu
Ci0gICAgU3RydWN0dXJlKiBjb25zdCAqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSBwcm90
b09iamVjdC0+YWRkcmVzc09mU3RydWN0dXJlKCk7CisgICAgY29uc3Qgdm9pZCogcHJvdG90eXBl
U3RydWN0dXJlQWRkcmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUoKTsKICNp
ZiBDUFUoWDg2XzY0KQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihwcm90b3R5cGVTdHJ1Y3R1cmUp
LCByZWdUMyk7CiAgICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
YnNvbHV0ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyksIHJlZ1QzKTsKQEAgLTg2
Nyw5ICs4NjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpYwogICAgIHBhdGNoQnVmZmVyLmxp
bmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHBhdGNoT2Zm
c2V0R2V0QnlJZFB1dFJlc3VsdCkpOwogCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJl
bCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVuZHVtKCk7Ci0gICAgCi0gICAgc3RydWN0
dXJlLT5yZWYoKTsKLSAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4
XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlKTsKKworICAgIHBvbHltb3JwaGljU3RydWN0dXJl
cy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldCgqbV9nbG9iYWxEYXRhLCBtX2NvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSk7CiAgICAgCiAgICAgLy8gRmlu
YWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8g
anVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBz
dHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFu
Y2hUb1Nsb3dDYXNlKTsKQEAgLTg4OSw3ICs4ODMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBo
aQogICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1
cmUpOwogICAgIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJl
IGhhZCBub3QgY2hhbmdlZC4KLSAgICBTdHJ1Y3R1cmUqIGNvbnN0ICogcHJvdG90eXBlU3RydWN0
dXJlQWRkcmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUoKTsKKyAgICBjb25z
dCB2b2lkKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NP
ZlN0cnVjdHVyZSgpOwogI2lmIENQVShYODZfNjQpCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBy
b3RvdHlwZVN0cnVjdHVyZSksIHJlZ1QzKTsKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNz
KSwgcmVnVDMpOwpAQCAtOTM1LDEwICs5MjksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJl
bEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFB1dFJlc3VsdCkpOwogICAgIAogICAgIENvZGVM
b2NhdGlvbkxhYmVsIGVudHJ5TGFiZWwgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGVBZGRlbmR1
bSgpOwotICAgIAotICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJl
LT5yZWYoKTsKLSAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0
KGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlKTsKKworICAgIHByb3Rv
dHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0
dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhl
IGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0
ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5qdW1wQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7
CkBAIC05NTcsNyArOTQ5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKICAgICBidWNrZXRz
T2ZGYWlsLmFwcGVuZChjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKSk7CiAgICAgCiAg
ICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4q
IGl0ID0gY2hhaW4tPmhlYWQoKTsKICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSAwOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK2l0KSB7CiAgICAgICAgIHBy
b3RvT2JqZWN0ID0gYXNPYmplY3QoY3VyclN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNh
bGxGcmFtZSkpOwpAQCAtMTAwNiw3ICs5OTgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQog
ICAgIENvZGVMb2NhdGlvbkxhYmVsIGVudHJ5TGFiZWwgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNv
ZGVBZGRlbmR1bSgpOwogICAgIAogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRl
ZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KLSAgICBzdHJ1Y3R1cmUtPnJlZigp
OwogICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlM
YWJlbCwgc3RydWN0dXJlLCBjaGFpbik7CiAgICAgCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUg
anVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3Rl
YWQuCkBAIC0xMDI2LDcgKzEwMTcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIGJ1
Y2tldHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgUmVmUHRy
PFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQpIHsKICAgICAg
ICAgcHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29r
dXAoY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4
IGZlMjZkY2FhMTYzMmI0NjdjMWYxOGNmNzM0ZjYzZjEwY2FkNTNmNjAuLmFjNDM4Mjk4NGRhYWFh
NzYyMjc3YTUyOGU5MTkyZmM4NTE5MjIzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCkBAIC04NDgsNyArODQ4LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtz
Ojp0cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdHViSW5mby0+aW5pdFB1dEJ5SWRSZXBs
YWNlKHN0cnVjdHVyZSk7CisgICAgc3R1YkluZm8tPmluaXRQdXRCeUlkUmVwbGFjZShjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
KTsKIAogICAgIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBz
dHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFkZHJlc3MsIGRpcmVjdCk7CiB9
CkBAIC04OTYsNyArODk2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNo
ZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KIAogICAgIGlmIChz
bG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgIC8vIHNldCB0aGlzIHVwLCBz
byBkZXJlZlN0cnVjdHVyZXMgY2FuIGRvIGl0J3Mgam9iLgotICAgICAgICBzdHViSW5mby0+aW5p
dEdldEJ5SWRTZWxmKHN0cnVjdHVyZSk7CisgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFNl
bGYoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpICE9IFBy
b3BlcnR5U2xvdDo6VmFsdWUpCiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lk
X3NlbGZfZmFpbCkpOwogICAgICAgICBlbHNlCkBAIC05MjIsNyArOTIyLDcgQEAgTkVWRVJfSU5M
SU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVCbG9jayogY28KICAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+Z2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90byhzdHJ1
Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIHN0dWJJbmZvLT5p
bml0R2V0QnlJZFByb3RvKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAK
ICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICAgICAgQVNT
RVJUKCFzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKTsKQEAgLTE1
NjAsNyArMTU2MCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9n
ZXRfYnlfaWRfbWV0aG9kX2NoZWNrKQogCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUg
ZnVuY3Rpb24gaXMgb24gdGhlIG9iamVjdCdzIHByb3RvdHlwZS4gIFBhdGNoIHVwIHRoZSBjb2Rl
IHRvIG9wdGltaXplLgogICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IHN0cnVjdHVyZS0+
cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpIHsKLSAgICAgICAgICAgIEpJVDo6cGF0Y2hN
ZXRob2RDYWxsUHJvdG8oY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0luZm8sIGNhbGxlZSwgc3Ry
dWN0dXJlLCBzbG90QmFzZU9iamVjdCwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CisgICAgICAgICAg
ICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2ssIG1ldGhvZENhbGxMaW5rSW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2Jq
ZWN0LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogCkBAIC0xNTcxLDcgKzE1NzEsNyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX21ldGhvZF9jaGVjaykK
ICAgICAgICAgLy8gZm9yIG5vdy4gIEZvciBub3cgaXQgcGVyZm9ybXMgYSBjaGVjayBvbiBhIHNw
ZWNpYWwgb2JqZWN0IG9uIHRoZSBnbG9iYWwgb2JqZWN0IG9ubHkgdXNlZCBmb3IgdGhpcwogICAg
ICAgICAvLyBwdXJwb3NlLiAgVGhlIG9iamVjdCBpcyBpbiBubyB3YXkgZXhwb3NlZCwgYW5kIGFz
IHN1Y2ggdGhlIGNoZWNrIHdpbGwgYWx3YXlzIHBhc3MuCiAgICAgICAgIGlmIChzbG90LnNsb3RC
YXNlKCkgPT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFBy
b3RvKGNvZGVCbG9jaywgbWV0aG9kQ2FsbExpbmtJbmZvLCBjYWxsZWUsIHN0cnVjdHVyZSwgY2Fs
bEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdC0+bWV0aG9kQ2FsbER1bW15KCksIFNU
VUJfUkVUVVJOX0FERFJFU1MpOworICAgICAgICAgICAgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90
byhjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0luZm8s
IGNhbGxlZSwgc3RydWN0dXJlLCBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0
LT5tZXRob2RDYWxsRHVtbXkoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjMw
LDcgKzE2MzAsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0
X2J5X2lkX3NlbGZfZmFpbCkKIAogICAgICAgICBpZiAoc3R1YkluZm8tPmFjY2Vzc1R5cGUgPT0g
YWNjZXNzX2dldF9ieV9pZF9zZWxmKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXN0dWJJbmZvLT5z
dHViUm91dGluZSk7Ci0gICAgICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QgPSBuZXcg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KENvZGVMb2NhdGlvbkxhYmVsKCksIHN0dWJJ
bmZvLT51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgICAgICAgICAgcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVMaXN0ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
Q29kZUxvY2F0aW9uTGFiZWwoKSwgc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0
cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRTZWxmTGlz
dChwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QsIDEpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVMaXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGZM
aXN0LnN0cnVjdHVyZUxpc3Q7CkBAIC0xNjU1LDEyICsxNjU1LDEyIEBAIHN0YXRpYyBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dFNsb3QoSlNHCiAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSB7CiAgICAgY2Fz
ZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOgotICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0
ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChzdHViSW5mby0+c3R1YlJvdXRp
bmUsIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLCBzdHViSW5m
by0+dS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBl
U3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFs
RGF0YSwgb3duZXIsIHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZFBy
b3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90by5w
cm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUg
PSBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90
b0xpc3QocHJvdG90eXBlU3RydWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlz
dCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFsRGF0YSwgb3duZXIs
IHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUsIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKSk7CisgICAg
ICAgIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0KGdsb2JhbERhdGEsIG93bmVyLCBzdHViSW5mby0+c3R1YlJvdXRpbmUsIHN0dWJJbmZv
LT51LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLCBzdHViSW5mby0+dS5n
ZXRCeUlkQ2hhaW4uY2hhaW4uZ2V0KCkpOwogICAgICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUg
PSBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90
b0xpc3QocHJvdG90eXBlU3RydWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwpAQCAtMjc1
MywxMCArMjc1Myw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9y
ZXNvbHZlX2dsb2JhbCkKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNh
bGxGcmFtZSwgaWRlbnQpOwogICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYg
IWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkgJiYg
c2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewogICAgICAgICAgICAgR2xvYmFsUmVz
b2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvID0gY29kZUJsb2NrLT5nbG9iYWxSZXNvbHZlSW5m
byhnbG9iYWxSZXNvbHZlSW5mb0luZGV4KTsKLSAgICAgICAgICAgIGlmIChnbG9iYWxSZXNvbHZl
SW5mby5zdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgZ2xvYmFsUmVzb2x2ZUluZm8uc3RydWN0
dXJlLT5kZXJlZigpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cmVm
KCk7Ci0gICAgICAgICAgICBnbG9iYWxSZXNvbHZlSW5mby5zdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgZ2xvYmFsUmVzb2x2ZUluZm8uc3RydWN0dXJl
LnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBnbG9iYWxSZXNvbHZl
SW5mby5vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pTSW50ZXJmYWNlSklULmgKaW5kZXggZmVhZjQ2NzUxNTkxNWY0NWEzMzc2ZWQxNjJkNDk5
NTA2NDYzNzQ5MS4uZTFkOTM1M2NiYjZmMmI2OGRiMDNhN2NhNmE1NDRhZmYyMjBjNWViOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtMTkzLDYgKzE5
MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW5saW5lIEp1bXAgZW1pdExvYWRJbnQz
Mih1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBkc3QpOwogICAgICAg
ICBpbmxpbmUgSnVtcCBlbWl0TG9hZERvdWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRl
eCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKIAorICAgICAgICBpbmxp
bmUgdm9pZCBzdG9yZVB0cldpdGhXcml0ZUJhcnJpZXIoVHJ1c3RlZEltbVB0ciBwdHIsIFJlZ2lz
dGVySUQgLyogb3duZXIgKi8sIEFkZHJlc3MgZGVzdCkKKyAgICAgICAgeworICAgICAgICAgICAg
c3RvcmVQdHIocHRyLCBkZXN0KTsKKyAgICAgICAgfQorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAgICAgaW5saW5lIEp1bXAgZW1pdEp1bXBJZk5vdEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFs
UmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIGlubGluZSBBZGRyZXNzIHRhZ0ZvcihpbnQgaW5kZXgs
IFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggOGNjYjAzOTg1MDZiZDlhMzFiZGE2YTc5YzkwNmQ3YjE0ZDQxNGY4Mi4uNzI5ZGNlOTk4
NmIwMGNkNWZhMmYwMGZkODEyNDk5MThkZDFjNDIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTM2Niw2ICszNjYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiBzdGF0aWMg
dm9pZCBjbGVhbnVwR2xvYmFsRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAgICBnbG9iYWxEYXRhLT5jbGVh
ckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAgICAgZ2xvYmFsRGF0YS0+aGVhcC5kZXN0cm95KCk7CiAg
ICAgZ2xvYmFsRGF0YS0+ZGVyZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgKaW5kZXggOTUwYmI0ZWIxMzIzM2ZmNjhkNDIzZWUwZDY4NDIzMDFiNThhNGUx
Mi4uYjVhYTQ2YmYwNzI0MGEzODg2NWQ2NzkxNTE3NjJjMWY1ZDdhNmRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTkyLDcgKzkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBkLT5yZWdpc3RlcnMgPSAmYWN0aXZhdGlvbi0+cmVnaXN0
ZXJBdCgwKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCiAgICAg
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7IAogICAgICAgICB9CkBAIC0xNDMsNyArMTQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgfQogCiAgICAgaW5saW5lIEFyZ3VtZW50czo6QXJndW1lbnRzKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoY2FsbEZyYW1lLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQorICAgICAgICA6IEpTTm9uRmluYWxP
YmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBkKGFkb3B0UHRyKG5ldyBB
cmd1bWVudHNEYXRhKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CkBAIC0xODUsNyArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5l
IEFyZ3VtZW50czo6QXJndW1lbnRzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnNU
eXBlKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQorICAgICAgICA6IEpTTm9uRmluYWxPYmpl
Y3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBkKGFkb3B0UHRyKG5ldyBBcmd1
bWVudHNEYXRhKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBA
IC0yNDcsNyArMjQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IG1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZTsKICAgICAgICAgc2l6ZV90IHJlZ2lzdGVyQXJyYXlTaXplID0gbnVtTG9jYWxz
ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogCi0gICAgICAgIE93bkFycmF5
UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJB
cnJheShnbG9iYWxEYXRhLCBtX3JlZ2lzdGVycyAtIHJlZ2lzdGVyT2Zmc2V0LCByZWdpc3RlckFy
cmF5U2l6ZSk7CisgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJl
Z2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxEYXRhLCBtX3JlZ2lzdGVycyAt
IHJlZ2lzdGVyT2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSwgbV9udW1QYXJhbWV0ZXJzTWludXNU
aGlzICsgMSk7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVn
aXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwogICAgICAgICBzZXRSZWdpc3RlcnMo
cmVnaXN0ZXJzLCByZWdpc3RlckFycmF5LnJlbGVhc2UoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBlMGY0
YjIzZjQ2YjQ3ODJlYjM4ZjFlYjUxN2FkYzRkYTc0NzkwNTY2Li4wNTBlOTg5NjY0NTQzZjIyZTli
NzI2N2NiZjExNzI5YWFmNzhkM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMzcsNyArMzcsNyBAQCBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEFycmF5Q29uc3RydWN0b3IpOwogICAgIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXkoRXhlY1N0YXRlKik7
CiAKLUFycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGZ1
bmN0aW9uU3RydWN0dXJlKQorQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUsIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICAvLyBFQ01BIDE1LjQuMy4xIEFycmF5
LnByb3RvdHlwZQpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaQogICAg
ICAgICB1aW50MzJfdCBuID0gYXJncy5hdCgwKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYg
KG4gIT0gYXJncy5hdCgwKS50b051bWJlcihleGVjKSkKICAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkFycmF5IHNpemUgaXMgbm90IGEg
c21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpOwotICAgICAgICByZXR1cm4gbmV3IChl
eGVjKSBKU0FycmF5KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmUoKSwgbiwgQ3JlYXRlSW5p
dGlhbGl6ZWQpOworICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpLCBuLCBDcmVhdGVJbml0aWFs
aXplZCk7CiAgICAgfQogCiAgICAgLy8gb3RoZXJ3aXNlIHRoZSBhcnJheSBpcyBjb25zdHJ1Y3Rl
ZCB3aXRoIHRoZSBhcmd1bWVudHMgaW4gaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAppbmRleCA1ZTE0MDhmNTNkNTQzMDk5NmM4NmRjYzMz
YTdlNTQ2MWRmODAyYzk2Li45N2IyNmM1OGI3YTAyOGQ1NmZmMTc3N2EyOGNjZDgzZDBlZDQ0MjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBBcnJheVByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAg
ICAgICBBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgQXJyYXlQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2aXJ0dWFsIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiODQzYTNkMjlkMjc5
N2EwYjQ2YjhjMGE0M2JhYTQ3NGZlOGRlYWJiLi4yOWNhZWNlYTJiNDU1Y2IxMmExMDNhZDkxMGNl
ZjVkZTUyYzVmMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCkBAIC0xMTQsOCArMTE0LDggQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5
UHJvdG90eXBlOjpzX2luZm8gPSB7IkFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgRXhlY1N0
YXQKICovCiAKIC8vIEVDTUEgMTUuNC40Ci1BcnJheVByb3RvdHlwZTo6QXJyYXlQcm90b3R5cGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUpCi0gICAgOiBKU0FycmF5KHN0cnVjdHVyZSkKK0FycmF5UHJvdG90eXBlOjpB
cnJheVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEpTQXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVj
dHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIHB1dEFub255bW91
c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxPYmplY3QpOwpAQCAt
NTc0LDcgKzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTcGxpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgZGVsZXRlQ291bnQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVsZXRlRG91YmxlKTsKICAgICB9CiAKLSAgICBKU0FycmF5KiBy
ZXNPYmogPSBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5h
cnJheVN0cnVjdHVyZSgpLCBkZWxldGVDb3VudCwgQ3JlYXRlQ29tcGFjdCk7CisgICAgSlNBcnJh
eSogcmVzT2JqID0gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCBkZWxldGVDb3VudCwgQ3Jl
YXRlQ29tcGFjdCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSByZXNPYmo7CiAgICAgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIGZvciAodW5zaWduZWQg
ayA9IDA7IGsgPCBkZWxldGVDb3VudDsgaysrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmgKaW5kZXggOTY2NDFiZDJiYmJjNDQxZjEwZmM3NDU0NjAy
Y2M3MTliOGU1ZWVmMy4uNmRhZGY1MTFhMGNhNDg5ODJlYzM3Yjg0ZjkzMTIwOTUxNmZiNTJlOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCkBA
IC0yOCwxNCArMjgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJheVByb3Rv
dHlwZSA6IHB1YmxpYyBKU0FycmF5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEFy
cmF5UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
Pik7CisgICAgICAgIGV4cGxpY2l0IEFycmF5UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CiAKICAgICAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJh
bnNpdGlvbk9wdGltaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hl
ZFRyYW5zaXRpb25PcHRpbWl6ZXIuaAppbmRleCBlZGVlYzU3NTZhMWQzZGEyMWNmYmFlYmFiOGY5
ODg2NzM4MjgxNjlmLi5kZjdiN2Y2MWRjN2E4ODU4OTgwNzg0ZThjZjA5NDliMjllY2IxYzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlv
bk9wdGltaXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX29iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgICAg
IG1fb2JqZWN0LT5zZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICAg
ICAgICAgIG1fb2JqZWN0LT5zZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjp0b0Nh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fb2JqZWN0LT5zdHJ1Y3R1
cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgfkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGU1YjBmM2Q4M2Y2ZWNmODIxZjBkYmFkMTc5YTg2YzUwNjEyMzM4NGYu
LmExYTRlZDQ4YmZiMmM4ZGRiNmVhODgxY2JlNzkxNTdiYjgwMjViMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAt
MjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChCb29sZWFuQ29uc3RydWN0b3IpOwogCi1Cb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBi
b29sZWFuUHJvdG90eXBlKQorQm9vbGVhbkNvbnN0cnVjdG9yOjpCb29sZWFuQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSkKICAgICA6IElu
dGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIElkZW50aWZpZXIoZXhlYywgYm9vbGVhblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNz
TmFtZSkpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBib29sZWFuUHJvdG90eXBlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCmluZGV4IDI1NTBiM2IzNTQ3ZDZh
MDljMzJmMDUwZTI5YmVlNzZmZTk2YzIyZmYuLmZhMGQwNWU1ODg3ZjEwMTI2OTYxZjEzYWMyZTgx
MTE1Mzg4NDIyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Db25zdHJ1Y3Rvci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgQm9vbGVhbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgQm9vbGVhblByb3RvdHlw
ZSopOworICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBCb29sZWFuUHJvdG90eXBlKik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRh
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3Bw
CmluZGV4IDI5NDVjMGVlYjVmMzlmOTU0ZGJjNTUwYWY5MWU1MzMyYjljMGQ4ZjkuLmUyNGEzMGE0
YmI1NGFlNTAwZWQwZTlkNzE2NWZjOWNlN2E1ZDlhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwCkBAIC0yNyw4ICsyNyw4IEBAIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbk9iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBC
b29sZWFuT2JqZWN0OjpzX2luZm8gPSB7ICJCb29sZWFuIiwgJkpTV3JhcHBlck9iamVjdDo6c19p
bmZvLCAwLCAwIH07CiAKLUJvb2xlYW5PYmplY3Q6OkJvb2xlYW5PYmplY3QoSlNHbG9iYWxEYXRh
JiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU1dyYXBw
ZXJPYmplY3Qoc3RydWN0dXJlKQorQm9vbGVhbk9iamVjdDo6Qm9vbGVhbk9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNXcmFwcGVy
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbk9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVj
dC5oCmluZGV4IGVmMmQ0MDM0ZDU1MzRmNDgwY2VjNjExODVjZGM0Y2FkMDczZjcwMWUuLmRlZjQ0
YjQ0ZGNkODRmY2UwMzI2OTE5MGZmNjdjYWJiNTAwMjcyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKQEAgLTI3LDExICsyNywxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5PYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVy
T2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEJvb2xlYW5PYmplY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAg
ICAgICAgZXhwbGljaXQgQm9vbGVhbk9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
IAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKICAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKaW5kZXgg
ZDBhNjRhZmI3ODliNjdmMjgwNzAzNzI0NWQ1YzM0NzM0OWJiMzIyZS4uMjA5OTBlMTY2OTZjMGVm
M2U2OWZjOWM4M2EyZjUzZjg1NzhmMDFhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKik7CiAKIC8vIEVDTUEgMTUuNi40CiAKLUJvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Q
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlv
blN0cnVjdHVyZSkKK0Jvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVj
LT5nbG9iYWxEYXRhKCksIGpzQm9vbGVhbihmYWxzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCmluZGV4IGQ2ZDNkOWZiMjhmNjEzN2Ri
YzA1YjQxNDJmNjhkOWQxOWRjOTZiZmQuLjVjY2JkMmI0YjZkZWRkMjJhNjQ3YmUxMTM5M2QzYWZj
YWJmOGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmgKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBCb29sZWFuUHJvdG90eXBlIDogcHVibGljIEJvb2xlYW5PYmplY3QgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUp
OworICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcAppbmRleCAwYTA2MTQ4MWZhZjdhZWMyZTQ5ZDdiYThlZDA0MGU0YjJk
Mjc0YjdlLi45YmJiNjg4MTRlMDEyNjE4OWMxNTMwYmZjNjM2MmI0MDFkMjljZWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBh
cnNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZU5vdyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVVVEMoRXhlY1N0YXRlKik7CiAKLURhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUs
IERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUpCitEYXRlQ29uc3RydWN0b3I6OkRhdGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJv
dG90eXBlKiBkYXRlUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBkYXRl
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIGRhdGVQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgK
aW5kZXggYmQ1MjlmMTZmMTg3ODgzNTBmMTEyYzJjYzg2NzI1NjNkOTg5NjgxMi4uMjNhMDMxMWFj
OGU5MWRlNWQ1MmMzYWZmMjQxMzJlMTE3ZDE5YTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBEYXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1
cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKik7CisgICAgICAgIERhdGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERh
dGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3Bw
CmluZGV4IDc0YWRkYTQ3ZmFiM2ZhNmUxMTJiODhhNWY3NzZjNDc2NzYxODEzY2YuLmQ4Y2EwNzI0
OTFiODU4M2RmYzgxZTEyOTVhMmQ4YjM5MmE2NDQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcApAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gRGF0ZUluc3RhbmNlOjpzX2luZm8gPSB7IkRh
dGUiLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAsIDB9OwogCi1EYXRlSW5zdGFuY2U6OkRh
dGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK0RhdGVJbnN0YW5j
ZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwganNOYU4oKSk7CiB9CiAKLURhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IGRvdWJsZSB0aW1lKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK0RhdGVJbnN0
YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGRvdWJsZSB0aW1lKQorICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
c3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgc2V0SW50
ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCmluZGV4IGQw
ZGNmMGJjMzQ2ZGQ3NzI5NWMzMTAwOTEzMTY2M2QzNDIyMmYyYWMuLjYxOTVjODU0OWY1NTM0YzU3
NWZlODgwZWJmYzFjN2ZkYzJhOTM2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVJbnN0YW5jZS5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRGF0ZUluc3RhbmNlIDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVi
bGljOgotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgZG91YmxlKTsKLSAgICAgICAgZXhwbGljaXQgRGF0ZUluc3RhbmNlKEV4ZWNT
dGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgICAgICBEYXRlSW5zdGFu
Y2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgZG91YmxlKTsKKyAgICAgICAgZXhwbGljaXQgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIGRvdWJsZSBpbnRl
cm5hbE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGludGVybmFsVmFsdWUoKS51bmNoZWNrZWRHZXRO
dW1iZXIoKTsgfQogCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGNhbGN1bGF0ZUdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRl
eCAzMTRiYWE0YzJjOWNhYTI5ZjNlMjhmYmFhY2Y2OTljYjk5YzUzODJlLi40NDRmYTk4YjkxNzNl
ZGJkYTY4YjliYjFmMTA3ZTQ5MjdjM2MxMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIGNvbnN0IENs
YXNzSW5mbyBEYXRlUHJvdG90eXBlOjpzX2luZm8gPSB7IkRhdGUiLCAmRGF0ZUluc3RhbmNlOjpz
X2luZm8sIDAsIEV4ZWNTCiAKIC8vIEVDTUEgMTUuOS40CiAKLURhdGVQcm90b3R5cGU6OkRhdGVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKK0RhdGVQcm90b3R5cGU6OkRh
dGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IERhdGVJbnN0YW5jZShleGVjLCBzdHJ1Y3R1
cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAppbmRleCAwZWJiZWRjN2UzMDJkMGFkNzc3
Mjc1MjE3ZjdhMzFhMWJkZjViNDI4Li4yZTEwMzBkZmZiZDE4Njk3M2UyYmI5ZDk0MDZkNGYwNGNk
MzA0MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5oCkBAIC0yOSwxNCArMjksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEYXRl
UHJvdG90eXBlIDogcHVibGljIERhdGVJbnN0YW5jZSB7CiAgICAgcHVibGljOgotICAgICAgICBE
YXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPik7CisgICAgICAgIERhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENv
dW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwCmluZGV4IGI4NGY1ZWFjMGIzMmU5MDc5MTI3N2RiMTQ2MTQzYTljZTgyMjM0Y2EuLjdl
ZGExOWY1NGJjNjUwZjAyMWI3NjBhNjQxYTlmMjE2YmVhZDc0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBKU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBTdHJp
Y3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29u
c3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKQogICAgICAgICAsIG1f
bWVzc2FnZShtZXNzYWdlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggN2Y0ZjgyY2VjNWViYzQ1OGFhZDk0N2Y0
YTM4ODdhMzY2MWE0NDBiNi4uZGYxMTJkZDIyMjFmOWM5OGY3YmRlOTBiYzBiYzhlOTEzMDI0YmUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoRXJyb3JDb25zdHJ1Y3Rvcik7CiAKLUVycm9yQ29uc3RydWN0b3I6OkVy
cm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlKQorRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJ
ZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkK
IHsKICAgICAvLyBFQ01BIDE1LjExLjMuMSBFcnJvci5wcm90b3R5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAppbmRleCAzZDBkNzA2NTBk
YTJkNjc2MWZiNjUwZmU2NTg4YjY2Nzk2ZWE5NTA0Li5jZWVjMDA1YmU4MDJmZDM1MjkxNDExNDYw
NzJiZjIxYzUzN2VhZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBFcnJvclByb3RvdHlwZSopOwor
ICAgICAgICBFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRXJyb3JQcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggMGRi
MmFmOGE2OWU1MzBlNmIxNzhmODYwZTliNTg0MTI3NDBjOGU0ZS4uZWQ5NWJhNGExNzc4ZGVmMmE0
YWFlOTg2ZTQwZTJiMGY4MjE1NDc5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI1LDI4ICsyNSwyOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY29uc3QgQ2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OnNfaW5mbyA9IHsgIkVycm9yIiwg
JkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1FcnJvckluc3RhbmNlOjpFcnJv
ckluc3RhbmNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK0Vy
cm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoKmdsb2JhbERhdGEsIHN0
cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNzYWdlKGZhbHNlKQogewogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgcHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCAiIikp
OwogfQogCi1FcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJp
bmcmIG1lc3NhZ2UpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK0Vycm9ySW5z
dGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICA6IEpTTm9uRmluYWxPYmpl
Y3QoKmdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNzYWdl
KGZhbHNlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgcHV0RGlyZWN0
KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CiB9CiAKLUVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorRXJyb3JJbnN0YW5j
ZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIG5l
dyAoZ2xvYmFsRGF0YSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1lc3Nh
Z2UpOwogfQogCi1FcnJvckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNWYWx1ZSBt
ZXNzYWdlKQorRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkKIHsKICAgICBpZiAo
bWVzc2FnZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbmV3IChleGVjKSBFcnJvcklu
c3RhbmNlKCZleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggODJkYmYwZjU2MzgyZWJjMDg1
NDJkNTcxNGIxNjNiZWM5YjZiNzQyMS4uYWZjZjE1OGFkM2FlN2U3MGNlMzg0ZGNhNDRjNTRlNTc0
ZWY5ZTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuaApAQCAtMjksMTMgKzI5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBFcnJv
ckluc3RhbmNlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgY29uc3QgVVN0cmluZyYpOwotICAgICAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNWYWx1
ZSBtZXNzYWdlKTsKKyAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShKU0dsb2Jh
bERhdGEqLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBFcnJv
ckluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBtZXNzYWdl
KTsKIAogCiAgICAgICAgIGJvb2wgYXBwZW5kU291cmNlVG9NZXNzYWdlKCkgeyByZXR1cm4gbV9h
cHBlbmRTb3VyY2VUb01lc3NhZ2U7IH0KQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9ySW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEVycm9ySW5zdGFuY2Uo
SlNHbG9iYWxEYXRhKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIGV4
cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBleHBsaWNpdCBFcnJvckluc3RhbmNl
KEpTR2xvYmFsRGF0YSosIFN0cnVjdHVyZSopOworICAgICAgICBleHBsaWNpdCBFcnJvckluc3Rh
bmNlKEpTR2xvYmFsRGF0YSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAg
ICBib29sIG1fYXBwZW5kU291cmNlVG9NZXNzYWdlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggZTEzMjUxY2U2MzQy
ODYwY2NlMzhjOTFjYTk0NGIyYmJjZGEyMjM2NC4uYTU3ZTk0N2ZkYWQzYmIyOTBjNDg3YmQ5MDE3
NWM2NDU4Mjc4OTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEVycm9yUHJvdG90eXBlKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiAKIC8vIEVDTUEgMTUuOS40Ci1F
cnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKK0Vycm9yUHJvdG90eXBlOjpFcnJvclBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQogICAgIDog
RXJyb3JJbnN0YW5jZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgLy8g
VGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIgaW4gRXJyb3JDb25zdHJ1Y3Rvcidz
IGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90
b3R5cGUuaAppbmRleCAzYzJmZWQzMDMyOTM4ZjFlMjJjNjc2MzU1NDQ5YjQzM2ZkNjYxYmE0Li45
NDM3ZDNhNjI5MTAyNTUwMWQ2YmE1MTliMzE4NDRiM2QzMGM5MGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBFcnJv
ckluc3RhbmNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGQzYzYzN2U0YzQ0
ODI2M2M0NDc5MGZiZjczZTA5NGEwNDBjMWE1M2UuLjFkNzQzMTUzY2ExNzZhZTUxNTEzYWFjZGZm
ZGIyZDYyODg3YmM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEtPmludGVy
cnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUpCisgICAgICAgIDogSlNOb25GaW5hbE9iamVj
dCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVj
dHVyZS5nZXQoKSkKICAgICB7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBAIEpTT2JqZWN0KiBj
cmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCiBjbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CiAgICAgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEtPnRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZSkKKyAgICAgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT50ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1
Y3R1cmUuZ2V0KCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA1Y2QwMmY3MzNiZTQyY2NlMjBmM2FjN2JmMTIxYjY3
OTg1YjkwNDQxLi5mYTE0YWQ1MDYwZTBlYTcwNWFlOTI0NTI2NGExNDNjODUwMDI5NTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtNDgsMTAg
KzQ4LDYgQEAgTmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUoKQogewogfQogCi1W
UHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFibGUoKQotewotfQotCiBjb25zdCBD
bGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJlNj
cmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCB9OwogCiBFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
aW5TdHJpY3RDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCmluZGV4IDExODUyYmU4ZWRkOTFkYjc5OTI5YmEzYWRiYWFiZDUyY2U0OWFiZWIuLmZiZTMz
Y2Y5ODI4OGY5YmFjNjVjYWYwNDk3NWYxYTdhNmZlMmJmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTUyLDggKzUyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVE
ID0gLTE7CiAgICAgCiAgICAgcHVibGljOgotICAgICAgICBFeGVjdXRhYmxlQmFzZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50IG51bVBhcmFtZXRlcnMpCi0gICAgICAgICAgICA6IEpTQ2VsbChz
dHJ1Y3R1cmUpCisgICAgICAgIEV4ZWN1dGFibGVCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAg
OiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICAgICAgLCBtX251bVBhcmFt
ZXRlcnNGb3JDYWxsKG51bVBhcmFtZXRlcnMpCiAgICAgICAgICAgICAsIG1fbnVtUGFyYW1ldGVy
c0ZvckNvbnN0cnVjdChudW1QYXJhbWV0ZXJzKQogICAgICAgICB7CkBAIC02NSw3ICs2NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fbnVtUGFyYW1ldGVyc0ZvckNh
bGwgPT0gTlVNX1BBUkFNRVRFUlNfSVNfSE9TVDsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21w
b3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsg
fQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSAwOwpAQCAtMTE2LDEyICsxMTYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8s
IFR5cGVJbmZvKExlYWZUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7IH0KIAogICAgIHByaXZhdGU6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgTmF0
aXZlRXhlY3V0YWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUgY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSklUQ29kZSBjb25zdHJ1Y3RUaHVuaywgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKGdsb2Jh
bERhdGEubmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNf
SE9TVCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NU
KQogICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yKGNvbnN0cnVjdG9yKQogICAgICAgICB7CkBAIC0xMzIsNyArMTMyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKGdsb2Jh
bERhdGEubmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNf
SE9TVCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NU
KQogICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yKGNvbnN0cnVjdG9yKQogICAgICAgICB7CkBAIC0xNDYsMjAgKzE0NiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAg
ICAgfTsKIAotICAgIGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxl
QmFzZSB7Ci0gICAgcHVibGljOgotICAgICAgICBWUHRySGFja0V4ZWN1dGFibGUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHN0cnVjdHVyZSwgTlVN
X1BBUkFNRVRFUlNfSVNfSE9TVCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgflZQ
dHJIYWNrRXhlY3V0YWJsZSgpOwotICAgIH07Ci0KICAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxl
IDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdEV4
ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQotICAgICAg
ICAgICAgOiBFeGVjdXRhYmxlQmFzZShzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01Q
SUxFRCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoKmdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICAgICAgICAgLCBtX3NvdXJjZShz
b3VyY2UpCiAgICAgICAgICAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJp
Y3RNb2RlRmVhdHVyZSA6IDApCiAgICAgICAgIHsKQEAgLTE3Myw3ICsxNjMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0KQotICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShzdHJ1
Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKKyAgICAgICAgICAgIDogRXhlY3V0
YWJsZUJhc2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05P
VF9DT01QSUxFRCkKICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAg
LCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQog
ICAgICAgICB7CkBAIC0yNDIsNyArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICAgICAgfQogI2VuZGlmCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyB9CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAwKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgU2NyaXB0RXhlY3V0YWJsZTo6
U3RydWN0dXJlRmxhZ3M7CkBAIC0yODksNyArMjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUlu
Zm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hp
bGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKQEAgLTM4Miw3ICszNzIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaXNjYXJkQ29kZSgpOwogICAgICAg
ICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSos
IERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQs
IDApOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
Zm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBib29sLCBpbnQgZmlyc3RM
aW5lLCBpbnQgbGFzdExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBhOWYwYTA2NjJkOWZlMDg3ODU1Zjhi
NDFjMWRlN2QyOGQ0YzE5YWJhLi45ZTdkOGQ1NDAxMGFiMjVjNDkyNGZiNzllYzk0ZTY1NDQwOWMw
ZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAotRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCitGdW5jdGlvbkNvbnN0
cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBl
KiBmdW5jdGlvblByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZnVuY3Rp
b25Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaAppbmRleCA3ZjIxYjIwZmM1MWE2MTcxODUzZDNkZWJkZWZjYThhMDg0MDIy
YmZlLi4zMWEwNGM5OWZmMjZhNWYzYTY4MWI0MjRlMGQyZDM4M2I2MDY3M2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBA
IC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Db25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBGdW5jdGlvblByb3RvdHlwZSopOworICAgICAgICBGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RnVuY3Rpb25Qcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBj
MmQ4YWQzNzdhNmQ0ZDhmMGRhZWYxN2Q1N2QxYTUyMWY1YjczYTNkLi5lMmE0OTQxNmRkZWUzYzRi
NzVmMWZhMzI2MDc1NTgzNTE3OTU3ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByb3RvRnVuY0FwcGx5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwogCi1GdW5jdGlvblBy
b3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkK
K0Z1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bGxJZGVudGlmaWVyKQogewogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5oCmluZGV4IDQ0N2YwMGJkODEwZjVlNTllZjc5NmE1ODgyZWExY2Y2ZDRmMjVjODEuLmFi
NzA4ZGQ3ZGUzM2ExOTAwYTQzYjBhYTU4ZWM2Y2FhNmQ1MTE3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMjcsMTAgKzI3
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGUgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4pOworICAgICAgICBGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIGFkZEZ1bmN0aW9uUHJvcGVydGll
cyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1
cmUsIEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpTRnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9u
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pCisgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG8pCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IDBjZGZlYzQ5ODg2MmY0
OTA0NmRjYjA4ZTNmZDM1ODFkNmNlODc4ZTEuLmEyMjJjN2E0YmExZDQ4MDg4NDk2MGRiYmY4YWYy
OWQ3Y2Q4Yjc4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYykKLSAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5nZXR0ZXJTZXR0
ZXJTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBn
ZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGdldHRlcik7IH0KICAgICAg
ICAgSlNPYmplY3QqIHNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyLmdldCgpOyB9CiAg
ICAgICAgIHZvaWQgc2V0U2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3Qq
IHNldHRlcikgeyBtX3NldHRlci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc2V0dGVyKTsgfQotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oR2V0dGVyU2V0dGVyVHlwZSwgT3Zl
cnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcAppbmRleCBhZWY2MGM4NzY1MDFiMjVmOGMzODE3OWNjN2U2N2EyMDRhMDM0ZGU5Li4y
NzYxMWI3NTdiMzRiZTVjNTY0Y2UwM2JiMDU1M2JhNzM2ZTY0NjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAt
NTksNyArNTksNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiAgICAg
c19kdG9hUDVNdXRleCA9IG5ldyBNdXRleDsKICAgICBpbml0aWFsaXplRGF0ZXMoKTsKICAgICBS
ZWdpc3RlckZpbGU6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBTdHJ1Y3R1cmU6OmluaXRp
YWxpemVUaHJlYWRpbmcoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCmluZGV4IDYwOTE4MzFhNWZhODBiMDYx
NTA3M2JmZTY5NTI5YjA5ZDFlM2Y1MGMuLmMzYjA3ZjgyOTcwMjhlOTZmMmZmNTAzZDk1MTc4ZjFj
Y2Y5OGY2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uY3BwCkBAIC0zNiwxMyArMzYsMTIgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChJbnRlcm5hbEZ1bmN0aW9uKTsKIAogY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rp
b246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c19p
bmZvLCAwLCAwIH07CiAKLUludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3Qoc3RydWN0dXJlKQorSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihW
UHRyU3RlYWxpbmdIYWNrVHlwZSkKKyAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChWUHRy
U3RlYWxpbmdIYWNrKQogewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLUlu
dGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK0ludGVybmFsRnVuY3Rpb246
OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDA4Yzk4YTUzODBm
MTcyOTUzNmVkOTkxOWZmYmJiODY1NDkwYWExOTQuLjI4ZTI2MGUzMDEzMGRkZDhjMGFlNzk2ZDY2
MzMzNzI5OGZlOWNmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0
IFVTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAog
ICAgICAgICB7IAogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7IAogICAgICAgICB9CkBAIC00OCw5ICs0OCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAg
ICAgICAgLy8gT25seSB1c2VkIHRvIGFsbG93IHVzIHRvIGRldGVybWluZSB0aGUgSlNGdW5jdGlv
biB2cHRyCi0gICAgICAgIEludGVybmFsRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUpOworICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hh
Y2tUeXBlKTsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSosIEpTR2xv
YmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgSWRlbnRpZmll
ciYpOworICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCmluZGV4
IDAwZmUwYTAxMzM5MDYwNTMxOTQyMmQwMDgxMzk3NWNjYzE2MzBmM2UuLjAxNjU0ODg1YmQ3YmQx
ZTU5MzIyNTBmMjY0YzM1ZmM3ZWZmN2VlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyksIEFub255bW91c1Nsb3RDb3VudCwgMCk7CiAgICAgICAgIH0KQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEpTQVBJVmFsdWVXcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKLSAgICAg
ICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5hcGlXcmFwcGVyU3RydWN0dXJlLmdl
dCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9i
YWxEYXRhKCkuYXBpV3JhcHBlclN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgewogICAgICAgICAg
ICAgbV92YWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAg
ICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDgzYjZhMWMxMmM0YzhkZDVkZTkwZTA0Nzcz
NTIxMDgzNTk0NzBiOGMuLjRlMzY2NDFkMGU1YzgwNWVjOWJmMGM4ZmQ2ZmYxMmQxYTU3ODE2NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQWN0aXZhdGlvbik7
CiBjb25zdCBDbGFzc0luZm8gSlNBY3RpdmF0aW9uOjpzX2luZm8gPSB7ICJKU0FjdGl2YXRpb24i
LCAmQmFzZTo6c19pbmZvLCAwLCAwIH07CiAKIEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0aW9uKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSkKLSAgICA6IEJhc2UoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYWN0aXZhdGlvblN0cnVjdHVy
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLT5zeW1ib2xUYWJsZSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpKQorICAgIDogQmFzZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCkuYWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKSwgZnVuY3Rpb25FeGVjdXRhYmxlLT5z
eW1ib2xUYWJsZSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygpKQogICAgICwgbV9udW1QYXJhbWV0
ZXJzTWludXNUaGlzKHN0YXRpY19jYXN0PGludD4oZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0
ZXJDb3VudCgpKSkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJzKGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkpCiAgICAgLCBtX3JlcXVpcmVzRHluYW1pY0NoZWNrcyhm
dW5jdGlvbkV4ZWN1dGFibGUtPnVzZXNFdmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQWN0aXZhdGlvbi5oCmluZGV4IDc0NjNmNDczZGM4YzQ2MDViNjQwODM2ZmE4NGQ4
NGRjZTNkYTg5NWIuLjY1NjQyZjExMjYyYjM1ZTQ4Yzc3ZmRmZjliZTJmMWIxZTY1YzY0Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCkBAIC02Niw3
ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgTmVlZHNUaGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc01hcmtDaGlsZHJl
biB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXgg
MWQ2MjFmZTlmOTBkMDRjMzRmZGNhMjIyYTllZmJlNDEyNTBiNWUyMy4uYmY2MTA5N2FjZjg4NThk
NzI5MjczZjZkYjYyNjQ0ZDk5YzZjMTJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKQEAgLTEyNywyNiArMTI3LDEyIEBAIGlubGluZSB2b2lkIEpTQXJyYXk6
OmNoZWNrQ29uc2lzdGVuY3koQ29uc2lzdGVuY3lDaGVja1R5cGUpCiAjZW5kaWYKIAogSlNBcnJh
eTo6SlNBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qo
U3RydWN0dXJlOjpjcmVhdGUoU3RydWN0dXJlOjpWUHRyU3RlYWxpbmdIYWNrLCAmc19pbmZvKSkK
KyAgICA6IEpTTm9uRmluYWxPYmplY3QoVlB0clN0ZWFsaW5nSGFjaykKIHsKLSAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwotCi0gICAgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5ID0gMDsK
LQotICAgIG1fc3RvcmFnZSA9IHN0YXRpY19jYXN0PEFycmF5U3RvcmFnZSo+KGZhc3RaZXJvZWRN
YWxsb2Moc3RvcmFnZVNpemUoaW5pdGlhbENhcGFjaXR5KSkpOwotICAgIG1fc3RvcmFnZS0+bV9h
bGxvY0Jhc2UgPSBtX3N0b3JhZ2U7Ci0gICAgbV9pbmRleEJpYXMgPSAwOwotICAgIG1fdmVjdG9y
TGVuZ3RoID0gaW5pdGlhbENhcGFjaXR5OwotCi0gICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAg
IAotICAgIC8vIEl0J3Mgbm90IHNhZmUgdG8gY2FsbCBIZWFwOjpoZWFwKHRoaXMpIGluIG9yZGVy
IHRvIHJlcG9ydCBleHRyYSBtZW1vcnkKLSAgICAvLyBjb3N0IGhlcmUsIGJlY2F1c2UgdGhlIFZQ
dHJTdGVhbGluZ0hhY2tUeXBlIEpTQXJyYXkgaXMgbm90IGFsbG9jYXRlZCBvbgotICAgIC8vIHRo
ZSBoZWFwLiBGb3IgdGhlIHNhbWUgcmVhc29uLCBpdCdzIE9LIG5vdCB0byByZXBvcnQgZXh0cmEg
Y29zdC4KIH0KIAotSlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorSlNBcnJheTo6
SlNBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIApAQCAtMTYyLDggKzE0OCw4IEBAIEpTQXJyYXk6OkpT
QXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgSGVhcDo6
aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0b3JhZ2VTaXplKDApKTsKIH0KIAot
SlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
dW5zaWduZWQgaW5pdGlhbExlbmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQot
ICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitKU0FycmF5OjpKU0FycmF5KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRp
YWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKKyAgICA6IEpTTm9uRmlu
YWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiAKQEAgLTIwNCw4ICsxOTAsOCBAQCBKU0FycmF5OjpKU0FycmF5KE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLAog
ICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzdG9yYWdlU2l6ZShp
bml0aWFsQ2FwYWNpdHkpKTsKIH0KIAotSlNBcnJheTo6SlNBcnJheShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBB
cmdMaXN0JiBsaXN0KQotICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitKU0FycmF5
OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IEFyZ0xpc3QmIGxpc3QpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggMWE2ZWJhOGIwZjlmNTZjN2U1ZWI3
OTQ2MGRmYzhjOGE0ZjFlMmY5ZC4uOGJlODUxMzZiNDlkMTA3ZjVmYjZlOTUyZGZhYzkwMjllNTZm
YWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNjEsMTIg
KzYxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwog
CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFZQdHJTdGVhbGluZ0hhY2tUeXBlIHsgVlB0clN0
ZWFsaW5nSGFjayB9OwogICAgICAgICBKU0FycmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBlKTsKIAot
ICAgICAgICBleHBsaWNpdCBKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwot
ICAgICAgICBKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIHVuc2lnbmVkIGlu
aXRpYWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlKTsKLSAgICAgICAgSlNBcnJheShKU0dsb2Jh
bERhdGEmLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0
aWFsVmFsdWVzKTsKKyAgICAgICAgZXhwbGljaXQgSlNBcnJheShKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKKyAgICAgICAgSlNBcnJheShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBpbml0aWFsTGVuZ3RoLCBBcnJheUNyZWF0aW9uTW9kZSk7CisgICAgICAgIEpTQXJyYXko
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgQXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7
CiAgICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CkBAIC0xMjQsNyArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXIm
KTsKICAgICAgICAgdm9pZCBjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiwgUmVnaXN0ZXIqLCB1
aW50MzJfdCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRl
QXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3Bw
CmluZGV4IGZiYWVhMWRmNmFhMmNlZjgwZDY3ZDQxMWRlMjQ5OWU1Y2Y1ZTFjNDguLmMyYWJhZWUx
YzhmYmZjMWViODQ2Zjk5MDhkNjQ3ZDFhYWE0ZTE5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0J5dGVBcnJheTo6c19kZWZhdWx0SW5mbyA9IHsg
IkJ5dGVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIDAgfTsKIAotSlNCeXRlQXJyYXk6OkpTQnl0
ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0
dXJlKQorSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkK
IHsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCku
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVh
ZE9ubHkgfCBEb250RGVsZXRlKTsKQEAgLTUwLDcgKzUwLDcgQEAgSlNCeXRlQXJyYXk6On5KU0J5
dGVBcnJheSgpCiAjZW5kaWYKIAogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gSlNCeXRlQXJyYXk6
OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKQorU3RydWN0dXJlKiBKU0J5dGVB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CiAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIGNsYXNzSW5mbyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAppbmRleCBlNjc0
OTU4MGIxMjQzMzJjYjhiYTRkMTBmNGM0ZjViZjU0ZWQ0ZGQ4Li5jNDgxYmI0YzhiOTNlYzE2MTI5
NzFkYTE0OTVhNzZlNzJiZGY1YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmgKQEAgLTc1LDggKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgc2V0SW5kZXgoaSwgYnl0ZVZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIEpT
Qnl0ZUFycmF5KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFdURjo6
Qnl0ZUFycmF5KiBzdG9yYWdlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKKyAgICAgICAgSlNCeXRlQXJyYXko
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UpOworICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1
ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkBAIC0xMDAsOSAr
MTAwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBlbnVtIFZQdHJTdGVhbGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5nSGFjayB9
OwogICAgICAgICBKU0J5dGVBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICAgICAgICAg
IDogSlNOb25GaW5hbE9iamVjdChTdHJ1Y3R1cmU6OmNyZWF0ZShTdHJ1Y3R1cmU6OlZQdHJTdGVh
bGluZ0hhY2ssICZzX2luZm8pKQorICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KFZQdHJT
dGVhbGluZ0hhY2spCiAgICAgICAgIHsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCBjZTdmZTIyNzhiM2U2NTgxYTRiNDkwZTc2YzQ0YzBj
MTZjYTMyYzgxLi5hZmQ4NDUwMjQ3ZDI3N2RhZTI5YzY3NThiMTVhOWZhYzdiNGJhMDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTIwOSw0ICsyMDksMTQg
QEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
KSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitib29sIGlzWm9tYmllKGNvbnN0IEpTQ2VsbCog
Y2VsbCkKK3sKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgcmV0dXJuIGNlbGwgJiYgY2Vs
bC0+aXNab21iaWUoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNlbGwpOworICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggY2JmYzExMzczY2JhNjk0YWY0NzkxYzQzMzkzNGQ0
YjcxMDY1NWRmZS4uN2VlODcxYzFjNjkwMjRiN2Q0ODJiYTBjNTQ1MDJmNWE1ODUxOWYyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNp
bmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgogI2lu
Y2x1ZGUgIk1hcmtTdGFjay5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02OSwxNCArNjgsMTkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgU2NvcGVDaGFp
bk5vZGU7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgZW51bSBWUHRy
U3RlYWxpbmdIYWNrVHlwZSB7IFZQdHJTdGVhbGluZ0hhY2sgfTsKKwogICAgIHByaXZhdGU6Ci0g
ICAgICAgIGV4cGxpY2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKKyAgICAgICAgZXhwbGljaXQgSlND
ZWxsKFZQdHJTdGVhbGluZ0hhY2tUeXBlKSB7IH0KKyAgICAgICAgSlNDZWxsKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlRHVt
bXlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAKICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5
cGUuCiAgICAgICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKQEAgLTE0Miw3ICsxNDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxs
LCBtX3N0cnVjdHVyZSk7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJ1Y3R1cmUqIGNvbnN0ICog
YWRkcmVzc09mU3RydWN0dXJlKCkgY29uc3QKKyAgICAgICAgY29uc3Qgdm9pZCogYWRkcmVzc09m
U3RydWN0dXJlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICZtX3N0cnVj
dHVyZTsKICAgICAgICAgfQpAQCAtMTU1LDEyICsxNTksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAg
fTsKIAotICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAg
IDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKQogICAgIHsKKyAgICAg
ICAgLy8gVmVyeSBmaXJzdCBzZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3QgaGF2ZSBhIHJlYWwgc3Ry
dWN0dXJlLgorICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwgIWdsb2JhbERhdGEuZHVtbXlN
YXJrYWJsZUNlbGxTdHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIGlubGluZSBKU0NlbGw6On5KU0Nl
bGwoKQpAQCAtMTY5LDExICsxNzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUg
U3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gbV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9
CiAKLSAgICBpbmxpbmUgdm9pZCBKU0NlbGw6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smKQorICAg
IGlubGluZSB2b2lkIEpTQ2VsbDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQog
ICAgIHsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOwogICAgIH0KIAog
ICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtMzQwLDcgKzM0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShKU0NfWk9NQklF
UykKICAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1pvbWJpZSgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzWm9tYmllKCk7
CisgICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKSA+IChKU0NlbGwqKTB4MWZmZmZm
ZmZmTCAmJiBhc0NlbGwoKS0+aXNab21iaWUoKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBiOGU0OTliNjg3OWNi
M2JlMTFlOWM1NzcyMWJlOTRlYWM1ZTA3ZWE5Li5hMThlOTczMDZiYmY3NDc4NDhiZDlmYzJjYjU5
YjUwMmNjYmE1MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtNTYsMTQgKzU2LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rp
b25Ob25JbmxpbmUoKSBjb25zdAogICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpOwogfQogCi1K
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlLCBWUHRySGFja0V4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCi0gICAgOiBCYXNlKHN0cnVjdHVy
ZSkKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCisgICAgOiBC
YXNlKFZQdHJTdGVhbGluZ0hhY2spCiB7Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
LSAgICBtX2V4ZWN1dGFibGUuc2V0V2l0aG91dFdyaXRlQmFycmllcihleGVjdXRhYmxlKTsKIH0K
IAotSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVu
aykKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1bmspCiAgICAgOiBCYXNlKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgdGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKQEAgLTczLDcgKzcxLDcg
QEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXMKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLUpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gZnVuYykKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAppbmRleCA1MDViOWRlMjcyYjVkNGQ1Y2FkYjAwYWIxMGM0YmVmOWZiM2I2MjNkLi4xNzRj
ZDM4NGU3MTQ1NDg0M2JlNWQyMzkwNDM5MjIxMWMzOTRhZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00NSw4ICs0NSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogCiAg
ICAgcHVibGljOgotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKLSAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVFeGVjdXRhYmxlKik7CisgICAgICAgIEpTRnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBj
b25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAgICBKU0Z1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCwgY29uc3Qg
SWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVj
U3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2
aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7IAogICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICAgICAg
fQpAQCAtODcsNyArODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEpTRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgVlB0
ckhhY2tFeGVjdXRhYmxlKik7CisgICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0ZWFs
aW5nSGFja1R5cGUpOwogCiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKaW5kZXggNjI5MGZmOGM3YTE2NDA2YzJhNDg1YTM4ZjUwMDk2NzgzMTA3MTk1Yi4uNWY2OGRl
OTNiNjQ3NDcwNTU0NDJlOWNhYzRlZTYzMzAyNDk3MmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNab21iaWUu
aCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCkBAIC0xMTUsMjYgKzExNiwxOCBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRy
cygpCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQXJyYXkpIDw9IHNpemVvZihzdG9yYWdl
KSwgc2l6ZW9mX0pTQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7CiAgICAgSlNDZWxs
KiBqc0FycmF5ID0gbmV3IChzdG9yYWdlKSBKU0FycmF5KEpTQXJyYXk6OlZQdHJTdGVhbGluZ0hh
Y2spOwogICAgIEpTR2xvYmFsRGF0YTo6anNBcnJheVZQdHIgPSBqc0FycmF5LT52cHRyKCk7Ci0g
ICAganNBcnJheS0+fkpTQ2VsbCgpOwogCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQnl0
ZUFycmF5KSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0J5dGVBcnJheV9tdXN0X2JlX2xl
c3NfdGhhbl9zdG9yYWdlKTsKICAgICBKU0NlbGwqIGpzQnl0ZUFycmF5ID0gbmV3IChzdG9yYWdl
KSBKU0J5dGVBcnJheShKU0J5dGVBcnJheTo6VlB0clN0ZWFsaW5nSGFjayk7CiAgICAgSlNHbG9i
YWxEYXRhOjpqc0J5dGVBcnJheVZQdHIgPSBqc0J5dGVBcnJheS0+dnB0cigpOwotICAgIGpzQnl0
ZUFycmF5LT5+SlNDZWxsKCk7CiAKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNTdHJpbmcp
IDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTU3RyaW5nX211c3RfYmVfbGVzc190aGFuX3N0
b3JhZ2UpOwogICAgIEpTQ2VsbCoganNTdHJpbmcgPSBuZXcgKHN0b3JhZ2UpIEpTU3RyaW5nKEpT
U3RyaW5nOjpWUHRyU3RlYWxpbmdIYWNrKTsKICAgICBKU0dsb2JhbERhdGE6OmpzU3RyaW5nVlB0
ciA9IGpzU3RyaW5nLT52cHRyKCk7Ci0gICAganNTdHJpbmctPn5KU0NlbGwoKTsKIAogICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihKU0Z1bmN0aW9uKSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVv
Zl9KU0Z1bmN0aW9uX211c3RfYmVfbGVzc190aGFuX3N0b3JhZ2UpOwotICAgIGNoYXIgZXhlY3V0
YWJsZVN0b3JhZ2Vbc2l6ZW9mKFZQdHJIYWNrRXhlY3V0YWJsZSldOwotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShTdHJ1Y3R1cmU6
OlZQdHJTdGVhbGluZ0hhY2ssIDApOwotICAgIEpTQ2VsbCogZXhlY3V0YWJsZSA9IG5ldyAoZXhl
Y3V0YWJsZVN0b3JhZ2UpIFZQdHJIYWNrRXhlY3V0YWJsZShleGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpKTsKLSAgICBKU0NlbGwqIGpzRnVuY3Rpb24gPSBuZXcgKHN0b3JhZ2UpIEpTRnVuY3Rpb24o
U3RydWN0dXJlOjpjcmVhdGUoU3RydWN0dXJlOjpWUHRyU3RlYWxpbmdIYWNrLCAmSlNGdW5jdGlv
bjo6c19pbmZvKSwgc3RhdGljX2Nhc3Q8VlB0ckhhY2tFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSkp
OworICAgIEpTQ2VsbCoganNGdW5jdGlvbiA9IG5ldyAoc3RvcmFnZSkgSlNGdW5jdGlvbihKU0Nl
bGw6OlZQdHJTdGVhbGluZ0hhY2spOwogICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIg
PSBqc0Z1bmN0aW9uLT52cHRyKCk7Ci0gICAgZXhlY3V0YWJsZS0+fkpTQ2VsbCgpOwotICAgIGpz
RnVuY3Rpb24tPn5KU0NlbGwoKTsKIH0KIAogSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xv
YmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5
cGUpCkBAIC0xNjgsMjkgKzE2MSwzOSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwg
ZXhjbHVzaXZlVGhyZWFkKDApCiAjZW5kaWYKIHsKLSAgICBhY3RpdmF0aW9uU3RydWN0dXJlID0g
SlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBpbnRl
cnJ1cHRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlID0gSlNOb25GaW5hbE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9y
U3RydWN0dXJlID0gSlNOb25GaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051
bGwoKSk7Ci0gICAgc3RhdGljU2NvcGVTdHJ1Y3R1cmUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBzdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZSA9IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IGpzTnVsbCgpKTsKLSAgICBzdHJpbmdTdHJ1Y3R1cmUgPSBKU1N0cmluZzo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgbm90QW5PYmplY3RTdHJ1Y3R1cmUgPSBKU05vdEFu
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBwcm9wZXJ0eU5h
bWVJdGVyYXRvclN0cnVjdHVyZSA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIGdldHRlclNldHRlclN0cnVjdHVyZSA9IEdldHRl
clNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgYXBpV3JhcHBl
clN0cnVjdHVyZSA9IEpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKTsKLSAgICBzY29wZUNoYWluTm9kZVN0cnVjdHVyZSA9IFNjb3BlQ2hhaW5Ob2RlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBleGVjdXRhYmxlU3RydWN0dXJl
ID0gRXhlY3V0YWJsZUJhc2U6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAg
IG5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZSA9IEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBwcm9n
cmFtRXhlY3V0YWJsZVN0cnVjdHVyZSA9IFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAg
IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlID0gSlNDZWxsOjpjcmVhdGVEdW1teVN0cnVjdHVy
ZSgqdGhpcyk7Ci0gICAgc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmVDaGFpbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0KICAgICBpbnRlcnByZXRlciA9IG5l
dyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQp
CiAgICAgICAgIG1fc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKIAorICAgIC8vIE5l
ZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCisgICAg
SWRlbnRpZmllclRhYmxlKiBleGlzdGluZ0VudHJ5SWRlbnRpZmllclRhYmxlID0gd3RmVGhyZWFk
RGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoaWRlbnRpZmllclRhYmxlKTsKKyAgICBK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIHN0cnVjdHVyZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CisgICAgYWN0
aXZhdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBqc051bGwoKSkpOworICAgIGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKSk7CisgICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLnNldCgqdGhp
cywgSlNOb25GaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOwor
ICAgIHN0YXRpY1Njb3BlU3RydWN0dXJlLnNldCgqdGhpcywgSlNTdGF0aWNTY29wZU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIHN0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlLnNldCgqdGhpcywgU3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBzdHJpbmdTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIG5vdEFuT2Jq
ZWN0U3RydWN0dXJlLnNldCgqdGhpcywgSlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCBqc051bGwoKSkpOworICAgIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCgq
dGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051
bGwoKSkpOworICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIGFwaVdyYXBwZXJTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU0FQSVZhbHVlV3JhcHBlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCBqc051bGwoKSkpOworICAgIHNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLnNldCgqdGhpcywgU2Nv
cGVDaGFpbk5vZGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBleGVj
dXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXhlY3V0YWJsZUJhc2U6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBuYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkp
OworICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBwcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIGpzTnVsbCgpKSk7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgp
KSk7CisgICAgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0NlbGw6OmNy
ZWF0ZUR1bW15U3RydWN0dXJlKCp0aGlzKSk7CisgICAgc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwo
KSkpOworCisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgIHpvbWJpZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTWm9tYmllOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisjZW5k
aWYKKworICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGV4aXN0
aW5nRW50cnlJZGVudGlmaWVyVGFibGUpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXJ0
UHJvZmlsZXJTZXJ2ZXJJZk5lZWRlZCgpOwogI2VuZGlmCkBAIC0yMjIsNiArMjI1LDMzIEBAIEpT
R2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBU
aHJlYWRTdGFja1R5cGUgdGhyZWFkCiAjZW5kaWYKIH0KIAordm9pZCBKU0dsb2JhbERhdGE6OmNs
ZWFyQnVpbHRpblN0cnVjdHVyZXMoKQoreworICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5jbGVhcigp
OworICAgIGFjdGl2YXRpb25TdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBpbnRlcnJ1cHRlZEV4ZWN1
dGlvbkVycm9yU3RydWN0dXJlLmNsZWFyKCk7CisgICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9y
U3RydWN0dXJlLmNsZWFyKCk7CisgICAgc3RhdGljU2NvcGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5jbGVhcigpOworICAgIHN0cmluZ1N0cnVj
dHVyZS5jbGVhcigpOworICAgIG5vdEFuT2JqZWN0U3RydWN0dXJlLmNsZWFyKCk7CisgICAgcHJv
cGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBnZXR0ZXJTZXR0ZXJTdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICBhcGlXcmFwcGVyU3RydWN0dXJlLmNsZWFyKCk7CisgICAgc2Nv
cGVDaGFpbk5vZGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBleGVjdXRhYmxlU3RydWN0dXJlLmNs
ZWFyKCk7CisgICAgbmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5jbGVhcigpOworICAgIGV2YWxF
eGVjdXRhYmxlU3RydWN0dXJlLmNsZWFyKCk7CisgICAgcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZS5jbGVhcigpOworICAgIHN0cnVjdHVyZUNoYWlu
U3RydWN0dXJlLmNsZWFyKCk7CisgICAgCisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgIHpv
bWJpZVN0cnVjdHVyZS5jbGVhcigpOworI2VuZGlmCit9CisKIEpTR2xvYmFsRGF0YTo6fkpTR2xv
YmFsRGF0YSgpCiB7CiAgICAgLy8gQnkgdGhlIHRpbWUgdGhpcyBpcyBkZXN0cm95ZWQsIGhlYXAu
ZGVzdHJveSgpIG11c3QgYWxyZWFkeSBoYXZlIGJlZW4gY2FsbGVkLgpAQCAtMjgyLDEwICszMTIs
NyBAQCBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFk
U3RhY2tUeXBlIHR5cGUpCiAKIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6
OmNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSkKIHsKLSAgICBTdHJ1Y3R1cmU6OnN0
YXJ0SWdub3JpbmdMZWFrcygpOwotICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGRhdGEgPSBjcmVh
dGUodHlwZSk7Ci0gICAgU3RydWN0dXJlOjpzdG9wSWdub3JpbmdMZWFrcygpOwotICAgIHJldHVy
biBkYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY3JlYXRlKHR5cGUpOwogfQogCiBib29sIEpT
R2xvYmFsRGF0YTo6c2hhcmVkSW5zdGFuY2VFeGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAwYzM3Y2RhOTI5MmIzYTllYjU0YTUyNzMz
MTU4ODMwYTAzN2E5YTJhLi5mMTA4NWFmNDJiMTkwODAxZWNmOGViNTc1YjEyNzQ5MTg1MDdlOTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VD
YWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJTdHJv
bmcuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJOdW1lcmljU3RyaW5ncy5oIgpAQCAtMTQ1LDI0ICsxNDYsMjkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwQ29uc3RydWN0b3JUYWJsZTsKICAg
ICAgICAgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdUYWJsZTsKICAgICAgICAgCi0gICAgICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IGFjdGl2YXRpb25TdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gc3RhdGljU2NvcGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8
U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5v
dEFuT2JqZWN0U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm9wZXJ0eU5h
bWVJdGVyYXRvclN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0
dGVyU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBhcGlXcmFwcGVyU3RydWN0
dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzY29wZUNoYWluTm9kZVN0cnVjdHVyZTsK
LSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gbmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
c3RydWN0dXJlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBhY3RpdmF0aW9u
U3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZXJtaW5hdGVkRXhl
Y3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0YXRpY1Nj
b3BlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RyaW5nU3RydWN0dXJl
OworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBub3RBbk9iamVjdFN0cnVjdHVyZTsKKyAgICAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAg
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclN0cnVjdHVyZTsKKyAgICAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gYXBpV3JhcHBlclN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gc2NvcGVDaGFpbk5vZGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGV4ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG5hdGl2ZUV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV2YWxFeGVjdXRh
YmxlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0
cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1
cmU7CisKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IHpvbWJpZVN0cnVjdHVyZTsKKyNlbmRpZgogCiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3JlVlB0
cnMoKTsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNBcnJheVZQdHI7CkBA
IC0yNjEsNiArMjY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZHVtcFJlZ0V4
cFRyYWNlKCk7CiAgICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJl
dHVybiBoZWFwLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7IH0KICAgICAgICAgSGFuZGxlU2xvdCBh
bGxvY2F0ZUxvY2FsSGFuZGxlKCkgeyByZXR1cm4gaGVhcC5hbGxvY2F0ZUxvY2FsSGFuZGxlKCk7
IH0KKyAgICAgICAgdm9pZCBjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSk7
CkBAIC0yNzIsNiArMjc5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGFja0JvdW5k
cyBtX3N0YWNrOwogICAgIH07CiAKKyAgICBpbmxpbmUgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2Jh
bEhhbmRsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgeworICAgICAgICByZXR1cm4g
Z2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpOworICAgIH0KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBKU0dsb2JhbERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDg0Yzg1YWU3YWNmODJmY2Jh
OTM3ZDQ1ZDdiMmFlZDczMzNlZjY2MzMuLmI4Mjk0OWFiZWRiOGE0Yjk4YzhiMDY4ZmRhZmNmZWZl
YWU4Mzc4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTg0LDEyICs4NCw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgaW5saW5lIHZvaWQgbWFya0lmTmVlZGVkKE1hcmtTdGFjayYgbWFya1N0YWNrLCBXcml0CiAg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQodik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtYXJr
SWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0IFJlZlB0cjxTdHJ1Y3R1cmU+JiBz
KQotewotICAgIGlmIChzKQotICAgICAgICBzLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci19
Ci0KIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogewogICAgIEFTU0VSVChKU0xv
Y2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwpAQCAtMTc2LDQ2ICsxNzAsNDYgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgLy8gUHJv
dG90eXBlcwogCiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0aW9u
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSkp
KTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdpbGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBl
IGlzIGNyZWF0ZWQuCi0gICAgbV9mdW5jdGlvblN0cnVjdHVyZSA9IEpTRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwotICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOworICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uID0gMDsKICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1
bmN0aW9uID0gMDsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRp
ZXMoZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbiwg
JmFwcGx5RnVuY3Rpb24pOwogICAgIG1fY2FsbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIGNhbGxGdW5jdGlvbik7CiAgICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgT2JqZWN0UHJvdG90eXBl
KGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwganNOdWxsKCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7Ci0gICAgbV9m
dW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0
aW9uKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5z
dHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICBtX2VtcHR5T2JqZWN0U3RydWN0
dXJlID0gbV9vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CisgICAgbV9lbXB0eU9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CiAK
LSAgICBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOwotICAgIG1fYXJndW1lbnRzU3RydWN0dXJlID0gQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7Ci0gICAgbV9j
YWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlID0gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7
Ci0gICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KTsKKyAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKIAog
ICAgIG1fYXJyYXlQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChl
eGVjKSBBcnJheVByb3RvdHlwZSh0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgbV9h
cnJheVN0cnVjdHVyZSA9IEpTQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwotICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlID0gUmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2FycmF5U3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBSZWdFeHBN
YXRjaGVzQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fYXJyYXlQ
cm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fc3RyaW5nUHJvdG90eXBlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFN0
cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPSBTdHJp
bmdPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fc3RyaW5nUHJv
dG90eXBlLmdldCgpKTsKKyAgICBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBTdHJpbmdPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIG1fc3RyaW5nUHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX2Jvb2xlYW5Qcm90
b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBCb29sZWFuUHJv
dG90eXBlKGV4ZWMsIHRoaXMsIEJvb2xlYW5Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSkpOwotICAgIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fYm9vbGVhblByb3RvdHlw
ZS5nZXQoKSk7CisgICAgbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9udW1iZXJQcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5
cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCkpKTsKLSAgICBtX251bWJlck9iamVjdFN0cnVjdHVyZSA9IE51bWJlck9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkp
OworICAgIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIE51bWJlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9u
dW1iZXJQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fZGF0ZVByb3RvdHlwZS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIERhdGVQcm90b3R5cGUoZXhlYywgdGhpcywg
RGF0ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgbV9kYXRlU3RydWN0dXJlID0gRGF0ZUluc3RhbmNl
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2RhdGVQcm90b3R5cGUuZ2V0
KCkpOworICAgIG1fZGF0ZVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBE
YXRlSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZGF0ZVBy
b3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVn
RXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICBtX3Jl
Z0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fcmVnRXhwU3RydWN0dXJl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAg
IG1fbWV0aG9kQ2FsbER1bW15LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpKTsKIAogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlw
ZSA9IG5ldyAoZXhlYykgRXJyb3JQcm90b3R5cGUoZXhlYywgdGhpcywgRXJyb3JQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgbV9lcnJvclN0cnVjdHVyZSA9
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGVycm9y
UHJvdG90eXBlKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCks
IGVycm9yUHJvdG90eXBlKSk7CiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIApAQCAtMjMxLDggKzIy
NSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAg
ICAgbV9lcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAo
ZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBFcnJvckNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgZXJyb3JQcm90b3R5cGUpKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVycm9y
UHJvdG90eXBlU3RydWN0dXJlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yUHJvdG90eXBlKTsKLSAgICBSZWZQdHI8U3RydWN0
dXJlPiBuYXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OworICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUgPSBOYXRpdmVF
cnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3JQ
cm90b3R5cGUpOworICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JTdHJ1Y3R1cmUgPSBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVT
dHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7CiAgICAgbV9yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7CiAgICAgbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVj
dG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKQEAgLTM0MiwyMSArMzM2LDIx
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFj
aykKICAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9kYXRlUHJvdG90eXBlKTsKICAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9yZWdFeHBQcm90b3R5cGUpOwogCi0gICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgbV9hcmd1bWVudHNTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIG1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIG1fZGF0ZVN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
bV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9l
cnJvclN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9mdW5jdGlvblN0
cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX3JlZ0V4cFN0cnVjdHVy
ZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUp
OwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fYXJndW1lbnRzU3RydWN0dXJlKTsK
KyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9hcnJheVN0cnVjdHVyZSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7Cisg
ICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7
CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUp
OworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2RhdGVTdHJ1Y3R1cmUpOworICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCAmbV9lcnJvclN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJm1fZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZtX251bWJlck9iamVjdFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCAmbV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssICZtX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CiAKICAgICBpZiAobV9yZWdpc3RlckFy
cmF5KSB7CiAgICAgICAgIC8vIE91dHNpZGUgdGhlIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwg
d2hlbiBvdXIgdmFyaWFibGVzIGFyZSB0b3JuIG9mZiwKQEAgLTM5MSw3ICszODUsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojpjb3B5R2xvYmFsc0Zyb20oUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZp
bGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXkoZ2xvYmFsRGF0
YSgpLCByZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHJlZ2lzdGVyRmls
ZS5sYXN0R2xvYmFsKCkpLCBudW1HbG9iYWxzKTsKKyAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXkoZ2xvYmFsRGF0
YSgpLCByZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHJlZ2lzdGVyRmls
ZS5sYXN0R2xvYmFsKCkpLCBudW1HbG9iYWxzLCBudW1HbG9iYWxzKTsKICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyBudW1HbG9iYWxz
OwogICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlcnMsIHJlZ2lzdGVyQXJyYXkucmVsZWFzZSgpLCBu
dW1HbG9iYWxzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDMwMGY0YjA0OTg1ODk2NWUzYzEyOTBmZjEzYTE0N2IzZDhiNDA1NzUu
LjBlMzY5MjA4NjA5MWUzN2VhMjgyMGMwODM3ZjVhNGE5MzgzNjliZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtODcsMjEgKzg3LDIx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4g
bV9kYXRlUHJvdG90eXBlOwogICAgICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBt
X3JlZ0V4cFByb3RvdHlwZTsKIAotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2FyZ3VtZW50
c1N0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9hcnJheVN0cnVjdHVyZTsK
LSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlOwotICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7Ci0g
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKLSAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKLSAgICAg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9kYXRlU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJl
PiBtX2Vycm9yU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2Z1bmN0aW9u
U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVj
dHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwotICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOworICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FyZ3VtZW50c1N0cnVjdHVyZTsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJheVN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlOworICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7CisgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKKyAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlU3RydWN0dXJlOworICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlOworICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOworICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOworICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CisgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwogCiAgICAg
ICAgIHVuc2lnbmVkIG1fcHJvZmlsZUdyb3VwOwogICAgICAgICBEZWJ1Z2dlciogbV9kZWJ1Z2dl
cjsKQEAgLTExNSw3ICsxMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIAogICAgICAgICBleHBs
aWNpdCBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi0gICAgICAgICAg
ICA6IEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShnbG9i
YWxEYXRhLCBqc051bGwoKSksICZtX3N5bWJvbFRhYmxlLCAwKQorICAgICAgICAgICAgOiBKU1Zh
cmlhYmxlT2JqZWN0KGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsRGF0YSwganNOdWxsKCkpLCAmbV9zeW1ib2xUYWJsZSwgMCkKICAgICAgICAgICAgICwg
bV9yZWdpc3RlckFycmF5U2l6ZSgwKQogICAgICAgICAgICAgLCBtX2dsb2JhbFNjb3BlQ2hhaW4o
KQogICAgICAgICAgICAgLCBtX3dlYWtSYW5kb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRv
bU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEuMCkp
KQpAQCAtMTI1LDggKzEyNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaW5pdCh0
aGlzKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgSlNHbG9iYWxPYmpl
Y3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6
IEpTVmFyaWFibGVPYmplY3Qoc3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgMCkKKyAgICAgICAg
ZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAgLCBtX3JlZ2lzdGVy
QXJyYXlTaXplKDApCiAgICAgICAgICAgICAsIG1fZ2xvYmFsU2NvcGVDaGFpbigpCiAgICAgICAg
ICAgICAsIG1fd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVyKCkg
KiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCkBAIC0xMzcs
OCArMTM3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIEpTT2JqZWN0KiB0aGlzVmFsdWUpCi0gICAgICAgICAgICA6IEpTVmFyaWFibGVPYmpl
Y3Qoc3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgMCkKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3Qq
IHRoaXNWYWx1ZSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAgLCBtX3JlZ2lzdGVyQXJy
YXlTaXplKDApCiAgICAgICAgICAgICAsIG1fZ2xvYmFsU2NvcGVDaGFpbigpCiAgICAgICAgICAg
ICAsIG1fd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVyKCkgKiAo
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCkBAIC0yMzksNyAr
MjM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsRGF0YS5nZXQoKTsgfQogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KQEAgLTM2Myw3ICszNjMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gV2UgY2FjaGUgb3VyIHByb3RvdHlwZSBj
aGFpbiBzbyBvdXIgY2xpZW50cyBjYW4gc2hhcmUgaXQuCiAgICAgICAgIGlmICghaXNWYWxpZChl
eGVjLCBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKSkgewogICAgICAgICAgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JMb29rdXAoZXhlYyk7Ci0gICAgICAgICAgICBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLnNldChleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZUNoYWlu
OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuaXNOdWxsKCkgPyAwIDogYXNP
YmplY3QocHJvdG90eXBlKS0+c3RydWN0dXJlKCkpLCAwKTsKKyAgICAgICAgICAgIG1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgU3RydWN0dXJlQ2hh
aW46OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZS5pc051bGwoKSA/IDAgOiBh
c09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpOwogICAgIH0KQEAgLTM3NCw5ICszNzQs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckxvb2t1cChleGVjKTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVjdHVyZSA9IGNhY2hlZFByb3RvdHlwZUNoYWlu
LT5oZWFkKCk7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBjYWNoZWRTdHJ1Y3R1
cmUgPSBjYWNoZWRQcm90b3R5cGVDaGFpbi0+aGVhZCgpOwogICAgICAgICB3aGlsZSgqY2FjaGVk
U3RydWN0dXJlICYmICFwcm90b3R5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGlmIChhc09i
amVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSAhPSAqY2FjaGVkU3RydWN0dXJlKQorICAgICAg
ICAgICAgaWYgKGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgpICE9IGNhY2hlZFN0cnVj
dHVyZS0+Z2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
KytjYWNoZWRTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBwcm90b3R5cGUgPSBhc09iamVjdChwcm90
b3R5cGUpLT5wcm90b3R5cGUoKTsKQEAgLTQwNywxNyArNDA3LDE3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIAogICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0
ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSk7CiAgICAgfQogICAgIAogICAgIGlubGluZSBK
U0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTQXJy
YXkoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
ZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmUoKSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJy
YXkoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmFycmF5U3RydWN0dXJlKCksIGluaXRpYWxMZW5ndGgsIENyZWF0ZUluaXRpYWxpemVkKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgaW5pdGlhbExlbmd0aCwg
Q3JlYXRlSW5pdGlhbGl6ZWQpOwogICAgIH0KIAogICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1
Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2luZ2xlSXRlbVZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCmluZGV4IDc1YmNhMThk
ODA1ZGY3N2IwYzk0MzllNDJiNDQ5MDM3YjFiNDJkYzAuLjRjNjgwNmE1ZjEyNTBlYjIyYzMwNzQy
YzMwNTI0YTk0Zjg3ZmZiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05vdEFuT2JqZWN0LmgKQEAgLTM5LDExICszOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU05vdEFuT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1Ymxp
YzoKICAgICAgICAgSlNOb3RBbk9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCi0gICAgICAgICAgICA6
IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLm5vdEFuT2JqZWN0U3RydWN0dXJl
KQorICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+Z2xvYmFsRGF0YSgpLm5vdEFuT2JqZWN0U3RydWN0dXJlLmdldCgpKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmlu
ZGV4IDhmYzdhYzljZmQzNDIyZjdlNTRmMjlmOTc0ZWQ0MDM1MTFiMWJjNTYuLjI3ZmM1NjllYWFm
OWIxZmU4Y2I2OGZiYjQwNDgzMmE0ZjU5NTI4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKik7
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU09OT2JqZWN0OjpKU09OT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQorSlNPTk9iamVjdDo6SlNPTk9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCmluZGV4IGE1MmM1NDM4
ZDA1YzllNjgzOGI5OTgwZWJmYWEzMzg0Mzg4Y2UxZTQuLmM4N2M2NDE5YjljNmU5NjRiZjhiZDc2
NTcxMWRjMDgyYjMzN2E2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBK
U09OT2JqZWN0IDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiAgICAgcHVibGlj
OgotICAgICAgICBKU09OT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKTsKKyAgICAgICAgSlNPTk9iamVjdChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCBhYjQ3MmQ0NjkzN2Q4M2YyODM5ODExYWRiYjdhMDkwY2IxYjRm
ZGEyLi45Njc3ZjIzMjFlOWZiZTkxMGQ2NGI5NTUxYjkxYjkzZGU0NDE5YTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0zMjgsMTAgKzMyOCw4IEBA
IHZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAgLy8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhv
dWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1cmUKICAgICAvLyBpZiB3ZSBv
dmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5vbi1zZXR0ZXIuCiAgICAgaWYgKHNs
b3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKLSAgICAgICAgaWYg
KCFtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBtX3N0cnVjdHVyZSk7Ci0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJl
LnJlbGVhc2UoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFtX3N0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpCisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBT
dHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUu
Z2V0KCkpKTsKICAgICB9CiAKICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcyh0cnVlKTsKQEAgLTM1NSwxMCArMzUzLDggQEAgdm9pZCBKU09iamVjdDo6ZGVmaW5l
U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U08KICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0byBj
aGFuZ2Ugb3VyIFN0cnVjdHVyZQogICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5v
bi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJvcGVy
dHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICBpZiAoIW1fc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJ1
Y3R1cmUpOwotICAgICAgICAgICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOwot
ICAgICAgICB9CisgICAgICAgIGlmICghbV9zdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAg
ICAgICAgICAgc2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjpnZXR0
ZXJTZXR0ZXJUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJ1Y3R1cmUuZ2V0KCkp
KTsKICAgICB9CiAKICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cyh0cnVlKTsKQEAgLTUxMiwxOCArNTA4LDE4IEBAIEpTT2JqZWN0KiBKU09iamVjdDo6dW53cmFw
cGVkT2JqZWN0KCkKIAogdm9pZCBKU09iamVjdDo6c2VhbChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCiB7Ci0gICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgbV9zdHJ1Y3R1cmUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0
dXJlOjpzZWFsVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZS5nZXQoKSkpOwogfQog
CiB2b2lkIEpTT2JqZWN0OjpmcmVlemUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAg
IHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9z
dHJ1Y3R1cmUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpmcmVl
emVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQg
SlNPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsK
ICAgICBpZiAoaXNFeHRlbnNpYmxlKCkpCi0gICAgICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6
OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwor
ICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5z
aW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9p
ZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpAQCAtNTM2LDggKzUzMiw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwotICAgIHNldFN0cnVj
dHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwg
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1
cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6
Om5vdEZvdW5kKQogICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwog
fQpAQCAtNTc1LDcgKzU3MCw4IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0
dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgV3JpdGVCYXJyCiAKIFN0cnVjdHVy
ZSogSlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
IHsKLSAgICBtX2luaGVyaXRvcklEID0gY3JlYXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSwgdGhpcyk7CisgICAgbV9pbmhlcml0b3JJRC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgY3Jl
YXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcykpOworICAgIEFTU0VSVCht
X2luaGVyaXRvcklELT5pc0VtcHR5KCkpOwogICAgIHJldHVybiBtX2luaGVyaXRvcklELmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBiNTNh
ZWZjZDAwMzZhY2RiNjU2MDM2NGNkYTA4ZDk2YmU4MjFhNmFhLi44MDczNWY4YzQyMTA4MWEwMDk3
N2Q0ZDNkZjMwNWVkMWU2YzQ4NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTkwLDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAg
Ym9vbCBzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHBy
b3RvdHlwZSk7CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgdm9pZCBzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIFN0cnVjdHVyZSogaW5oZXJpdG9ySUQoSlNHbG9i
YWxEYXRhJik7CiAKICAgICAgICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwpA
QCAtMTcwLDcgKzE3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGxv
Y2F0aW9uIC0gcHJvcGVydHlTdG9yYWdlKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHRy
YW5zaXRpb25UbyhTdHJ1Y3R1cmUqKTsKKyAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgYm9vbCBo
YXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7IH0K
QEAgLTI0OSw3ICsyNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAtMjYzLDcg
KzI2MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBv
YmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8g
VG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3Qs
IGJlbG93LgotICAgICAgICBKU09iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBQ
cm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKKyAgICAg
ICAgSlNPYmplY3QoVlB0clN0ZWFsaW5nSGFja1R5cGUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVT
dG9yYWdlKQorICAgICAgICAgICAgOiBKU0NlbGwoVlB0clN0ZWFsaW5nSGFjaykKKyAgICAgICAg
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoaW5saW5lU3RvcmFnZSkKKyAgICAgICAgeworICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFu
eSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBK
U09iamVjdC4KQEAgLTI5OCw3ICszMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ry
dWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgbV9wcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IG1faW5oZXJpdG9ySUQ7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJp
dG9ySUQ7CiAgICAgfTsKIAogCkBAIC0zMTksMTQgKzMyNCwxOSBAQCBDT01QSUxFX0FTU0VSVCgo
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNOb25GaW5hbE9iamVjdF9p
bmxpbmVTdAogICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7CiAKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAg
IHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogSlNPYmplY3Qoc3Ry
dWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCisgICAgICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmpl
Y3QoVlB0clN0ZWFsaW5nSGFja1R5cGUpCisgICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJTdGVh
bGluZ0hhY2ssIG1faW5saW5lU3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgCisg
ICAgICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU05vbkZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2Up
ICUgc2l6ZW9mKGRvdWJsZSkpKTsKICAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUo
KS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eSk7CkBAIC0zNDIsMTkgKzM1MiwxOSBAQCBDT01QSUxFX0FTU0VSVCgoSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNOb25GaW5hbE9iamVjdF9pbmxp
bmVTdAogICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBKU0ZpbmFsT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKKyAgICAgICAgc3RhdGljIEpTRmluYWxP
YmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0ZpbmFsT2JqZWN0KHN0cnVj
dHVyZSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0ZpbmFsT2JqZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9y
YWdlKQorICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkg
JSBzaXplb2YoZG91YmxlKSA9PSAwKTsKICAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eSk7CkBAIC0zNzEsMTIgKzM4MSwxMiBAQCBpbmxpbmUgc2l6ZV90IEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKQogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIHJldHVybiBK
U0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlKTsKIH0KIAotaW5saW5lIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQoraW5saW5lIFN0cnVjdHVyZSogY3JlYXRl
RW1wdHlPYmplY3RTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKICAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGds
b2JhbERhdGEsIHByb3RvdHlwZSk7CiB9CkBAIC0zOTIsOCArNDAyLDggQEAgaW5saW5lIEpTT2Jq
ZWN0KiBhc09iamVjdChKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBhc09iamVjdCh2YWx1ZS5h
c0NlbGwoKSk7CiB9CiAKLWlubGluZSBKU09iamVjdDo6SlNPYmplY3QoTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQot
ICAgIDogSlNDZWxsKHN0cnVjdHVyZS5yZWxlYXNlUmVmKCkpIC8vIH5KU09iamVjdCBiYWxhbmNl
cyB0aGlzIHJlZigpCitpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9y
YWdlKQorICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1fcHJvcGVy
dHlTdG9yYWdlKGlubGluZVN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKQEAgLTQwMSwxNCArNDExLDEzIEBAIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnCiAgICAgQVNT
RVJUKG1fc3RydWN0dXJlLT5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChwcm90b3R5cGUoKS5pc051
bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAocHJvdG90eXBlKCkpKTsKICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0
PHZvaWQqPih0aGlzICsgMSkpOworICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gT2JqZWN0VHlwZSk7CiB9CiAKIGlubGluZSBKU09iamVjdDo6fkpTT2JqZWN0KCkK
IHsKLSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgIGlmICghaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSkKICAgICAgICAgZGVsZXRlIFtdIG1fcHJvcGVydHlTdG9yYWdlOwotICAgIG1fc3RydWN0
dXJlLT5kZXJlZigpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkg
Y29uc3QKQEAgLTQzMiwyMCArNDQxLDIwIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpzZXRQcm90
b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsCiBpbmxp
bmUgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgQVNTRVJUKHByb3RvdHlwZSk7Ci0gICAgUmVmUHRy
PFN0cnVjdHVyZT4gbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLCBwcm90b3R5cGUpOwotICAgIHNldFN0cnVj
dHVyZShuZXdTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0
YSwgU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3Ry
dWN0dXJlLmdldCgpLCBwcm90b3R5cGUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNl
dFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKK2lubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBtX3N0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICBt
X3N0cnVjdHVyZSA9IHN0cnVjdHVyZS5sZWFrUmVmKCk7IC8vIH5KU09iamVjdCBiYWxhbmNlcyB0
aGlzIHJlZigpCisgICAgbV9zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVy
ZSk7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIEpTT2JqZWN0Ojppbmhlcml0b3JJRChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCiB7Ci0gICAgaWYgKG1faW5oZXJpdG9ySUQpCisgICAgaWYgKG1f
aW5oZXJpdG9ySUQpIHsKKyAgICAgICAgQVNTRVJUKG1faW5oZXJpdG9ySUQtPmlzRW1wdHkoKSk7
CiAgICAgICAgIHJldHVybiBtX2luaGVyaXRvcklELmdldCgpOworICAgIH0KICAgICByZXR1cm4g
Y3JlYXRlSW5oZXJpdG9ySUQoZ2xvYmFsRGF0YSk7CiB9CiAKQEAgLTU5NiwxMiArNjA1LDEyIEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAKICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIHNpemVf
dCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KTsKLSAgICBpZiAoUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKG1fc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsgICAgCisgICAg
aWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKG1fc3RydWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsgICAgCiAgICAgICAgIGlmIChj
dXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQog
ICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBzdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBzZXRT
dHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7CisgICAgICAgIHNldFN0cnVjdHVyZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
b2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5z
aXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAog
ICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAt
NjMzLDcgKzY0Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNw
ZWNpZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCi0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoU3Ry
dWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEs
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3Ry
dWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGNh
c2UgKDMpIHNldCB0aGUgc2xvdCwgZG8gdGhlIHB1dCwgcmV0dXJuLgpAQCAtNjQ1LDEzICs2NTQs
MTMgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICBpZiAoIWlzRXh0ZW5zaWJsZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKIAogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkg
IT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CiAKICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2Uo
KSk7CisgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgIC8vIFRoaXMgaXMgYSBu
ZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3Vy
cmVudGx5IGNhY2hhYmxlLAogICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFi
bGUgc3RhdGUuCkBAIC03MjIsMTEgKzczMSwxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdAog
ICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0KIAotaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnRyYW5zaXRpb25UbyhTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkK
K2lubGluZSB2b2lkIEpTT2JqZWN0Ojp0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBpZiAobV9zdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKTsKLSAgICBzZXRTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKTsKKyAgICBzZXRTdHJ1
Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNP
YmplY3Q6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSBwcmVmZXJyZWRUeXBlKSBjb25zdApAQCAtODE1LDEwICs4MjQsMTEgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2sp
CiB7CiAgICAgSlNDZWxsOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAotICAgIG1fc3RydWN0
dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAgICAgUHJvcGVydHlTdG9yYWdlIHN0b3Jh
Z2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBtX3N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMo
c3RvcmFnZSwgc3RvcmFnZVNpemUpOworICAgIGlmIChtX2luaGVyaXRvcklEKQorICAgICAgICBt
YXJrU3RhY2suYXBwZW5kKCZtX2luaGVyaXRvcklEKTsKIH0KIAogLy8gLS0tIEpTVmFsdWUgaW5s
aW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCA5MzcwMTM5ODU3OGNiMzlmMTg5YjIzZWNiYzQyZGE0MWYwYjYxNzljLi5mYTBlNTRhNzkxZWI0
YjgzZWQ0YTliOWRhMWVmNTkzM2I3NDMyNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5jcHAKQEAgLTMw
LDggKzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dDo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5h
bE9iamVjdChzdHJ1Y3R1cmUpCitKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCksIHN0cnVjdHVyZSkKIHsKICAgICBDT01QSUxFX0FTU0VSVChBbm9ueW1vdXNTbG90Q291bnQg
PT0gMSwgQW5vbnltb3VzU2xvdENvdW50X211c3RfYmVfb25lKTsKICAgICBBU1NFUlQoIWdsb2Jh
bE9iamVjdCB8fCBnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOwpAQCAtNDEsNiArNDEs
MTcgQEAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcHV0QW5vbnltb3VzVmFsdWUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIEdsb2JhbE9iamVjdFNsb3QsIGdsb2JhbE9iamVj
dCk7CiB9CiAKK0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6SlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSkKK3sKKyAgICBDT01QSUxFX0FTU0VSVChBbm9ueW1vdXNTbG90Q291bnQg
PT0gMSwgQW5vbnltb3VzU2xvdENvdW50X211c3RfYmVfb25lKTsKKyAgICBBU1NFUlQoIWdsb2Jh
bE9iamVjdCB8fCBnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghZ2xv
YmFsT2JqZWN0KQorICAgICAgICBjbGVhckFub255bW91c1ZhbHVlKEdsb2JhbE9iamVjdFNsb3Qp
OworICAgIGVsc2UKKyAgICAgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsRGF0YSwgR2xvYmFs
T2JqZWN0U2xvdCwgZ2xvYmFsT2JqZWN0KTsKK30KKwogSlNHbG9iYWxPYmplY3QqIEpTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdDo6Z2xvYmFsT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gYXNH
bG9iYWxPYmplY3QoKGdldEFub255bW91c1ZhbHVlKEdsb2JhbE9iamVjdFNsb3QpLmFzQ2VsbCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdp
dGhHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdC5oCmluZGV4IDgzODA1MTRkNTdhY2JmNWU4YjViMGVmNTQwNTNlODJj
ODFjMTc1MzcuLmYwZmQwNDYxZWQxODRiZGUyMDYzNWUxNjc0ZGNkYzE1NmU2OTFiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogCiBj
bGFzcyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKQorICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG8pCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CkBAIC00MiwxMCArNDIsMTEgQEAgcHVibGlj
OgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgotICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChK
U0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCi0gICAgSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorICAgIEpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrVHlwZSkKKyAgICAgICAgOiBKU05vbkZpbmFs
T2JqZWN0KFZQdHJTdGVhbGluZ0hhY2spCiAgICAgewogICAgICAgICAvLyBTaG91bGQgb25seSBi
ZSB1c2VkIGJ5IEpTRnVuY3Rpb24gd2hlbiB3ZSBhcXVpcmUgdGhlIEpTRnVuY3Rpb24gdnB0ci4K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDZmMzFmOTk5ZDcwOTVkY2M1Y2Y2ZDNkMDZjYzMy
ZDI4NjhlYjI4YjcuLmQ1YWYwNDQ2NTY3MTM0MTI0ZDZhZjVlZWJkYTA5YmVjYTcxMTljYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCkBAIC0zNSw5ICszNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKIAorY29uc3Qg
Q2xhc3NJbmZvIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnNfaW5mbyA9IHsgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IiLCAwLCAwLCAwIH07CisKIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90cykK
LSAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1
Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX2NhY2hlZFN0cnVjdHVyZSgwKQorICAgIDogSlNDZWxsKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZUl0ZXJhdG9y
U3RydWN0dXJlLmdldCgpKQogICAgICwgbV9udW1DYWNoZWFibGVTbG90cyhudW1DYWNoZWFibGVT
bG90cykKICAgICAsIG1fanNTdHJpbmdzU2l6ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3Bl
cnR5TmFtZVZlY3RvcigpLnNpemUoKSkKICAgICAsIG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIo
bmV3IFdyaXRlQmFycmllcjxVbmtub3duPlttX2pzU3RyaW5nc1NpemVdKSkKQEAgLTcxLDE0ICs3
MiwxNCBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgIAogICAgIHNpemVfdCBjb3VudCA9
IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIG8pOwogICAgIFN0cnVjdHVyZUNoYWluKiBz
dHJ1Y3R1cmVDaGFpbiA9IG8tPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKTsKLSAg
ICBSZWZQdHI8U3RydWN0dXJlPiogc3RydWN0dXJlID0gc3RydWN0dXJlQ2hhaW4tPmhlYWQoKTsK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogc3RydWN0dXJlID0gc3RydWN0dXJlQ2hhaW4t
PmhlYWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgaWYgKHN0cnVjdHVyZVtpXS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
KCkpCiAgICAgICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKICAgICB9CiAK
ICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbihleGVj
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZUNoYWluKTsKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLT5zZXRDYWNoZWRTdHJ1Y3R1cmUoby0+c3RydWN0dXJlKCkpOworICAgIGpzUHJvcGVydHlO
YW1lSXRlcmF0b3ItPnNldENhY2hlZFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG8tPnN0
cnVjdHVyZSgpKTsKICAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShleGVj
LT5nbG9iYWxEYXRhKCksIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIHJldHVybiBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yOwogfQpAQCAtODYsNyArODcsNyBAQCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdAogSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVudGlmaWVy
ID0gbV9qc1N0cmluZ3NbaV0uZ2V0KCk7Ci0gICAgaWYgKG1fY2FjaGVkU3RydWN0dXJlID09IGJh
c2UtPnN0cnVjdHVyZSgpICYmIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkgPT0gYmFzZS0+
c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgIGlmIChtX2NhY2hlZFN0cnVj
dHVyZS5nZXQoKSA9PSBiYXNlLT5zdHJ1Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWlu
LmdldCgpID09IGJhc2UtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAg
ICAgcmV0dXJuIGlkZW50aWZpZXI7CiAKICAgICBpZiAoIWJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgYXNTdHJpbmcoaWRlbnRpZmllciktPnZhbHVlKGV4ZWMpKSkpCkBA
IC0xMDEsMTIgKzEwMiw0IEBAIHZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluKTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLQotSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKQotewotICAgIEFTU0VS
VCghbV9jYWNoZWRTdHJ1Y3R1cmUgfHwgbV9jYWNoZWRTdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2Fj
aGUoKSAhPSB0aGlzKTsKLX0KLQotI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAppbmRleCBmOThjNDBlZjBmNzdhNjFhM2ZjYTRlMmU3NWYzOTcyZTJmYjcyZDI1Li5iODU3ZGMw
OWQwNmIyODg5OTEzYTUwODViMGJmMDMxZTg0Y2YxYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC00NSw5
ICs0NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAg
ICAgICAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlw
ZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1By
b3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjUsMTEgKzY1
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBK
U09iamVjdCosIHNpemVfdCBpKTsKICAgICAgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX2pz
U3RyaW5nc1NpemU7IH0KIAotICAgICAgICB2b2lkIHNldENhY2hlZFN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWRTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKCFtX2NhY2hlZFN0cnVjdHVyZSk7CiAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKTsKLSAgICAgICAgICAgIG1fY2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlOworICAg
ICAgICAgICAgbV9jYWNoZWRTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVy
ZSk7CiAgICAgICAgIH0KICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2NhY2hlZFN0cnVjdHVyZS5nZXQoKTsgfQogCkBAIC03NywxMyArNzcsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFp
bigpIHsgcmV0dXJuIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7IH0KIAogICAgIHByaXZh
dGU6CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJv
cGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7Ci0gICAgICAgIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgdmlydHVhbCB+SlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcigpOwotI2VuZGlmCiAKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1
Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJl
OwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBl
Q2hhaW47CiAgICAgICAgIHVpbnQzMl90IG1fbnVtQ2FjaGVhYmxlU2xvdHM7CiAgICAgICAgIHVp
bnQzMl90IG1fanNTdHJpbmdzU2l6ZTsKQEAgLTkzLDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgaW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNo
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNEaWN0aW9uYXJ5KCkpOwotICAgICAgICBtX2Vu
dW1lcmF0aW9uQ2FjaGUuc2V0KGdsb2JhbERhdGEsIGVudW1lcmF0aW9uQ2FjaGUpOworICAgICAg
ICBtX2VudW1lcmF0aW9uQ2FjaGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGVudW1lcmF0aW9uQ2Fj
aGUpOwogICAgIH0KIAogICAgIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBTdHJ1Y3R1
cmU6OmVudW1lcmF0aW9uQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCmluZGV4IDNlMTliYmMyMzY2YTljMWQ4ZjRhOTRj
YmY2MGI3YjQzNzkzZWNhNjEuLjhjM2EyNDk1YzY4MDNjMDdkNTUxMDVmNGRmZmYzMzQyNzdkMGQ1
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQ3sKICAgICBjbGFzcyBK
U1N0YXRpY1Njb3BlT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVPYmplY3QgewogICAgIHB1Ymxp
YzoKICAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotICAg
ICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5zdGF0aWNTY29w
ZVN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsIHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPigm
bV9yZWdpc3RlclN0b3JlICsgMSkpCisgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuc3RhdGljU2NvcGVTdHJ1Y3R1cmUu
Z2V0KCksICZtX3N5bWJvbFRhYmxlLCByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJm1fcmVn
aXN0ZXJTdG9yZSArIDEpKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3JlZ2lzdGVyU3RvcmUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgc3ltYm9s
VGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KC0xLCBhdHRyaWJ1dGVz
KSk7CkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgICAgICB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFu
b255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykg
eyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsg
fQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJz
aW9uIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggYWY2YTkzMjk3OWYwNzk1NzMxZTVkZTM0N2VkNDc4OWMy
MWU1YjM3MS4uMzQyMmRhZDNkMGMwY2E4YmI5YTNmZTExMGVhYTJjYWMxY2NhNTZiYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xODUsNyArMTg1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICAgICAgQUxXQVlTX0lOTElORSBKU1N0
cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQotICAg
ICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgodmFsdWUubGVuZ3RoKCkpCiAgICAgICAg
ICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQpAQCAt
MTk2LDcgKzE5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGVudW0gSGFzT3RoZXJP
d25lclR5cGUgeyBIYXNPdGhlck93bmVyIH07CiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUsIEhhc090aGVyT3duZXJUeXBlKQot
ICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQor
ICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgodmFsdWUubGVuZ3RoKCkpCiAgICAg
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQpA
QCAtMjA0LDcgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKCFt
X3ZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgfQogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUsIEhhc090aGVyT3du
ZXJUeXBlKQotICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgodmFsdWUtPmxlbmd0
aCgpKQogICAgICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgICAgICAgICAgLCBtX2ZpYmVy
Q291bnQoMCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IEFTU0VSVCghbV92YWx1ZS5pc051bGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNTdHJpbmco
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQotICAg
ICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgocm9wZS0+bGVuZ3RoKCkpCiAgICAgICAg
ICAgICAsIG1fZmliZXJDb3VudCgxKQogICAgICAgICB7CkBAIC0yMjEsNyArMjIxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5l
dyBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyBzMSAmIHMyLgogICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGZpYmVyQ291bnQgPD0gMy4KICAgICAgICAgSlNTdHJpbmco
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBKU1N0cmluZyog
czEsIEpTU3RyaW5nKiBzMikKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHMx
LT5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZp
YmVyQ291bnQpCiAgICAgICAgIHsKQEAgLTIzNCw3ICsyMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBj
b25jYXRlbmF0aW5nIHMxICYgczIuCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIHdpdGggZmliZXJDb3VudCA8PSAzLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIEpTU3RyaW5nKiBzMSwgY29uc3QgVVN0
cmluZyYgdTIpCi0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+bGVuZ3Ro
KCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZpYmVyQ291bnQp
CiAgICAgICAgIHsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ly8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0
aW5nIHMxICYgczIuCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGgg
ZmliZXJDb3VudCA8PSAzLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIGNvbnN0IFVTdHJpbmcmIHUxLCBKU1N0cmluZyogczIp
Ci0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHMyLT5s
ZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZpYmVyQ291bnQpCiAgICAgICAg
IHsKQEAgLTI2Miw3ICsyNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdmFsdWUg
bXVzdCByZXF1aXJlIGEgZmliZXJDb3VudCBvZiBhdCBsZWFzdCBvbmUgaW1wbGllcyB0aGF0IHRo
ZSBsZW5ndGgKICAgICAgICAgLy8gZm9yIGVhY2ggdmFsdWUgbXVzdCBiZSBleGFjdGx5IDEhCiAg
ICAgICAgIEpTU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Miwg
SlNWYWx1ZSB2MykKLSAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAg
ICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChzX21heEludGVybmFs
Um9wZUxlbmd0aCkKICAgICAgICAgewpAQCAtMjc1LDcgKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcg
YnkgY29uY2F0ZW5hdGluZyB1MSAmIHUyLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1MikKLSAgICAg
ICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKKyAgICAg
ICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgdTIubGVuZ3RoKCkp
CiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgyKQogICAgICAgICB7CkBAIC0yODcsNyArMjg3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25z
dHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5nIHUxLCB1MiAmIHUzLgogICAgICAg
ICBKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBj
b25zdCBVU3RyaW5nJiB1MiwgY29uc3QgVVN0cmluZyYgdTMpCi0gICAgICAgICAgICA6IEpTQ2Vs
bChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2Vs
bCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAg
ICAgICAgLCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHUyLmxlbmd0aCgpICsgdTMubGVuZ3RoKCkp
CiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChzX21heEludGVybmFsUm9wZUxlbmd0aCkKICAg
ICAgICAgewpAQCAtMjk5LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiB2YWx1ZSwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBmaW5hbGl6ZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkK
ICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50
KDApCkBAIC0zNDksMTIgKzM0OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU1Zh
bHVlIHJlcGxhY2VDaGFyYWN0ZXIoRXhlY1N0YXRlKiwgVUNoYXIsIGNvbnN0IFVTdHJpbmcmIHJl
cGxhY2VtZW50KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdU
eXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uKSwg
QW5vbnltb3VzU2xvdENvdW50LCAwKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oU3RyaW5n
VHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgTmVlZHNUaGlzQ29udmVyc2lvbiks
IEFub255bW91c1Nsb3RDb3VudCwgMCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0g
VlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNrIH07CiAgICAgICAgIEpTU3Ry
aW5nKFZQdHJTdGVhbGluZ0hhY2tUeXBlKSAKLSAgICAgICAgICAgIDogSlNDZWxsKDApCisgICAg
ICAgICAgICA6IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrKQogICAgICAgICAgICAgLCBtX2ZpYmVy
Q291bnQoMCkKICAgICAgICAgewogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCmluZGV4IDg4MmIyMTg4ZTk3Yjg4NmViNDg0NDM3ZGM0Y2RlZmMzNWY5YWIxOTIu
LmRiYTAzZjYzZDE0OGE0ZGJhMzVkNjA1YTQzZDU0ZmU0NmRkYWQwMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0zMywxMCArMzMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE51bWJlclR5cGUgICAgICAgID0gMywKICAgICAgICAgTnVsbFR5cGUgICAg
ICAgICAgPSA0LAogICAgICAgICBTdHJpbmdUeXBlICAgICAgICA9IDUsCisgICAgICAgIExlYWZU
eXBlICAgICAgICAgID0gNiwKICAgICAgICAgLy8gVGhlIENvbXBvdW5kVHlwZSB2YWx1ZSBtdXN0
IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBtYXkgaGF2ZSBjaGlsZHJlbgotICAgICAgICBD
b21wb3VuZFR5cGUgICAgICA9IDYsCi0gICAgICAgIE9iamVjdFR5cGUgICAgICAgID0gNywKLSAg
ICAgICAgR2V0dGVyU2V0dGVyVHlwZSAgPSA4CisgICAgICAgIENvbXBvdW5kVHlwZSAgICAgID0g
NywKKyAgICAgICAgT2JqZWN0VHlwZSAgICAgICAgPSA4LAorICAgICAgICBHZXR0ZXJTZXR0ZXJU
eXBlICA9IDkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAyODRkMmIyNjkzMmI1ZmRlYmFlYWJkZDc3
OWI3NWI2NTFkYjJlNzBiLi5hY2RlODFmMTc4ZWUzMzE5MWFlMWQxNjFiNjZlMTI1ZjNiZTkyMzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCkBAIC01NCw2
ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
ZmxhZ3MgPD0gMHgxRkYpOwogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPD0gMHhGRik7CisgICAg
ICAgICAgICBBU1NFUlQodHlwZSA+PSBDb21wb3VuZFR5cGUgfHwgIShmbGFncyAmIE92ZXJyaWRl
c01hcmtDaGlsZHJlbikpOwogICAgICAgICAgICAgLy8gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSBtZWFucyAoSW1wbGVtZW50c0hhc0luc3RhbmNlICYgIU92ZXJyaWRlc0hhc0luc3RhbmNl
KQogICAgICAgICAgICAgaWYgKChtX2ZsYWdzICYgKEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92
ZXJyaWRlc0hhc0luc3RhbmNlKSkgPT0gSW1wbGVtZW50c0hhc0luc3RhbmNlKQogICAgICAgICAg
ICAgICAgIG1fZmxhZ3MgfD0gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAppbmRleCBkOTc0MjczNWI2ODNkZWEwMDNhYjhi
MDYyYWQ1OWZjNzJjMGM4ZGFkLi5hZTlkMDJjY2JhZDkwNGEwMTZiNTAzYmJiN2JlZWQ1M2ViZmNi
ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC00NjYsNiAr
NDY2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBKU1ZhbHVlIGEsIGNvbnN0IEpTQ2VsbCogYikgeyByZXR1cm4gYSAhPSBKU1ZhbHVlKGIpOyB9
CiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFs
dWUgYikgeyByZXR1cm4gSlNWYWx1ZShhKSAhPSBiOyB9CiAKKyAgICBib29sIGlzWm9tYmllKGNv
bnN0IEpTQ2VsbCopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTVmFsdWVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
CmluZGV4IDg5MWFkYThjNDNhMzdhYTdiYzEyNmUzMzA0NzUwNzAyMGMzZTMxYzkuLjg5YmI2YjAy
YjY3ZDk5YWMyZGMzZDQ1Y2Y1MzgzNzlmY2RmY2Y0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBjb25zdCAqIGFk
ZHJlc3NPZlJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuICZtX3JlZ2lzdGVyczsgfQogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KQEAgLTY2LDgg
KzY2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIEpTVmFyaWFibGVPYmplY3Qo
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSwgUmVnaXN0ZXIqIHJlZ2lzdGVycykKLSAgICAgICAgICAgIDogSlNOb25GaW5hbE9i
amVjdChzdHJ1Y3R1cmUpCisgICAgICAgIEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
LCBSZWdpc3RlciogcmVnaXN0ZXJzKQorICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xU
YWJsZSkKICAgICAgICAgICAgICwgbV9yZWdpc3RlcnMocmVpbnRlcnByZXRfY2FzdDxXcml0ZUJh
cnJpZXI8VW5rbm93bj4qPihyZWdpc3RlcnMpKQogICAgICAgICB7CkBAIC03NSw3ICs3NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPikgPT0gc2l6ZW9mKFJlZ2lzdGVyKSwgUmVnaXN0ZXJfc2hvdWxkX2Jl
X3NhbWVfc2l6ZV9hc19Xcml0ZUJhcnJpZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgUGFzc093
bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IGNvcHlSZWdpc3RlckFycmF5KEpTR2xv
YmFsRGF0YSYsIFdyaXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQpOworICAg
ICAgICBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gY29weVJlZ2lzdGVy
QXJyYXkoSlNHbG9iYWxEYXRhJiwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBj
b3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cyk7CiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJz
KFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVC
YXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSk7CiAKICAgICAgICAgYm9vbCBzeW1ib2xU
YWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkBAIC0xMzcsMTAgKzEz
NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgaW5saW5lIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBKU1Zhcmlh
YmxlT2JqZWN0Ojpjb3B5UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFdy
aXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQpCisgICAgaW5saW5lIFBhc3NP
d25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBKU1ZhcmlhYmxlT2JqZWN0Ojpjb3B5
UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFdyaXRlQmFycmllcjxVbmtu
b3duPiogc3JjLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWxsZnJhbWVTdGFydHMpCiAgICAgewog
ICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5
ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W2NvdW50XSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjYWxsZnJhbWVTdGFydHM7IGkrKykKKyAgICAgICAgICAgIHJlZ2lzdGVy
QXJyYXlbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHNyY1tpXS5nZXQoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBjYWxsZnJhbWVTdGFydHMgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhl
YWRlclNpemU7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICAgICAgcmVnaXN0ZXJBcnJheVtpXS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3JjW2ldLmdldCgpKTsKIAogICAgICAgICByZXR1cm4gcmVn
aXN0ZXJBcnJheS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTV3JhcHBlck9iamVjdC5oCmluZGV4IDYzODMzZTlmMzc0ZWM3Yzc5YWE3YWQ4MjBlOGEwNDEy
ZmJkYWQzODAuLmE3ZGJlMGQ5MDJlZmI5MDllZWE2ZTFiNWRkMDA4NWZmMTBmYjI3ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCkBAIC0z
MCwxMyArMzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gTnVtYmVyLCBCb29sZWFuIGFu
ZCBEYXRlIHdoaWNoIGFyZSB3cmFwcGVycyBmb3IgcHJpbWl0aXZlIHR5cGVzLgogICAgIGNsYXNz
IEpTV3JhcHBlck9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+KTsKKyAgICAgICAgZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwogCiAgICAgcHVibGljOgogICAgICAgICBKU1ZhbHVlIGludGVybmFs
VmFsdWUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0
YSYsIEpTVmFsdWUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUp
IAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCiAgICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgICAgIH0KQEAgLTUwLDggKzUwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKIAotICAgIGlu
bGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVy
ZSkKKyAgICBpbmxpbmUgSlNXcmFwcGVyT2JqZWN0OjpKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU05vbkZp
bmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKaW5kZXggMzVlMTMxNTVhNzY5NzYz
ZGY0ZDhjYWFiMzQ3NzUyY2Y5MzdkY2RhYy4uZWZhYmM5M2ZjMWJjMzUxOTYxMDZjZmQ3ZDMwNzUw
OWM1YTM1NThjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNa
b21iaWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNw
cApAQCAtMzUsMTcgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1pvbWJpZTo6c19pbmZvID0geyAiWm9tYmllIiwgMCwgMCwgMCB9OwogCi1TdHJ1Y3R1cmUqIEpT
Wm9tYmllOjpsZWFrZWRab21iaWVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQot
ewotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDA7Ci0gICAgaWYgKCFzdHJ1Y3R1
cmUpIHsKLSAgICAgICAgU3RydWN0dXJlOjpzdGFydElnbm9yaW5nTGVha3MoKTsKLSAgICAgICAg
c3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwganNOdWxsKCksIFR5cGVJ
bmZvKFVuc3BlY2lmaWVkVHlwZSksIDAsICZzX2luZm8pLmxlYWtSZWYoKTsKLSAgICAgICAgU3Ry
dWN0dXJlOjpzdG9wSWdub3JpbmdMZWFrcygpOwotICAgIH0KLSAgICByZXR1cm4gc3RydWN0dXJl
OwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSlNDX1pPTUJJRVMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAppbmRleCBkZmZmMWE3YTY2MzczMThkMDA5OTA0Nzc5
MWJkOGQ3NDBjMjBiMjA3Li4wNTU5Yjk2OTRiODkzMGNkMDFhMzcxNTAxN2JmOTkyYTA4YWQ1OTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKQEAgLTI3LDIxICsy
NywyMSBAQAogI2RlZmluZSBKU1pvbWJpZV9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKIAogI2lmIEVOQUJMRShKU0NfWk9NQklFUykKIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBKU1pvbWJpZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgotICAgIEpT
Wm9tYmllKGNvbnN0IENsYXNzSW5mbyogb2xkSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0g
ICAgICAgIDogSlNDZWxsKHN0cnVjdHVyZSkKKyAgICBKU1pvbWJpZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IENsYXNzSW5mbyogb2xkSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgLCBtX29s
ZEluZm8ob2xkSW5mbykKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzWm9tYmllKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGxlYWtlZFpvbWJpZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0IHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FQ
SVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIDApLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBl
LCBUeXBlSW5mbyhMZWFmVHlwZSwgMCksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAg
ICAgfQogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDdiODU2YTFiNWI0NjljZjdm
NWZjMmVkZTliZWI1MjYzYjAzMmU0ODguLjUyYmQ3NmFkNGI4YjAzNTZiNmQzY2I4ZTY1ODkyYWVh
NjAyMjUyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0OjpzX2luZm8g
PSB7ICJNYXRoIiwgJkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c19pbmZvCiBAZW5kCiAqLwog
Ci1NYXRoT2JqZWN0OjpNYXRoT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCitN
YXRoT2JqZWN0OjpNYXRoT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaApp
bmRleCAyNmVhYWUwNDQ5OTI4ZGU1MWE1YzRkZTVlZGZmY2JhMmViZGM1NzEzLi43NTc1M2JlMjky
MmU5Yjc5NGJlMmExNDgyMGJkNWFmODE3NWY0OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aE9iamVjdC5oCkBAIC0yNywxNCArMjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBNYXRoT2JqZWN0IDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dCB7CiAgICAgcHVibGljOgotICAgICAgICBNYXRoT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIE1hdGhPYmpl
Y3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcAppbmRleCBkOGZkYTY5YTg0MDdiZDUwYmVkZjNlNGVlN2EwYWUzN2MyNjg1OTY2Li5lNGNk
OTY1NGUzNTNiN2VkZDllNDUyMjkwYjkzZTliYjMwYTkyYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApA
QCAtMzIsNyArMzIsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwIH07CiAK
LU5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlKQorTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSkKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtNDEsNyArNDEsMTQgQEAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KgogCiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBtX2Vycm9yU3RydWN0dXJlID0gRXJyb3JJbnN0
YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKKyAg
ICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSkpOwor
ICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RU
eXBlKTsKK30KKwordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjptYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJiBtYXJrU3RhY2spCit7CisgICAgSW50ZXJuYWxGdW5jdGlvbjo6bWFya0NoaWxkcmVu
KG1hcmtTdGFjayk7CisgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lcnJvclN0cnVjdHVyZSk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCAyM2Y3
OThlNDcyOWJlYmU3YTk4YzYyZDg0ZDNiZDI2YzdjMWI3ODA3Li5lOTZkYWY2NDRmYTRhMGE5ZDQz
YWE5MTA5ZjViMDk5MzUyODMwOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0zMSwxMSArMzEsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQs
ICZzX2luZm8pOwogICAgICAgICB9CkBAIC00MywxMCArNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3Ry
dWN0dXJlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBJbnRlcm5hbEZ1
bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhKENhbGxEYXRhJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVj
dHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCA0ZTEwMjY4ZWVi
MmZlMGU2Yjc1MGUwYWRkMTQ2ZjdjZDcyNmRiZWIyLi5kZTI3ZDU5ZWU0ZTJlYTA1YWY1YTAwYWM0
N2QwZmNiMjAzYWM4MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yUHJvdG90eXBl
KTsKIAotTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK05hdGl2ZUVycm9yUHJvdG90eXBlOjpO
YXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVz
c2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCiAgICAgOiBKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3Ry
aW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAppbmRleCAzMDY5MGQ1YmM3ZTcz
Zjg5YjYxMTRhM2FhYjQ0ZTFjY2NmZjRlYWU5Li5lMWIwNWNlYjgyYmMzZjQwMmYzMWQ3MzY1OWIz
ODI5MjU3YTEwZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yUHJvdG90eXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBKU09iamVjdFdpdGhH
bG9iYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBjb25zdCBVU3RyaW5nJiwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOworICAgICAgICBOYXRp
dmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGNvbnN0IFVTdHJpbmcmLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKik7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWVlMTQzYTNmMDdkNTYxNmE2MGIxZGJmYTdjY2Vi
OTg0ZDZmN2JiZS4uNDE5M2Y3OTgxOGY5MzExMGI2YTQxOGMwMjZiMmY1Y2FiZmRiY2FiNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9y
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8gTnVtYmVyQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogQGVuZAogKi8K
IAotTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQorTnVtYmVyQ29u
c3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSog
bnVtYmVyUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0
YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90
b3R5cGUtPnNfaW5mby5jbGFzc05hbWUpKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaAppbmRleCBhYjQ1MDdlNTgzZWIyNWIyN2FmZjIzNDE5YzQyNzhlMWE3OTYxNTgyLi42OWFh
OGExMzIwYTcwZDgwODM3NTRkZWVhY2RmMDEzYWNiMDAzOWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJlckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgTnVtYmVyUHJvdG90eXBlKik7CisgICAgICAgIE51bWJlckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgTnVtYmVyUHJvdG90eXBlKik7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKICAgICAgICAg
eyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291
bnQsICZzX2luZm8pOyAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlck9iamVjdC5jcHAKaW5kZXggNzRiNWU5ODFlM2FkZjVhNTMzOWMyMTMyNzJjM2Q5
NDdkZmI0YjE5MC4uNmVlMTAzYjM4NTYyOTUxZTUyMmM1ODM1Mjk1YTkwYTYzMTVmMmJjNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCkBAIC0z
MSw4ICszMSw4IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyT2JqZWN0KTsKIAog
Y29uc3QgQ2xhc3NJbmZvIE51bWJlck9iamVjdDo6c19pbmZvID0geyAiTnVtYmVyIiwgJkpTV3Jh
cHBlck9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLU51bWJlck9iamVjdDo6TnVtYmVyT2JqZWN0
KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQot
ICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK051bWJlck9iamVjdDo6TnVtYmVyT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBKU1dyYXBwZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlck9iamVjdC5oCmluZGV4IDkwZDBiMjZlMzA4Mjg0NjI4MGViMTRmYTAwZDhiMzg1YzRiMGM4
ZDcuLmNiYTY1ZGQwZjcyNDg0OWY4ZGE2YWQ3ZWUzNzM3NTI1YjM2M2Y3MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCkBAIC0yNywxMSArMjcsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJPYmplY3QgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IE51bWJlck9iamVj
dChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAg
ZXhwbGljaXQgTnVtYmVyT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDZjMDI3YjM2Y2U5YzU1YjQx
MDZmY2JiYWMwNTcyNDU2MjM0MjQ3ODMuLjI0NTMyZGQ1MTI5MjViZDIyYmYwOGMwMWRlYzFiYTE4
OTg3YTNmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqKTsKIAogLy8g
RUNNQSAxNS43LjQKIAotTnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKK051bWJl
clByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUpCiAgICAgOiBOdW1iZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1
Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVt
YmVyKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmgKaW5kZXggMTkxYWI0NzhhM2M3NTQ5Y2U5OTJiY2VmMTU3ODg5ZTJkZTcyNDUzMS4uNDVi
ZGZlN2JiMmZjZDgwNjBlYjNjNmNlNWJjMjMzZmU4ZGJlNTdmYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKQEAgLTI3LDcgKzI3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJQcm90b3R5cGUgOiBwdWJsaWMgTnVt
YmVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVj
dHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA2YmQyYTI4
MzZlNWNmYjM4NzYwYmE2MDNiMjVhNmI4MDNkMmFlMjEwLi5hZWQ1ZTI0NmE0M2RmZTU2ZTBiZDM1
M2U3Y2I2N2M5OWExMjZiOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGNvbnN0IENsYXNz
SW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxG
dW5jdGlvbjo6c19pCiBAZW5kCiAqLwogCi1PYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmpl
Y3RQcm90b3R5cGUpCitPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVu
dGlmaWVyKGV4ZWMsICJPYmplY3QiKSkKIHsKICAgICAvLyBFQ01BIDE1LjIuMy4xCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCBi
N2JmYzFkNzE3YzcxNzhlMzNjMjk2YWQ3YjRiOTc0MDFlYWU0M2QxLi42ZWJhZmNkYWRmYWE4YzU2
ODQxNGEyMDZkZmEwMjQyZWIzNjQ0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBPYmpl
Y3RQcm90b3R5cGUqKTsKKyAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmplY3RQcm90b3R5cGUqKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggMTg3
NDU2ZjIyN2ZlZDQ4OGI2YTAyZTcyY2FiNTU4NWFhZWU4MDkyMi4uNzQ2OTE3MmM4OTZlNzExNzUw
MzE4ZjA3Mjg3ZWQxMTkwMzEyODQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRl
Kik7CiAKLU9iamVjdFByb3RvdHlwZTo6T2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmlu
YWxPYmplY3Qoc3R1Y3R1cmUpCitPYmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3R1
Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3R1Y3R1cmUpCiAgICAgLCBtX2hhc05vUHJvcGVydGll
c1dpdGhVSW50MzJOYW1lcyh0cnVlKQogewogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgb2Jq
ZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCmluZGV4IDYxYzhmNTdkMTQ4OGQzNTg2NGFm
ZTNkOTVhNzg5YWQ4M2RjYTc1ZDEuLjlmYjdmYWU1YzZlNTc2MWNhZmE0MzQ4NTk5MDMxZTBiMGJi
YmMxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2Jq
ZWN0UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7Cisg
ICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCBlZGJkMzVmNDhhMjZjMjhkNjlk
MGUxYzQ3NDYyOGZhY2U3MTgwMWI4Li5mYzE5NWNkODdjNWIzNmNlOTNhMTU1NDk1ZTdiMGJmMmEx
MjI2MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgUHJvcGVydHlNYXBI
YXNoVGFibGVfaAogCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldyaXRlQmFycmll
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTI0NCw3ICsyNDUsNyBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCiAg
ICAgQVNTRVJUKGlzUG93ZXJPZjIobV9pbmRleFNpemUpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5
VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVy
dHlUYWJsZSYgb3RoZXIpCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIGNvbnN0IFByb3BlcnR5VGFibGUm
IG90aGVyKQogICAgIDogbV9pbmRleFNpemUob3RoZXIubV9pbmRleFNpemUpCiAgICAgLCBtX2lu
ZGV4TWFzayhvdGhlci5tX2luZGV4TWFzaykKICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5z
aWduZWQqPihmYXN0TWFsbG9jKGRhdGFTaXplKCkpKSkKQEAgLTI1Niw4ICsyNTcsMTAgQEAgaW5s
aW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwg
Y29uc3QgUHJvcGVydHlUYWJsZSYKICAgICBtZW1jcHkobV9pbmRleCwgb3RoZXIubV9pbmRleCwg
ZGF0YVNpemUoKSk7CiAKICAgICBpdGVyYXRvciBlbmQgPSB0aGlzLT5lbmQoKTsKLSAgICBmb3Ig
KGl0ZXJhdG9yIGl0ZXIgPSBiZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgIGZvciAo
aXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAg
aXRlci0+a2V5LT5yZWYoKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKGdsb2JhbERhdGEsIG93bmVy
LCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKKyAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBt
X2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0
ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKQEAgLTI2NSw3ICsyNjgs
NyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBK
U0NlbGwqLCBjb25zdCBQcm9wZXJ0eVRhYmxlJgogICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzLnNl
dChuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCi1pbmxp
bmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCB1
bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQoraW5s
aW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5
VGFibGUmIG90aGVyKQogICAgIDogbV9pbmRleFNpemUoc2l6ZUZvckNhcGFjaXR5KGluaXRpYWxD
YXBhY2l0eSkpCiAgICAgLCBtX2luZGV4TWFzayhtX2luZGV4U2l6ZSAtIDEpCiAgICAgLCBtX2lu
ZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdFplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSkp
CkBAIC0yODAsNiArMjgzLDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUo
SlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgdW5zaWduZWQgaW5pdGlhbENhcGEKICAgICAgICAgQVNT
RVJUKGNhbkluc2VydCgpKTsKICAgICAgICAgcmVpbnNlcnQoKml0ZXIpOwogICAgICAgICBpdGVy
LT5rZXktPnJlZigpOworICAgICAgICB3cml0ZUJhcnJpZXIoZ2xvYmFsRGF0YSwgb3duZXIsIGl0
ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOwogICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVs
ZXRlZE9mZnNldHMgdmVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDE5YjRiMzYxZTZjODg0ZDk0MWYwYjczZGVl
NTVmZjk1NTZlZDIwYmQuLjNkYTAxOTgxY2JlODczZWU5NzhlNDI2ZmI5MDIwNDJhYmY3NjQ4M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIEBlbmQK
ICovCiAKLVJlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKK1JlZ0V4
cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5
cGUqIHJlZ0V4cFByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIlJlZ0V4
cCIpKQogICAgICwgZChhZG9wdFB0cihuZXcgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKSkKIHsK
QEAgLTEwOSw3ICsxMDksNyBAQCBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogfQogCiBSZWdFeHBN
YXRjaGVzQXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cENv
bnN0cnVjdG9yUHJpdmF0ZSogZGF0YSkKLSAgICA6IEpTQXJyYXkoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgZGF0YS0+bGFzdE51bVN1
YlBhdHRlcm5zICsgMSwgQ3JlYXRlSW5pdGlhbGl6ZWQpCisgICAgOiBKU0FycmF5KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUoKSwgZGF0YS0+bGFzdE51bVN1YlBhdHRlcm5zICsgMSwgQ3JlYXRlSW5pdGlh
bGl6ZWQpCiB7CiAgICAgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBkID0gbmV3IFJlZ0V4cENv
bnN0cnVjdG9yUHJpdmF0ZTsKICAgICBkLT5pbnB1dCA9IGRhdGEtPmxhc3RJbnB1dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCmluZGV4
IDVlMGIyYjg1MGIxYjhhNmMyYzAwMDg4NzU2MzVjMmZmYzk5MTVjMDQuLjU0ODY2NGU1ODRmZTEy
NjZmNzM4M2I3YTQxOTNiYjBlMTA3NGI2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaApAQCAtNTcsOSArNTcsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBSZWdF
eHBQcm90b3R5cGUqKTsKKyAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHBQcm90b3R5cGUqKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0YjUwMjhiZDk3M2M2
MmRhMzZlYWNlMDU4MzNiNjkxNzlkMjQ5NzkzLi5kODI0ZWNkYjA4YmUzOGM5Y2IwZmY1Mzg1ZjY0
NmMxMjE1NDViMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cE9iamVj
dDo6c19pbmZvID0geyAiUmVnRXhwIiwgJkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c18KIEBl
bmQKICovCiAKLVJlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBOb25OdWxs
UGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCkKK1JlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOb25OdWxs
UGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIGQoYWRvcHRQdHIobmV3IFJlZ0V4cE9i
amVjdERhdGEocmVnRXhwKSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCmluZGV4IGZhMjAyNGRjZDc1ZTdhYzVjMjY4YzE4NzdlMDY5NDEwMDQyMTVi
OWYuLjQyNzRmZmY0MTQ5MWQyZTU2NjU5NTgzMWU1NGM2NjU4MGRiZmRjYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0zMCw3ICszMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgQmFzZTsKIAotICAgICAgICBSZWdFeHBPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgTm9uTnVsbFBh
c3NSZWZQdHI8UmVnRXhwPik7CisgICAgICAgIFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIE5vbk51bGxQYXNzUmVmUHRyPFJlZ0V4cD4pOwogICAgICAgICB2aXJ0dWFs
IH5SZWdFeHBPYmplY3QoKTsKIAogICAgICAgICB2b2lkIHNldFJlZ0V4cChQYXNzUmVmUHRyPFJl
Z0V4cD4gcikgeyBkLT5yZWdFeHAgPSByOyB9CkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5j
cHAKaW5kZXggNjE3NDdiMWZjNjU3MWM2YWIwYmQxMDA0ZDQxOWU3OGIxYjVlMzUzZC4uNWJiOGFk
OGJiOTM4MmQ4YzlkYjQ0ODE2ODgyZmQyODZlNDRmMjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSopOwogCiAvLyBFQ01BIDE1LjEwLjUKIAotUmVnRXhwUHJvdG90eXBlOjpS
ZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBm
dW5jdGlvblN0cnVjdHVyZSkKK1JlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBSZWdFeHBPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFJlZ0V4cDo6Y3JlYXRlKCZleGVjLT5nbG9iYWxEYXRh
KCksICIiLCBOb0ZsYWdzKSkKIHsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwgcmVnRXhwUHJv
dG9GdW5jQ29tcGlsZSksIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5kZXggNzBkNzdkOWM4NDk2MTUxNTdlNzJmYjAxYTA1
ODcwMjYxYTEyYTdhMy4uMmNjNTQwNTg2NTBhYzIzZmMyOWJjYWIwMmFkYjRiYjE5OTFkNDg1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgK
QEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBQcm90
b3R5cGUgOiBwdWJsaWMgUmVnRXhwT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlZ0V4
cFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBSZWdF
eHBQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1
Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBmMGZmNzU3
ODk1MmQyZGRmMWVkNjc4MDhjYTEyZDE1ZmMwODRhOTU2Li5kMGEyNjcyYjYxODBmMTliYjExZjdl
ZjJkOTVmOGViZjJlNTRkYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbi5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNj
b3BlQ2hhaW5Ob2RlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBTY29w
ZUNoYWluTm9kZShTY29wZUNoYWluTm9kZSogbmV4dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogZ2xvYmFsVGhpcykKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnNjb3BlQ2hh
aW5Ob2RlU3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEs
IGdsb2JhbERhdGEtPnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAg
LCBnbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG5leHQoKmdsb2JhbERhdGEs
IHRoaXMsIG5leHQpCiAgICAgICAgICAgICAsIG9iamVjdCgqZ2xvYmFsRGF0YSwgdGhpcywgb2Jq
ZWN0KQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcmlu
dCgpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5m
byhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19p
bmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHAKaW5kZXggMjRjNTAxZTU3MDkzNWZkZTY2YTNhMTMyZjQ5NmZlOWZkMDM3NTEx
Mi4uZTY2NmRlZTE1NzkyYjdmYmU4OTdlNjBkMmM1MDNkNjIzYjc2ZmQ4MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cApAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFN0cmljdEV2YWxBY3RpdmF0
aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCi0gICAgOiBKU05vbkZp
bmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVy
ZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9i
YWxEYXRhKCkuc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAppbmRleCBlZDA4OGU0ZjZkMDczNmQ5YTBiZGI4NDcyNTQ1NWQwZDkzYjI3MDg1Li41NjAyMDJh
NTU5ZTZkOWJiNWJjYjU4YjFhOWIxNGMxNTA4MWJjOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29k
ZShFeGVjU3RhdGUqIGV4ZWMpCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nQ29u
c3RydWN0b3IpOwogCi1TdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgU3Ry
aW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCitTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5n
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgU3Ry
aW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4
ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgLy8g
RUNNQSAxNS41LjMuMSBTdHJpbmcucHJvdG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAppbmRleCAzYTQyYzdlOTU2MTI4N2U4NjU4
NmYwYWQyNzNkN2U2Mzc3ZjVlMzg2Li4xMTdjY2U4Y2E5ODBjM2U3MzczOGU2NWQ5N2FjOGU4NTBh
YjExZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBTdHJpbmdDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSwgU3RyaW5nUHJvdG90eXBlKik7CisgICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0
cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKik7CiAKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENh
bGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0N2U1ODYwYWQ5ZjU0MTkyYzcxZmM0MDUy
MDk2ZmRkM2JjMzdmNWE3Li42N2RjMjkxYjA5ZWNmN2Q3ZWJhODhhYWYyOTZmYTUzNDhlYzIyY2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
QEAgLTI5LDIyICsyOSwyMiBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ09iamVj
dCk7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OnNfaW5mbyA9IHsgIlN0cmluZyIs
ICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1TdHJpbmdPYmplY3Q6OlN0cmlu
Z09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK1N0cmluZ09iamVjdDo6
U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmds
b2JhbERhdGEoKSwganNFbXB0eVN0cmluZyhleGVjKSk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3Ry
aW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCi0gICAgOiBKU1dyYXBwZXJPYmpl
Y3Qoc3RydWN0dXJlKQorU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmluZykKKyAgICA6
IEpTV3JhcHBlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmlu
Zyk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmlu
ZykKLSAgICA6IEpTV3JhcHBlck9iamVjdChzdHJ1Y3R1cmUpCitTdHJpbmdPYmplY3Q6OlN0cmlu
Z09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBzdHJpbmcpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRl
cm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGFlMzM3
NmQyMmFjZTUzYTgxOWEzMDdkNDkzYzUxNWE5Mjg3OWQwNjYuLjRjMTYwNDRmYmE2OTg1NzRjZWQ3
MzJhMjJjY2Y2ZmM2NmQyNDdiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCkBAIC0yOCw4ICsyOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGlj
OgotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPik7Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIFN0cmluZ09iamVjdChF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nT2Jq
ZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogCkBA
IC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNTdHJpbmcqIGlu
dGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6Omlu
dGVybmFsVmFsdWUoKSk7fQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTV3JhcHBlck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7
Ci0gICAgICAgIFN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBKU1N0cmluZyopOworICAgICAgICBTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgSlNTdHJpbmcqKTsKICAgICB9OwogCiAgICAgU3RyaW5nT2JqZWN0KiBh
c1N0cmluZ09iamVjdChKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZC5oCmluZGV4IGU0YzcwNjEyMmNlMTcxM2Q0M2VlOTUzZDFiYzg5Zjc1MGU5YjRlN2Mu
LjMxMzM5NDQ1OGYzZDAxMTg0MTJjNjQ4ODgwMzQ0MDI3MjM3Y2FjZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaApAQCAtMzcsMTIgKzM3LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTdHJpbmdPYmpl
Y3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCisgICAg
ICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKICAgICAgICAg
ICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgc3RyaW5nKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAorICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvKSAKICAgICAgICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
aW5kZXggYTZiZjRlNjI1MmViYThiOTFhMjg1NzI0NDBkZTg0ZDhlMmExN2RjYy4uOTExMTJhNTVi
ODk2NzdlNmM3MjVjNWI0ZWQ1YTQ3Nzg2NWFlYjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvID0geyAiU3RyaW5nIiwgJlN0
cmluZ09iamVjdDo6c19pbmZvLCAwLAogKi8KIAogLy8gRUNNQSAxNS41LjQKLVN0cmluZ1Byb3Rv
dHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCitTdHJp
bmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogU3RyaW5nT2Jq
ZWN0KGV4ZWMsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRl
eCA1N2RlZjIyODFiMWQ1YzQ4ZjEzNGFkNWQ0MjFlMDc3ZWU1YTA4N2E4Li42YzRiNDc1NjQxM2Fj
MjcwZjlmN2VhMzI0ODAxM2E4N2U4ZTFmMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaApAQCAtMjksMTIgKzI5LDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGljIFN0cmluZ09iamVj
dCB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgU3Ry
aW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCBiZDdkOWRkYTkwMTcyYWU2MjVjNzNmMDNiNzNhZWZiMjJj
Y2EwZjdlLi5lMmQ1NGRjYjhiOTRhZmMyM2FkZTJmMzdlNGU0ZDBjOGEyNDg4ZmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTYxLDIxICs2MSw2
IEBAIGludCBudW1SZW1vdmVzOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcK
LXN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciBzdHJ1Y3R1cmVDb3VudGVyKCJTdHJ1
Y3R1cmUiKTsKLQotI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLXN0YXRpYyBNdXRl
eCYgaWdub3JlU2V0TXV0ZXgoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11
dGV4LCAoKSk7Ci0gICAgcmV0dXJuIG11dGV4OwotfQotI2VuZGlmCi0KLXN0YXRpYyBib29sIHNo
b3VsZElnbm9yZUxlYWtzOwotc3RhdGljIEhhc2hTZXQ8U3RydWN0dXJlKj4mIGlnbm9yZVNldCA9
ICoobmV3IEhhc2hTZXQ8U3RydWN0dXJlKj4pOwotI2VuZGlmCi0KICNpZiBEVU1QX1NUUlVDVFVS
RV9JRF9TVEFUSVNUSUNTCiBzdGF0aWMgSGFzaFNldDxTdHJ1Y3R1cmUqPiYgbGl2ZVN0cnVjdHVy
ZVNldCA9ICoobmV3IEhhc2hTZXQ8U3RydWN0dXJlKj4pOwogI2VuZGlmCkBAIC0xMDYsNDEgKzkx
LDQxIEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6cmVtb3ZlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICAvLyBtYXAgbW9kZSkuCiAgICAgICAgIC8vIEFzIHN1
Y2gsIHRoZSBwYXNzZWQgc3RydWN0dXJlICptdXN0KiBiZSB0aGUgZXhpc3RpbmcgdHJhbnNpdGlv
bi4KICAgICAgICAgQVNTRVJUKHNpbmdsZVRyYW5zaXRpb24oKSA9PSBzdHJ1Y3R1cmUpOwotICAg
ICAgICBzZXRTaW5nbGVUcmFuc2l0aW9uKDApOworICAgICAgICBjbGVhclNpbmdsZVRyYW5zaXRp
b24oKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDaGVjayB3aGV0aGVyIGEgbWFwcGluZyBl
eGlzdHMgZm9yIHN0cnVjdHVyZSdzIGtleSwgYW5kIHdoZXRoZXIgdGhlCiAgICAgICAgIC8vIGVu
dHJ5IGlzIHN0cnVjdHVyZSAodGhlIGxhdHRlciBjaGVjayBtYXkgZmFpbCBpZiB3ZSBpbml0aWFs
bHkgaGFkIGEKICAgICAgICAgLy8gdHJhbnNpdGlvbiB3aXRoIGEgc3BlY2lmaWMgdmFsdWUsIGFu
ZCB0aGlzIGhhcyBiZWVuIGRlc3BlY2lmaWVkKS4KICAgICAgICAgVHJhbnNpdGlvbk1hcDo6aXRl
cmF0b3IgZW50cnkgPSBtYXAoKS0+ZmluZChtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblBy
ZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpKTsKLSAgICAgICAgaWYg
KGVudHJ5ICE9IG1hcCgpLT5lbmQoKSAmJiBzdHJ1Y3R1cmUgPT0gZW50cnktPnNlY29uZCkKKyAg
ICAgICAgaWYgKGVudHJ5ICE9IG1hcCgpLT5lbmQoKSAmJiBzdHJ1Y3R1cmUgPT0gZW50cnkuZ2V0
KCkuc2Vjb25kKQogICAgICAgICAgICAgbWFwKCktPnJlbW92ZShlbnRyeSk7CiAgICAgfQogfQog
Ci1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK2lubGluZSB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgaWYgKGlz
VXNpbmdTaW5nbGVTbG90KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRp
b24gPSBzaW5nbGVUcmFuc2l0aW9uKCk7CiAKICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBm
aXJzdCB0cmFuc2l0aW9uIGJlaW5nIGFkZGVkLgogICAgICAgICBpZiAoIWV4aXN0aW5nVHJhbnNp
dGlvbikgewotICAgICAgICAgICAgc2V0U2luZ2xlVHJhbnNpdGlvbihzdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgc2V0U2luZ2xlVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRo
ZSBzZWNvbmQgdHJhbnNpdGlvbiBiZWluZyBhZGRlZAogICAgICAgICAvLyAob3IgdGhlIGZpcnN0
IHRyYW5zaXRpb24gYmVpbmcgZGVzcGVjaWZpZWQhKQogICAgICAgICBzZXRNYXAobmV3IFRyYW5z
aXRpb25NYXAoKSk7Ci0gICAgICAgIGFkZChleGlzdGluZ1RyYW5zaXRpb24pOworICAgICAgICBh
ZGQoZ2xvYmFsRGF0YSwgZXhpc3RpbmdUcmFuc2l0aW9uKTsKICAgICB9CiAKICAgICAvLyBBZGQg
dGhlIHN0cnVjdHVyZSB0byB0aGUgbWFwLgotICAgIHN0ZDo6cGFpcjxUcmFuc2l0aW9uTWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwKCktPmFkZChtYWtlX3BhaXIoc3RydWN0dXJlLT5t
X25hbWVJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpLCBzdHJ1
Y3R1cmUpOworICAgIHN0ZDo6cGFpcjxUcmFuc2l0aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbWFwKCktPmFkZChnbG9iYWxEYXRhLCBtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJ
blByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpLCBzdHJ1Y3R1cmUp
OwogICAgIGlmICghcmVzdWx0LnNlY29uZCkgewogICAgICAgICAvLyBUaGVyZSBhbHJlYWR5IGlz
IGFuIGVudHJ5ISAtIHdlIHNob3VsZCBvbmx5IGhpdCB0aGlzIHdoZW4gZGVzcGVjaWZ5aW5nLgot
ICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQtPm1fc3BlY2lmaWNWYWx1ZUluUHJl
dmlvdXMpOworICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LmdldCgpLnNlY29uZC0+bV9zcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3NwZWNp
ZmljVmFsdWVJblByZXZpb3VzKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBzdHJ1
Y3R1cmU7CisgICAgICAgIG1hcCgpLT5zZXQocmVzdWx0LmZpcnN0LCBzdHJ1Y3R1cmUpOwogICAg
IH0KIH0KIApAQCAtMTg5LDEwICsxNzQsMTAgQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0
aWNzKCkKICNlbmRpZgogfQogCi1TdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlw
ZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQs
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQotICAgIDogbV90eXBlSW5mbyh0eXBlSW5mbykK
LSAgICAsIG1fcHJvdG90eXBlKHByb3RvdHlwZSkKLSAgICAsIG1fc3BlY2lmaWNWYWx1ZUluUHJl
dmlvdXMoMCkKK1N0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgdW5zaWduZWQgYW5v
bnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICA6IEpTQ2Vs
bChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAs
IG1fdHlwZUluZm8odHlwZUluZm8pCisgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlz
LCBwcm90b3R5cGUpCiAgICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3Byb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KHR5cGVJbmZvLmlzRmluYWwoKSA/IEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcmFnZUNhcGFjaXR5IDogSlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNp
dHkpCiAgICAgLCBtX29mZnNldChub09mZnNldCkKQEAgLTIwNiwyNyArMTkxLDM2IEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUlu
Zm8sIHVuc2lnbmVkIGFub255CiAgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25zKGZhbHNlKQogewog
ICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7Ci0gICAgQVNTRVJUKG1fcHJvdG90eXBlLT5pc09iamVj
dCgpIHx8IG1fcHJvdG90eXBlLT5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlz
T2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNOdWxsKCkpOworfQogCi0jaWZuZGVmIE5ERUJVRwot
I2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLSAgICBNdXRleExvY2tlciBwcm90ZWN0
KGlnbm9yZVNldE11dGV4KCkpOwotI2VuZGlmCi0gICAgaWYgKHNob3VsZElnbm9yZUxlYWtzKQot
ICAgICAgICBpZ25vcmVTZXQuYWRkKHRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgc3RydWN0dXJl
Q291bnRlci5pbmNyZW1lbnQoKTsKLSNlbmRpZgorY29uc3QgQ2xhc3NJbmZvIFN0cnVjdHVyZTo6
c19pbmZvID0geyAiU3RydWN0dXJlIiwgMCwgMCwgMCB9OwogCi0jaWYgRFVNUF9TVFJVQ1RVUkVf
SURfU1RBVElTVElDUwotICAgIGxpdmVTdHJ1Y3R1cmVTZXQuYWRkKHRoaXMpOwotI2VuZGlmCitT
dHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgOiBKU0Nl
bGwoZ2xvYmFsRGF0YSwgdGhpcykKKyAgICAsIG1fdHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVy
cmlkZXNNYXJrQ2hpbGRyZW4pCisgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBq
c051bGwoKSkKKyAgICAsIG1fY2xhc3NJbmZvKCZzX2luZm8pCisgICAgLCBtX3Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KDApCisgICAgLCBtX29mZnNldChub09mZnNldCkKKyAgICAsIG1fZGljdGlv
bmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQorICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUoZmFsc2UpCisgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCisgICAg
LCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKGZhbHNlKQorICAgICwgbV9hdHRyaWJ1dGVz
SW5QcmV2aW91cygwKQorICAgICwgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQoMCkKKyAg
ICAsIG1fYW5vbnltb3VzU2xvdENvdW50KDApCisgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25zKGZh
bHNlKQoreworICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7CisgICAgQVNTRVJUKG1fcHJvdG90eXBl
LmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsK
IH0KIAotU3RydWN0dXJlOjpTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKLSAg
ICA6IG1fdHlwZUluZm8ocHJldmlvdXMtPnR5cGVJbmZvKCkpCi0gICAgLCBtX3Byb3RvdHlwZShw
cmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCi0gICAgLCBtX3NwZWNpZmljVmFsdWVJblByZXZp
b3VzKDApCitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCisgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3R5cGVJbmZvKHByZXZpb3Vz
LT50eXBlSW5mbygpKQorICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlv
dXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xh
c3NJbmZvKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSkKICAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQpAQCAtMjQwLDU4
ICsyMzQsMTEgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJlKiBwcmV2aW91
cykKICAgICAsIG1fcHJldmVudEV4dGVuc2lvbnMocHJldmlvdXMtPm1fcHJldmVudEV4dGVuc2lv
bnMpCiB7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlKTsKLSAgICBBU1NFUlQobV9wcm90b3R5cGUt
PmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUtPmlzTnVsbCgpKTsKLQotI2lmbmRlZiBOREVCVUcK
LSNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCi0gICAgTXV0ZXhMb2NrZXIgcHJvdGVj
dChpZ25vcmVTZXRNdXRleCgpKTsKLSNlbmRpZgotICAgIGlmIChzaG91bGRJZ25vcmVMZWFrcykK
LSAgICAgICAgaWdub3JlU2V0LmFkZCh0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIHN0cnVjdHVy
ZUNvdW50ZXIuaW5jcmVtZW50KCk7Ci0jZW5kaWYKLQotI2lmIERVTVBfU1RSVUNUVVJFX0lEX1NU
QVRJU1RJQ1MKLSAgICBsaXZlU3RydWN0dXJlU2V0LmFkZCh0aGlzKTsKLSNlbmRpZgorICAgIEFT
U0VSVChtX3Byb3RvdHlwZS5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLmlzTnVsbCgpKTsKIH0K
IAogU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKIHsKLSAgICBpZiAobV9wcmV2aW91cykgewotICAg
ICAgICBBU1NFUlQobV9uYW1lSW5QcmV2aW91cyk7Ci0gICAgICAgIG1fcHJldmlvdXMtPm1fdHJh
bnNpdGlvblRhYmxlLnJlbW92ZSh0aGlzKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0jaWYg
RU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQotICAgIE11dGV4TG9ja2VyIHByb3RlY3QoaWdu
b3JlU2V0TXV0ZXgoKSk7Ci0jZW5kaWYKLSAgICBIYXNoU2V0PFN0cnVjdHVyZSo+OjppdGVyYXRv
ciBpdCA9IGlnbm9yZVNldC5maW5kKHRoaXMpOwotICAgIGlmIChpdCAhPSBpZ25vcmVTZXQuZW5k
KCkpCi0gICAgICAgIGlnbm9yZVNldC5yZW1vdmUoaXQpOwotICAgIGVsc2UKLSAgICAgICAgc3Ry
dWN0dXJlQ291bnRlci5kZWNyZW1lbnQoKTsKLSNlbmRpZgotCi0jaWYgRFVNUF9TVFJVQ1RVUkVf
SURfU1RBVElTVElDUwotICAgIGxpdmVTdHJ1Y3R1cmVTZXQucmVtb3ZlKHRoaXMpOwotI2VuZGlm
Ci19Ci0KLXZvaWQgU3RydWN0dXJlOjpzdGFydElnbm9yaW5nTGVha3MoKQotewotI2lmbmRlZiBO
REVCVUcKLSAgICBzaG91bGRJZ25vcmVMZWFrcyA9IHRydWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBT
dHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtzKCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgc2hv
dWxkSWdub3JlTGVha3MgPSBmYWxzZTsKLSNlbmRpZgogfQogCiB2b2lkIFN0cnVjdHVyZTo6bWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0zMjEsNyAr
MjY4LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQogCiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IHN0cnVjdHVyZXMuc2l6
ZSgpIC0gMjsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tp
XTsKLSAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeShnbG9iYWxEYXRhLCAwLCBzdHJ1Y3R1
cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIG1fYW5vbnltb3VzU2xvdENvdW50ICsgc3RydWN0
dXJlLT5tX29mZnNldCwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzLCBzdHJ1Y3R1
cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5
IGVudHJ5KGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQo
KSwgbV9hbm9ueW1vdXNTbG90Q291bnQgKyBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUt
Pm1fYXR0cmlidXRlc0luUHJldmlvdXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2
aW91cy5nZXQoKSk7CiAgICAgICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKGVudHJ5KTsKICAgICB9
CiB9CkBAIC0zNDgsMTMgKzI5NSwxMyBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlv
bmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbgogICAgIGVu
dHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKK1N0cnVj
dHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQp
CiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQo
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKIAogICAgIGlmIChT
dHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFi
bGUuZ2V0KHByb3BlcnR5TmFtZS5pbXBsKCksIGF0dHJpYnV0ZXMpKSB7Ci0gICAgICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fc3BlY2lm
aWNWYWx1ZUluUHJldmlvdXM7CisgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlv
dXMgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7
CiAgICAgICAgIGlmIChzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5Q
cmV2aW91cyAhPSBzcGVjaWZpY1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKQEAgLTM2
Nyw3ICszMTQsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdAogICAgIHJldHVybiAwOwogfQog
Ci1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2Ug
aGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBp
ZiB0aGVyZSBpcwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3Qg
cHJvcGVydHkgbmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zODcsMjMgKzMzNCwyMyBAQCBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLAogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsKIAogICAg
IGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Db3VudCgpID4gc19tYXhUcmFuc2l0aW9uTGVuZ3Ro
KSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgIFN0cnVj
dHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9u
KTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0KGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQg
Pj0gc3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudCk7CiAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50ID09IHRyYW5zaXRpb24tPm1fYW5vbnltb3VzU2xv
dENvdW50KTsKICAgICAgICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+
IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICB0cmFu
c2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAgcmV0dXJuIHRy
YW5zaXRpb24ucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAK
LSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7Cisg
ICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CiAKLSAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLnNldChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCksIDApOwotICAgIHRyYW5z
aXRpb24tPm1fcHJldmlvdXMgPSBzdHJ1Y3R1cmU7CisgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQ
cm90b3R5cGVDaGFpbi5zZXQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5tX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKKyAgICB0cmFuc2l0aW9uLT5tX3ByZXZpb3VzLnNl
dChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUpOwogICAgIHRyYW5zaXRpb24tPm1f
bmFtZUluUHJldmlvdXMgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwogICAgIHRyYW5zaXRpb24tPm1f
YXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOwotICAgIHRyYW5zaXRpb24tPm1fc3Bl
Y2lmaWNWYWx1ZUluUHJldmlvdXMgPSBzcGVjaWZpY1ZhbHVlOworICAgIHRyYW5zaXRpb24tPm1f
c3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuc2V0KGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHNwZWNp
ZmljVmFsdWUpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7CiAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUtPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKQpAQCAtNDI1LDUwICsz
NzIsNTAgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwKIAogICAgIHRyYW5zaXRpb24tPm1fb2Zm
c2V0ID0gb2Zmc2V0IC0gc3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudDsKICAgICBBU1NF
UlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1v
dXNTbG90Q291bnQoKSk7Ci0gICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodHJh
bnNpdGlvbi5nZXQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHN0
cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwor
ICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXpl
X3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKIHsKICAgICBBU1NFUlQo
IXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKLSAgICBSZWZQdHI8U3Ry
dWN0dXJlPiB0cmFuc2l0aW9uID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gdG9VbmNh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAg
ICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5yZW1vdmUocHJvcGVydHlOYW1lKTsKICAgICBBU1NFUlQo
b2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50ID09IHRyYW5zaXRpb24tPm1fYW5vbnltb3Vz
U2xvdENvdW50KTsKIAotICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gdHJhbnNpdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6Y2hh
bmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpj
aGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5z
aXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAotICAgIHRyYW5zaXRpb24t
Pm1fcHJvdG90eXBlID0gcHJvdG90eXBlOworICAgIHRyYW5zaXRpb24tPm1fcHJvdG90eXBlLnNl
dChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBwcm90b3R5cGUpOwogCiAgICAgLy8gRG9uJ3Qgc2V0
IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCiAKICAgICBzdHJ1
Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKLSAg
ICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRh
YmxlKGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVj
dHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgdHJh
bnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIAogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFub255bW91
c1Nsb3RDb3VudCgpKTsKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHRyYW5zaXRpb247CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmRl
c3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCitTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHJl
cGxhY2VGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3NwZWNpZmljRnVuY3Rp
b25UaHJhc2hDb3VudCA8IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCk7Ci0gICAgUmVm
UHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOworICAgIFN0cnVj
dHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAg
Kyt0cmFuc2l0aW9uLT5tX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsKIAogICAgIC8vIERv
bid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCiAg
ICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0
YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJv
cGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUg
PSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwog
ICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAogICAgIGlm
ICh0cmFuc2l0aW9uLT5tX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9PSBtYXhTcGVjaWZp
Y0Z1bmN0aW9uVGhyYXNoQ291bnQpCkBAIC00NzksNTIgKzQyNiw1MiBAQCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYQogICAgIH0KICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNT
bG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7Ci0gICAgcmV0
dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1Q
YXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5z
aXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBj
cmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNl
dCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCiAgICAgc3RydWN0dXJlLT5t
YXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgdHJhbnNp
dGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9i
YWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNv
cHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwogICAgIHRyYW5zaXRpb24t
Pm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQoc3RydWN0
dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291
bnQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHJldHVybiB0cmFu
c2l0aW9uOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b0RpY3Rpb25h
cnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6dG9EaWN0aW9u
YXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBEaWN0aW9uYXJ5S2luZCBraW5kKQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFu
c2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0g
Y3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKLSAgICB0cmFuc2l0aW9uLT5t
X3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEp
OworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3Bl
cnR5VGFibGUoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bp
bm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFyeUtp
bmQgPSBraW5kOwogICAgIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3Vu
dCgpID09IHRyYW5zaXRpb24tPmFub255bW91c1Nsb3RDb3VudCgpKTsKLSAgICByZXR1cm4gdHJh
bnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1N0cnVjdHVy
ZSogU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgcmV0dXJuIHRvRGlj
dGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5
S2luZCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9u
YXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogICAgIHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCk7CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBt
YXkgd2FudCB0byBjYWNoZSB0aGlzIHRyYW5zaXRpb24uCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4g
U3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgUmVm
UHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHByZXZl
bnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgaWYg
KHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSkgewogICAgICAgICBQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUtPmVuZCgpOwpAQCAtNTMy
LDEzICs0NzksMTMgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6c2VhbFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3QKICAgICAgICAgICAgIGl0ZXIt
PmF0dHJpYnV0ZXMgfD0gRG9udERlbGV0ZTsKICAgICB9CiAKLSAgICByZXR1cm4gdHJhbnNpdGlv
bi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKIC8vIEluIGZ1dHVyZSB3
ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHRyYW5zaXRpb24uCi1QYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewot
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24g
PSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAog
ICAgIGlmICh0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgUHJvcGVydHlU
YWJsZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsK
QEAgLTU0NiwyMyArNDkzLDIzIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZy
ZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1CiAgICAgICAgICAg
ICBpdGVyLT5hdHRyaWJ1dGVzIHw9IChEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAot
ICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsK
IH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3YW50IHRvIGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4K
LVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRy
YW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIC8vIERvbid0
IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCiAgICAg
c3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7
Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVy
dHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBz
dHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwogICAg
IHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICB0cmFuc2l0
aW9uLT5tX3ByZXZlbnRFeHRlbnNpb25zID0gdHJ1ZTsKIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFub255bW91c1Nsb3RDb3VudCgp
KTsKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRp
b247CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHByb3BlcnR5
LgpAQCAtNjAxLDcgKzU0OCw3IEBAIGJvb2wgU3RydWN0dXJlOjppc0Zyb3plbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0
dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVjdCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0
dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlzRGljdGlvbmFyeSgpKTsKICAgICBpZiAoaXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKSkgewpAQCAtNjg4LDkgKzYzNSw5IEBAIGlubGluZSB2b2lkIFN0
cnVjdHVyZTo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAKICNlbmRpZgogCi1Qcm9wZXJ0eVRhYmxlKiBT
dHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK1By
b3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBtX3Byb3BlcnR5VGFi
bGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCAwLCAqbV9wcm9wZXJ0eVRhYmxlKSA6
IDA7CisgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2Jh
bERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IDA7CiB9CiAKIHNpemVfdCBTdHJ1Y3R1
cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCkBAIC03NTgs
NyArNzA1LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLAogICAgICAgICBuZXdPZmZzZXQgPSBt
X3Byb3BlcnR5VGFibGUtPnNpemUoKSArIG1fYW5vbnltb3VzU2xvdENvdW50OwogICAgIEFTU0VS
VChuZXdPZmZzZXQgPj0gbV9hbm9ueW1vdXNTbG90Q291bnQpOwogCi0gICAgbV9wcm9wZXJ0eVRh
YmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShnbG9iYWxEYXRhLCAwLCByZXAsIG5ld09mZnNldCwg
YXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOworICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFBy
b3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICByZXR1
cm4gbmV3T2Zmc2V0OwpAQCAtODE4LDExICs3NjUsMjYgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFBy
b3BlcnR5TmFtZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHIKICAgICB9CiB9CiAKLXZvaWQgU3RydWN0dXJlOjppbml0aWFsaXplVGhyZWFkaW5nKCkKLXsK
LSNpZiAhZGVmaW5lZChOREVCVUcpICYmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLSAg
ICBpZ25vcmVTZXRNdXRleCgpOwotI2VuZGlmCit2b2lkIFN0cnVjdHVyZTo6bWFya0NoaWxkcmVu
KE1hcmtTdGFjayYgbWFya1N0YWNrKQoreworICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtT
dGFjayk7CisgICAgaWYgKG1fcHJvdG90eXBlKQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZt
X3Byb3RvdHlwZSk7CisgICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIG1h
cmtTdGFjay5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAgIGlmIChtX3ByZXZp
b3VzKQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3ByZXZpb3VzKTsKKyAgICBpZiAobV9z
cGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAgaWYgKG1fZW51bWVyYXRpb25DYWNoZSkKKyAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lbnVtZXJhdGlvbkNhY2hlKTsKKyAgICBpZiAobV9wcm9w
ZXJ0eVRhYmxlKSB7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJv
cGVydHlUYWJsZS0+ZW5kKCk7CisgICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3Ig
cHRyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAg
ICAgICAgICAgaWYgKHB0ci0+c3BlY2lmaWNWYWx1ZSkKKyAgICAgICAgICAgICAgICBtYXJrU3Rh
Y2suYXBwZW5kKCZwdHItPnNwZWNpZmljVmFsdWUpOworICAgICAgICB9CisgICAgfQogfQogCiAj
aWYgRE9fUFJPUEVSVFlNQVBfQ09OU1RFTkNZX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDk0YTA2YjJmOTY5ZjJlZDNmZjdkZGUwYmU2ZjExY2I4
NDhkY2I4MTAuLjAxMGZkZmQyZWM4NjhlNTkyYmE1MDllM2YzZjk4YWIwODdhZTIwYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC01NSw0OSArNTUsNDEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMKICAg
ICB9OwogCi0gICAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJl
PiB7CisgICAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgog
ICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOwotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVl
IHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueW1vdXNT
bG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQs
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFN0cnVjdHVyZShwcm90b3R5cGUsIHR5cGVJbmZvLCBhbm9ueW1vdXNT
bG90Q291bnQsIGNsYXNzSW5mbykpOworICAgICAgICAgICAgQVNTRVJUKGdsb2JhbERhdGEuc3Ry
dWN0dXJlU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKCZnbG9iYWxEYXRhKSBT
dHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCB0eXBlSW5mbywgYW5vbnltb3VzU2xvdENv
dW50LCBjbGFzc0luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgZW51bSBWUHRyU3RlYWxpbmdI
YWNrVHlwZSB7IFZQdHJTdGVhbGluZ0hhY2sgfTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGUoVlB0clN0ZWFsaW5nSGFja1R5cGUsIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0
cnVjdHVyZShqc051bGwoKSwgVHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwgY2xhc3NJbmZv
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBzdGFydElnbm9yaW5nTGVha3Mo
KTsKLSAgICAgICAgc3RhdGljIHZvaWQgc3RvcElnbm9yaW5nTGVha3MoKTsKLQogICAgICAgICBz
dGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpT
VmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBk
ZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29u
c3QgSWRlbnRpZmllciYpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGdl
dHRlclNldHRlclRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZnJlZXplVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcmV2ZW50
RXh0ZW5zaW9uc1RyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zm
c2V0KTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGdldHRlclNldHRlclRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGZyZWV6ZVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKIAogICAgICAgICBib29sIGlzU2VhbGVkKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29s
IGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNv
bnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAKLSAgICAgICAgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpT
T2JqZWN0Kik7CisgICAgICAgIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAogICAgICAgICB+U3RydWN0dXJlKCk7CiAKICAg
ICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgCiAgICAgICAgIHNp
emVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU1ZhbHVlIHByb3RvdHlwZSkg
eyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsgfQorICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdp
dGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5
cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KICAg
ICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0
aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KICAgICAgICAgYm9vbCBpc1VuY2Fj
aGVhYmxlRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgPT0gVW5j
YWNoZWREaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTA3LDExICs5OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dG90eXBlLmdldCgpOyB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKEV4ZWNT
dGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhl
Y1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1h
cmtTdGFjaykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fcHJvdG90eXBlKQotICAgICAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fcHJvdG90eXBlKTsKLSAgICAgICAgfQorICAg
ICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAogICAgICAgICBTdHJ1Y3R1cmUq
IHByZXZpb3VzSUQoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9CiAKQEAgLTE0
Nyw4ICsxMzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAKLSAgICAgICAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwotCiAgICAgICAgIHN0YXRpYyBwdHJkaWZm
X3QgcHJvdG90eXBlT2Zmc2V0KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJvdG90eXBlKTsKQEAgLTE2NCwyMSArMTUwLDMxIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1
Y3R1cmUsIG1fdHlwZUluZm8pICsgVHlwZUluZm86OnR5cGVPZmZzZXQoKTsKICAgICAgICAgfQog
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5z
dHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoJmdsb2JhbERhdGEp
IFN0cnVjdHVyZShnbG9iYWxEYXRhKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIHVuc2lnbmVk
IGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZvKik7Ci0gICAgICAgIFN0cnVjdHVy
ZShjb25zdCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpT
VmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIHVuc2lnbmVkIGFub255bW91c1Nsb3RD
b3VudCwgY29uc3QgQ2xhc3NJbmZvKik7CisgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
KTsKKyAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlKGNvbnN0IFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7
CisgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoJmdsb2JhbERhdGEpIFN0cnVjdHVyZShnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHN0YXRpYyBjb25zdCBD
bGFzc0luZm8gc19pbmZvOworCiAgICAgICAgIHR5cGVkZWYgZW51bSB7IAogICAgICAgICAgICAg
Tm9uZURpY3Rpb25hcnlLaW5kID0gMCwKICAgICAgICAgICAgIENhY2hlZERpY3Rpb25hcnlLaW5k
ID0gMSwKICAgICAgICAgICAgIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQgPSAyCiAgICAgICAgIH0g
RGljdGlvbmFyeUtpbmQ7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9E
aWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBEaWN0aW9uYXJ5
S2luZCk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCiAgICAgICAgIHNp
emVfdCBwdXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXpl
X3QgcmVtb3ZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CkBAIC0xODksNyArMTg1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24oSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICB2b2lkIGRlc3BlY2lmeUFs
bEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5
UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgUHJvcGVydHlUYWJsZSogY29w
eVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiBvd25lcik7CiAgICAgICAg
IHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9p
ZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQogICAgICAgICB7CkBAIC0yMTMsMTggKzIwOSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwogCi0gICAgICAgIERlcHJlY2F0ZWRQdHI8VW5r
bm93bj4gbV9wcm90b3R5cGU7Ci0gICAgICAgIG11dGFibGUgV2VhazxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1f
cHJvdG90eXBlOworICAgICAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKIAotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3By
ZXZpb3VzOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByZXZpb3VzOwogICAg
ICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2aW91czsKLSAgICAgICAgSlNDZWxs
KiBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzOworICAgICAgICBXcml0ZUJhcnJpZXI8SlNDZWxs
PiBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzOwogCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
bV9jbGFzc0luZm87CiAKICAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIG1fdHJhbnNp
dGlvblRhYmxlOwogCi0gICAgICAgIFdlYWs8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4gbV9lbnVt
ZXJhdGlvbkNhY2hlOworICAgICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cj4gbV9lbnVtZXJhdGlvbkNhY2hlOwogCiAgICAgICAgIE93blB0cjxQcm9wZXJ0eVRhYmxlPiBt
X3Byb3BlcnR5VGFibGU7CiAKQEAgLTI3Nyw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6Y3Jl
YXRlRHVtbXlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGpzTnVsbCgpLCBUeXBlSW5m
byhVbnNwZWNpZmllZFR5cGUpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOwogICAgIH0KQEAgLTI5
OSw2ICsyOTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBl
bmQoY2VsbCk7CiAgICAgfQogCisgICAgaW5saW5lIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6
SGFzaDo6S2V5IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6V2Vha0dDTWFwRmluYWxpemVyQ2Fs
bGJhY2s6OmtleUZvckZpbmFsaXplcih2b2lkKiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICByZXR1cm4gSGFzaDo6S2V5KHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5n
ZXQoKSwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzKTsKKyAgICB9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBhYjUxYzAyNGRjYjQz
YzBkODgwNjE0ZTMyNjI4NzQ3YjA5MDY1M2I3Li5hZDZhYmZmODE2MDM5NGQ2NDBjNDhiZTI1MTIz
MzFiNWJlZDM4OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwCkBAIC0zNCwxOSArMzQsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
CiBDbGFzc0luZm8gU3RydWN0dXJlQ2hhaW46OnNfaW5mbyA9IHsgIlN0cnVjdHVyZUNoYWluIiwg
MCwgMCwgMCB9OwogCi1TdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogaGVhZCkKLSAgICA6IEpTQ2Vs
bChzdHJ1Y3R1cmUucmVsZWFzZVJlZigpKQorU3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWlu
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogaGVhZCkKKyAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2l6
ZV90IHNpemUgPSAwOwogICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gaGVhZDsgY3VycmVu
dDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgpID8gMCA6IGFz
T2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpKS0+c3RydWN0dXJlKCkpCiAgICAgICAg
ICsrc2l6ZTsKICAgICAKLSAgICBtX3ZlY3RvciA9IGFkb3B0QXJyYXlQdHIobmV3IFJlZlB0cjxT
dHJ1Y3R1cmU+W3NpemUgKyAxXSk7CisgICAgbV92ZWN0b3IgPSBhZG9wdEFycmF5UHRyKG5ldyBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPltzaXplICsgMV0pOwogCiAgICAgc2l6ZV90IGkgPSAwOwog
ICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1
cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQt
PnN0b3JlZFByb3RvdHlwZSgpKS0+c3RydWN0dXJlKCkpCi0gICAgICAgIG1fdmVjdG9yW2krK10g
PSBjdXJyZW50OwotICAgIG1fdmVjdG9yW2ldID0gMDsKKyAgICAgICAgbV92ZWN0b3JbaSsrXS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgY3VycmVudCk7CisgICAgbV92ZWN0b3JbaV0uY2xlYXIoKTsK
IH0KIAogU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCkBAIC01Nyw3ICs1Nyw3IEBA
IHZvaWQgU3RydWN0dXJlQ2hhaW46Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykK
IHsKICAgICBzaXplX3QgaSA9IDA7CiAgICAgd2hpbGUgKG1fdmVjdG9yW2ldKQotICAgICAgICBt
X3ZlY3RvcltpKytdLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFj
ay5hcHBlbmQoJm1fdmVjdG9yW2krK10pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCmluZGV4IDgzNDk2
OWZjN2IwOWE4YmFhMWUxNmE4NWQwZWE5N2FjNDBhZTk1MjIuLmI5ODRiZTZhNmRjOGE2N2JiODAx
N2E2MTQxMGZiOTU0ODVkZTQ3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNDIsMTYgKzQyLDE2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
U3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogaGVhZCkgeyByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFs
RGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZSwgaGVhZCk7IH0KLSAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQorICAgICAgICBzdGF0
aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogaGVhZCkgeyByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgU3RydWN0dXJlQ2hhaW4oZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7
IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3Zl
Y3Rvci5nZXQoKTsgfQogICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwg
T3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgMCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCAwLCAm
c19pbmZvKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RydWN0dXJlQ2hhaW4oTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBoZWFkKTsKKyAgICAgICAgU3RydWN0
dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBoZWFkKTsKICAg
ICAgICAgflN0cnVjdHVyZUNoYWluKCk7Ci0gICAgICAgIE93bkFycmF5UHRyPFJlZlB0cjxTdHJ1
Y3R1cmU+ID4gbV92ZWN0b3I7CisgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgICAgIHN0YXRpYyBDbGFzc0luZm8gc19pbmZvOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXggZGE3OGUxYjk5NjgzMjZlZGEzNjY0MTZkY2YxZWI0
MTk2ODYwMTRhNi4uNWY2ZTVmYTRlZjI0YmUwYmVhYzNkYWVlOTA4NWJhNzhiODc3ZmEyYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlX2gKIAogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXAu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjksNyArNjksMTYgQEAgY2xhc3MgU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlIHsKICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUo
Y29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRmlyc3RUcmFpdHM6OmlzRGVsZXRlZFZh
bHVlKHZhbHVlLmZpcnN0KTsgfQogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8SGFzaDo6
S2V5LCBTdHJ1Y3R1cmUqLCBIYXNoLCBIYXNoVHJhaXRzPiBUcmFuc2l0aW9uTWFwOworICAgIHN0
cnVjdCBXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFjayB7CisgICAgICAgIHN0YXRpYyB2b2lkKiBm
aW5hbGl6ZXJDb250ZXh0Rm9yKEhhc2g6OktleSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBIYXNoOjpLZXkga2V5
Rm9yRmluYWxpemVyKHZvaWQqIGNvbnRleHQsIFN0cnVjdHVyZSopOworICAgIH07CisKKyAgICB0
eXBlZGVmIFdlYWtHQ01hcDxIYXNoOjpLZXksIFN0cnVjdHVyZSwgV2Vha0dDTWFwRmluYWxpemVy
Q2FsbGJhY2ssIEhhc2gsIEhhc2hUcmFpdHM+IFRyYW5zaXRpb25NYXA7CiAKIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUoKQpAQCAtODEsOSArOTAsMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgaWYgKCFpc1VzaW5nU2luZ2xlU2xvdCgpKQogICAgICAgICAgICAgZGVs
ZXRlIG1hcCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGVhclNpbmdsZVRyYW5zaXRp
b24oKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBhZGQoU3RydWN0dXJlKik7CisgICAgaW5s
aW5lIHZvaWQgYWRkKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgIGlubGluZSB2b2lk
IHJlbW92ZShTdHJ1Y3R1cmUqKTsKICAgICBpbmxpbmUgYm9vbCBjb250YWlucyhTdHJpbmdJbXBs
KiByZXAsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpIGNvbnN0OwogICAgIGlubGluZSBTdHJ1Y3R1cmUq
IGdldChTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpIGNvbnN0OwpAQCAtMTAw
LDkgKzExMSwxOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxU
cmFuc2l0aW9uTWFwKj4obV9kYXRhKTsKICAgICB9CiAKKyAgICBIYW5kbGVTbG90IHNsb3QoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PihtX2RhdGEgJiB+VXNpbmdTaW5n
bGVTbG90RmxhZyk7CisgICAgfQorCiAgICAgdm9pZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFw
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOworICAgICAgICAK
KyAgICAgICAgaWYgKEhhbmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKSkKKyAgICAgICAgICAg
IEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CiAKICAgICAgICAg
Ly8gVGhpcyBpbXBsaWNpdGx5IGNsZWFycyB0aGUgZmxhZyB0aGF0IGluZGljYXRlcyB3ZSdyZSB1
c2luZyBhIHNpbmdsZSB0cmFuc2l0aW9uCiAgICAgICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KG1hcCk7CkBAIC0xMTMsMTMgKzEzMywyOSBAQCBwcml2YXRlOgogICAgIFN0
cnVjdHVyZSogc2luZ2xlVHJhbnNpdGlvbigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
aXNVc2luZ1NpbmdsZVNsb3QoKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFN0
cnVjdHVyZSo+KG1fZGF0YSAmIH5Vc2luZ1NpbmdsZVNsb3RGbGFnKTsKKyAgICAgICAgaWYgKEhh
bmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKSkKKyAgICAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFN0cnVjdHVyZSo+KHNsb3QtPmFzQ2VsbCgpKTsKKyAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQotCi0gICAgdm9pZCBzZXRTaW5nbGVUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIAorICAgIHZvaWQgY2xlYXJTaW5nbGVUcmFuc2l0aW9uKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKKyAgICAgICAgaWYgKEhhbmRsZVNsb3Qg
c2xvdCA9IHRoaXMtPnNsb3QoKSkKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xv
dCktPmRlYWxsb2NhdGUoc2xvdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0U2luZ2xlVHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICBtX2Rh
dGEgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihzdHJ1Y3R1cmUpIHwgVXNpbmdTaW5nbGVT
bG90RmxhZzsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gdGhpcy0+c2xvdCgpOworICAgICAg
ICBpZiAoIXNsb3QpIHsKKyAgICAgICAgICAgIHNsb3QgPSBnbG9iYWxEYXRhLmFsbG9jYXRlR2xv
YmFsSGFuZGxlKCk7CisgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtl
V2VhayhzbG90LCAwLCAwKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KHNsb3QpIHwgVXNpbmdTaW5nbGVTbG90RmxhZzsKKyAgICAgICAgfQorICAgICAg
ICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xvdCwgcmVpbnRlcnBy
ZXRfY2FzdDxKU0NlbGwqPihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgKnNsb3QgPSByZWludGVycHJl
dF9jYXN0PEpTQ2VsbCo+KHN0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgaW50cHRyX3QgbV9kYXRh
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRleCAyYWZmMDlh
MTJjYmJkMzQ1NzNlZTZhZDA1NzFiMTFmNjc1ZTc3NmYxLi41YWQxYzYyYTNlOTcyOThkMjQwNDdm
NjQ5ODc4ZDE5NzI1OWUyMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NNYXAuaApAQCAtMzQsMTcgKzM0LDMxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAvLyBBIEhhc2hN
YXAgZm9yIEdDJ2QgdmFsdWVzIHRoYXQgcmVtb3ZlcyBlbnRyaWVzIHdoZW4gdGhlIGFzc29jaWF0
ZWQgdmFsdWUKIC8vIGRpZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBN
YXBwZWRUeXBlPiBjbGFzcyBXZWFrR0NNYXAgOiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IERl
ZmF1bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFjayB7CisgICAgc3RhdGljIHZvaWQqIGZpbmFs
aXplckNvbnRleHRGb3IoS2V5VHlwZSBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oa2V5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgS2V5VHlwZSBrZXlG
b3JGaW5hbGl6ZXIodm9pZCogY29udGV4dCwgdHlwZW5hbWUgSGFuZGxlVHlwZXM8TWFwcGVkVHlw
ZT46OkV4dGVybmFsVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEtleVR5cGU+KGNvbnRleHQpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleVR5
cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5cGVuYW1lIEZpbmFsaXplckNhbGxiYWNrID0gRGVm
YXVsdFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrPEtleVR5cGUsIE1hcHBlZFR5cGU+LCB0eXBl
bmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5VHlwZT46Okhhc2gsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5VHlwZT4gPgorY2xhc3MgV2Vha0dDTWFw
IDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtHQ01hcCk7CiAKLSAgICB0eXBlZGVmIEhh
c2hNYXA8S2V5VHlwZSwgSGFuZGxlU2xvdD4gTWFwVHlwZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
S2V5VHlwZSwgSGFuZGxlU2xvdCwgSGFzaEFyZywgS2V5VHJhaXRzQXJnPiBNYXBUeXBlOwogICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OkV4dGVybmFsVHlwZSBF
eHRlcm5hbFR5cGU7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBtYXBf
aXRlcmF0b3I7CiAKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBpdGVyYXRvciB7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBXZWFrR0NNYXA7CiAgICAgICAgIGl0ZXJhdG9yKG1hcF9pdGVyYXRvciBpdGVy
KQogICAgICAgICAgICAgOiBtX2l0ZXJhdG9yKGl0ZXIpCiAgICAgICAgIHsKQEAgLTYyLDcgKzc2
LDcgQEAgcHVibGljOgogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0b3I7IH0KICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIG1hcF9pdGVyYXRvciBtX2l0ZXJhdG9y
OworICAgICAgICBtYXBfaXRlcmF0b3IgbV9pdGVyYXRvcjsKICAgICB9OwogCiAgICAgV2Vha0dD
TWFwKCkKQEAgLTc4LDYgKzkyLDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9tYXAuY2xlYXIoKTsK
ICAgICB9CiAKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX21hcC5jb250YWlucyhrZXkpOworICAgIH0KKworICAgIGl0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
bWFwLmZpbmQoa2V5KTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShpdGVyYXRvciBpdGVyKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGl0ZXIubV9pdGVyYXRvciAhPSBtX21hcC5lbmQoKSk7Cisg
ICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGl0ZXIubV9pdGVyYXRvci0+c2Vjb25kOworICAgICAg
ICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxs
b2NhdGUoc2xvdCk7CisgICAgICAgIG1fbWFwLnJlbW92ZShpdGVyLm1faXRlcmF0b3IpOworICAg
IH0KKwogICAgIEV4dGVybmFsVHlwZSBnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpnZXRGcm9tU2xvdCht
X21hcC5nZXQoa2V5KSk7CkBAIC04OCw2ICsxMjEsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9tYXAuZ2V0KGtleSk7CiAgICAgfQogCisgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRk
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5
cGUgdmFsdWUpCisgICAgeworICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9y
LCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAgIGlmIChpdGVyLnNlY29u
ZCkgeworICAgICAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gZ2xvYmFsRGF0YS5hbGxvY2F0ZUds
b2JhbEhhbmRsZSgpOworICAgICAgICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0gc2xvdDsKKyAg
ICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNsb3QsIHRoaXMs
IEZpbmFsaXplckNhbGxiYWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKGtleSkpOworICAgICAgICAg
ICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3QsIHZhbHVlKTsK
KyAgICAgICAgICAgICpzbG90ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl0
ZXI7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0KGl0ZXJhdG9yIGl0ZXIsIEV4dGVybmFsVHlw
ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGl0ZXIubV9pdGVyYXRv
ci0+c2Vjb25kOworICAgICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEhhbmRsZUhlYXA6Omhl
YXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CisgICAgICAgICpzbG90ID0g
dmFsdWU7CisgICAgfQorCiAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHBh
aXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX21hcC5hZGQoa2V5
LCAwKTsKQEAgLTEyMiw5ICsxNzYsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0
KQorICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gbV9tYXAudGFrZShz
dGF0aWNfY2FzdDxLZXlUeXBlPihjb250ZXh0KSk7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9
IG1fbWFwLnRha2UoRmluYWxpemVyQ2FsbGJhY2s6OmtleUZvckZpbmFsaXplcihjb250ZXh0LCBI
YW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6Z2V0RnJvbVNsb3QoaGFuZGxlLnNsb3QoKSkpKTsKICAg
ICAgICAgQVNTRVJUKHNsb3QpOwogICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5k
ZWFsbG9jYXRlKHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dyaXRlQmFycmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V3JpdGVCYXJyaWVyLmgKaW5kZXggMzRkZWJhMmE2MDQ4ODI1MGFiMWY1YjBmMjU5ZTdhOWY0OWFm
Y2Q5MS4uZjkzYzI1MDM5ZTQxNGQ1ZjVjODZiOTk4N2U2YjJjZmQ1NGI0MDMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKQEAgLTMyLDYgKzMyLDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNHbG9iYWxEYXRhOwog
CitpbmxpbmUgdm9pZCB3cml0ZUJhcnJpZXIoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwg
SlNWYWx1ZSkKK3sKK30KKworaW5saW5lIHZvaWQgd3JpdGVCYXJyaWVyKEpTR2xvYmFsRGF0YSYs
IGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopCit7Cit9CisKIHR5cGVkZWYgZW51bSB7IH0gVW5rbm93
bjsKIHR5cGVkZWYgSlNWYWx1ZSogSGFuZGxlU2xvdDsKIApAQCAtOTIsNyArMTAwLDE2IEBAIHRl
bXBsYXRlIDw+IHN0cnVjdCBKU1ZhbHVlQ2hlY2tlcjxKU1ZhbHVlPiB7CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CiBwdWJsaWM6CiAgICAgQ09NUElMRV9B
U1NFUlQoIUpTVmFsdWVDaGVja2VyPFQ+OjpJc0pTVmFsdWUsIFdyaXRlQmFycmllcl9KU1ZhbHVl
X2lzX2ludmFsaWRfX3VzZV91bmtub3duKTsKLSAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmLCBj
b25zdCBKU0NlbGwqLCBUKiB2YWx1ZSkgeyB0aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0
PEpTQ2VsbCo+KHZhbHVlKTsgfQorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKG93bmVyLCBvd25lcik7CisgICAgICAgIHRoaXMtPm1fY2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOworICAgICAgICB3cml0ZUJhcnJpZXIoZ2xvYmFsRGF0YSwg
b3duZXIsIHRoaXMtPm1fY2VsbCk7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgICAgICBB
U1NFUlQoIWlzWm9tYmllKG93bmVyKSk7CisgICAgICAgIEFTU0VSVCghaXNab21iaWUobV9jZWxs
KSk7CisjZW5kaWYKKyAgICB9CiAgICAgCiAgICAgVCogZ2V0KCkgY29uc3QKICAgICB7CkBAIC0x
MDEsMTEgKzExOCwxNiBAQCBwdWJsaWM6CiAKICAgICBUKiBvcGVyYXRvciooKSBjb25zdAogICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fY2VsbCk7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAg
ICAgICBBU1NFUlQoIWlzWm9tYmllKG1fY2VsbCkpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUKj4obV9jZWxsKTsKICAgICB9CiAKICAgICBUKiBvcGVyYXRvci0+KCkgY29u
c3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX2NlbGwpOwogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VCo+KG1fY2VsbCk7CiAgICAgfQogCkBAIC0xMTgsNyArMTQwLDEzIEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NlbGw7IH0KIAot
ICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihUKiB2YWx1ZSkgeyB0aGlzLT5tX2NlbGwg
PSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsgfQorICAgIHZvaWQgc2V0V2l0aG91
dFdyaXRlQmFycmllcihUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMtPm1fY2VsbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOworI2lmIEVOQUJMRShKU0NfWk9NQklFUykK
KyAgICAgICAgQVNTRVJUKCFtX2NlbGwgfHwgIWlzWm9tYmllKG1fY2VsbCkpOworI2VuZGlmCisg
ICAgfQogCiBwcml2YXRlOgogICAgIEpTQ2VsbCogbV9jZWxsOwpAQCAtMTI2LDE4ICsxNTQsMzMg
QEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwg
SlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQotICAg
IHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpOyB9Ci0gICAgSlNWYWx1ZSBnZXQoKSBjb25zdAorICAgIHZv
aWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNW
YWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQob3duZXIsIG93bmVyKTsK
KyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFTU0VSVCghaXNab21iaWUob3duZXIp
KTsKKyAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc1pvbWJpZSgpKTsKKyNlbmRpZgorICAgICAgICBt
X3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKGds
b2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0V2l0aG91dFdyaXRl
QmFycmllcihKU1ZhbHVlIHZhbHVlKQogICAgIHsKICNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0g
ICAgICAgIEFTU0VSVCghSlNWYWx1ZTo6ZGVjb2RlKG1fdmFsdWUpIHx8ICFKU1ZhbHVlOjpkZWNv
ZGUobV92YWx1ZSkuaXNab21iaWUoKSk7CisgICAgICAgIEFTU0VSVCghdmFsdWUuaXNab21iaWUo
KSk7CiAjZW5kaWYKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7Cisg
ICAgfQorCisgICAgSlNWYWx1ZSBnZXQoKSBjb25zdAorICAgIHsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZShtX3ZhbHVlKTsKICAgICB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV92YWx1
ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOyB9CiAgICAgdm9pZCBzZXRVbmRlZmluZWQo
KSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KICAgICBib29s
IGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNOdW1iZXIoKTsgfQorICAgIGJvb2wg
aXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc09iamVjdCgpOyB9CisgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc051bGwoKTsgfQogICAgIGJvb2wgaXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc0dldHRlclNldHRlcigpOyB9CiAgICAg
CiAgICAgSlNWYWx1ZSogc2xvdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCA5ZTNjZDc5
MzExNTc1MDQ1Y2Q1MGVlODUzZTE0MDAwNTBjZjVmYTQzLi5lODc0MTUyMjI5MDQ4YWI1OTA2YzQ5
MTBiMmI3ODMzMzhlZWY3ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdDIGFsbG9jYXRlIFN0
cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTg0ODMKKworICAgICAgICBGaXggdXAgSlNHIHRvIGNvcnJlY3RseSBtYXJrIFN0cnVjdHVyZSwg
ZXQgYWwuCisKKyAgICAgICAgKiBKU1J1bi5jcHA6CisgICAgICAgIChKU0dsdWVHbG9iYWxPYmpl
Y3Q6OkpTR2x1ZUdsb2JhbE9iamVjdCk6CisgICAgICAgICogSlNSdW4uaDoKKyAgICAgICAgKiBK
U1V0aWxzLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0S0pTVmFsdWUpOgorICAgICAgICAqIFVzZXJP
YmplY3RJbXAuY3BwOgorICAgICAgICAoVXNlck9iamVjdEltcDo6VXNlck9iamVjdEltcCk6Cisg
ICAgICAgICogVXNlck9iamVjdEltcC5oOgorICAgICAgICAoVXNlck9iamVjdEltcDo6Y3JlYXRl
U3RydWN0dXJlKToKKwogMjAxMS0wNC0wOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1
bi5jcHAKaW5kZXggYTgwOTZhYTRiYWM3MzVlNWI3NjQ2ZDk1MzkyYmExZGViMDk4YTIxYS4uM2I5
ZDI0NWVhMzg0MmQ4Nzg1OTk0Njc4YTM4MTUzZTk1YzlmZGUzYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNS
dW4uY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21w
bGV0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlQ29kZS5oPgogCi1KU0ds
dWVHbG9iYWxPYmplY3Q6OkpTR2x1ZUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRmxhZ3MgZmxhZ3MpCi0gICAg
OiBKU0dsb2JhbE9iamVjdChzdHJ1Y3R1cmUpCitKU0dsdWVHbG9iYWxPYmplY3Q6OkpTR2x1ZUds
b2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0ZsYWdzIGZsYWdzKQorICAgIDogSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKQogICAgICwgbV9mbGFncyhmbGFncykKLSAgICAsIG1fdXNlck9iamVjdFN0cnVjdHVyZShV
c2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwganNOdWxsKCkpKQorICAg
ICwgbV91c2VyT2JqZWN0U3RydWN0dXJlKGdsb2JhbERhdGEsIFVzZXJPYmplY3RJbXA6OmNyZWF0
ZVN0cnVjdHVyZShnbG9iYWxEYXRhLCBqc051bGwoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVu
LmgKaW5kZXggMWY1MGYzNzY5NmYzNzE4OGEyYjYzZDFmZDU2YzdjOWE4MzQ5OGNmOC4uOWZlNzc2
NzllNGM5MzVkMTY4OGJlYzZhMzE1YjVkMjU1ZWVkNjQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRHbHVlL0pTUnVuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgK
QEAgLTM1LDE0ICszNSwxNCBAQAogCiBjbGFzcyBKU0dsdWVHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNHbG9iYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgSlNHbHVlR2xvYmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNGbGFncyA9IGtKU0ZsYWdO
b25lKTsKKyAgICAgICAgSlNHbHVlR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIEpTRmxhZ3MgPSBrSlNGbGFnTm9uZSk7CiAKICAgICAgICAgSlNGbGFncyBGbGFncygpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICAgICAgU3RydWN0dXJlKiB1c2VyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV91c2VyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBKU0ZsYWdzIG1fZmxhZ3M7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IG1fdXNlck9iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gbV91c2VyT2JqZWN0U3RydWN0dXJlOwogfTsKIAogY2xhc3MgSlNSdW4gOiBwdWJsaWMgSlNC
YXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcAppbmRleCBiNjJlN2JmYjZlODk4YzhmMmRh
NjIyNzllYzhhMWM5OWE0ZWJjMWE1Li43ZGI2NTBmMTY3N2RiODZjYjAyZDA1MGMzMmZkNmVjNDJj
YjY1ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVXRpbHMuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAg
SlNWYWx1ZSBKU09iamVjdEtKU1ZhbHVlKEpTVXNlck9iamVjdCogcHRyKQogICAgICAgICBpZiAo
IWhhbmRsZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdldFRo
cmVhZEdsb2JhbEV4ZWNTdGF0ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChleGVjKSBV
c2VyT2JqZWN0SW1wKGdldFRocmVhZEdsb2JhbE9iamVjdCgpLT51c2VyT2JqZWN0U3RydWN0dXJl
KCksIHB0cik7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgKGV4ZWMpIFVzZXJPYmplY3RJbXAo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBnZXRUaHJlYWRHbG9iYWxPYmplY3QoKS0+dXNlck9iamVjdFN0
cnVjdHVyZSgpLCBwdHIpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKaW5kZXggYTA0ZjU4ZTQ2NDBkYTE0
NDE4ZDY4NThmMTJiZGI0OTI1ZTkxYjlmYS4uYzkzNzQ4ZjAwMTBhN2ZjNmVlZmIwMzM2NTEyYjNh
M2M1NzRhOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJ
bXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcApAQCAt
MzQsOCArMzQsOCBAQAogCiBjb25zdCBDbGFzc0luZm8gVXNlck9iamVjdEltcDo6c19pbmZvID0g
eyAiVXNlck9iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotVXNl
ck9iamVjdEltcDo6VXNlck9iamVjdEltcChQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBKU1VzZXJPYmplY3QqIHVzZXJPYmplY3QpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVj
dHVyZSkKK1VzZXJPYmplY3RJbXA6OlVzZXJPYmplY3RJbXAoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNVc2VyT2JqZWN0KiB1c2VyT2JqZWN0KQorICAg
IDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgLCBmSlNVc2Vy
T2JqZWN0KChKU1VzZXJPYmplY3QqKXVzZXJPYmplY3QtPlJldGFpbigpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5kZXggYzZiOGQ4NmY1ZDlhYjY5YzFlMWU1Njll
YzgyYzZiZTI1MTJkODU1MS4uOWJkNmYwZmUwNjRmMTYyNDY4YjAyMzE4N2U4OTFkNTZjZWVmNmVm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCkBAIC0zNiw3ICszNiw3IEBA
CiAKIGNsYXNzIFVzZXJPYmplY3RJbXAgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6Ci0gICAgVXNlck9iamVjdEltcChQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpTVXNlck9iamVj
dCopOworICAgIFVzZXJPYmplY3RJbXAoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNVc2Vy
T2JqZWN0Kik7CiAgICAgdmlydHVhbCB+VXNlck9iamVjdEltcCgpOwogCiAgICAgc3RhdGljIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIEpT
VXNlck9iamVjdCAqR2V0SlNVc2VyT2JqZWN0KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVz
TWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk4YTZkNmI2ZDNmNDc4OTdhZDMz
NGIwZjJmM2RmM2NhMTM1NjllYTAuLmNiNmYwNGQzNzM2MDkxMGYxMWI3NjkzYWY2NWE3MTI4MGM1
ZGIyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw4NiBAQAogMjAxMS0wNC0xMyAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBVcGRhdGUgV2Vi
Q29yZSBmb3IgU3RydWN0dXJlIGJlaW5nIGEgR0MgYWxsb2NhdGVkIG9iamVjdAorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVj
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhY2hlRE9NU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NT2JqZWN0V2l0aEdsb2Jh
bFBvaW50ZXI6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ29uc3RydWN0b3JPYmplY3Q6OkRPTUNvbnN0cnVjdG9yT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50OjpET01Db25zdHJ1Y3RvcldpdGhE
b2N1bWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpKU0RPTVdpbmRvd0Jhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpET01PYmplY3Q6OkRPTU9iamVjdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0ltYWdlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU09wdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU09wdGlvbkNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0QmFzZTo6
SlNXb3JrZXJDb250ZXh0QmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0QmFzZTo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9jL0NS
dW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGltZU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0aG9kOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgIChK
YXZhUnVudGltZU1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2Uvam5p
L2pzYy9KYXZhUnVudGltZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVJ1
bnRpbWVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnJpZGdlL29iamMvT2Jq
Q1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iakNSdW50aW1lT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW06CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6UnVu
dGltZUFycmF5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAo
SlNDOjpSdW50aW1lQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6UnVudGltZU1l
dGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgIChKU0M6
OlJ1bnRpbWVNZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OlJ1
bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisKKzIwMTEtMDQtMTMgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3Vn
aC4KIAogICAgICAgICBNYWtlIFByb3BlcnR5TWFwRW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZv
ciBzcGVjaWZpY1ZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDBlMWI4YjJkMTcxMGIzNTVh
ZGVlZDBiYzU1MTQ0MWVkN2FkOTYxM2IuLmRhYzYxMTc3NmM4MTg0MDA2YzYxNTFlNjJjZDAyMjli
NDg0ZWFhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTgyLDcgKzE1ODIsNyBAQCBfX05Q
Tl9TZXRQcm9wZXJ0eQogX19OUE5fVVRGOEZyb21JZGVudGlmaWVyCiBfX1pON1dlYkNvcmUxNlNj
cmlwdENvbnRyb2xsZXIyMHdpbmRvd1NjcmlwdE5QT2JqZWN0RXYKIF9fWk43V2ViQ29yZTE2U2Ny
aXB0Q29udHJvbGxlcjI5Y2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW5FUHYKLV9fWk43V2Vi
Q29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQ
TjNXVEYxMFN0cmluZ0ltcGxFTlMwXzhKU1N0cmluZ0VFRVM2XworX19aTjdXZWJDb3JlMTZqc1N0
cmluZ1Nsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk5TMF85V2Vha0dDTWFwSVBOM1dURjEwU3Ry
aW5nSW1wbEVOUzBfOEpTU3RyaW5nRU5TMF8zM0RlZmF1bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxs
YmFja0lTNl9TN19FRU5TNF8xMFN0cmluZ0hhc2hFTlM0XzEwSGFzaFRyYWl0c0lTNl9FRUVFUzZf
CiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTFnZXROUE9iamVjdEV2CiBfX1pOSzdX
ZWJDb3JlMTRTZWN1cml0eU9yaWdpbjljYW5BY2Nlc3NFUEtTMF8KIF9fWk5LN1dlYkNvcmU0S1VS
TDEwcHJvdG9jb2xJc0VQS2MKQEAgLTE1OTksNyArMTU5OSw3IEBAIF9fWk4zSlNDMTNSdW50aW1l
TWV0aG9kMTFnZXRDYWxsRGF0YUVSTlNfOENhbGxEYXRhRQogX19aTjNKU0MxM1J1bnRpbWVNZXRo
b2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVS
TlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3Bl
cnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UKLV9fWk4zSlND
MTNSdW50aW1lTWV0aG9kQzJFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFTjNX
VEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzEwSWRlbnRpZmllckVS
TlM1XzZWZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCitfX1pOM0pTQzEzUnVudGlt
ZU1ldGhvZEMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0
dXJlRVJLTlNfMTBJZGVudGlmaWVyRVJOM1dURjZWZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RF
TG0wRUVFCiBfX1pOM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdEQxRXYKIF9fWk4zSlNDOEJpbmRp
bmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVSTlNfOENhbGxEYXRhRQogX19aTjNKU0M4
QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRQpAQCAtMTYwOSwxNCArMTYwOSwxNCBAQCBfX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNf
MTdQcm9wZQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QyNGdldE93blByb3BlcnR5
RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0
eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDNwdXRFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlT
bG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Q2c19pbmZvRQotX19aTjNKU0M4
QmluZGluZ3MxM1J1bnRpbWVPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9i
amVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRU5TNl8xMFBhc3NS
ZWZQdHJJTlMwXzhJbnN0YW5jZUVFRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3RD
MkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVOM1dU
RjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdEQyRXYKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3RhbmNlMTljcmVhdGVSdW50aW1lT2Jq
ZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M4QmluZGluZ3M4SW5zdGFuY2VDMkVOM1dURjEw
UGFzc1JlZlB0cklOUzBfMTBSb290T2JqZWN0RUVFCiBfX1pOM0pTQzhCaW5kaW5nczhJbnN0YW5j
ZUQyRXYKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDdpc1ZhbGlkRVBTMF8KIF9fWk43V2Vi
Q29yZTE2U2NyaXB0Q29udHJvbGxlcjE2Y3JlYXRlUm9vdE9iamVjdEVQdgotX19aTjdXZWJDb3Jl
MTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVOM1dURjE3Tm9uTnVs
bFBhc3NSZWZQdHJJTjNKU0M5U3RydWN0dXJlRUVFUEtOUzRfOUNsYXNzSW5mb0UKK19fWk43V2Vi
Q29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0
cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1
Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlDbGFzc0luZm9FCiBfX1pOSzNK
U0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVO
U18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCiBfX1pUVk4zSlNDMTNSdW50aW1lTWV0aG9kRQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaAppbmRl
eCBiZTBiODAwMDA1YmYyMjFhYmVkN2E5ODQ2ZDhhMTNhZWMzNWI0NDMxLi4xNDQwMzU1YTgwMDhj
N2U1ZjQ1ZDZjNzljMjUyNDljMWJlOWJhZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBKU0F1ZGlvQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCmluZGV4IDg1MDFlYjkyNTY0NDA5OTFkYTU4OWNhZGRiMjI2ZGUyZWRiY2Q3YTkuLjQ3
MGVkZDkyYjVlZTY5YzJhOGZjY2ViMzNiMjkyNjU1OTc2YTJhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNjQ2LDExICs2NDYsMTEgQEAgU3Ry
dWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgQ2xhc3NJbmYKICAgICByZXR1cm4gc3RydWN0dXJlcy5nZXQoY2xhc3NJbmZv
KS5nZXQoKTsKIH0KIAotU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCitTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0
dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKIHsKICAgICBKU0RPTVN0cnVjdHVyZU1hcCYg
c3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlcygpOwogICAgIEFTU0VSVCghc3Ry
dWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsKLSAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQo
Y2xhc3NJbmZvLCBzdHJ1Y3R1cmUpLmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIHN0
cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSkuZmlyc3QtPnNlY29u
ZC5nZXQoKTsKIH0KIAogSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggOTM0ZDliMzFhNDYxYjIxNzlkYmQ0MTlmZGVlMDAy
YTgwZTMyODNjNS4uZWU0MTUwMTdmZmZmY2Q4ZjJlMDgyOWUxMjZiZGVmYjhlOGJmODFjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTY0LDEzICs2NCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgRE9N
T2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgRE9N
T2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIDogRE9NT2JqZWN0KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBBU1NFUlQgaXMgdmFsaWQsIGJ1dCBmaXJlcyBpbiBmYXN0L2RvbS9nYy02Lmh0bWwgd2hlbiB0
cnlpbmcgdG8gY3JlYXRlCkBAIC04MywxNCArODMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCBjb25zdHJ1Y3RvciBvYmplY3RzIGluIHRoZSBKU0Mg
YmluZGluZ3MuCiAgICAgY2xhc3MgRE9NQ29uc3RydWN0b3JPYmplY3QgOiBwdWJsaWMgRE9NT2Jq
ZWN0V2l0aEdsb2JhbFBvaW50ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAm
c19pbmZvKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8
IEpTQzo6T3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXI6
OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBET01Db25zdHJ1Y3Rvck9iamVjdChOb25OdWxsUGFz
c1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorICAgICAgICBET01Db25zdHJ1Y3Rvck9iamVjdChKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAg
OiBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKICAg
ICAgICAgewogICAgICAgICB9CkBAIC0xMDYsNyArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIERPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50KE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIERPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgICAgICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7CkBAIC0xMjksNyAr
MTI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGJvb2wgaGFzQ2FjaGVkRE9NTm9kZVdy
YXBwZXJVbmNoZWNrZWQoRG9jdW1lbnQqLCBOb2RlKik7CiAKICAgICBKU0M6OlN0cnVjdHVyZSog
Z2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpDbGFz
c0luZm8qKTsKLSAgICBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKik7CisgICAgSlNDOjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9N
R2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwog
CiAgICAgaW5saW5lIEpTRE9NR2xvYmFsT2JqZWN0KiBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9y
UHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyY2VmOTkwNmU5MDc0
YTljOTFhOTFmMTMwYTNkNmRjMGJlMjUzYWQ4Li4zZTNkMDM3NzJiODhhMWQxMDViMDIzODI4ZWE0
OGE2Y2QxNjUyZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIEpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJET01HbG9iYWxP
YmplY3QiLCAmSlNHbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1KU0RPTUdsb2JhbE9i
amVjdDo6SlNET01HbG9iYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwgSlNPYmplY3QqIHRoaXNW
YWx1ZSkKLSAgICA6IEpTR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgdGhpc1ZhbHVlKQorSlNET01H
bG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwg
SlNPYmplY3QqIHRoaXNWYWx1ZSkKKyAgICA6IEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSwgdGhpc1ZhbHVlKQogICAgICwgbV9jdXJyZW50RXZlbnQoMCkKICAgICAsIG1fd29y
bGQod29ybGQpCiB7CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6Om1h
cmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIAogICAgIEpTRE9NU3RydWN0dXJlTWFw
OjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7CiAgICAgZm9yIChKU0RPTVN0cnVj
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICBpdC0+c2Vjb25kLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQoJml0LT5zZWNvbmQpOwogCiAgICAgSlNET01Db25zdHJ1Y3Rv
ck1hcDo6aXRlcmF0b3IgZW5kMiA9IGNvbnN0cnVjdG9ycygpLmVuZCgpOwogICAgIGZvciAoSlNE
T01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCkuYmVnaW4oKTsg
aXQyICE9IGVuZDI7ICsraXQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmgKaW5kZXggMWU5OTJjNWI3MWZkYzYyOGU2NTFkY2IyZjcyYzE1MTY0ZWZi
MjQwNC4uOTE5MGUwMWIzNjRkM2M1MzkyMjNiNDQxMjMyMDhjYWZjNmZkZGM3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBKU0V2ZW50TGlzdGVuZXI7CiAg
ICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBKU0M6OkNsYXNzSW5mbyosIFJlZlB0cjxKU0M6OlN0cnVjdHVyZT4gPiBKU0RPTVN0cnVj
dHVyZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6
OldyaXRlQmFycmllcjxKU0M6OlN0cnVjdHVyZT4gPiBKU0RPTVN0cnVjdHVyZU1hcDsKICAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OldyaXRlQmFycmllcjxK
U0M6OkpTT2JqZWN0PiA+IEpTRE9NQ29uc3RydWN0b3JNYXA7CiAKICAgICBjbGFzcyBKU0RPTUds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTR2xvYmFsT2JqZWN0IHsKQEAgLTQ2LDcgKzQ2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RydWN0IEpT
RE9NR2xvYmFsT2JqZWN0RGF0YTsKIAotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdChOb25OdWxs
UGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwg
SlNDOjpKU09iamVjdCogdGhpc1ZhbHVlKTsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QoSlND
OjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiwgSlNDOjpKU09iamVjdCogdGhpc1ZhbHVlKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAg
SlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7IH0K
QEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKaW5kZXggNTg0ZjYxMGNjZTkxMTNhNzljOGU3ZTYyNDI0MGRiM2M5OWMwZTk2YS4u
MTBmN2NkOTk3ZThlZjJlMThiMTVmZDM2OGI3YWU3NDMxYjJhYmMwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00NSw4ICs0NSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6
c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsK
IAotSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIEpTRE9NV2lu
ZG93U2hlbGwqIHNoZWxsKQotICAgIDogSlNET01HbG9iYWxPYmplY3Qoc3RydWN0dXJlLCBzaGVs
bC0+d29ybGQoKSwgc2hlbGwpCitKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERP
TVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKKyAgICA6IEpTRE9NR2xv
YmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgc2hlbGwtPndvcmxkKCksIHNoZWxsKQog
ICAgICwgbV9pbXBsKHdpbmRvdykKICAgICAsIG1fc2hlbGwoc2hlbGwpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IGQxOTI2NTAxODdmOGM4
NGFhOGNiMWEyYWE3ODU3YzBmZmQyZDU0MDUuLjk0NmY5NWM3ZDQzMjAzOTU4YzM4YTMyYjAyZTY2
NjI5MWI5OGI4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBK
U0RPTVdpbmRvd0Jhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogICAgICAgICB0eXBl
ZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBKU0RP
TVdpbmRvd0Jhc2UoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+LCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKKyAgICAgICAgSlNET01XaW5kb3dCYXNl
KEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPERPTVdpbmRv
dz4sIEpTRE9NV2luZG93U2hlbGwqKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCB1cGRh
dGVEb2N1bWVudCgpOwpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGJhNWIwY2NiNDVkOTUwMTUxOWY5Yzg2ZmU4
NzU0MTdlN2Y4NDRjYTUuLjBhZWM5Njg4NGQ2ZWJjNWE0NTlkNTc5ODA2MGM1OGEzN2ZjMWVkYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNET01XaW5kb3dT
aGVsbCk7CiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dTaGVsbDo6c19pbmZvID0geyAiSlNE
T01XaW5kb3dTaGVsbCIsICZCYXNlOjpzX2luZm8sIDAsIDAgfTsKIAogSlNET01XaW5kb3dTaGVs
bDo6SlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBET01XcmFw
cGVyV29ybGQqIHdvcmxkKQotICAgIDogQmFzZShKU0RPTVdpbmRvd1NoZWxsOjpjcmVhdGVTdHJ1
Y3R1cmUoKndvcmxkLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKSkKKyAgICA6IEJhc2UoKndvcmxk
LT5nbG9iYWxEYXRhKCksIEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqd29ybGQt
Pmdsb2JhbERhdGEoKSwganNOdWxsKCkpKQogICAgICwgbV93b3JsZCh3b3JsZCkKIHsKICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtNjAsMTEgKzYwLDExIEBAIHZvaWQgSlNET01X
aW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiAg
ICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNv
IGl0IGlzbid0IGNvbGxlY3RlZAogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBv
YmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0
ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKLSAgICBSZWZQdHI8U3RydWN0dXJl
PiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKLSAgICBT
dHJvbmc8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5kb3c6OmNvbW1v
bkpTR2xvYmFsRGF0YSgpLCBuZXcgSlNET01XaW5kb3dQcm90b3R5cGUoMCwgcHJvdG90eXBlU3Ry
dWN0dXJlLnJlbGVhc2UoKSkpOworICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0g
SlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNvbW1v
bkpTR2xvYmFsRGF0YSgpLCBqc051bGwoKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93UHJvdG90
eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgbmV3IEpT
RE9NV2luZG93UHJvdG90eXBlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIDAs
IHByb3RvdHlwZVN0cnVjdHVyZSkpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
ID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRv
dyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdyhz
dHJ1Y3R1cmUucmVsZWFzZSgpLCBkb21XaW5kb3csIHRoaXMpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNvbW1v
bkpTR2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOworICAgIEpTRE9NV2luZG93KiBqc0RP
TVdpbmRvdyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdp
bmRvdygqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdp
bmRvdywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RPTVdpbmRvdyk7CiAgICAgc2V0V2luZG93
KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCA1NzVi
Mjk2YzQ5Y2VjYjM1OGUxODQ4MmNkNmI1OGRjMGZmY2NkYmI1Li5jMmM1MzM2YWVkYTZhNmJlMTdl
NWExZjE3YzAyYjRiNzc0NWJkM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5oCkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7IAogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oCmluZGV4IDBmODAzMWMwZmE5YmY0ZDM1ZDZjZmYxZTM1OWYxZTQ1ZDYyZWU4
NWEuLjhkZjU4MDExZTM5ZjIyYmY5N2IwNTY2YTc4YjU1ODU0OGM3MzY2N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBSZW5hbWUgdG8gSlNET01XcmFwcGVyLgogY2xhc3Mg
RE9NT2JqZWN0IDogcHVibGljIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKIHByb3Rl
Y3RlZDoKLSAgICBleHBsaWNpdCBET01PYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlKSAKKyAg
ICBleHBsaWNpdCBET01PYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSAKICAgICAgICAgOiBKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGU0NDRkODg4NDAw
Yzg3YjlkN2M3ZGE5OGFjMzZhODJiMGEwMzk4MzUuLjhkYzBlMWZiNzI3YjlhMmZiMTIzYzUwM2Uz
OTk3OWI2ODQ2YWFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcApAQCAtMzgsNyArMzgsMTEgQEAgSlNFdmVudExpc3RlbmVyOjpKU0V2ZW50
TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0EK
ICAgICAsIG1faXNBdHRyaWJ1dGUoaXNBdHRyaWJ1dGUpCiAgICAgLCBtX2lzb2xhdGVkV29ybGQo
aXNvbGF0ZWRXb3JsZCkKIHsKLSAgICBtX2pzRnVuY3Rpb24uc2V0KCptX2lzb2xhdGVkV29ybGQt
Pmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGlmICh3cmFwcGVyKQorICAg
ICAgICBtX2pzRnVuY3Rpb24uc2V0KCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3Jh
cHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7CisK
IH0KIAogSlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExpc3RlbmVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKaW5kZXggNjU0ZTIyM2ZhOGRi
NWJmYWFhYWNlZGZlZDM1Y2Y3MDJhNzk5M2ExMy4uNGVmNDA1ZGRjZWVhZGM1NzFhMmI1ZjlmZDdk
MGFmYTViOTJjY2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bWFnZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHB1YmxpYzoKICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVj
dHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5j
cHAKaW5kZXggYTkyZWQ0NzBjNDkyOWE3MDNkMTE4Y2ZhMmE3Y2EwYjljMWY5NDE3YS4uNWI0NDll
NjlmZmM1YWE5ODcwMGNlYmI1NTMyZTNjZjEzNDZkNTc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApAQCAtNDgsOCArNDgsOCBAQCBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9X
UkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBpbWFnZURhdGEpOwogICAgIElk
ZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRhdGEiKTsKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIGNwYUNsYXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVsQXJyYXkiLCAmSlNCeXRlQXJyYXk6OkJh
c2U6OnNfaW5mbywgMCwgMCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFN0cnVj
dHVyZT4sIGNwYVN0cnVjdHVyZSwgKEpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBqc051bGwoKSwgJmNwYUNsYXNzSW5mbykpKTsKLSAgICB3cmFwcGVyLT5w
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgbmV3IChleGVjKSBKU0J5dGVB
cnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ryb25nPFN0cnVj
dHVyZT4sIGNwYVN0cnVjdHVyZSwgKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNCeXRlQXJyYXk6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpLCAmY3BhQ2xhc3NJbmZv
KSkpOworICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGRhdGFOYW1l
LCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5KGV4ZWMsIGNwYVN0cnVjdHVyZS5nZXQoKSwgaW1hZ2VE
YXRhLT5kYXRhKCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgZXhlYy0+
aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0aCgp
KTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAppbmRleCA4YTE4MDA3MWNhZjA1NmNjYjJhMmZj
OTBiY2UxZTgxMGJkZDQ1Yjk0Li4zMzE3OTc4NTQ4NWNmZDE4MmE4NzJmYjJhZTQ3MzU5YjIwYzMy
MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1
Y3Rvci5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIEpTT3B0aW9uQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAK
aW5kZXggMWM5MDRiMDhhMGZkNTE3ODUxZTk2Yzg0Y2ZkYWE1ZTdkYWJjNjNjNS4uY2JmMDFiN2Nh
ZmQ3YjViYTlhMjI1ZTJmNzFkOWY4YTUzMTJmZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKQEAgLTQ1LDggKzQ1LDggQEAg
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dvcmtlckNvbnRleHRCYXNlKTsKIAogY29uc3Qg
Q2xhc3NJbmZvIEpTV29ya2VyQ29udGV4dEJhc2U6OnNfaW5mbyA9IHsgIldvcmtlckNvbnRleHQi
LCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1KU1dvcmtlckNvbnRleHRC
YXNlOjpKU1dvcmtlckNvbnRleHRCYXNlKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJl
PiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gaW1wbCkKLSAgICA6IEpTRE9N
R2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgbm9ybWFsV29ybGQoKmltcGwtPnNjcmlwdCgpLT5nbG9i
YWxEYXRhKCkpLCB0aGlzKQorSlNXb3JrZXJDb250ZXh0QmFzZTo6SlNXb3JrZXJDb250ZXh0QmFz
ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBpbXBsKQorICAgIDogSlNET01HbG9iYWxPYmpl
Y3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBub3JtYWxXb3JsZChnbG9iYWxEYXRhKSwgdGhpcykK
ICAgICAsIG1faW1wbChpbXBsKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgKaW5k
ZXggYjljMjM0YTJiZmJiZDgyYTA1ZjU4MjE0MWRhYzExMjBhYTAyNzI0OC4uYWY2OGI1ODExMTBm
N2M0YjJhYmRkYmM3ZjlkNjY4YmM3NDY2MThmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0QmFzZSA6IHB1YmxpYyBKU0RP
TUdsb2JhbE9iamVjdCB7CiAgICAgICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEpTV29ya2VyQ29udGV4dEJhc2UoTm9uTnVsbFBhc3NSZWZQ
dHI8SlNDOjpTdHJ1Y3R1cmU+LCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KTsKKyAgICAgICAg
SlNXb3JrZXJDb250ZXh0QmFzZShKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3RydWN0dXJlKiwg
UGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0Pik7CiAgICAgICAgIHZpcnR1YWwgfkpTV29ya2VyQ29u
dGV4dEJhc2UoKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZv
OwpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlckNv
bnRleHQqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KICAgICAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Q7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0
cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAppbmRleCBl
ZTk4MWEyNTFiNjQ5ODNkNTM4Y2I5OWMzOTA1Y2EwNDJiODViN2RlLi5hODVlMTZmOTc3NTk5NTM3
MWVjNzZlM2YyYzMyYzg0MmE5OGVmOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaApAQCAtMzMsNiArMzMsNyBAQAogI2RlZmlu
ZSBTY3JpcHRDYWNoZWRGcmFtZURhdGFfaAogCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCmluZGV4IDBhMGViOTEwOTNmODE5ZTdjOGMxMGJlYzFiMWVlOGZlZDFkYmQyYjQu
LjBlN2ZlZDAwNTJkNDllZmM3NzcxMWYxNjcyOWI5OWEzZDA4NzM0NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250
ZXh0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggNWQ2MWE4NDUwZTIwYjMyZTVmOGZhMmNkNjUzZTA4YTNkY2UzOTY2Ni4u
MTdiMmM2MTRkOGRhM2Q5ZTQ5ZDAzNDJkZjQxOGNlZDVmMWI1Mjg1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAg
LTczLDI1ICs3MywyNSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQo
KQogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlw
ZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9i
YWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0
cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHByb3RvdHlwZS4pCi0gICAgUmVmUHRyPFN0cnVj
dHVyZT4gd29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dFBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIGpzTnVsbCgpKTsKLSAgICBT
dHJvbmc8SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlKCpt
X2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHRQcm90
b3R5cGUoMCwgd29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS5yZWxlYXNlKCkpKTsKKyAg
ICBTdHJ1Y3R1cmUqIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1dvcmtlckNv
bnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBqc051bGwoKSk7
CisgICAgU3Ryb25nPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2VyQ29udGV4dFByb3Rv
dHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250
ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1
Y3R1cmUpKTsKIAogICAgIGlmIChtX3dvcmtlckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCgpKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsK
LSAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNh
dGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQo
KSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIGRlZGljYXRlZENvbnRleHRQ
cm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCpt
X2dsb2JhbERhdGEsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgICAgICBT
dHJ1Y3R1cmUqIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3
b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVk
V29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9i
YWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1
Y3R1cmUpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBkZWRpY2F0ZWRDb250ZXh0
UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgq
bV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1f
Z2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0
QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5n
ZXQoKSk7CiAgICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1Zh
bHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV93
b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSk7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtl
ckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJD
b250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29u
dGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcg
KG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHNo
YXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKSk7Ci0gICAgICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3Ry
dWN0dXJlKCptX2dsb2JhbERhdGEsIHNoYXJlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1NoYXJl
ZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3
b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29y
a2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRh
LCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBl
KCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0
ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBzaGFyZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsK
IAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcg
KG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxl
YXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAg
ICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2Jh
bERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29udGV4dCgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUsIG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAg
d29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwg
MCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIHNoYXJlZENvbnRleHRQ
cm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29u
dGV4dFdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDMxNDEyZDI3MTllOTMzMDVkM2Zj
ZTgwMzgyNTU1NTVkMzlkMjk5MDguLmU4NGU0YjBiN2RiM2JiZWNkMjgxYWRiNWYyMDUwM2NmZmEy
MTRhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC02ODIsMTEgKzY4MiwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAog
ICAgICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIp
IHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKE5vbk51bGxQ
YXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+LCBKU0RPTVdp
bmRvd1NoZWxsKik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xh
c3NOYW1lKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRp
bXBsVHlwZT4sIEpTRE9NV2luZG93U2hlbGwqKTtcbiIpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShOb25OdWxsUGFzc1JlZlB0cjxKU0M6
OlN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpT
dHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVm
UHRyPEpTQzo6U3RydWN0dXJlPiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBs
VHlwZT4pO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFt
ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjwkaW1wbFR5
cGU+KTtcbiIpOwogICAgIH0KIAogICAgICMgUHJvdG90eXBlCkBAIC03NDYsNyArNzQ2LDcgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpOZWVkc1Ro
aXNDb252ZXJzaW9uIn0gPSAxOwogICAgIH0KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LAotICAg
ICAgICAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
XG4iIC4KKyAgICAgICAgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlc
biIgLgogICAgICAgICAiICAgIHtcbiIgLgogICAgICAgICAiICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7XG4iIC4KICAgICAgICAgIiAgICB9XG5cbiIpOwpAQCAtOTU4LDcgKzk1OCw3IEBAIHN1YiBH
ZW5lcmF0ZUhlYWRlcgogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzTWFy
a0NoaWxkcmVuIn0gPSAxOwogICAgIH0KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LAotICAgICAg
ICAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4i
IC4KKyAgICAgICAgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIg
LgogICAgICAgICAiICAgIHtcbiIgLgogICAgICAgICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7
XG4iIC4KICAgICAgICAgIiAgICB9XG4iKTsKQEAgLTk3MCw3ICs5NzAsNyBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKICAgICAjIEN1c3RvbSBkZWZpbmVHZXR0ZXIgZnVuY3Rpb24KICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU09iamVjdCog
Z2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpO1xuIikgaWYgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJvdG90eXBlRGVmaW5lR2V0dGVyIn07CiAKLSAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0
dXJlPiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpIHsgfVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
OiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkgeyB9XG4iKTsKIAogICAgICMgc3RydWN0dXJlIGZsYWdzCiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInByb3RlY3RlZDpcbiIpOwpAQCAtMTQwNywxNCArMTQwNywxNCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBl
KCJKU0RPTVdpbmRvd1NoZWxsIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFz
c05hbWV9OjokY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHN0
cnVjdHVyZSwgaW1wbCwgc2hlbGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIk
e2NsYXNzTmFtZX06OiRjbGFzc05hbWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwsIEpTRE9NV2luZG93U2hl
bGwqIHNoZWxsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVu
dENsYXNzTmFtZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHNoZWxsKVxuIik7CiAgICAg
fSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0
In0pIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRpbnRlcmZhY2VOYW1lKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBs
KVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFt
ZShzdHJ1Y3R1cmUsIGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2Ns
YXNzTmFtZX06OiRjbGFzc05hbWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKGdsb2JhbERhdGEsIHN0cnVj
dHVyZSwgaW1wbClcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRp
bXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NO
YW1lfTo6JGNsYXNzTmFtZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAg
aWYgKCRoYXNQYXJlbnQpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDog
JHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbClcbiIpOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMTQ0Miw5ICsxNDQyLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9
OjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAg
IGlmICgkaGFzUGFyZW50ICYmICRwYXJlbnRDbGFzc05hbWUgbmUgIkpTQzo6RE9NTm9kZUZpbHRl
ciIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcgKGV4
ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgJHtwYXJlbnRDbGFzc05h
bWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIG5ldyAoZXhlYykgJHtjbGFzc05hbWV9
UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Q
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksICR7cGFyZW50Q2xh
c3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBu
ZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1l
fVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CkBAIC0yODcyLDcgKzI4NzIsNyBAQCBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBz
X2luZm87XG4iKTsKIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIH1cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRp
bWVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgKaW5k
ZXggODU4MTVmYmQ0Njk4NDVhZmU2NTA0ZGY2ZjZiOTliZTc0YjcyZjY3MC4uYzk2ODg3YTMzODNh
MWIzOTE3Mzg5Y2E2NzliOGE2YTk0YjBhMDRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9D
UnVudGltZU9iamVjdC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBj
b25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCmluZGV4IGVmMGViMDI0MWQ5Nzdh
NmZkYzYwNjEyZTM4Y2M1MTYyMjY5YmJjOGUuLmQwZmEzY2YzZTc5MDc4MDc2MjcwMDc5OGRhNTcw
YjRkMjJhMDIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCkBAIC0x
MTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAKaW5kZXggODA2ZWZh
NjAxMGU3NzczNDM4N2I4OWNkNTg0NDVkNDdiZDhiNTI5Ni4uYWI2NDEzMjBhYTQ1MDExYWFjMTQ2
ZTZiZGNhZGI4ZmQ5MzcwNWRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YVJ1bnRpbWVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0ph
dmFSdW50aW1lT2JqZWN0LmgKaW5kZXggMDNmMTE2ZmFkZjVkYTQwZThkODhmNzY4ZDMyMGQxNjYz
YjQyZDIwYi4uOGEzNjEyZjViNmVhYzhhODI0ZjIxZmE4ZDQzODM1Mzg5NDAyYzIwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAppbmRleCBiMjlhMzMzOTk5NWJiOTU5
Y2JlYWVhMzQ5ZTNmYzJkOWI3MWY5YTlmLi5mOGVhZGE3Y2NhYjVjYWM4ODRiOGRkYjZmYzliNDQx
NTA0NzcyOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVu
dGltZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1l
T2JqZWN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCmluZGV4IDRmOTNjZmE2YWY5
NzE2ZGRkYjRmZDFkZWUzYzFjODQ5ZjU1M2Y5ZTYuLjYxYzY3Y2I5MDliNDQzNmZkNjdkMzY4Nzg1
YjBlMmUxYTUxYTQ2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbQpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggNGVmMGFmZDU3
Mzk3ZWE1Zjc1ZmQ1ODM2YTM2NzQ2MDQ1YmEzNzI4MS4uZWRlZDJmZWE0NTA2NjdlMTE5OTdmYWRl
MmVhYmQwNjU5ZWM0NTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGEx
Mzg2NjBiNzI3ODAxMjgzOThlMzQxOWY4YmMzNDM1MTEzYWFhYzMuLmUzYzhmNTczN2UzMmI5MjIw
M2RlOTU4MGQ1ZWZiOWNmNWJiODNmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6
c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgMAogUnVudGlt
ZUFycmF5OjpSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBCaW5kaW5nczo6QXJyYXkqIGFy
cmF5KQogICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHBy
b3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAvLyBXZSBuZWVkIHRv
IHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJhcnJheSIuCi0gICAgOiBKU0Fy
cmF5KGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZUFycmF5PihleGVjKSkKKyAgICA6
IEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1
bnRpbWVBcnJheT4oZXhlYykpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAg
ICBzZXRTdWJjbGFzc0RhdGEoYXJyYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmgKaW5kZXggOTU1NTU0NTJkZWY5NmFmMDZjYTY5NWRmNWRiMDhkMDdhOGE2YzA1OC4uOGZkMzA1
MjkyYzFhYjY1YjQwOGYyYzgyNWUwNjM3MjMzM2FjM2Y2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQs
ICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3Bw
CmluZGV4IDRiNWVjZmZjY2E0MzI4ODM3ZTk5NGNiMzRjODExOGFiNmQyYjZkNmIuLjI5N2ZiNmJk
NWYyMGZjMzIxMGQ4OWM4MWZjYjMyZGEwZmYyMTBmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNDMsNyArNDMsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKFJ1bnRpbWVNZXRob2QpOwogCiBjb25zdCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6
c19pbmZvID0geyAiUnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAs
IDAgfTsKIAotUnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQmluZGluZ3M6Ok1ldGhvZExpc3Qm
IG0pCitSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbSkKICAgICAvLyBDYWxsZXJzIHdp
bGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGNvcnJlc3BvbmRpbmcg
dG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtIi4KICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50KQogICAgICwgX21l
dGhvZExpc3QobmV3IE1ldGhvZExpc3QobSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5oCmluZGV4IDlkZjc5NmViMDcxNWJmMzJiMzRkMjIzZmI1MmIzYzgyNjJiYzZiZTMuLjcx
MmEzMDU5NjczYjQyZTVkYTQ5NjNjNDE4OTU4YjVjZDJjODliMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBSdW50aW1lTWV0aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGlj
OgotICAgIFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6
TWV0aG9kTGlzdCYpOworICAgIFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9k
TGlzdCYpOwogICAgIEJpbmRpbmdzOjpNZXRob2RMaXN0KiBtZXRob2RzKCkgY29uc3QgeyByZXR1
cm4gX21ldGhvZExpc3QuZ2V0KCk7IH0KIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QtPmZ1bmN0aW9uUHJvdG90eXBlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCBk
ZTE5NjRhNDRhZjJlNDg4YzAyM2MyN2M0YzA3NWQ3Y2NiNzhjZGZhLi43OWJjYmNlNjEyYjI5OTRk
NjgxMzIyMGI4Yjc5ZTdhNjQzZGY4OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogY29u
c3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAm
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotUnVudGltZU9iamVj
dDo6UnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2UpCitSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNz
UmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1faW5zdGFuY2UoaW5zdGFuY2UpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmluZGV4IGJiNmQwNTEwZjI4ZDQz
ZGI1NzUxODUwOWUxMGJkMTJhNDNkMzRhYjQuLjg5OTgxMDJlODk4ZWIwMzMwZjc0YTA2ZDUyMDI1
Nzg2NDU0YjE0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIFJ1bnRpbWVPYmplY3Qg
OiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSdW50aW1l
T2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgUGFzc1JlZlB0cjxJbnN0YW5jZT4pOworICAgIFJ1bnRpbWVPYmplY3QoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7
CiAgICAgdmlydHVhbCB+UnVudGltZU9iamVjdCgpOwogCiAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3Vu
dCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9I
aXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4
IGI5Yzk5ODNlMzI4YjNlZWIzM2UxYmQyZjBmMmFlYmM3YmIzNjI0ZjUuLmY5NjQ2OWY0YzliNjRl
YmY3ZjEwNWZiOThlMDMzZTZmZTIzMGZjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJ
dGVtLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE1OTI1YTgxODU3MDhj
OWEwMzlkYTMxMzBjMTE4OGY1NTQ4YWUzNjIuLjQ4ZmQ0ZGMwNDYzMjMzOTJkZjA4YjY2NGUyYmJk
OWU3YjVkNTg2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNC0x
MyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAg
ICBVcGRhdGUgV2ViS2l0IGZvciB0aGUgd29ybGQgb2YgR0MgYWxsb2NhdGVkIFN0cnVjdHVyZQor
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdl
YktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oOgorICAgICAgICAoV2ViS2l0OjpQcm94
eVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisKIDIwMTEtMDQtMTIgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkg
UHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAppbmRleCA1N2Q1ODc3NGE2
Nzg2Y2RlMzJjYjVlMzNkM2ZkZmVjNmM2ZjkyNzJjLi5iZjM2ZmJkNWYzZDZlMmEwMDRjMTMxOGI4
MmY1MjJmOGUzMDk5NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogI2RlZmluZSBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxEYXRhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYktpdC9ucGFwaS5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXgg
ZjI2Yjg1ZGNlYTJhMzlmYTUzOWYwODg2MzQ1ZjVhNTE4MjAyNDMzNi4uMWY5NmM1M2RiOGIyNzM3
NWE1OWVhNjI1Zjk0YjVkOWYxY2Q5YjlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIH0KIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAppbmRleCBhMDdjODZjODg4ZTc3YmEzYmMx
NjRjNGRhYzA3N2U4MmYyMDdmM2I0Li5kYTZkZTg4YTA2ZDA1NzIyNjRiNjI2M2JmNzI2ODJjMTdm
MDM1MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94
eVJ1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eVJ1bnRpbWVPYmplY3QuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBQcm94
eUluc3RhbmNlKiBnZXRJbnRlcm5hbFByb3h5SW5zdGFuY2UoKSBjb25zdDsKIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYwN2ZjOWQ0OTFjZWY4NzdlYzVmZDgxZTlmYWU0ZGFj
YzUxMTU3YzguLjNiOWNiODZmOGRmOTEwMzU5YmMyNzI3ODMyMGMzMTliNWM3ODQ2ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBVcGRhdGUgV0syIGZvciB0aGUgd29y
bGQgb2YgR0MgYWxsb2NhdGVkIFN0cnVjdHVyZQorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUpOgorCiAyMDExLTA0LTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKaW5kZXggZjBj
MjQyNGFkYmZiMWFiYTM3NzRiMjliZmNhYTQ2MTkzYWI4MzRlOS4uMGZkMDFlYWUyYzM1M2Y0YmEy
ZGRmNTc4NDdmMzViYTUyYTAyYmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9ucElkZW50aWZpZXI7IH0KIAogcHJpdmF0ZTogICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaAppbmRleCBlOGEwOGRhZDQ4N2UwMDdjOGY0Njg2Y2FlYjU0YTc0MTkwMmNjMzBj
Li5lZDEyNGI5OGM3ZDY5Y2Y5MmE3ZTUxOTZiOWQzMjdmNTgzY2NhZjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRl
U3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89487</attachid>
            <date>2011-04-13 16:18:00 -0700</date>
            <delta_ts>2011-04-13 17:04:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58483-20110413161759.patch</filename>
            <type>text/plain</type>
            <size>382416</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3NTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2djLTEwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMC5odG1sCmluZGV4IGFh
MWRkNDViMmFlNjA1OGE5ZTkzMjA1OGVjYjc0ZmJmODUyYWRkOGEuLmE5NTcxYThiYmZkMTAzM2Nk
MWI1MmJmYzU5NmM1Y2FiNWVhMmQ5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2djLTEwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAuaHRtbApAQCAtMjAs
NiArMjAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
ICAgICB7CiAgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgIHdpbmRvdy5m
cmFtZXMubXlmcmFtZS5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7CiAgICAgICAgIGJlZm9yZSA9IEdD
Q29udHJvbGxlci5nZXRKU09iamVjdENvdW50KCk7CiAgICAgICAgIAogICAgICAgICB3aW5kb3cu
ZnJhbWVzLm15ZnJhbWUubG9jYXRpb24ucmVsb2FkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCmluZGV4IGU4YWUyNzQ5
Yjc0N2I0MmE2MzdjNmJlNjJlZjlhZjI2NmIxZGNjZDkuLmZhOWQyMTZkZDExMjUwMTI3ZWU2ODVm
ZTFlYzhkNTlmZjI2OGM5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkNhbGxiYWNrQ29uc3RydWN0b3IiLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8s
IDAsIDAgfTsKIAotSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rv
ckNhbGxiYWNrIGNhbGxiYWNrKQorSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNr
IGNhbGxiYWNrKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKQogICAgICwgbV9jbGFzcyhqc0NsYXNzKQogICAgICwgbV9jYWxsYmFjayhjYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oCmluZGV4IDAwMWM0MTYxNmRmMDg3NjA0ZTc4NjhkMDMwZTUxMzFkM2RiYjM2N2IuLjY0
YjIzN2RmZDNkOGJhYWNjOGE5OTM4OTM4MGYwNWVkZWE2OTIxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtMzMsMTMgKzMz
LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3IgOiBw
dWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBKU0NhbGxiYWNr
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBKU0NsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIEpT
Q2FsbGJhY2tDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTQ2xhc3NS
ZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdmlydHVhbCB+SlND
YWxsYmFja0NvbnN0cnVjdG9yKCk7CiAgICAgSlNDbGFzc1JlZiBjbGFzc1JlZigpIGNvbnN0IHsg
cmV0dXJuIG1fY2xhc3M7IH0KICAgICBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sg
Y2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrOyB9CiAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggMTFmYjk1YzVjMTBm
MjM4YzY4NzEyMDdkZjc4ZjIxMzkyOGNjMWJkZi4uNTVjOWVkNGFlODdjMjI5MGVmYjQ4MDQ0NmU5
ODA2NWQ5YzE4NDllZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tGdW5jdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBJbnRl
cm5hbEZ1bmN0aW9uIG1pc2gtbWFzaGVzIGNvbnN0cnVjdG9yIGFuZCBmdW5jdGlvbiBiZWhhdmlv
ciAtLSB3ZSBzaG91bGQgCiAgICAgLy8gcmVmYWN0b3IgdGhlIGNvZGUgc28gdGhpcyBvdmVycmlk
ZSBpc24ndCBuZWNlc3NhcnkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAorICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsgCiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDYwZmQ4Y2QzYTZmM2M5NzRl
NWZjMjBjOWVhMTVmYjQ4N2EyNDFiMjYuLmQyZTBkY2I3YTNhNDg5Yjg1OWY4YmJkYjU2ODI1YzRh
YjI2MWY2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCkBAIC0xMTcsOCArMTE3LDggQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIDogV2Vh
a0hhbmRsZU93bmVyIHsKIHRlbXBsYXRlIDxjbGFzcyBCYXNlPgogY2xhc3MgSlNDYWxsYmFja09i
amVjdCA6IHB1YmxpYyBCYXNlIHsKIHB1YmxpYzoKLSAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlND
bGFzc1JlZiwgdm9pZCogZGF0YSk7Ci0gICAgSlNDYWxsYmFja09iamVjdChKU0NsYXNzUmVmLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgdm9pZCogZGF0
YSk7CisgICAgSlNDYWxsYmFja09iamVjdChKU0dsb2JhbERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1
Y3R1cmUqKTsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZSh2b2lkKiBkYXRhKTsKICAgICB2b2lkKiBn
ZXRQcml2YXRlKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIEpTQ2xhc3NSZWYg
Y2xhc3NSZWYoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0RGF0YS0+anNDbGFzczsg
fQogICAgIGJvb2wgaW5oZXJpdHMoSlNDbGFzc1JlZikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsgCiAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBCYXNlOjpBbm9ueW1vdXNTbG90Q291bnQsICZz
X2luZm8pOyAKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDUwYjg0Yzc2ZjJhNjA4OTU5ZDJjYjA3MTM4
OWNiNmQwMzNlYjk1MGIuLjg2MzllMWFlZjk5OTVmMmNmMWU4OTM0ZDZjMWM5ZDZiYmY1ZTM3MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PEJh
c2U+KiBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojphc0NhbGxiYWNrT2JqZWN0KEpTVmFsdWUKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1KU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxi
YWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFz
cywgdm9pZCogZGF0YSkKK0pTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogQmFzZShn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKGFkb3B0
UHRyKG5ldyBKU0NhbGxiYWNrT2JqZWN0RGF0YShkYXRhLCBqc0NsYXNzKSkpCiB7CkBAIC02MSw4
ICs2MSw4IEBAIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAvLyBHbG9iYWwgb2JqZWN0IGNvbnN0
cnVjdG9yLgogLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRvIGEgc2VwYXJhdGUgSlNHbG9iYWxDYWxs
YmFja09iamVjdCBjbGFzcyBkZXJpdmVkIGZyb20gdGhpcyBvbmUuCiB0ZW1wbGF0ZSA8Y2xhc3Mg
QmFzZT4KLUpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoSlNDbGFzc1Jl
ZiBqc0NsYXNzLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6
IEJhc2Uoc3RydWN0dXJlKQorSlNDYWxsYmFja09iamVjdDxCYXNlPjo6SlNDYWxsYmFja09iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2xhc3NSZWYganNDbGFzcywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1f
Y2FsbGJhY2tPYmplY3REYXRhKGFkb3B0UHRyKG5ldyBKU0NhbGxiYWNrT2JqZWN0RGF0YSgwLCBq
c0NsYXNzKSkpCiB7CiAgICAgQVNTRVJUKEJhc2U6OmluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAxNThiMjU2MjZkMmEx
NDYyNjRhNTNiOWMzZGIwMDc5NzM3Y2EyYzI1Li4wM2QwNjIyNGM4YTYwOTQ1Yzc0NTE0MjM0M2Fj
ODQ5ZTE0MWYyMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRD
cmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzCiAgICAgICAgIHJl
dHVybiBKU0dsb2JhbENvbnRleHRSZXRhaW4odG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpKTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bmV3IChnbG9iYWxEYXRhLmdldCgpKSBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pihn
bG9iYWxPYmplY3RDbGFzcywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0
ZVN0cnVjdHVyZSgqZ2xvYmFsRGF0YSwganNOdWxsKCkpKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbmV3IChnbG9iYWxEYXRhLmdldCgpKSBKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0PigqZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0Q2xhc3MsIEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVs
bCgpKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFzcy0+cHJvdG90eXBlKGV4
ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQpAQCAtMTQxLDkgKzE0MSwxMCBAQCB2b2lkIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKICAgICAvLyAgIGl0IG1h
eSAgcmVsZWFzZSBhIGxvdCBvZiBHQyBtZW1vcnkgLSBydW4gdGhlIGdhcmJhZ2UgY29sbGVjdG9y
IG5vdy4KICAgICAvLyAqIElmIHRoZXJlIGFyZSBtb3JlIHJlZmVyZW5jZXMgcmVtYWluaW5nIHRo
ZSB0aGUgZ2xvYmFsIG9iamVjdCwgdGhlbiBkbyBub3RoaW5nCiAgICAgLy8gICAoc3BlY2lmaWNh
bGx5IHRoYXQgaXMgbW9yZSBwcm90ZWN0cywgd2hpY2ggd2UgYXNzdW1lIGNvbWUgZnJvbSBvdGhl
ciBKU0dsb2JhbENvbnRleHRSZWZzKS4KLSAgICBpZiAocmVsZWFzaW5nQ29udGV4dEdyb3VwKQor
ICAgIGlmIChyZWxlYXNpbmdDb250ZXh0R3JvdXApIHsKKyAgICAgICAgZ2xvYmFsRGF0YS5jbGVh
ckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAgICAgICAgIGdsb2JhbERhdGEuaGVhcC5kZXN0cm95KCk7
Ci0gICAgZWxzZSBpZiAocmVsZWFzaW5nR2xvYmFsT2JqZWN0KQorICAgIH0gZWxzZSBpZiAocmVs
ZWFzaW5nR2xvYmFsT2JqZWN0KQogICAgICAgICBnbG9iYWxEYXRhLmhlYXAuY29sbGVjdEFsbEdh
cmJhZ2UoKTsKIAogICAgIGdsb2JhbERhdGEuZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CmluZGV4IGZhMDM2N2Q0MmQ0OWYwZTcwYTU4Y2I0N2RkOWQzODhjNWI2YzY4OTUuLjZkNmNiODY4
NGFjMGVkMGYxZDRmNzIzNjk3ODM4ZDZlOWU1NTE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDQxMiBAQAogMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBUdXJuIFN0cnVjdHVyZSBpbnRvIGEgR0Mg
YWxsb2NhdGVkIG9iamVjdC4gIE1vc3Qgb2YgdGhpcyBwYXRjaAorICAgICAgICBpcyB0aGUgbWVj
aGFuaWNhbCBjaGFuZ2Ugb2YgcmVwbGFjaW5nIHZhcmlhdGlvbnMgb24gUmVmUHRyPFN0cnVjdHVy
ZT4KKyAgICAgICAgd2l0aCBlaXRoZXIgU3RydWN0dXJlKiAoZm9yIGFyZ3VtZW50cyBhbmQgbG9j
YWxzKSwgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4KKyAgICAgICAgZm9yIHRoZSBmZXcgY2FzZXMg
d2hlcmUgU3RydWN0dXJlcyBhcmUgaGVsZCBieSBHQyBhbGxvY2F0ZWQgb2JqZWN0cworICAgICAg
ICBhbmQgU3Ryb25nPFN0cnVjdHVyZT4gZm9yIHRoZSByb290IHN0cnVjdHVyZSBvYmplY3RzIGlu
IEdsb2JhbERhdGEuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29uc3RydWN0
b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6OjpKU0Nh
bGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptYXJrU3RydWN0dXJl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6
c2V0U2Vlbik6CisgICAgICAgIChKU0M6Okdsb2JhbFJlc29sdmVJbmZvOjpHbG9iYWxSZXNvbHZl
SW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY1N0dWJJbmZvOjpzZXQp
OgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OlBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdDo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9u
OjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTdHViSW5mbzo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Omlu
aXRHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlk
Q2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkUmVw
bGFjZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24pOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
ckFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogaGVhcC9IYW5kbGUuaDoK
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjpkcmFpbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJr
ZWRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzd2VlcCk6CisgICAgICAgICog
aGVhcC9TdHJvbmcuaDoKKyAgICAgICAgKEpTQzo6U3Ryb25nOjpTdHJvbmcpOgorICAgICAgICAo
SlNDOjpTdHJvbmc6OnNldCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dW5jYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVuY2FjaGVHZXRCeUlEKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
OjpwYXRjaE1ldGhvZENhbGxQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpw
YXRjaE1ldGhvZENhbGxQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNl
bGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xp
c3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6dHJ5Q2FjaGVQ
dXRCeUlEKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0M6OmdldFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3QpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFj
ZUpJVC5oOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6c3RvcmVQdHJXaXRoV3JpdGVC
YXJyaWVyKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY2xlYW51cEdsb2JhbERhdGEp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmNvcHlSZWdpc3RlcnMpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3Ry
dWN0b3I6OkFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBy
b3RvdHlwZTo6QXJyYXlQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1Nw
bGljZSk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Jh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmg6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyOjpCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcik6CisgICAgICAgICogcnVu
dGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3Ry
dWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpCb29sZWFuT2JqZWN0OjpCb29sZWFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6
OkRhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpEYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RGF0
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OkVycm9ySW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkVycm9yKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlv
bkVycm9yOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVCYXNlOjpFeGVjdXRhYmxlQmFzZSk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpO
YXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0
RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpHZXR0ZXJT
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
aW5pdGlhbGl6ZVRocmVhZGluZ09uY2UpOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAoSlND
OjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpKU0FQSVZh
bHVlV3JhcHBlcik6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OkpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJy
YXkuY3BwOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkpOgorICAgICAg
ICAoSlNDOjpKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheSk6
CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjppc1pvbWJpZSk6
CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0Nl
bGw6OkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjphZGRyZXNzT2ZTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6Om1hcmtDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6SlNWYWx1ZTo6aXNab21iaWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmNsZWFyQnVpbHRp
blN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6YWxsb2Nh
dGVHbG9iYWxIYW5kbGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmNvcHlHbG9iYWxzRnJvbSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpwcm90b3R5cGVDaGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxp
ZCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5QXJyYXkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpKU05vdEFu
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09OT2Jq
ZWN0OjpKU09OT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZUdldHRlcik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6c2VhbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmcmVlemUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRv
cklEKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3Qp
OgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KToKKyAgICAgICAg
KEpTQzo6Y3JlYXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6fkpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aW5oZXJpdG9ySUQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJhbnNpdGlvblRvKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdFdpdGhH
bG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdFdp
dGhHbG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmdldCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnNldENhY2hlZFN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0RW51bWVyYXRpb25DYWNoZSk6
CisgICAgICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTU3RhdGljU2NvcGVPYmplY3Q6OkpTU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAoSlND
OjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OkpTU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAg
KEpTQzo6VHlwZUluZm86OlR5cGVJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJs
ZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmpl
Y3Q6OmNvcHlSZWdpc3RlckFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVyT2JqZWN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTWm9tYmllLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTWm9tYmllLmg6Cisg
ICAgICAgIChKU0M6OkpTWm9tYmllOjpKU1pvbWJpZSk6CisgICAgICAgIChKU0M6OkpTWm9tYmll
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6Ok1hdGhPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
TWF0aE9iamVjdC5oOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvclBy
b3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZl
RXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok51
bWJlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0OjpOdW1iZXJPYmplY3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJl
ck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rv
cjo6T2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25z
dHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVz
QXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlJlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdF
eHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVDaGFpbk5vZGU6OlNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKEpTQzo6U2NvcGVD
aGFpbk5vZGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJp
Y3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpTdHJpbmdP
YmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmg6CisgICAgICAgIChKU0M6OlN0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQ
cm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZTo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRk
UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlw
ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9u
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6Y29weVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1dCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGU6OldlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrOjprZXlGb3JGaW5hbGl6ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
aGFpbjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6aGVhZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6V2Vha0dDTWFwRmlu
YWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRGb3IpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6On5TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNsb3QpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNldE1hcCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTo6c2luZ2xlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6Y2xlYXJTaW5nbGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpzZXRTaW5nbGVUcmFuc2l0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorICAgICAgICAoSlNDOjpEZWZhdWx0V2Vha0dDTWFw
RmluYWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRGb3IpOgorICAgICAgICAoSlNDOjpE
ZWZhdWx0V2Vha0dDTWFwRmluYWxpemVyQ2FsbGJhY2s6OmtleUZvckZpbmFsaXplcik6CisgICAg
ICAgIChKU0M6OldlYWtHQ01hcDo6Y29udGFpbnMpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6
OmZpbmQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OnJlbW92ZSk6CisgICAgICAgIChKU0M6
OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAg
ICAoSlNDOjpXZWFrR0NNYXA6OmZpbmFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFy
cmllci5oOgorICAgICAgICAoSlNDOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpXcml0
ZUJhcnJpZXJCYXNlOjpzZXQpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVy
YXRvciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0aG91dFdyaXRlQmFycmllcik6CisK
KzIwMTEtMDQtMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwogICAgICAgICBS
ZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KIAogICAgICAgICBNYWtlIFByb3BlcnR5TWFw
RW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0b25seS5leHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0b25seS5l
eHAKaW5kZXggMmYxMTY2YzFlZWU4NzljY2I3YWFkN2U3YjAwZDg0ZDFkZmYxNTg1MC4uZjllZWU4
NWZjYzdkNDNkZmRmYzQwYzNmYTg3ZTlhMzg1NjljZGE0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHkuZXhwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cApA
QCAtMSArMSBAQAotX19aTjNKU0MxMEpTRnVuY3Rpb25DMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRK
U0dsb2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRWlS
S05TXzEwSWRlbnRpZmllckVQRnhTMl9FCitfX1pOM0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhl
Y1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRp
ZmllckVQRnhTMl9FCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuSlNWQUxVRTY0b25seS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuSlNWQUxVRTY0b25seS5leHAKaW5kZXggYzY5MzMyMjU2Zjg5MjRlZTQ3N2I2MWVmYjk4
ZjA2YmU1ODY1NjhmYi4uZWFhOWY1MTM5ZjIyZTAzYzgwZWQ3Y2Y0NzkyZTQ4ZGFmOTE2YTYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2
NG9ubHkuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZB
TFVFNjRvbmx5LmV4cApAQCAtMSArMSBAQAotX19aTjNKU0MxMEpTRnVuY3Rpb25DMUVQTlNfOUV4
ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNf
OVN0cnVjdHVyZUVFRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQorX19aTjNKU0MxMEpTRnVu
Y3Rpb25DMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVy
ZUVpUktOU18xMElkZW50aWZpZXJFUEZQdlMyX0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCmluZGV4IDVlYzMzZjYyMjE4ZDVjYTY3NmMyZDMzNTkwNjMwMjA1ZGI3ZWU3
ZTguLmUyMDkyODkwZTFjMTczM2RhMTI5ZTJlNWY5NGJkZGNjZjI1NDFlNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTE0LDE0ICsxMTQsMTQgQEAgX19a
TjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzEw
dGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RQogX19aTjNKU0MxMUpTQnl0
ZUFycmF5MTNzX2RlZmF1bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVTdHJ1
Y3R1cmVFUk5TXzEySlNHbG9iYWxEYXRhRU5TXzdKU1ZhbHVlRVBLTlNfOUNsYXNzSW5mb0UKLV9f
Wk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRU4zV1RGMTdOb25OdWxsUGFzc1Jl
ZlB0cklOU185U3RydWN0dXJlRUVFUE5TM185Qnl0ZUFycmF5RQorX19aTjNKU0MxMUpTQnl0ZUFy
cmF5QzFFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5dGVBcnJheUUKIF9f
Wk4zSlNDMTFNYXJrZWRTcGFjZTIxYWxsb2NhdGVGcm9tU2l6ZUNsYXNzRVJOUzBfOVNpemVDbGFz
c0UKIF9fWk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhF
UE5TXzlFeGVjU3RhdGVFUktOU18xMFNvdXJjZUNvZGVFCiBfX1pOM0pTQzExY3JlYXRlRXJyb3JF
UE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDMTFyZWdFeHBGbGFnc0VSS05T
XzdVU3RyaW5nRQogX19aTjNKU0MxMkRhdGVJbnN0YW5jZTZzX2luZm9FCi1fX1pOM0pTQzEyRGF0
ZUluc3RhbmNlQzFFUE5TXzlFeGVjU3RhdGVFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlT
dHJ1Y3R1cmVFRUVkCitfX1pOM0pTQzEyRGF0ZUluc3RhbmNlQzFFUE5TXzlFeGVjU3RhdGVFUE5T
XzlTdHJ1Y3R1cmVFZAogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEwQ2xpZW50RGF0YUQyRXYKIF9f
Wk4zSlNDMTJKU0dsb2JhbERhdGExMWpzQXJyYXlWUHRyRQogX19aTjNKU0MxMkpTR2xvYmFsRGF0
YTEyY3JlYXRlTGVha2VkRU5TXzE1VGhyZWFkU3RhY2tUeXBlRQpAQCAtMTMyLDEwICsxMzIsMTEg
QEAgX19aTjNKU0MxMkpTR2xvYmFsRGF0YTE0ZHVtcFNhbXBsZURhdGFFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTRyZXNldERhdGVDYWNoZUV2CiBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTRzaGFyZWRJbnN0YW5jZUV2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTVkdW1w
UmVnRXhwVHJhY2VFdgorX19aTjNKU0MxMkpTR2xvYmFsRGF0YTIyY2xlYXJCdWlsdGluU3RydWN0
dXJlc0V2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhNmNyZWF0ZUVOU18xNVRocmVhZFN0YWNrVHlw
ZUUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGFEMUV2CiBfX1pOM0pTQzEyUmVnRXhwT2JqZWN0NnNf
aW5mb0UKLV9fWk4zSlNDMTJSZWdFeHBPYmplY3RDMUVQTlNfMTRKU0dsb2JhbE9iamVjdEVOM1dU
RjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRU5TNF9JTlNfNlJlZ0V4cEVFRQor
X19aTjNKU0MxMlJlZ0V4cE9iamVjdEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0
dXJlRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU182UmVnRXhwRUVFCiBfX1pOM0pTQzEyU2Ft
cGxpbmdUb29sNXNldHVwRXYKIF9fWk4zSlNDMTJTbWFsbFN0cmluZ3MxN2NyZWF0ZUVtcHR5U3Ry
aW5nRVBOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDMTJTbWFsbFN0cmluZ3MyN2NyZWF0ZVNp
bmdsZUNoYXJhY3RlclN0cmluZ0VQTlNfMTJKU0dsb2JhbERhdGFFaApAQCAtMTQ2LDcgKzE0Nyw3
IEBAIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVj
U3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MjRnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5T
XzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlT
bG90RQogX19aTjNKU0MxMlN0cmluZ09iamVjdDZzX2luZm9FCi1fX1pOM0pTQzEyU3RyaW5nT2Jq
ZWN0QzJFUE5TXzlFeGVjU3RhdGVFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1
cmVFRUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVBOU185RXhlY1N0
YXRlRVBOU185U3RydWN0dXJlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzEybm9uSW5saW5lTmFO
RXYKIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzNHN0b3BFdgogX19aTjNKU0MxM1NhbXBsaW5nRmxh
Z3M1c3RhcnRFdgpAQCAtMTc0LDcgKzE3NSw3IEBAIF9fWk4zSlNDMTVjcmVhdGVUeXBlRXJyb3JF
UE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9u
MTJ2dGFibGVBbmNob3JFdgogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb240bmFtZUVQTlNfOUV4
ZWNTdGF0ZUUKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNnNfaW5mb0UKLV9fWk4zSlNDMTZJ
bnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0
RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFUktOU18xMElkZW50aWZp
ZXJFCitfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbkMyRVBOU18xMkpTR2xvYmFsRGF0YUVQTlNf
MTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4z
SlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRzeW1ib2xUYWJsZUdl
dEVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzE2
SlNWYXJpYWJsZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNf
MTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKQEAgLTIwNSw3ICsyMDYs
OCBAQCBfX1pOM0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CiBfX1pOM0pTQzIz
b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmdFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzIzc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3RFUE5TXzlFeGVjU3RhdGVFUEtOU185SGFzaEVudHJ5RVBOU184SlNP
YmplY3RFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MyNER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRKU0dsb2Jh
bE9iamVjdEUKLV9fWk4zSlNDMjRKU09iamVjdFdpdGhHbG9iYWxPYmplY3RDMkVQTlNfMTRKU0ds
b2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRQorX19a
TjNKU0MyNEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBO
U185U3RydWN0dXJlRQorX19aTjNKU0MyNEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdEMyRVJOU18x
MkpTR2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUUKIF9fWk4z
SlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzI1
ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5nRVJOU183SlNWYWx1ZUVQTlNf
MTRKU0dsb2JhbE9iamVjdEUKIF9fWk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbkVQTlNfMTJKU0dsb2JhbERhdGFFCkBAIC0yNTQsOSArMjU2LDkgQEAgX19aTjNKU0M3
SlNBcnJheTE1c2V0U3ViY2xhc3NEYXRhRVB2CiBfX1pOM0pTQzdKU0FycmF5MThnZXRPd25Qcm9w
ZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDN0pT
QXJyYXk2c19pbmZvRQogX19aTjNKU0M3SlNBcnJheTlzZXRMZW5ndGhFagotX19aTjNKU0M3SlNB
cnJheUMxRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFCi1fX1pOM0pT
QzdKU0FycmF5QzFFUk5TXzEySlNHbG9iYWxEYXRhRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklO
U185U3RydWN0dXJlRUVFUktOU183QXJnTGlzdEUKLV9fWk4zSlNDN0pTQXJyYXlDMkVOM1dURjE3
Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRQorX19aTjNKU0M3SlNBcnJheUMxRVJO
U18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUUKK19fWk4zSlNDN0pTQXJyYXlDMUVSTlNf
MTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFUktOU183QXJnTGlzdEUKK19fWk4zSlNDN0pT
QXJyYXlDMkVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzdKU0Fy
cmF5RDJFdgogX19aTjNKU0M3SlNWYWx1ZTEzaXNWYWxpZENhbGxlZUV2CiBfX1pOM0pTQzdQcm9m
aWxlMTByZXN0b3JlQWxsRXYKQEAgLTMwOSwxMiArMzExLDExIEBAIF9fWk4zSlNDOFByb2ZpbGVy
MTNzdG9wUHJvZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzhQ
cm9maWxlcjE0c3RhcnRQcm9maWxpbmdFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9f
Wk4zSlNDOFByb2ZpbGVyOHByb2ZpbGVyRXYKIF9fWk4zSlNDOGV2YWx1YXRlRVBOU185RXhlY1N0
YXRlRVBOU18xNFNjb3BlQ2hhaW5Ob2RlRVJLTlNfMTBTb3VyY2VDb2RlRU5TXzdKU1ZhbHVlRQor
X19aTjNKU0M4aXNab21iaWVFUEtOU182SlNDZWxsRQogX19aTjNKU0M5Q29kZUJsb2NrRDFFdgog
X19aTjNKU0M5Q29kZUJsb2NrRDJFdgogX19aTjNKU0M5TWFya1N0YWNrMTBzX3BhZ2VTaXplRQog
X19aTjNKU0M5TWFya1N0YWNrMThpbml0aWFsaXplUGFnZXNpemVFdgotX19aTjNKU0M5U3RydWN0
dXJlMTdzdG9wSWdub3JpbmdMZWFrc0V2Ci1fX1pOM0pTQzlTdHJ1Y3R1cmUxOHN0YXJ0SWdub3Jp
bmdMZWFrc0V2CiBfX1pOM0pTQzlTdHJ1Y3R1cmUyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVSTlNf
MTJKU0dsb2JhbERhdGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19a
TjNKU0M5U3RydWN0dXJlMjJtYXRlcmlhbGl6ZVByb3BlcnR5TWFwRVJOU18xMkpTR2xvYmFsRGF0
YUUKIF9fWk4zSlNDOVN0cnVjdHVyZTI1Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkVSTlNfMTJK
U0dsb2JhbERhdGFFUFMwX05TXzdKU1ZhbHVlRQpAQCAtMzIzLDcgKzMyNCw3IEBAIF9fWk4zSlND
OVN0cnVjdHVyZTI3ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0
YUVQUzBfUktOU18xMElkCiBfX1pOM0pTQzlTdHJ1Y3R1cmUyOGFkZFByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2Vs
bEUKIF9fWk4zSlNDOVN0cnVjdHVyZTNnZXRFUk5TXzEySlNHbG9iYWxEYXRhRVBOM1dURjEwU3Ry
aW5nSW1wbEVSalJQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOVN0cnVjdHVyZTQwYWRkUHJvcGVydHlU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUVQUzBfUktOU18xMElkZW50aWZpZXJFalBOU182
SlNDZWxsRVJtCi1fX1pOM0pTQzlTdHJ1Y3R1cmVDMUVOU183SlNWYWx1ZUVSS05TXzhUeXBlSW5m
b0VqUEtOU185Q2xhc3NJbmZvRQorX19aTjNKU0M5U3RydWN0dXJlQzFFUk5TXzEySlNHbG9iYWxE
YXRhRU5TXzdKU1ZhbHVlRVJLTlNfOFR5cGVJbmZvRWpQS05TXzlDbGFzc0luZm9FCiBfX1pOM0pT
QzlTdHJ1Y3R1cmVEMUV2CiBfX1pOM0pTQzljb25zdHJ1Y3RFUE5TXzlFeGVjU3RhdGVFTlNfN0pT
VmFsdWVFTlNfMTNDb25zdHJ1Y3RUeXBlRVJLTlNfMTNDb25zdHJ1Y3REYXRhRVJLTlNfN0FyZ0xp
c3RFCiBfX1pOM0pTQ2VxRVJLTlNfN1VTdHJpbmdFUEtjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDQ2ZmJiOTc5NTk0MmIyZTM2
N2UzNGI2MGJhOTEzZjZkMGM3ODY2ZDEuLjM1ZjBiNDc2ZTAyMGZiYmU1NDBlNjcxOTgyOTUwMzM2
YTA4NDg1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZGVmCkBAIC0zLDI0ICszLDE1IEBAIEVYUE9SVFMKICAgICA/PzBDU3RyaW5nQFdU
RkBAUUFFQFBCREBaCiAgICAgPz8wQ1N0cmluZ0BXVEZAQFFBRUBQQkRJQFoKICAgICA/PzBDb2xs
YXRvckBXVEZAQFFBRUBQQkRAWgotICAgID8/MERhdGVJbnN0YW5jZUBKU0NAQFFBRUBQQVZFeGVj
U3RhdGVAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBATkBaCiAg
ICAgPz8wRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0BKU0NAQFFBRUBQQVZIZWFwQDFAQFoKICAg
ICA/PzBEcm9wQWxsTG9ja3NASlNMb2NrQEpTQ0BAUUFFQFc0SlNMb2NrQmVoYXZpb3JAMkBAWgog
ICAgID8/MER5bmFtaWNHbG9iYWxPYmplY3RTY29wZUBKU0NAQFFBRUBBQVZKU0dsb2JhbERhdGFA
MUBQQVZKU0dsb2JhbE9iamVjdEAxQEBaCi0gICAgPz8wSW50ZXJuYWxGdW5jdGlvbkBKU0NAQElB
RUBQQVZKU0dsb2JhbERhdGFAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNzUmVm
UHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQlZJZGVudGlmaWVyQDFAQFoKICAgICA/PzBKU0Fy
cmF5QEpTQ0BAUUFFQEFBVkpTR2xvYmFsRGF0YUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1
Y3R1cmVASlNDQEBAV1RGQEBBQlZBcmdMaXN0QDFAQFogIAotICAgID8/MEpTQXJyYXlASlNDQEBR
QUVAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEBaCi0gICAgPz8w
SlNCeXRlQXJyYXlASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJA
VlN0cnVjdHVyZUBKU0NAQEBXVEZAQFBBVkJ5dGVBcnJheUA0QEBaCi0gICAgPz8wSlNGdW5jdGlv
bkBKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQ
YXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBIQUJWSWRlbnRpZmllckAxQFA2SV9KMEBa
QFoKICAgICA/PzBKU0xvY2tASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAQFoKLSAgICA/PzBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3RASlNDQEBJQUVAUEFWSlNHbG9iYWxPYmplY3RAMUBWPyROb25O
dWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQFoKICAgICA/PzBNRDVAV1RGQEBR
QUVAWFoKICAgICA/PzBNdXRleEBXVEZAQFFBRUBYWgogICAgID8/MFJlZkNvdW50ZWRMZWFrQ291
bnRlckBXVEZAQFFBRUBQQkRAWgotICAgID8/MFJlZ0V4cE9iamVjdEBKU0NAQFFBRUBQQVZKU0ds
b2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBW
PyROb25OdWxsUGFzc1JlZlB0ckBWUmVnRXhwQEpTQ0BAQDRAQFoKICAgICA/PzBTSEExQFdURkBA
UUFFQFhaCi0gICAgPz8wU3RyaW5nT2JqZWN0QEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFY/JE5v
bk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQlZVU3RyaW5nQDFAQFoKLSAg
ICA/PzBTdHJ1Y3R1cmVASlNDQEBBQUVAVkpTVmFsdWVAMUBBQlZUeXBlSW5mb0AxQElQQlVDbGFz
c0luZm9AMUBAWgogICAgID8/MFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgogICAgID8/MFVT
dHJpbmdASlNDQEBRQUVAUEJEQFoKICAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCRElAWgpAQCAt
MzcsNyArMjgsNiBAQCBFWFBPUlRTCiAgICAgPz8xUmVmQ291bnRlZExlYWtDb3VudGVyQFdURkBA
UUFFQFhaCiAgICAgPz8xUmVnRXhwQEpTQ0BAUUFFQFhaCiAgICAgPz8xU291cmNlUHJvdmlkZXJD
YWNoZUBKU0NAQFFBRUBYWgotICAgID8/MVN0cnVjdHVyZUBKU0NAQFFBRUBYWgogICAgID8/MVRo
cmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgogICAgID8/MVdURlRocmVhZERhdGFAV1RGQEBRQUVA
WFoKICAgICA/PzFXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVAWFoKQEAgLTUyLDggKzQyLDYgQEAg
RVhQT1JUUwogICAgID9hZGRCeXRlc0BNRDVAV1RGQEBRQUVYUEJFSUBaCiAgICAgP2FkZEJ5dGVz
QFNIQTFAV1RGQEBRQUVYUEJFSUBaCiAgICAgP2FkZEN1cnJlbnRUaHJlYWRATWFjaGluZVRocmVh
ZHNASlNDQEBRQUVYWFoKLSAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NA
QFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQVZKU0dsb2JhbERhdGFA
MkBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3Bl
cnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBh
c3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQFBBVjEyQEFCVklkZW50aWZpZXJAMkBJUEFW
SlNDZWxsQDJAQUFJQFoKICAgICA/YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbkBTdHJ1Y3R1
cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmllckAyQElQQVZKU0NlbGxA
MkBAWgogICAgID9hZGRTbG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBhc3NSZWZQdHJA
VlN0cmluZ0ltcGxAV1RGQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBQQVZTdHJpbmdJbXBsQDRAQFoK
ICAgICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWElAWgpAQCAtNzgsNyArNjYsNiBAQCBFWFBP
UlRTCiAgICAgP2NhbGxPbk1haW5UaHJlYWRBbmRXYWl0QFdURkBAWUFYUDZBWFBBWEBaMEBaCiAg
ICAgP2NhbmNlbENhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICA/Y2Fw
YWNpdHlASGVhcEBKU0NAQFFCRUlYWgotICAgID9jaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uQFN0
cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQVZK
U0dsb2JhbERhdGFAMkBQQVYxMkBWSlNWYWx1ZUAyQEBaCiAgICAgP2NoZWNrQ3VycmVudElkZW50
aWZpZXJUYWJsZUBJZGVudGlmaWVyQEpTQ0BAQ0FYUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/Y2hl
Y2tDdXJyZW50SWRlbnRpZmllclRhYmxlQElkZW50aWZpZXJASlNDQEBDQVhQQVZKU0dsb2JhbERh
dGFAMkBAWgogICAgID9jaGVja1N5bnRheEBKU0NAQFlBP0FWQ29tcGxldGlvbkAxQFBBVkV4ZWNT
dGF0ZUAxQEFCVlNvdXJjZUNvZGVAMUBAWgpAQCAtMTA4LDcgKzk1LDYgQEAgRVhQT1JUUwogICAg
ID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVA
MUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nQFNtYWxs
U3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBFQFoKICAgICA/Y3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEBaCi0gICAg
P2NyZWF0ZVN0cnVjdHVyZUBKU0J5dGVBcnJheUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1
Y3R1cmVASlNDQEBAV1RGQEBBQVZKU0dsb2JhbERhdGFAMkBWSlNWYWx1ZUAyQFBCVUNsYXNzSW5m
b0AyQEBaCiAgICAgP2NyZWF0ZVN5bnRheEVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4
ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgogICAgID9jcmVhdGVUYWJsZUBIYXNoVGFibGVASlND
QEBBQkVYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZB
UEFYUEFYQFowQFoKQEAgLTE0NCw3ICsxMzAsNiBAQCBFWFBPUlRTCiAgICAgP2RlbGV0ZVByb3Bl
cnR5QFN0cmluZ09iamVjdEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAy
QEBaCiAgICAgP2RlbGV0ZVRhYmxlQEhhc2hUYWJsZUBKU0NAQFFCRVhYWgogICAgID9kZXNwZWNp
ZnlEaWN0aW9uYXJ5RnVuY3Rpb25AU3RydWN0dXJlQEpTQ0BAUUFFWEFBVkpTR2xvYmFsRGF0YUAy
QEFCVklkZW50aWZpZXJAMkBAWgotICAgID9kZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb25AU3Ry
dWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEFBVkpT
R2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9kZXN0cm95QEhlYXBA
SlNDQEBRQUVYWFoKICAgICA/ZGV0YWNoQERlYnVnZ2VyQEpTQ0BAVUFFWFBBVkpTR2xvYmFsT2Jq
ZWN0QDJAQFoKICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCkBAIC0zMTMsMTAgKzI5OCw4
IEBAIEVYUE9SVFMKICAgICA/c2lnbmFsQFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgogICAg
ID9zaXplQEhlYXBASlNDQEBRQkVJWFoKICAgICA/c2xvd0FwcGVuZEBNYXJrZWRBcmd1bWVudEJ1
ZmZlckBKU0NAQEFBRVhWSlNWYWx1ZUAyQEBaCi0gICAgP3N0YXJ0SWdub3JpbmdMZWFrc0BTdHJ1
Y3R1cmVASlNDQEBTQVhYWgogICAgID9zdGFydFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRVhQ
QVZFeGVjU3RhdGVAMkBBQlZVU3RyaW5nQDJAQFoKICAgICA/c3RhcnRTYW1wbGluZ0BKU0dsb2Jh
bERhdGFASlNDQEBRQUVYWFoKLSAgICA/c3RvcElnbm9yaW5nTGVha3NAU3RydWN0dXJlQEpTQ0BA
U0FYWFoKICAgICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0
ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgogICAg
ID9zdG9wU2FtcGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCiAgICAgP3N0cnRvZEBXVEZA
QFlBTlBCRFBBUEFEQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggYjIwY2E0NGQ1OTAwMGU5YTU1ODM2ZDViNGQwYWFiMGE1YjNlYTA1Ni4uMGU2
NDhiYTgwM2Q4MDljY2UzN2NlN2I1NTJkMWVlOTNkYWZhOTIyOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEzOTAsMzEgKzEzOTAsOSBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIENv
ZGVUeXBlIGNvZGVUeXBlLCBKU0dsbwogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogewotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGRl
cmVmU3RydWN0dXJlcygmbV9pbnN0cnVjdGlvbnNbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
W2ldXSk7Ci0KLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBkZXJlZlN0cnVjdHVy
ZXMoJm1faW5zdHJ1Y3Rpb25zW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKLSNl
bmRpZgogI2lmIEVOQUJMRShKSVQpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVz
b2x2ZUluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1f
Z2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZSkKLSAgICAgICAgICAgIG1fZ2xvYmFsUmVz
b2x2ZUluZm9zW2ldLnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICB9Ci0KICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKICAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0uZGVyZWYoKTsKLQotICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX21ldGhvZENh
bGxMaW5rSW5mb3NbaV0uY2FjaGVkU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUt
PmRlcmVmKCk7Ci0gICAgICAgICAgICAvLyBCb3RoIG1lbWJlcnMgbXVzdCBiZSBmaWxsZWQgYXQg
dGhlIHNhbWUgdGltZQotICAgICAgICAgICAgQVNTRVJUKCEhbV9tZXRob2RDYWxsTGlua0luZm9z
W2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBtX21ldGhvZENhbGxM
aW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLT5kZXJlZigpOwotICAgICAgICB9
Ci0gICAgfQotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogI2lmIERVTVBfQ09ERV9CTE9DS19T
VEFUSVNUSUNTCkBAIC0xNDIyLDM1ICsxNDAwLDM3IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygp
CiAjZW5kaWYKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJlcyhJbnN0cnVjdGlv
biogdlBDKSBjb25zdAordm9pZCBDb2RlQmxvY2s6Om1hcmtTdHJ1Y3R1cmVzKE1hcmtTdGFjayYg
bWFya1N0YWNrLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogewogICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CiAKICAgICBpZiAodlBDWzBd
LnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3NlbGYpIHx8
IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9n
ZXR0ZXJfc2VsZikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmKSkgewotICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUt
PmRlcmVmKCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51LnN0cnVjdHVyZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9wcm90bykgfHwgdlBDWzBdLnUub3Bjb2Rl
ID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bykgfHwg
dlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1
c3RvbV9wcm90bykpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5kZXJlZigpOwotICAg
ICAgICB2UENbNV0udS5zdHJ1Y3R1cmUtPmRlcmVmKCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQoJnZQQ1s0XS51LnN0cnVjdHVyZSk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1
XS51LnN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikgfHwg
dlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dl
dHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJl
LT5kZXJlZigpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUp
OworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkgewotICAgICAgICB2UENb
NF0udS5zdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZS0+ZGVy
ZWYoKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsKKyAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzVdLnUuc3RydWN0dXJlKTsKKyAgICAgICAgbWFy
a1N0YWNrLmFwcGVuZCgmdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZShvcF9wdXRfYnlfaWRfcmVwbGFjZSkpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5k
ZXJlZigpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9yZXNvbHZlX2dsb2JhbCkgfHwgdlBDWzBdLnUub3Bjb2RlID09
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykpIHsKICAg
ICAgICAgaWYgKHZQQ1szXS51LnN0cnVjdHVyZSkKLSAgICAgICAgICAgIHZQQ1szXS51LnN0cnVj
dHVyZS0+ZGVyZWYoKTsKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1szXS51LnN0
cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpCkBA
IC0xNDYwLDcgKzE0NDAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZGVyZWZTdHJ1Y3R1cmVzKEluc3Ry
dWN0aW9uKiB2UEMpIGNvbnN0CiAgICAgICAgIHx8ICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvX2xpc3QpKQogICAgICAg
ICB8fCAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5
X2lkX2N1c3RvbV9zZWxmX2xpc3QpKSkgewogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcyA9IHZQQ1s0XS51LnBvbHltb3JwaGljU3Ry
dWN0dXJlczsKLSAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5kZXJlZlN0cnVjdHVyZXMo
dlBDWzVdLnUub3BlcmFuZCk7CisgICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlcy0+bWFya0Fn
Z3JlZ2F0ZShtYXJrU3RhY2ssIHZQQ1s1XS51Lm9wZXJhbmQpOwogICAgICAgICBkZWxldGUgcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ2OSwzNyAr
MTQ0OSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkZXJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQ
QykgY29uc3QKICAgICBBU1NFUlQodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfZ2V0X2J5X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9wdXRfYnlfaWQpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZW5lcmljKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bj
b2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2FycmF5X2xlbmd0aCkgfHwgdlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X3N0cmluZ19sZW5n
dGgpKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQ
QykgY29uc3QKLXsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEt
PmludGVycHJldGVyOwotCi0gICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGYpIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fc2VsZikp
IHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX3Byb3RvKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvKSB8fCB2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvKSkgewotICAg
ICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1
cmUtPnJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1sw
XS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJf
Y2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dl
dF9ieV9pZF9jdXN0b21fY2hhaW4pKSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVm
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkgewotICAgICAg
ICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUt
PnJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2UENbMF0udS5vcGNvZGUg
PT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfcmVwbGFjZSkpIHsKLSAgICAg
ICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgcmVmIHRoZWlyIFN0cnVjdHVyZXMu
Ci0gICAgQVNTRVJUKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X2dldF9ieV9pZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfcHV0X2J5X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZShvcF9nZXRfYnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKLX0KLQogdm9pZCBFdmFsQ29kZUNh
Y2hlOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEV2YWxDYWNo
ZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9jYWNoZU1hcC5lbmQoKTsKQEAgLTE1MjQsMzAgKzE0NzMs
MjQgQEAgdm9pZCBDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2sp
CiAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZjYWxsTGlua0luZm8oaSkuY2FsbGVlKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOwotICAgIGZvciAoc2l6ZV90IHNpemUg
PSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQyA9ICZtX2luc3RydWN0aW9uc1ttX3Byb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKLSAgICAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikgfHwgdlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFp
bikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5
X2lkX2N1c3RvbV9jaGFpbikpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNV0u
dS5zdHJ1Y3R1cmVDaGFpbik7Ci0gICAgICAgIGVsc2UgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkKLSAgICAgICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKTsKLSAgICB9Cisg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbWFya1N0cnVjdHVyZXMobWFya1N0YWNr
LCAmbV9pbnN0cnVjdGlvbnNbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNv
bHZlSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dsb2JhbFJlc29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUpCi0g
ICAgICAgICAgICBzdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAg
aWYgKG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZSkKKyAgICAgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQoJm1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZSk7CiAgICAgfQog
CiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLm1hcmtB
Z2dyZWdhdGUobWFya1N0YWNrKTsKIAogICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX21ldGhvZENh
bGxMaW5rSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkU3Ry
dWN0dXJlKSB7CisgICAgICAgIGlmIChtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkU3Ry
dWN0dXJlKSB7CiAgICAgICAgICAgICAvLyBCb3RoIG1lbWJlcnMgbXVzdCBiZSBmaWxsZWQgYXQg
dGhlIHNhbWUgdGltZQotICAgICAgICAgICAgc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtT
dGFjayk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX21ldGhvZENhbGxMaW5rSW5m
b3NbaV0uY2FjaGVkU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVCghIW1fbWV0aG9kQ2Fs
bExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9t
ZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS0+bWFya0FnZ3Jl
Z2F0ZShtYXJrU3RhY2spOworICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApp
bmRleCAyNWU2NWY0NzUzY2YzNTVjZWI4OWFjYzMyNDRiZWM4OTUyZTgyMjVhLi5hZjY4ZWI1ODFj
YWRhZDI3NWE5Y2ZmNDhkODA0NDE4MGM2Mjk1ZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMjIsOCArMTIyLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBzdHJ1Y3QgTWV0aG9kQ2FsbExpbmtJbmZvIHsKICAgICAgICAgTWV0aG9kQ2FsbExp
bmtJbmZvKCkKLSAgICAgICAgICAgIDogY2FjaGVkU3RydWN0dXJlKDApCi0gICAgICAgICAgICAs
IGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAt
MTQyLDI0ICsxNDAsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyAgICAgLSBP
bmNlIHRoaXMgdHJhbnNpdGlvbiBoYXMgYmVlbiB0YWtlbiBvbmNlLCBjYWNoZWRTdHJ1Y3R1cmUg
aXMKICAgICAgICAgICAgIC8vICAgICAgIG51bGwgYW5kIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVy
ZSBpcyBzZXQgdG8gYSBudW4tbnVsbCB2YWx1ZS4KICAgICAgICAgICAgIC8vICAgICAtIE9uY2Ug
dGhlIGNhbGwgaXMgbGlua2VkIGJvdGggc3RydWN0dXJlcyBhcmUgc2V0IHRvIG5vbi1udWxsIHZh
bHVlcy4KLSAgICAgICAgICAgIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSA9IChTdHJ1Y3R1cmUq
KTE7CisgICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0V2l0aG91dFdyaXRl
QmFycmllcigoU3RydWN0dXJlKikxKTsKICAgICAgICAgfQogCiAgICAgICAgIENvZGVMb2NhdGlv
bkNhbGwgY2FsbFJldHVybkxvY2F0aW9uOwogICAgICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQ
dHIgc3RydWN0dXJlTGFiZWw7Ci0gICAgICAgIFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlOwot
ICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZTsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkU3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmU7CiAgICAgfTsKIAogICAgIHN0
cnVjdCBHbG9iYWxSZXNvbHZlSW5mbyB7CiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoMCkKLSAgICAgICAg
ICAgICwgb2Zmc2V0KDApCisgICAgICAgICAgICA6IG9mZnNldCgwKQogICAgICAgICAgICAgLCBi
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZTsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldDsKICAgICB9OwpAQCAtMjE1LDggKzIxMiw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKIAogICAgICAgICB2b2lkIG1hcmtB
Z2dyZWdhdGUoTWFya1N0YWNrJik7Ci0gICAgICAgIHZvaWQgcmVmU3RydWN0dXJlcyhJbnN0cnVj
dGlvbiogdlBDKSBjb25zdDsKLSAgICAgICAgdm9pZCBkZXJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rp
b24qIHZQQykgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsK
IApAQCAtNDg2LDYgKzQ4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50
R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6
Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJp
bnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICNlbmRpZgorICAgICAg
ICB2b2lkIG1hcmtTdHJ1Y3R1cmVzKE1hcmtTdGFjayYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0
OwogCiAgICAgICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggYjVl
NWM1MmYwZjVjNGM4NTk1MzE0OWRlZDVkNDM2Y2Q1YWI4NTk2NS4uZDljYmIxMWFkODY2MGE0ZmRh
MGMyNDkwYmFiZTJjZjM4OTIwMDE0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmgKQEAgLTYxLDQ1ICs2MSw0NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RydWN0IFBvbHltb3JwaGljU3R1YkluZm8gewogICAgICAgICAgICAgYm9vbCBpc0No
YWluOwogICAgICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRp
bmVUeXBlIHN0dWJSb3V0aW5lOwotICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlOworICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gYmFzZTsKICAgICAgICAgICAgIHVuaW9uIHsK
LSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvOworICAgICAgICAgICAgICAgIFdyaXRl
QmFycmllckJhc2U8U3RydWN0dXJlPiBwcm90bzsKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBjaGFpbjsKICAgICAgICAgICAgIH0gdTsKIAotICAgICAg
ICAgICAgdm9pZCBzZXQoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVU
eXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBfYmFzZSkKKyAgICAgICAgICAgIHZvaWQgc2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBf
YmFzZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHViUm91dGluZSA9IF9zdHVi
Um91dGluZTsKLSAgICAgICAgICAgICAgICBiYXNlID0gX2Jhc2U7Ci0gICAgICAgICAgICAgICAg
dS5wcm90byA9IDA7CisgICAgICAgICAgICAgICAgYmFzZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIs
IF9iYXNlKTsKKyAgICAgICAgICAgICAgICB1LnByb3RvLmNsZWFyKCk7CiAgICAgICAgICAgICAg
ICAgaXNDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAg
ICAgICB2b2lkIHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5
cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1cmUqIF9wcm90bykKKyAg
ICAgICAgICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25l
ciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91
dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlKiBfcHJvdG8pCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgc3R1YlJvdXRpbmUgPSBfc3R1YlJvdXRpbmU7Ci0gICAgICAgICAg
ICAgICAgYmFzZSA9IF9iYXNlOwotICAgICAgICAgICAgICAgIHUucHJvdG8gPSBfcHJvdG87Cisg
ICAgICAgICAgICAgICAgYmFzZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIF9iYXNlKTsKKyAgICAg
ICAgICAgICAgICB1LnByb3RvLnNldChnbG9iYWxEYXRhLCBvd25lciwgX3Byb3RvKTsKICAgICAg
ICAgICAgICAgICBpc0NoYWluID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBv
d25lciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHVi
Um91dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlQ2hhaW4qIF9jaGFpbikKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHViUm91dGluZSA9IF9zdHViUm91dGluZTsKLSAg
ICAgICAgICAgICAgICBiYXNlID0gX2Jhc2U7CisgICAgICAgICAgICAgICAgYmFzZS5zZXQoZ2xv
YmFsRGF0YSwgb3duZXIsIF9iYXNlKTsKICAgICAgICAgICAgICAgICB1LmNoYWluLnNldChnbG9i
YWxEYXRhLCBvd25lciwgX2NoYWluKTsKICAgICAgICAgICAgICAgICBpc0NoYWluID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBsaXN0W1BPTFlNT1JQSElDX0xJU1RfQ0FDSEVfU0la
RV07CiAgICAgICAgIAotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lLCBT
dHJ1Y3R1cmUqIGZpcnN0QmFzZSkKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUq
IGZpcnN0QmFzZSkKICAgICAgICAgewotICAgICAgICAgICAgbGlzdFswXS5zZXQoc3R1YlJvdXRp
bmUsIGZpcnN0QmFzZSk7CisgICAgICAgICAgICBsaXN0WzBdLnNldChnbG9iYWxEYXRhLCBvd25l
ciwgc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSk7CiAgICAgICAgIH0KIAotICAgICAgICBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1
YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIGZpcnN0QmFzZSwgU3RydWN0dXJl
KiBmaXJzdFByb3RvKQorICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogZmlyc3RC
YXNlLCBTdHJ1Y3R1cmUqIGZpcnN0UHJvdG8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGxpc3Rb
MF0uc2V0KHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0UHJvdG8pOworICAgICAgICAgICAg
bGlzdFswXS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZp
cnN0UHJvdG8pOwogICAgICAgICB9CiAKICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lLCBTdHJ1Y3R1
cmUqIGZpcnN0QmFzZSwgU3RydWN0dXJlQ2hhaW4qIGZpcnN0Q2hhaW4pCkBAIC0xMDcsMjcgKzEw
NywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGxpc3RbMF0uc2V0KGdsb2JhbERh
dGEsIG93bmVyLCBzdHViUm91dGluZSwgZmlyc3RCYXNlLCBmaXJzdENoYWluKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgZGVyZWZTdHJ1Y3R1cmVzKGludCBjb3VudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgUG9seW1vcnBoaWNTdHViSW5mbyYgaW5mbyA9IGxpc3RbaV07Ci0KLSAgICAgICAgICAg
ICAgICBBU1NFUlQoaW5mby5iYXNlKTsKLSAgICAgICAgICAgICAgICBpbmZvLmJhc2UtPmRlcmVm
KCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaW5mby51LnByb3RvKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghaW5mby5pc0NoYWluKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mby51
LnByb3RvLT5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCiAgICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaywg
aW50IGNvdW50KQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKICAgICAgICAgICAgICAgICBQb2x5bW9ycGhpY1N0dWJJbmZvJiBpbmZvID0g
bGlzdFtpXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5mby5iYXNlKTsKICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLmJhc2UpOworICAg
ICAgICAgICAgICAgIGlmIChpbmZvLnUucHJvdG8gJiYgIWluZm8uaXNDaGFpbikKKyAgICAgICAg
ICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaW5mby51LnByb3RvKTsKICAgICAgICAgICAg
ICAgICBpZiAoaW5mby51LmNoYWluICYmIGluZm8uaXNDaGFpbikKICAgICAgICAgICAgICAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmaW5mby51LmNoYWluKTsKICAgICAgICAgICAgIH0KQEAgLTE1
Myw3ICsxNDEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB1Lm9wZXJhbmQgPSBv
cGVyYW5kOwogICAgICAgICB9CiAKLSAgICAgICAgSW5zdHJ1Y3Rpb24oU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIHsgdS5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7IH0KKyAgICAgICAgSW5zdHJ1Y3Rpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgdS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAg
ICAgICAgIHUuc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3RydWN0dXJlKTsKKyAg
ICAgICAgfQogICAgICAgICBJbnN0cnVjdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Q2VsbCogb3duZXIsIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbikKICAgICAgICAgewog
ICAgICAgICAgICAgdS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwpAQCAtMTcwLDcgKzE2Miw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bj
b2RlOwogICAgICAgICAgICAgaW50IG9wZXJhbmQ7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBzdHJ1Y3R1
cmU7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1
cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAg
ICAgICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3Ry
dWN0dXJlczsKQEAgLTE3OSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgSW5zdHJ1Y3Rpb24oU3RydWN0dXJlQ2hhaW4qKTsKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24oU3RydWN0dXJlKik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCBlMTBkYzVjZjVlMTcwNTg2M2M3MjNlNzI4ZWY5ZWRkYmI1ZjA0YzVjLi5i
ZTU3NjBhMWE4ZGI0NzU5MDEyOTllYmRlYmQ2NTJhZTI1NTgwNTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTM1
LDQyICszNSwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRl
cmVmKCkKIHsKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIGFjY2Vzc19nZXRf
YnlfaWRfc2VsZjoKLSAgICAgICAgdS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLT5k
ZXJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3Rv
OgotICAgICAgICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLT5kZXJlZigpOwot
ICAgICAgICB1LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46Ci0gICAgICAgIHUu
Z2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHJldHVy
bjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OiB7CiAgICAgICAgIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0gdS5nZXRC
eUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKLSAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVz
LT5kZXJlZlN0cnVjdHVyZXModS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOwogICAgICAgICBk
ZWxldGUgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OiB7CiAgICAgICAgIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0gdS5nZXRCeUlkUHJv
dG9MaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlcy0+ZGVy
ZWZTdHJ1Y3R1cmVzKHUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CiAgICAgICAgIGRlbGV0
ZSBwb2x5bW9ycGhpY1N0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2Fz
ZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3Rv
OgorICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKICAgICBjYXNlIGFjY2Vzc19wdXRf
YnlfaWRfdHJhbnNpdGlvbjoKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0
cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUt
PmRlcmVmKCk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVw
bGFjZToKLSAgICAgICAgdS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5kZXJl
ZigpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkOgogICAgIGNh
c2UgYWNjZXNzX3B1dF9ieV9pZDoKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfZ2VuZXJpYzoK
ICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfZ2VuZXJpYzoKICAgICBjYXNlIGFjY2Vzc19nZXRf
YXJyYXlfbGVuZ3RoOgogICAgIGNhc2UgYWNjZXNzX2dldF9zdHJpbmdfbGVuZ3RoOgotICAgICAg
ICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgcmVmIHRoZWlyIFN0cnVjdHVyZXMuCisgICAg
ICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCBoYXZlIHRvIHJlbGVhc2UgYW55IGFsbG9j
YXRlZCBtZW1vcnkKICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtODEsMTQgKzY3LDE0IEBAIHZvaWQgU3RydWN0dXJlU3R1Yklu
Zm86Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgc3dpdGNoIChh
Y2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6Ci0gICAgICAgIHUu
Z2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2sp
OworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3Rv
OgotICAgICAgICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJrQWdncmVn
YXRlKG1hcmtTdGFjayk7Ci0gICAgICAgIHUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVy
ZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1
LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICAgICAgbWFya1N0YWNrLmFw
cGVuZCgmdS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAgdS5nZXRCeUlkQ2hh
aW4uYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlKTsK
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5nZXRCeUlkQ2hhaW4uY2hhaW4pOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGZfbGlzdDogewpAQCAtMTAy
LDEyICs4OCwxMiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdncmVnYXRlKE1hcmtT
dGFjayYgbWFya1N0YWNrKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgYWNjZXNz
X3B1dF9ieV9pZF90cmFuc2l0aW9uOgotICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZp
b3VzU3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci0gICAgICAgIHUucHV0QnlJ
ZFRyYW5zaXRpb24uc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUp
OworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVy
ZSk7CiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4p
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6Ci0g
ICAgICAgIHUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0
ZShtYXJrU3RhY2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1dEJ5SWRSZXBsYWNl
LmJhc2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X2J5X2lkOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZDoKQEAgLTExNSw3ICsxMDEsNyBA
QCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0
YWNrKQogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9nZW5lcmljOgogICAgIGNhc2UgYWNjZXNz
X2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X3N0cmluZ19sZW5ndGg6Ci0g
ICAgICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCByZWYgdGhlaXIgU3RydWN0dXJlcy4K
KyAgICAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IG5lZWQgdG8gbWFyayBhbnl0aGlu
ZwogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCmluZGV4IDY3MDJkY2VjZDQ5NzllMzU2NTI2ZDg1OThjODQzN2NhZTQ0ODA2NWEu
LmJmZWViMWVhZDAzMWRmNDliOWY1MWVhMDU5ZDRhODFiM2EyYWY0OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01OCwz
MiArNTgsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSkK
KyAgICAgICAgdm9pZCBpbml0R2V0QnlJZFNlbGYoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY7CiAKLSAgICAg
ICAgICAgIHUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZSA9IGJhc2VPYmplY3RTdHJ1
Y3R1cmU7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0U3RydWN0dXJlLT5yZWYoKTsKKyAgICAgICAg
ICAgIHUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3du
ZXIsIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbml0
R2V0QnlJZFByb3RvKFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUpCisgICAgICAgIHZvaWQgaW5pdEdldEJ5SWRQcm90byhKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0
cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOwogCi0gICAgICAgICAg
ICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlID0gYmFzZU9iamVjdFN0cnVjdHVy
ZTsKLSAgICAgICAgICAgIGJhc2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOwotCi0gICAgICAgICAg
ICB1LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGVTdHJ1Y3R1cmU7
Ci0gICAgICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnJlZigpOworICAgICAgICAgICAgdS5n
ZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGJh
c2VPYmplY3RTdHJ1Y3R1cmUpOworICAgICAgICAgICAgdS5nZXRCeUlkUHJvdG8ucHJvdG90eXBl
U3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgcHJvdG90eXBlU3RydWN0dXJlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgaW5pdEdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwg
U3RydWN0dXJlQ2hhaW4qIGNoYWluKQogICAgICAgICB7CiAgICAgICAgICAgICBhY2Nlc3NUeXBl
ID0gYWNjZXNzX2dldF9ieV9pZF9jaGFpbjsKIAotICAgICAgICAgICAgdS5nZXRCeUlkQ2hhaW4u
YmFzZU9iamVjdFN0cnVjdHVyZSA9IGJhc2VPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBi
YXNlT2JqZWN0U3RydWN0dXJlLT5yZWYoKTsKLQorICAgICAgICAgICAgdS5nZXRCeUlkQ2hhaW4u
YmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGJhc2VPYmplY3RTdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgdS5nZXRCeUlkQ2hhaW4uY2hhaW4uc2V0KGdsb2JhbERhdGEs
IG93bmVyLCBjaGFpbik7CiAgICAgICAgIH0KIApAQCAtMTA5LDIxICsxMDMsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfcHV0
X2J5X2lkX3RyYW5zaXRpb247CiAKLSAgICAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24ucHJl
dmlvdXNTdHJ1Y3R1cmUgPSBwcmV2aW91c1N0cnVjdHVyZTsKLSAgICAgICAgICAgIHByZXZpb3Vz
U3RydWN0dXJlLT5yZWYoKTsKLQotICAgICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUtPnJlZigpOwotCisgICAg
ICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLnNldChnbG9iYWxE
YXRhLCBvd25lciwgcHJldmlvdXNTdHJ1Y3R1cmUpOworICAgICAgICAgICAgdS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5zZXQoZ2xvYmFsRGF0YSwgb3duZXIs
IGNoYWluKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNlKFN0
cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSkKKyAgICAgICAgdm9pZCBpbml0UHV0QnlJZFJl
cGxhY2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUq
IGJhc2VPYmplY3RTdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5cGUg
PSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U7CiAgICAgCi0gICAgICAgICAgICB1LnB1dEJ5SWRS
ZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0U3RydWN0dXJlOwotICAgICAg
ICAgICAgYmFzZU9iamVjdFN0cnVjdHVyZS0+cmVmKCk7CisgICAgICAgICAgICB1LnB1dEJ5SWRS
ZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBiYXNlT2Jq
ZWN0U3RydWN0dXJlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVyZWYoKTsKQEAgLTE0
NCwxNCArMTMzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3Ry
dWN0dXJlOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNl
T2JqZWN0U3RydWN0dXJlOwogICAgICAgICAgICAgfSBnZXRCeUlkU2VsZjsKICAgICAgICAgICAg
IHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJl
OwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlOworICAgICAg
ICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0dXJl
OworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBwcm90b3R5cGVT
dHJ1Y3R1cmU7CiAgICAgICAgICAgICB9IGdldEJ5SWRQcm90bzsKICAgICAgICAgICAgIHN0cnVj
dCB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOworICAg
ICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0
dXJlOwogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNo
YWluOwogICAgICAgICAgICAgfSBnZXRCeUlkQ2hhaW47CiAgICAgICAgICAgICBzdHJ1Y3QgewpA
QCAtMTYzLDEyICsxNTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgaW50
IGxpc3RTaXplOwogICAgICAgICAgICAgfSBnZXRCeUlkUHJvdG9MaXN0OwogICAgICAgICAgICAg
c3RydWN0IHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzU3RydWN0dXJlOwot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgICAgICAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBwcmV2aW91c1N0cnVjdHVyZTsKKyAgICAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gc3RydWN0dXJlOwogICAgICAgICAgICAg
ICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOwogICAgICAgICAgICAg
fSBwdXRCeUlkVHJhbnNpdGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOworICAgICAgICAgICAgICAgIFdyaXRl
QmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0dXJlOwogICAgICAgICAgICAg
fSBwdXRCeUlkUmVwbGFjZTsKICAgICAgICAgfSB1OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCmluZGV4IDUwYmE3NDZl
ZWQxNmRiMzBhYmQyOGVjYzQwNGRmN2MwYjdhODA3MzkuLjY3YTc5NmE2YWM3NDg0YzFlN2MzMmMw
M2U5ZGY5NzU4OTllMDkyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogRGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogYWN0aXZhdGlvbikKLSAgICA6IEpTTm9uRmlu
YWxPYmplY3QoRGVidWdnZXJBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwg
anNOdWxsKCkpKQorICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBEZWJ1Z2dlckFj
dGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhLCBqc051bGwoKSkpCiB7CiAgICAg
QVNTRVJUKGFjdGl2YXRpb24pOwogICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc0FjdGl2YXRpb25P
YmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmgKaW5kZXggZjIyZDJmZmJkOTE5NDNhZTQ4ZmM5M2YzYzdlODBhMjFhYmE0
Yzk2ZC4uYmZiMzZkYjUzM2I3ZmRkMzZhYmUzNWM3OTk0OGU4NDc5ODZhMzNjMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApA
QCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBKU1ZhbHVl
IGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkgCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOyAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUu
aAppbmRleCA0NzM0ZTQyMjAwODNhM2E4ZDk0MTI2ZDllNGJhZWM3MjdmYmYxMjNjLi41MzFkNTM1
NDcyZWExMzM1YmRlZDIzZDU1YjIyY2ZmMjlkMDcyNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IYW5kbGUuaApAQCAtNDQsOSArNDQsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIEhh
bmRsZTsKIC8vIENyZWF0aW5nIGEgSlNWYWx1ZSBIYW5kbGUgaXMgaW52YWxpZAogdGVtcGxhdGUg
PD4gY2xhc3MgSGFuZGxlPEpTVmFsdWU+OwogCisvLyBGb3J3YXJkIGRlY2xhcmUgV2Vha0dDTWFw
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlLCB0eXBlbmFt
ZSBGaW5hbGl6ZXJDYWxsYmFjaywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnPiBjbGFzcyBXZWFrR0NNYXA7CisKIGNsYXNzIEhhbmRsZUJhc2UgewogICAgIGZyaWVuZCBj
bGFzcyBIYW5kbGVIZWFwOwogICAgIGZyaWVuZCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGE7
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5
cGVuYW1lIEZpbmFsaXplckNhbGxiYWNrLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmc+IGZyaWVuZCBjbGFzcyBXZWFrR0NNYXA7CiAKIHB1YmxpYzoKICAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3Nsb3QgfHwgISptX3Nsb3Q7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZjEwMmMxOGVlNDQzZWFhNTVhZGY2NjBiMzIyYjY5
OWVlZDcwYjJhZi4uMWE4YWVkYzk1Yjc5NDFhZjgzYWUyMWE2MzBkYWZlMTI1NjYxZTI2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJUcmFjaW5nLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jZGVmaW5lIENPTExFQ1RfT05f
RVZFUllfU0xPV19BTExPQ0FUSU9OIDAKKyNkZWZpbmUgQ09MTEVDVF9PTl9FVkVSWV9TTE9XX0FM
TE9DQVRJT04gMQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCA1YjRhYzVhMDE4YzA5NzhmNDgyYzE2ODE0NmRmYWFl
MjJmMDY4NGRmLi4zZmIxYTk4ZGZiYWViNTliODUxNmUwMDFhNTlmMGIwZWIzYTI4OWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTU3LDcgKzU3LDEzIEBA
IHZvaWQgTWFya1N0YWNrOjphcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJv
b3RzKQogaW5saW5lIHZvaWQgTWFya1N0YWNrOjptYXJrQ2hpbGRyZW4oSlNDZWxsKiBjZWxsKQog
ewogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7CisgICAgaWYgKGNlbGwtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA8IENvbXBvdW5kVHlwZSkgeworICAgICAgICBjZWxs
LT5KU0NlbGw6Om1hcmtDaGlsZHJlbigqdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBpZiAoIWNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc01hcmtDaGls
ZHJlbigpKSB7CisgICAgICAgIEFTU0VSVChjZWxsLT5pc09iamVjdCgpKTsKICNpZmRlZiBOREVC
VUcKICAgICAgICAgYXNPYmplY3QoY2VsbCktPm1hcmtDaGlsZHJlbkRpcmVjdCgqdGhpcyk7CiAj
ZWxzZQpAQCAtMTA1LDYgKzExMSw3IEBAIHZvaWQgTWFya1N0YWNrOjpkcmFpbigpCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsKKyAgICAgICAgICAgICAgICBjZWxsLT5KU0NlbGw6Om1h
cmtDaGlsZHJlbigqdGhpcyk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQubV92YWx1ZXMg
PT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVtb3ZlTGFzdCgpOwog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcAppbmRleCAzOThkNDMzMjVjNjRkMmNlMmRiNDRlZWI3NTJkMjNjZmZm
OTNjZjc4Li5hMTBhNzc4NWMzZDk2ZjYzMzc2YWY0Y2U2M2I2OTBiNDExZDk0M2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC02MCwxNCArNjAsMTIg
QEAgTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYg
YWxsb2NhdGlvbiwgSlNHbG9iYWxEYXRhKgogCiAgICAgU3RydWN0dXJlKiBkdW1teU1hcmthYmxl
Q2VsbFN0cnVjdHVyZSA9IGdsb2JhbERhdGEtPmR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlLmdl
dCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSAr
PSBtX2F0b21zUGVyQ2VsbCkKLSAgICAgICAgbmV3ICgmYXRvbXMoKVtpXSkgSlNDZWxsKGR1bW15
TWFya2FibGVDZWxsU3RydWN0dXJlKTsKKyAgICAgICAgbmV3ICgmYXRvbXMoKVtpXSkgSlNDZWxs
KCpnbG9iYWxEYXRhLCBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSk7CiB9CiAKIHZvaWQgTWFy
a2VkQmxvY2s6OnN3ZWVwKCkKIHsKLSNpZiAhRU5BQkxFKEpTQ19aT01CSUVTKQogICAgIFN0cnVj
dHVyZSogZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUgPSBtX2hlYXAtPmdsb2JhbERhdGEoKS0+
ZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUuZ2V0KCk7Ci0jZW5kaWYKIAogICAgIGZvciAoc2l6
ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkg
ewogICAgICAgICBpZiAobV9tYXJrcy5nZXQoaSkpCkBAIC03NSwxNSArNzMsMTUgQEAgdm9pZCBN
YXJrZWRCbG9jazo6c3dlZXAoKQogCiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKj4oJmF0b21zKClbaV0pOwogI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAg
ICAgICAgaWYgKCFjZWxsLT5pc1pvbWJpZSgpKSB7CisgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1
cmUoKSAmJiBjZWxsLT5zdHJ1Y3R1cmUoKSAhPSBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSAm
JiAhY2VsbC0+aXNab21iaWUoKSkgewogICAgICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZv
ID0gY2VsbC0+Y2xhc3NJbmZvKCk7CiAgICAgICAgICAgICBjZWxsLT5+SlNDZWxsKCk7Ci0gICAg
ICAgICAgICBuZXcgKGNlbGwpIEpTWm9tYmllKGluZm8sIEpTWm9tYmllOjpsZWFrZWRab21iaWVT
dHJ1Y3R1cmUoKm1faGVhcC0+Z2xvYmFsRGF0YSgpKSk7CisgICAgICAgICAgICBuZXcgKGNlbGwp
IEpTWm9tYmllKCptX2hlYXAtPmdsb2JhbERhdGEoKSwgaW5mbywgbV9oZWFwLT5nbG9iYWxEYXRh
KCktPnpvbWJpZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICBtX21hcmtzLnNldChpKTsK
ICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOwotICAgICAgICBuZXcg
KGNlbGwpIEpTQ2VsbChkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSk7CisgICAgICAgIG5ldyAo
Y2VsbCkgSlNDZWxsKCptX2hlYXAtPmdsb2JhbERhdGEoKSwgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1
Y3R1cmUpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Ryb25nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaApp
bmRleCAzOTRkMmFhY2E3MDYyNGQ5M2U4MjIwYzQ5MWEyZTE2NDRjNWEyYjVmLi44YjkyYWU5Zjdj
NjU2MzJhMTM2MTQ2ODUwMzUwOTg5NmYzMGVjMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdHJvbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dHJvbmcuaApAQCAtMjksMTAgKzI5LDEyIEBACiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogI2lu
Y2x1ZGUgIkhhbmRsZS5oIgogI2luY2x1ZGUgIkhhbmRsZUhlYXAuaCIKLSNpbmNsdWRlICJKU0ds
b2JhbERhdGEuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK0hh
bmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoSlNHbG9iYWxEYXRhJik7CisKIC8vIEEgc3Ry
b25nbHkgcmVmZXJlbmNlZCBoYW5kbGUgdGhhdCBwcmV2ZW50cyB0aGUgb2JqZWN0IGl0IHBvaW50
cyB0byBmcm9tIGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewogICAgIHVzaW5nIEhhbmRsZTxUPjo6
c2xvdDsKQEAgLTQ3LDEzICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIFN0cm9u
ZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1ZSA9IEV4dGVybmFs
VHlwZSgpKQotICAgICAgICA6IEhhbmRsZTxUPihnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFu
ZGxlKCkpCisgICAgICAgIDogSGFuZGxlPFQ+KGFsbG9jYXRlR2xvYmFsSGFuZGxlKGdsb2JhbERh
dGEpKQogICAgIHsKICAgICAgICAgc2V0KHZhbHVlKTsKICAgICB9CiAKICAgICBTdHJvbmcoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBIYW5kbGU8VD4gaGFuZGxlKQotICAgICAgICA6IEhhbmRs
ZTxUPihnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCkpCisgICAgICAgIDogSGFuZGxl
PFQ+KGFsbG9jYXRlR2xvYmFsSGFuZGxlKGdsb2JhbERhdGEpKQogICAgIHsKICAgICAgICAgc2V0
KGhhbmRsZS5nZXQoKSk7CiAgICAgfQpAQCAtOTYsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUpCiAgICAg
ewogICAgICAgICBpZiAoIXNsb3QoKSkKLSAgICAgICAgICAgIHNldFNsb3QoZ2xvYmFsRGF0YS5h
bGxvY2F0ZUdsb2JhbEhhbmRsZSgpKTsKKyAgICAgICAgICAgIHNldFNsb3QoYWxsb2NhdGVHbG9i
YWxIYW5kbGUoZ2xvYmFsRGF0YSkpOwogICAgICAgICBzZXQodmFsdWUpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5k
ZXggZDc5YzU4MWUzNjE3MWY0Y2NjZmFkNTdiYzMzYmQ1MzY1NzI0OTRiYS4uNzI0ZjY4ZjM0ZTk5
YzM4NjIyMjVhY2JlZTFlMGRiNmFjNmJhOTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEluc3RydWN0aW9uKgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xv
YmFsT2JqZWN0KCkpOwogICAgIGludCBwcm9wZXJ0eSA9IHZQQ1syXS51Lm9wZXJhbmQ7Ci0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbM10udS5zdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB2UENbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgaW50IG9mZnNldCA9
IHZQQ1s0XS51Lm9wZXJhbmQ7CiAKICAgICBpZiAoc3RydWN0dXJlID09IGdsb2JhbE9iamVjdC0+
c3RydWN0dXJlKCkpIHsKQEAgLTE3NywxMCArMTc3LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50
ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9u
KgogICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50
LCBzbG90KSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZy
YW1lLCBpZGVudCk7CiAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xv
YmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSAmJiBzbG90
LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7Ci0gICAgICAgICAgICBpZiAodlBDWzNdLnUu
c3RydWN0dXJlKQotICAgICAgICAgICAgICAgIHZQQ1szXS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsK
LSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPnJlZigpOwotICAgICAgICAg
ICAgdlBDWzNdID0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIHZQQ1sz
XS51LnN0cnVjdHVyZS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOwogICAgICAgICAgICAg
dlBDWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUihkc3QpID0gSlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMDQsNyArMjAxLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29s
dmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnUKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKICAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKICAgICBpbnQgcHJvcGVydHkg
PSB2UENbMl0udS5vcGVyYW5kOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzNdLnUu
c3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzNdLnUuc3RydWN0dXJl
LmdldCgpOwogICAgIGludCBvZmZzZXQgPSB2UENbNF0udS5vcGVyYW5kOwogICAgIGludCBza2lw
ID0gdlBDWzVdLnUub3BlcmFuZDsKICAgICAKQEAgLTI1NSwxMCArMjUyLDcgQEAgTkVWRVJfSU5M
SU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBJbnN0cnUKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2Fs
bEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90Lmdl
dFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwogICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZh
bHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewotICAgICAgICAgICAg
aWYgKHZQQ1szXS51LnN0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICB2UENbM10udS5zdHJ1Y3R1
cmUtPmRlcmVmKCk7Ci0gICAgICAgICAgICBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5yZWYo
KTsKLSAgICAgICAgICAgIHZQQ1szXSA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCk7CisgICAg
ICAgICAgICB2UENbM10udS5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgIHZQQ1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0g
SlNWYWx1ZShyZXN1bHQpOwpAQCAtMTIyNSwxMSArMTIxOSwxMSBAQCBORVZFUl9JTkxJTkUgdm9p
ZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVQdXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2Rl
QmxvY2sqCiAgICAgfQogCiAgICAgLy8gQ2FjaGUgbWlzczogcmVjb3JkIFN0cnVjdHVyZSB0byBj
b21wYXJlIGFnYWluc3QgbmV4dCB0aW1lLgotICAgIFN0cnVjdHVyZSogbGFzdFN0cnVjdHVyZSA9
IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTdHJ1Y3R1cmUgPSB2UENb
NF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgaWYgKHN0cnVjdHVyZSAhPSBsYXN0U3RydWN0dXJl
KSB7CiAgICAgICAgIC8vIEZpcnN0IG1pc3M6IHJlY29yZCBTdHJ1Y3R1cmUgdG8gY29tcGFyZSBh
Z2FpbnN0IG5leHQgdGltZS4KICAgICAgICAgaWYgKCFsYXN0U3RydWN0dXJlKSB7Ci0gICAgICAg
ICAgICB2UENbNF0gPSBzdHJ1Y3R1cmU7CisgICAgICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUu
c2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEyNTUs
MjQgKzEyNDksMjMgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlUHV0
QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogCiAgICAgICAgIC8vIHB1dF9i
eV9pZF90cmFuc2l0aW9uIGNoZWNrcyB0aGUgcHJvdG90eXBlIGNoYWluIGZvciBzZXR0ZXJzLgog
ICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUsIGJhc2VDZWxsKTsKLQor
ICAgICAgICBKU0NlbGwqIG93bmVyID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKKyAg
ICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7
CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7Ci0g
ICAgICAgIHZQQ1s0XSA9IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpOwotICAgICAgICB2UENbNV0g
PSBzdHJ1Y3R1cmU7Ci0gICAgICAgIHZQQ1s2XSA9IEluc3RydWN0aW9uKGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByb3Rv
dHlwZUNoYWluKGNhbGxGcmFtZSkpOworICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUuc2V0KGds
b2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgIHZQQ1s1
XS51LnN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHN0cnVjdHVyZSk7CisgICAgICAg
IHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxs
RnJhbWUpKTsKKyAgICAgICAgQVNTRVJUKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKTsKICAgICAg
ICAgdlBDWzddID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKLSAgICAgICAgY29kZUJsb2NrLT5yZWZT
dHJ1Y3R1cmVzKHZQQyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICB2UENbMF0gPSBn
ZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpOwogICAgIHZQQ1s1XSA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7Ci0gICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CiB9CiAKLU5FVkVS
X0lOTElORSB2b2lkIEludGVycHJldGVyOjp1bmNhY2hlUHV0QnlJRChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qIHZQQykKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp1
bmNhY2hlUHV0QnlJRChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogdlBDKQogewotICAgIGNvZGVC
bG9jay0+ZGVyZWZTdHJ1Y3R1cmVzKHZQQyk7CiAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX3B1
dF9ieV9pZCk7CiAgICAgdlBDWzRdID0gMDsKIH0KQEAgLTEzMTQsMTEgKzEzMDcsMTEgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKgogICAgIH0KIAogICAgIC8vIENhY2hlIG1pc3MKLSAgICBTdHJ1
Y3R1cmUqIGxhc3RTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJl
KiBsYXN0U3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmIChzdHJ1
Y3R1cmUgIT0gbGFzdFN0cnVjdHVyZSkgewogICAgICAgICAvLyBGaXJzdCBtaXNzOiByZWNvcmQg
U3RydWN0dXJlIHRvIGNvbXBhcmUgYWdhaW5zdCBuZXh0IHRpbWUuCiAgICAgICAgIGlmICghbGFz
dFN0cnVjdHVyZSkgewotICAgICAgICAgICAgdlBDWzRdID0gc3RydWN0dXJlOworICAgICAgICAg
ICAgdlBDWzRdLnUuc3RydWN0dXJlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0xMzQ0LDggKzEzMzcsNiBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRl
cnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sq
CiAgICAgICAgICAgICB2UENbNV0gPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLQotICAgICAgICBjb2RlQmxvY2stPnJlZlN0cnVjdHVyZXModlBD
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4Myw5ICsxMzc0LDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKgogICAgICAgICAgICAgdlBDWzZdID0gb2Zmc2V0OwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdlBDWzVdID0gYmFzZU9iamVjdC0+c3RydWN0
dXJlKCk7Ci0KLSAgICAgICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CisgICAgICAg
IHZQQ1s1XS51LnN0cnVjdHVyZS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTQxMSwxNSArMTQwMCwxMyBAQCBORVZFUl9JTkxJTkUgdm9p
ZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2Rl
QmxvY2sqCiAgICAgICAgIHZQQ1s3XSA9IG9mZnNldDsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIHZQQ1s0XSA9IHN0cnVjdHVyZTsKLSAgICB2UENbNV0gPSBJbnN0cnVjdGlvbihjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
LT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKKyAgICB2UENbNF0udS5zdHJ1Y3R1cmUuc2V0
KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOworICAgIHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLnNldChjYWxsRnJhbWUtPmds
b2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcm90
b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKICAgICB2UENbNl0gPSBjb3VudDsKLSAgICBjb2RlQmxv
Y2stPnJlZlN0cnVjdHVyZXModlBDKTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0
ZXI6OnVuY2FjaGVHZXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBD
KQorTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnVuY2FjaGVHZXRCeUlEKENvZGVCbG9j
ayosIEluc3RydWN0aW9uKiB2UEMpCiB7Ci0gICAgY29kZUJsb2NrLT5kZXJlZlN0cnVjdHVyZXMo
dlBDKTsKICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICB2UENbNF0g
PSAwOwogfQpAQCAtMjUyOCw3ICsyNTE1LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKIAog
ICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpT
Q2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICBp
ZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGJhc2VDZWxsLT5pc09iamVjdCgpKTsKQEAgLTI1NTksMTIgKzI1NDYs
MTIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBm
bGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VW
YWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFs
dWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51
LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUu
c3RydWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1
Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkuaXNPYmplY3QoKSk7CiAgICAgICAgICAg
ICAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gYXNPYmplY3Qoc3RydWN0dXJlLT5wcm90b3R5
cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAK
ICAgICAgICAgICAgICAgICBpZiAoTElLRUxZKHByb3RvT2JqZWN0LT5zdHJ1Y3R1cmUoKSA9PSBw
cm90b3R5cGVTdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBkc3QgPSB2UENb
MV0udS5vcGVyYW5kOwpAQCAtMjU5OCwxMiArMjU4NSwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVy
Ojpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0
ZXJGaQogICAgICAgICAKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7
CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQoKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0dXJl
KCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAg
IEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFzT2JqZWN0KHN0cnVjdHVyZS0+cHJvdG90eXBlRm9y
TG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0dXJlOworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0dXJlLmdldCgpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChMSUtFTFkocHJvdG9PYmplY3QtPnN0cnVj
dHVyZSgpID09IHByb3RvdHlwZVN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50
IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CkBAIC0yNjQzLDEyICsyNjMwLDEyIEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJG
aWxlKiByZWdpc3RlckZpCiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5p
c0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXND
ZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVj
dHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0
dXJlLmdldCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxs
LT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkuaXNPYmplY3QoKSk7CiAgICAg
ICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gYXNPYmplY3Qoc3RydWN0dXJlLT5w
cm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1Y3R1cmUuZ2V0
KCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKExJS0VMWShwcm90b09i
amVjdC0+c3RydWN0dXJlKCkgPT0gcHJvdG90eXBlU3RydWN0dXJlKSkgewogICAgICAgICAgICAg
ICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKQEAgLTI3MTIsNiArMjY5OSw5IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywg
UmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9w
X2dldF9ieV9pZF9wcm90b19saXN0KTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAg
IH0KKyNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKKyAgICBnb3RvICooJiZz
a2lwX2dldF9ieV9pZF9jaGFpbik7CisjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX2dldF9i
eV9pZF9jaGFpbikgewogICAgICAgICAvKiBvcF9nZXRfYnlfaWRfY2hhaW4gZHN0KHIpIGJhc2Uo
cikgcHJvcGVydHkoaWQpIHN0cnVjdHVyZShzSUQpIHN0cnVjdHVyZUNoYWluKGNoYWluKSBjb3Vu
dChuKSBvZmZzZXQobikKIApAQCAtMjcyNCwxMiArMjcxNCwxMiBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVn
aXN0ZXJGaQogCiAgICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkgewogICAg
ICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlOworICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAKICAg
ICAgICAgICAgIGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSkp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1
Y3R1cmVDaGFpbi0+aGVhZCgpOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+KiBpdCA9IHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CiAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvdW50ID0gdlBDWzZdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsKKyAgICAgICAgICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsKIAogICAgICAgICAgICAgICAgIHdo
aWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0g
YXNPYmplY3QoYmFzZUNlbGwtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZy
YW1lKSk7CkBAIC0yNzU5LDYgKzI3NDksNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRl
RXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAg
ICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQogI2lmIFVTRShHQ0NfQ09NUFVURURfR09U
T19XT1JLQVJPVU5EKQorICAgIHNraXBfZ2V0X2J5X2lkX2NoYWluOgogICAgIGdvdG8gKigmJnNr
aXBfaWRfZ2V0dGVyX3NlbGYpOwogI2VuZGlmCiAgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYnlf
aWRfZ2V0dGVyX3NlbGYpIHsKQEAgLTI3NzMsNyArMjc2NCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdp
c3RlckZpCiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkp
IHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0g
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1
cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VDZWxsLT5p
c09iamVjdCgpKTsKQEAgLTI4MTYsNyArMjgwNyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnBy
aXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZp
CiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAg
ICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9
PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VDZWxsLT5pc09iamVj
dCgpKTsKQEAgLTI4NzMsMTIgKzI4NjQsMTIgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgCiAgICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkgewogICAgICAgICAg
ICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlOworICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVjdHVyZSgpID09IHN0cnVj
dHVyZSkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0u
dS5zdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KiBpdCA9IHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CiAgICAgICAg
ICAgICAgICAgc2l6ZV90IGNvdW50ID0gdlBDWzZdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsKKyAgICAgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKS0+cHJv
dG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwpAQCAtMjkyOCwxMiArMjkxOSwxMiBAQCBza2lw
X2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUu
aXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFz
Q2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1
Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVj
dHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2Vs
bC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+KiBpdCA9IHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CisgICAgICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gdlBDWzVdLnUuc3RydWN0dXJl
Q2hhaW4tPmhlYWQoKTsKICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQgPSB2UENbNl0udS5v
cGVyYW5kOwotICAgICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBlbmQgPSBpdCArIGNv
dW50OworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBlbmQgPSBpdCAr
IGNvdW50OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZUNlbGwtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7CkBAIC0y
OTY0LDYgKzI5NTUsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgIH0KICNpZiBVU0UoR0ND
X0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAgICBza2lwX2lkX2N1c3RvbV9jaGFpbjoKKyAg
ICBnb3RvICooJiZza2lwX2dldF9hcnJheV9sZW5ndGgpOwogI2VuZGlmCiAgICAgREVGSU5FX09Q
Q09ERShvcF9nZXRfYXJyYXlfbGVuZ3RoKSB7CiAgICAgICAgIC8qIG9wX2dldF9hcnJheV9sZW5n
dGggZHN0KHIpIGJhc2UocikgcHJvcGVydHkoaWQpIG5vcChzSUQpIG5vcChuKSBub3Aobikgbm9w
KG4pCkBAIC0yOTg1LDYgKzI5NzcsMTAgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAg
dW5jYWNoZUdldEJ5SUQoY29kZUJsb2NrLCB2UEMpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9O
KCk7CiAgICAgfQorI2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EKQorICAgIHNr
aXBfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBnb3RvICooJiZza2lwX2dldF9zdHJpbmdfbGVuZ3Ro
KTsKKyNlbmRpZgogICAgIERFRklORV9PUENPREUob3BfZ2V0X3N0cmluZ19sZW5ndGgpIHsKICAg
ICAgICAgLyogb3BfZ2V0X3N0cmluZ19sZW5ndGggZHN0KHIpIGJhc2UocikgcHJvcGVydHkoaWQp
IG5vcChzSUQpIG5vcChuKSBub3Aobikgbm9wKG4pCiAKQEAgLTMwMDUsNiArMzAwMSwxMCBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICB1bmNhY2hlR2V0QnlJRChjb2RlQmxvY2ssIHZQ
Qyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisjaWYgVVNFKEdDQ19DT01Q
VVRFRF9HT1RPX1dPUktBUk9VTkQpCisgICAgc2tpcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBn
b3RvICooJiZza2lwX3B1dF9ieV9pZCk7CisjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1
dF9ieV9pZCkgewogICAgICAgICAvKiBwdXRfYnlfaWQgYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFs
dWUocikgbm9wKG4pIG5vcChuKSBub3Aobikgbm9wKG4pIGRpcmVjdChiKQogCkBAIC0zMDM4LDYg
KzMwMzgsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICB2UEMgKz0gT1BDT0RFX0xF
TkdUSChvcF9wdXRfYnlfaWQpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQor
I2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EKQorICAgICAgc2tpcF9wdXRfYnlf
aWQ6CisjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSB7
CiAgICAgICAgIC8qIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uIGJhc2UocikgcHJvcGVydHkoaWQp
IHZhbHVlKHIpIG9sZFN0cnVjdHVyZShzSUQpIG5ld1N0cnVjdHVyZShzSUQpIHN0cnVjdHVyZUNo
YWluKGNoYWluKSBvZmZzZXQobikgZGlyZWN0KGIpCiAgICAgICAgICAKQEAgLTMwNTQsOCArMzA1
Nyw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9
IHZQQ1s0XS51LnN0cnVjdHVyZTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gdlBDWzVdLnUuc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gb2xkU3RydWN0dXJl
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CkBAIC0z
MDYzLDcgKzMwNjYsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIGlu
dCBkaXJlY3QgPSB2UENbOF0udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmICghZGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+KiBpdCA9IHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CisgICAgICAgICAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IHZQQ1s2XS51LnN0cnVjdHVyZUNo
YWluLT5oZWFkKCk7CiAKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBwcm90byA9IGJhc2VP
YmplY3QtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKICAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKCFwcm90by5pc051bGwoKSkgewpAQCAtMzA3NSwxMSArMzA3
OCwxMSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dG8gPSBhc09iamVjdChwcm90byktPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29rdXAoY2Fs
bEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT50cmFuc2l0aW9uVG8obmV3U3RydWN0dXJlKTsKKyAgICAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT50cmFuc2l0aW9uVG8oKmdsb2JhbERhdGEsIG5ld1N0cnVj
dHVyZSk7CiAKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmpl
Y3QtPmdldERpcmVjdExvY2F0aW9uKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
PmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXRE
aXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51
Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRE
aXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5y
KHZhbHVlKS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5H
VEgob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pOwpAQCAtMzEwNiw3ICszMTA5LDcgQEAgc2tpcF9p
ZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkp
IHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0g
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgp
OwogCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1
Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VDZWxsLT5pc09iamVjdCgpKTsK
QEAgLTMxMTQsNyArMzExNyw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgICAg
ICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5n
ZXREaXJlY3RMb2NhdGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0
TG9jYXRpb24oKmdsb2JhbERhdGEsIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVy
YW5kKSkpID09IG9mZnNldCk7CiAgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0
T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBvZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1
ZSkuanNWYWx1ZSgpKTsKIAogICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9w
X3B1dF9ieV9pZF9yZXBsYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDNkODdlNTEx
MWQwMmZkYjllYzY4MzM5ZWY4YzVkMzMyOTllNzBlYzguLjZiOGM2ZGQ0Njg5Y2M1ODlmOTg1M2Y4
MjA1OTY3YWNhZTY0YTk2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjM1LDcgKzIz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJ
ZFNlbGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJl
Kiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqIGNvZGVi
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUqLCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KTsKLSAgICAgICAg
c3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oQ29kZUJsb2NrKiBjb2RlYmxvY2ssIE1l
dGhvZENhbGxMaW5rSW5mbyYsIEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIFJl
dHVybkFkZHJlc3NQdHIpOworICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaE1ldGhvZENhbGxQcm90
byhKU0dsb2JhbERhdGEmLCBDb2RlQmxvY2sqIGNvZGVibG9jaywgTWV0aG9kQ2FsbExpbmtJbmZv
JiwgSlNGdW5jdGlvbiosIFN0cnVjdHVyZSosIEpTT2JqZWN0KiwgUmV0dXJuQWRkcmVzc1B0cik7
CiAKICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDc2MzNiNmE2YWM3ZjQzN2JhOWQ0MWM2MGE3
YjQ2OGM4ZDQyOGIwODIuLmExZjFmZTY2ODNkMGJlMzk4N2M1OWNlNmQzYTAxMjk3OWZhNjYxMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5z
aXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUKIAogICAgIC8vIGVj
eCA9IGJhc2VPYmplY3QtPm1fc3RydWN0dXJlCiAgICAgaWYgKCFkaXJlY3QpIHsKLSAgICAgICAg
Zm9yIChSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOyAqaXQ7ICsraXQpCisg
ICAgICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsg
Kml0OyArK2l0KQogICAgICAgICAgICAgdGVzdFByb3RvdHlwZSgoKml0KS0+c3RvcmVkUHJvdG90
eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAgICAgfQogCkBAIC02MDYsMTEgKzYwNiw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgU3RydWN0dXJlCiAgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0
dXJuKHJlZ1QzKTsKICAgICB9CiAKLSAgICAvLyBBc3N1bWVzIG1fcmVmQ291bnQgY2FuIGJlIGRl
Y3JlbWVudGVkIGVhc2lseSwgcmVmY291bnQgZGVjcmVtZW50IGlzIHNhZmUgYXMgCi0gICAgLy8g
Y29kZWJsb2NrIHNob3VsZCBlbnN1cmUgb2xkU3RydWN0dXJlLT5tX3JlZkNvdW50ID4gMAotICAg
IHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKG9sZFN0cnVjdHVyZS0+YWRk
cmVzc09mQ291bnQoKSkpOwotICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRy
ZXNzKG5ld1N0cnVjdHVyZS0+YWRkcmVzc09mQ291bnQoKSkpOwotICAgIHN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSkpOworICAgIHN0b3JlUHRyV2l0aFdyaXRlQmFycmllcihUcnVzdGVkSW1tUHRyKG5l
d1N0cnVjdHVyZSksIHJlZ1QwLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CiAKICAgICAvLyB3cml0ZSB0aGUgdmFsdWUKICAgICBjb21waWxlUHV0RGlyZWN0T2Zm
c2V0KHJlZ1QwLCByZWdUMSwgbmV3U3RydWN0dXJlLCBjYWNoZWRPZmZzZXQpOwpAQCAtNjUyLDE3
ICs2NDgsMTUgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3QKICAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHBhdGNoT2Zm
c2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0KSwgb2Zmc2V0KTsKIH0KIAotdm9pZCBKSVQ6OnBh
dGNoTWV0aG9kQ2FsbFByb3RvKENvZGVCbG9jayogY29kZUJsb2NrLCBNZXRob2RDYWxsTGlua0lu
Zm8mIG1ldGhvZENhbGxMaW5rSW5mbywgSlNGdW5jdGlvbiogY2FsbGVlLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNPYmplY3QqIHByb3RvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
Cit2b2lkIEpJVDo6cGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlu
a0luZm8sIEpTRnVuY3Rpb24qIGNhbGxlZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0
KiBwcm90bywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hC
dWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCiAgICAgQVNTRVJUKCFtZXRob2RDYWxs
TGlua0luZm8uY2FjaGVkU3RydWN0dXJlKTsKLSAgICBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVk
U3RydWN0dXJlID0gc3RydWN0dXJlOwotICAgIHN0cnVjdHVyZS0+cmVmKCk7CisgICAgbWV0aG9k
Q2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKIAogICAgIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlID0gcHJvdG8tPnN0cnVjdHVyZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5j
YWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGVTdHJ1Y3R1cmU7Ci0gICAgcHJvdG90
eXBlU3RydWN0dXJlLT5yZWYoKTsKKyAgICBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVkUHJvdG90
eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwogCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhv
ZENhbGxMaW5rSW5mby5zdHJ1Y3R1cmVMYWJlbCwgc3RydWN0dXJlKTsKICAgICByZXBhdGNoQnVm
ZmVyLnJlcGF0Y2gobWV0aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFMYWJlbFB0
ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90b09iaiksIHByb3RvKTsKQEAgLTcz
NSw3ICs3MjksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIEp1bXAgZmFpbHVyZUNh
c2VzMSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwogCiAgICAgLy8gQ2hlY2sg
dGhlIHByb3RvdHlwZSBvYmplY3QncyBTdHJ1Y3R1cmUgaGFkIG5vdCBjaGFuZ2VkLgotICAgIFN0
cnVjdHVyZSogY29uc3QgKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3Qt
PmFkZHJlc3NPZlN0cnVjdHVyZSgpOworICAgIGNvbnN0IHZvaWQqIHByb3RvdHlwZVN0cnVjdHVy
ZUFkZHJlc3MgPSBwcm90b09iamVjdC0+YWRkcmVzc09mU3RydWN0dXJlKCk7CiAjaWYgQ1BVKFg4
Nl82NCkKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvdG90eXBlU3RydWN0dXJlKSwgcmVnVDMp
OwogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVB
ZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCByZWdUMyk7CkBAIC04MzksOCArODMz
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWMKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVu
dHJ5TGFiZWwgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGVBZGRlbmR1bSgpOwogCi0gICAgc3Ry
dWN0dXJlLT5yZWYoKTsKLSAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPmxpc3RbY3VycmVudElu
ZGV4XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlKTsKKyAgICBwb2x5bW9ycGhpY1N0cnVjdHVy
ZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoKm1fZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUpOwogCiAgICAgLy8gRmluYWxs
eSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVt
cCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFuY2hU
b1Nsb3dDYXNlKTsKQEAgLTg1OCw3ICs4NTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQog
ICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUp
OwogCiAgICAgLy8gQ2hlY2sgdGhlIHByb3RvdHlwZSBvYmplY3QncyBTdHJ1Y3R1cmUgaGFkIG5v
dCBjaGFuZ2VkLgotICAgIFN0cnVjdHVyZSogY29uc3QgKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRy
ZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOworICAgIGNvbnN0IHZvaWQq
IHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSBwcm90b09iamVjdC0+YWRkcmVzc09mU3RydWN0
dXJlKCk7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvdG90eXBl
U3RydWN0dXJlKSwgcmVnVDMpOwogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihO
b3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCByZWdU
Myk7CkBAIC05MDcsMTAgKzkwMCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgcGF0
Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZz
ZXQocGF0Y2hPZmZzZXRHZXRCeUlkUHV0UmVzdWx0KSk7CiAKICAgICBDb2RlTG9jYXRpb25MYWJl
bCBlbnRyeUxhYmVsID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlQWRkZW5kdW0oKTsKLQotICAg
IHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlLT5yZWYoKTsKLSAgICBw
cm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGVudHJ5TGFiZWwsIHN0
cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlKTsKKyAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5s
aXN0W2N1cnJlbnRJbmRleF0uc2V0KCptX2dsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwog
CiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUg
aG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1w
TG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNl
dEdldEJ5SWRCcmFuY2hUb1Nsb3dDYXNlKTsKQEAgLTkyOCw3ICs5MTgsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgUG9seW1vcnBoaQogICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGJhc2VPYmplY3RDaGVjayk7
CiAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgUmVmUHRy
PFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQpIHsKICAgICAg
ICAgcHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29r
dXAoY2FsbEZyYW1lKSk7CkBAIC05NzgsNyArOTY4LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3Jw
aGkKICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVsID0gcGF0Y2hCdWZmZXIuZmluYWxp
emVDb2RlQWRkZW5kdW0oKTsKIAogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRl
ZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KLSAgICBzdHJ1Y3R1cmUtPnJlZigp
OwogICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlM
YWJlbCwgc3RydWN0dXJlLCBjaGFpbik7CiAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1w
IHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4K
QEAgLTk5Nyw3ICs5ODYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIGJ1Y2tldHNP
ZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKIAogICAgIFN0
cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBSZWZQdHI8U3RydWN0dXJl
PiogaXQgPSBjaGFpbi0+aGVhZCgpOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9
IGNoYWluLT5oZWFkKCk7CiAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gMDsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytpdCkgewogICAgICAgICBwcm90b09i
amVjdCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJh
bWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCmluZGV4IDkzNzlmN2FjM2Y3ZjNlZGIyNmViOTQ0YjljOTJiNTYxYWVhNjJj
OWEuLmQwYzM2ODgyNmMxY2I2MzFjZDI2YThkNDZiZmQ2ZDhjYTFiNDkwOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApA
QCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlCiAgICAgCiAgICAgaWYg
KCFkaXJlY3QpIHsKICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgbm90aGluZyBpbiB0aGUgcHJvdG90
eXBlIGNoYWluIGhhcyBhIHNldHRlciBmb3IgdGhpcyBwcm9wZXJ0eS4gCi0gICAgICAgIGZvciAo
UmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsgKml0OyArK2l0KQorICAgICAg
ICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7ICppdDsg
KytpdCkKICAgICAgICAgICAgIHRlc3RQcm90b3R5cGUoKCppdCktPnN0b3JlZFByb3RvdHlwZSgp
LCBmYWlsdXJlQ2FzZXMpOwogICAgIH0KIApAQCAtNjE5LDEwICs2MTksOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIFN0cnVjdHVyZQogICAgICAgICAKICAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4ocmVnVDMpOwogICAgIH0KLSAgICAKLSAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSks
IEFic29sdXRlQWRkcmVzcyhvbGRTdHJ1Y3R1cmUtPmFkZHJlc3NPZkNvdW50KCkpKTsKLSAgICBh
ZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhuZXdTdHJ1Y3R1cmUtPmFkZHJl
c3NPZkNvdW50KCkpKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSks
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKworICAgIHN0b3Jl
UHRyV2l0aFdyaXRlQmFycmllcihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIHJlZ1QwLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAgCiAjaWYgQ1BV
KE1JUFMpIHx8IENQVShTSDQpCiAgICAgLy8gRm9yIE1JUFMsIHdlIGRvbid0IGFkZCBzaXplb2Yo
dm9pZCopIHRvIHRoZSBzdGFjayBvZmZzZXQuCkBAIC02NzQsMTcgKzY3MiwxNCBAQCB2b2lkIEpJ
VDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBTdAogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby0+aG90
UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkUHJvcGVydHlN
YXBPZmZzZXQyKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRh
ZykpOyAvLyB0YWcKIH0KIAotdm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKENvZGVCbG9j
ayogY29kZUJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbywgSlNG
dW5jdGlvbiogY2FsbGVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHByb3RvLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hNZXRob2RDYWxs
UHJvdG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0
aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNhbGxlZSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90bywgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxv
Y2spOwogICAgIAogICAgIEFTU0VSVCghbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVy
ZSk7Ci0gICAgbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZSA9IHN0cnVjdHVyZTsK
LSAgICBzdHJ1Y3R1cmUtPnJlZigpOwotICAgIAorICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNo
ZWRTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CiAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90by0+
c3RydWN0dXJlKCk7Ci0gICAgbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFByb3RvdHlwZVN0cnVj
dHVyZSA9IHByb3RvdHlwZVN0cnVjdHVyZTsKLSAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnJlZigp
OworICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0KGds
b2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHByb3RvdHlwZVN0cnVjdHVy
ZSk7CiAgICAgCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5rSW5mby5z
dHJ1Y3R1cmVMYWJlbCwgc3RydWN0dXJlKTsKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2gobWV0
aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNo
T2Zmc2V0TWV0aG9kQ2hlY2tQcm90b09iaiksIHByb3RvKTsKQEAgLTc2Miw3ICs3NTcsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGNoZWNrU3Ry
dWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwogICAgIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5
cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhhZCBub3QgY2hhbmdlZC4KLSAgICBTdHJ1Y3R1cmUqIGNv
bnN0ICogcHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZT
dHJ1Y3R1cmUoKTsKKyAgICBjb25zdCB2b2lkKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0g
cHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOwogI2lmIENQVShYODZfNjQpCiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKHByb3RvdHlwZVN0cnVjdHVyZSksIHJlZ1QzKTsKICAgICBKdW1w
IGZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90
b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVnVDMpOwpAQCAtODY3LDkgKzg2Miw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFBvbHltb3JwaGljCiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5m
by0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkUHV0UmVzdWx0
KSk7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVsID0gcGF0Y2hCdWZmZXIuZmlu
YWxpemVDb2RlQWRkZW5kdW0oKTsKLSAgICAKLSAgICBzdHJ1Y3R1cmUtPnJlZigpOwotICAgIHBv
bHltb3JwaGljU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChlbnRyeUxhYmVsLCBz
dHJ1Y3R1cmUpOworCisgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRl
eF0uc2V0KCptX2dsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50
cnlMYWJlbCwgc3RydWN0dXJlKTsKICAgICAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1w
IHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4K
ICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9IHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4uanVtcEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZEJyYW5jaFRvU2xvd0Nhc2UpOwpAQCAt
ODg5LDcgKzg4Myw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3Qo
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgSnVtcCBmYWlsdXJl
Q2FzZXMxID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSk7CiAgICAgCiAgICAgLy8g
Q2hlY2sgdGhlIHByb3RvdHlwZSBvYmplY3QncyBTdHJ1Y3R1cmUgaGFkIG5vdCBjaGFuZ2VkLgot
ICAgIFN0cnVjdHVyZSogY29uc3QgKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9P
YmplY3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOworICAgIGNvbnN0IHZvaWQqIHByb3RvdHlwZVN0
cnVjdHVyZUFkZHJlc3MgPSBwcm90b09iamVjdC0+YWRkcmVzc09mU3RydWN0dXJlKCk7CiAjaWYg
Q1BVKFg4Nl82NCkKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvdG90eXBlU3RydWN0dXJlKSwg
cmVnVDMpOwogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJz
b2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCByZWdUMyk7CkBAIC05MzUs
MTAgKzkyOSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQocGF0Y2hPZmZz
ZXRHZXRCeUlkUHV0UmVzdWx0KSk7CiAgICAgCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlM
YWJlbCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVuZHVtKCk7Ci0gICAgCi0gICAgc3Ry
dWN0dXJlLT5yZWYoKTsKLSAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnJlZigpOwotICAgIHByb3Rv
dHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0
dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOworCisgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlz
dFtjdXJyZW50SW5kZXhdLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVj
dHVyZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2Ug
YmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0
aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNl
dChwYXRjaE9mZnNldEdldEJ5SWRCcmFuY2hUb1Nsb3dDYXNlKTsKQEAgLTk1Nyw3ICs5NDksNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGNoZWNr
U3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIGN1cnJT
dHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4t
PmhlYWQoKTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgp
OwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvdW50OyArK2ksICsraXQpIHsKICAgICAgICAgcHJvdG9PYmplY3QgPSBhc09iamVj
dChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7CkBAIC0xMDA2
LDcgKzk5OCw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgQ29kZUxvY2F0aW9uTGFi
ZWwgZW50cnlMYWJlbCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVuZHVtKCk7CiAgICAg
CiAgICAgLy8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBi
ZSBkZWxldGVkIGxhdGVyLgotICAgIHN0cnVjdHVyZS0+cmVmKCk7CiAgICAgcHJvdG90eXBlU3Ry
dWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNo
YWluKTsKICAgICAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBi
YWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5zdGVhZC4KQEAgLTEwMjYsNyArMTAx
Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQo
Y2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSkpOwogICAgIAogICAgIFN0cnVjdHVyZSog
Y3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBj
aGFpbi0+aGVhZCgpOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5o
ZWFkKCk7CiAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gMDsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytpdCkgewogICAgICAgICBwcm90b09iamVjdCA9IGFz
T2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggZmUyNmRjYWExNjMyYjQ2N2Mx
ZjE4Y2Y3MzRmNjNmMTBjYWQ1M2Y2MC4uYWM0MzgyOTg0ZGFhYWE3NjIyNzdhNTI4ZTkxOTJmYzg1
MTkyMjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTg0OCw3
ICs4NDgsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlUHV0QnlJRChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIHN0dWJJbmZvLT5pbml0UHV0QnlJZFJlcGxhY2Uoc3RydWN0dXJlKTsKKyAg
ICBzdHViSW5mby0+aW5pdFB1dEJ5SWRSZXBsYWNlKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogCiAgICAgSklUOjpwYXRj
aFB1dEJ5SWRSZXBsYWNlKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSwgcmV0dXJuQWRkcmVzcywgZGlyZWN0KTsKIH0KQEAgLTg5Niw3ICs4OTYsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogCiAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlVmFsdWUpIHsKICAgICAgICAgLy8gc2V0IHRoaXMgdXAsIHNvIGRlcmVmU3RydWN0dXJlcyBj
YW4gZG8gaXQncyBqb2IuCi0gICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFNlbGYoc3RydWN0
dXJlKTsKKyAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkU2VsZihjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAg
ICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkK
ICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfc2VsZl9mYWlsKSk7CiAgICAg
ICAgIGVsc2UKQEAgLTkyMiw3ICs5MjIsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6
OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogICAg
ICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFByb3RvKHN0cnVjdHVyZSwgc2xvdEJhc2VPYmpl
Y3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkUHJvdG8oY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpKTsKIAogICAgICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgICAgICBBU1NFUlQoIXNsb3RCYXNlT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpOwpAQCAtMTU2MCw3ICsxNTYwLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9tZXRob2RfY2hl
Y2spCiAKICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiBpcyBvbiB0aGUg
b2JqZWN0J3MgcHJvdG90eXBlLiAgUGF0Y2ggdXAgdGhlIGNvZGUgdG8gb3B0aW1pemUuCiAgICAg
ICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAo
Y2FsbEZyYW1lKSkgewotICAgICAgICAgICAgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhjb2Rl
QmxvY2ssIG1ldGhvZENhbGxMaW5rSW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2Jq
ZWN0LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKKyAgICAgICAgICAgIEpJVDo6cGF0Y2hNZXRob2RD
YWxsUHJvdG8oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jaywgbWV0aG9kQ2FsbExp
bmtJbmZvLCBjYWxsZWUsIHN0cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QsIFNUVUJfUkVUVVJOX0FE
RFJFU1MpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAg
ICAgICB9CiAKQEAgLTE1NzEsNyArMTU3MSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNrKQogICAgICAgICAvLyBmb3Igbm93
LiAgRm9yIG5vdyBpdCBwZXJmb3JtcyBhIGNoZWNrIG9uIGEgc3BlY2lhbCBvYmplY3Qgb24gdGhl
IGdsb2JhbCBvYmplY3Qgb25seSB1c2VkIGZvciB0aGlzCiAgICAgICAgIC8vIHB1cnBvc2UuICBU
aGUgb2JqZWN0IGlzIGluIG5vIHdheSBleHBvc2VkLCBhbmQgYXMgc3VjaCB0aGUgY2hlY2sgd2ls
bCBhbHdheXMgcGFzcy4KICAgICAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUp
IHsKLSAgICAgICAgICAgIEpJVDo6cGF0Y2hNZXRob2RDYWxsUHJvdG8oY29kZUJsb2NrLCBtZXRo
b2RDYWxsTGlua0luZm8sIGNhbGxlZSwgc3RydWN0dXJlLCBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4o
KS0+Z2xvYmFsT2JqZWN0LT5tZXRob2RDYWxsRHVtbXkoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7
CisgICAgICAgICAgICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2ssIG1ldGhvZENhbGxMaW5rSW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUs
IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPm1ldGhvZENhbGxEdW1teSgp
LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MzAsNyArMTYzMCw3IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfc2VsZl9mYWlsKQog
CiAgICAgICAgIGlmIChzdHViSW5mby0+YWNjZXNzVHlwZSA9PSBhY2Nlc3NfZ2V0X2J5X2lkX3Nl
bGYpIHsKICAgICAgICAgICAgIEFTU0VSVCghc3R1YkluZm8tPnN0dWJSb3V0aW5lKTsKLSAgICAg
ICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QoQ29kZUxvY2F0aW9uTGFiZWwoKSwgc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGYu
YmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZUxp
c3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBDb2RlTG9jYXRpb25MYWJlbCgp
LCBzdHViSW5mby0+dS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpKTsKICAg
ICAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFNlbGZMaXN0KHBvbHltb3JwaGljU3RydWN0
dXJlTGlzdCwgMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwb2x5bW9ycGhpY1N0
cnVjdHVyZUxpc3QgPSBzdHViSW5mby0+dS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsK
QEAgLTE2NTUsMTIgKzE2NTUsMTIgQEAgc3RhdGljIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChKU0cKIAogICAgIHN3
aXRjaCAoc3R1YkluZm8tPmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
cHJvdG86Ci0gICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0
QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUsIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90by5w
cm90b3R5cGVTdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gbmV3
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChnbG9iYWxEYXRhLCBvd25lciwgc3R1Yklu
Zm8tPnN0dWJSb3V0aW5lLCBzdHViSW5mby0+dS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVj
dHVyZS5nZXQoKSwgc3R1YkluZm8tPnUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZS5n
ZXQoKSk7CiAgICAgICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IENvZGVMb2NhdGlvbkxhYmVs
KCk7CiAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFByb3RvTGlzdChwcm90b3R5cGVTdHJ1
Y3R1cmVMaXN0LCAyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lk
X2NoYWluOgotICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gbmV3IFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdChnbG9iYWxEYXRhLCBvd25lciwgc3R1YkluZm8tPnN0dWJSb3V0
aW5lLCBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSwgc3R1Yklu
Zm8tPnUuZ2V0QnlJZENoYWluLmNoYWluLmdldCgpKTsKKyAgICAgICAgcHJvdG90eXBlU3RydWN0
dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFsRGF0YSwg
b3duZXIsIHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJh
c2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbi5n
ZXQoKSk7CiAgICAgICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IENvZGVMb2NhdGlvbkxhYmVs
KCk7CiAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFByb3RvTGlzdChwcm90b3R5cGVTdHJ1
Y3R1cmVMaXN0LCAyKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNzUzLDEwICsyNzUzLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3Jlc29sdmVfZ2xvYmFsKQogICAg
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7CiAg
ICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0g
Z2xvYmFsT2JqZWN0KSB7CiAgICAgICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVz
b2x2ZUluZm8gPSBjb2RlQmxvY2stPmdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbmZv
SW5kZXgpOwotICAgICAgICAgICAgaWYgKGdsb2JhbFJlc29sdmVJbmZvLnN0cnVjdHVyZSkKLSAg
ICAgICAgICAgICAgICBnbG9iYWxSZXNvbHZlSW5mby5zdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAg
ICAgICAgICBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5yZWYoKTsKLSAgICAgICAgICAgIGds
b2JhbFJlc29sdmVJbmZvLnN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCk7Cisg
ICAgICAgICAgICBnbG9iYWxSZXNvbHZlSW5mby5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGdsb2JhbFJlc29sdmVJbmZvLm9mZnNldCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQu
aAppbmRleCBmZWFmNDY3NTE1OTE1ZjQ1YTMzNzZlZDE2MmQ0OTk1MDY0NjM3NDkxLi5lMWQ5MzUz
Y2JiNmYyYjY4ZGIwM2E3Y2E2YTU0NGFmZjIyMGM1ZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xOTMsNiArMTkzLDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBpbmxpbmUgSnVtcCBlbWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxS
ZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRzdCk7CiAgICAgICAgIGlubGluZSBKdW1wIGVtaXRM
b2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBGUFJlZ2lzdGVySUQgZHN0
LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwogCisgICAgICAgIGlubGluZSB2b2lkIHN0b3JlUHRyV2l0
aFdyaXRlQmFycmllcihUcnVzdGVkSW1tUHRyIHB0ciwgUmVnaXN0ZXJJRCAvKiBvd25lciAqLywg
QWRkcmVzcyBkZXN0KQorICAgICAgICB7CisgICAgICAgICAgICBzdG9yZVB0cihwdHIsIGRlc3Qp
OworICAgICAgICB9CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBpbmxpbmUgSnVt
cCBlbWl0SnVtcElmTm90SlNDZWxsKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4KTsKICAg
ICAgICAgaW5saW5lIEFkZHJlc3MgdGFnRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0g
Y2FsbEZyYW1lUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA4Y2NiMDM5ODUwNmJk
OWEzMWJkYTZhNzljOTA2ZDdiMTRkNDE0ZjgyLi43MjlkY2U5OTg2YjAwY2Q1ZmEyZjAwZmQ4MTI0
OTkxOGRkMWM0MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzY2LDYgKzM2Niw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHN0YXRpYyB2b2lkIGNsZWFudXBHbG9iYWxE
YXRhKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOworICAgIGdsb2JhbERhdGEtPmNsZWFyQnVpbHRpblN0cnVjdHVyZXMo
KTsKICAgICBnbG9iYWxEYXRhLT5oZWFwLmRlc3Ryb3koKTsKICAgICBnbG9iYWxEYXRhLT5kZXJl
ZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCA5
NTBiYjRlYjEzMjMzZmY2OGQ0MjNlZTBkNjg0MjMwMWI1OGE0ZTEyLi5iNWFhNDZiZjA3MjQwYTM4
ODY1ZDY3OTE1MTc2MmMxZjVkN2E2ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaApAQCAtOTIsNyArOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIGQtPnJlZ2lzdGVycyA9ICZhY3RpdmF0aW9uLT5yZWdpc3RlckF0KDApOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCisgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgCiAgICAgICAg
IH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxp
bmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi0gICAgICAgIDog
SlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1l
bnRzU3RydWN0dXJlKCkpCisgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmds
b2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0
cnVjdHVyZSgpKQogICAgICAgICAsIGQoYWRvcHRQdHIobmV3IEFyZ3VtZW50c0RhdGEpKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTE4NSw3ICsxODUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVu
dHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE5vUGFyYW1ldGVyc1R5cGUpCi0gICAgICAgIDogSlNO
b25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJndW1lbnRz
U3RydWN0dXJlKCkpCisgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0cnVj
dHVyZSgpKQogICAgICAgICAsIGQoYWRvcHRQdHIobmV3IEFyZ3VtZW50c0RhdGEpKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gbV9udW1QYXJhbWV0
ZXJzTWludXNUaGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgICAg
ICBzaXplX3QgcmVnaXN0ZXJBcnJheVNpemUgPSBudW1Mb2NhbHMgKyBSZWdpc3RlckZpbGU6OkNh
bGxGcmFtZUhlYWRlclNpemU7CiAKLSAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVu
a25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdpc3RlckFycmF5KGdsb2JhbERhdGEsIG1f
cmVnaXN0ZXJzIC0gcmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICAgICAg
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGNvcHlS
ZWdpc3RlckFycmF5KGdsb2JhbERhdGEsIG1fcmVnaXN0ZXJzIC0gcmVnaXN0ZXJPZmZzZXQsIHJl
Z2lzdGVyQXJyYXlTaXplLCBtX251bVBhcmFtZXRlcnNNaW51c1RoaXMgKyAxKTsKICAgICAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsg
cmVnaXN0ZXJPZmZzZXQ7CiAgICAgICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlcnMsIHJlZ2lzdGVy
QXJyYXkucmVsZWFzZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IGUwZjRiMjNmNDZiNDc4MmViMzhmMWVi
NTE3YWRjNGRhNzQ3OTA1NjYuLjA1MGU5ODk2NjQ1NDNmMjJlOWI3MjY3Y2JmMTE3MjlhYWY3OGQz
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJy
YXlDb25zdHJ1Y3Rvcik7CiAgICAgCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShFeGVjU3RhdGUqKTsKIAotQXJyYXlDb25zdHJ1Y3Rv
cjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBBcnJheVBy
b3RvdHlwZSogYXJyYXlQcm90b3R5cGUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCitB
cnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFycmF5UHJvdG90
eXBlKiBhcnJheVByb3RvdHlwZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKICAgICA6
IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgYXJyYXlQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFz
c05hbWUpKQogewogICAgIC8vIEVDTUEgMTUuNC4zLjEgQXJyYXkucHJvdG90eXBlCkBAIC01OSw3
ICs1OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVR
dWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpCiAgICAgICAgIHVpbnQzMl90IG4gPSBh
cmdzLmF0KDApLnRvVUludDMyKGV4ZWMpOwogICAgICAgICBpZiAobiAhPSBhcmdzLmF0KDApLnRv
TnVtYmVyKGV4ZWMpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCAiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRp
dmUgaW50ZWdlci4iKSk7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpLCBuLCBDcmVhdGVJbml0aWFsaXplZCk7CisgICAgICAg
IHJldHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlKCksIG4sIENyZWF0ZUluaXRpYWxpemVkKTsKICAgICB9CiAKICAg
ICAvLyBvdGhlcndpc2UgdGhlIGFycmF5IGlzIGNvbnN0cnVjdGVkIHdpdGggdGhlIGFyZ3VtZW50
cyBpbiBpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5oCmluZGV4IDVlMTQwOGY1M2Q1NDMwOTk2Yzg2ZGNjMzNhN2U1NDYxZGY4MDJjOTYuLjk3
YjI2YzU4YjdhMDI4ZDU2ZmYxNzc3YTI4Y2NkODNkMGVkNDQyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJheUNvbnN0cnVjdG9yIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJyYXlDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIEFycmF5UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisgICAgICAgIEFycmF5Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBBcnJheVByb3RvdHlw
ZSosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRD
YWxsRGF0YShDYWxsRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGI4NDNhM2QyOWQyNzk3YTBiNDZiOGMwYTQzYmFhNDc0
ZmU4ZGVhYmIuLjI5Y2FlY2VhMmI0NTVjYjEyYTEwM2FkOTEwY2VmNWRlNTJjNWYyOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAg
LTExNCw4ICsxMTQsOCBAQCBjb25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGU6OnNfaW5mbyA9
IHsiQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCBFeGVjU3RhdAogKi8KIAogLy8gRUNNQSAx
NS40LjQKLUFycmF5UHJvdG90eXBlOjpBcnJheVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6
IEpTQXJyYXkoc3RydWN0dXJlKQorQXJyYXlQcm90b3R5cGU6OkFycmF5UHJvdG90eXBlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNB
cnJheShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIDAsIGdsb2JhbE9iamVjdCk7CkBAIC01NzQsNyArNTc0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICBkZWxldGVDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZWxldGVEb3VibGUpOwogICAgIH0KIAotICAgIEpTQXJyYXkqIHJlc09iaiA9IG5ldyAoZXhlYykg
SlNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCksIGRl
bGV0ZUNvdW50LCBDcmVhdGVDb21wYWN0KTsKKyAgICBKU0FycmF5KiByZXNPYmogPSBuZXcgKGV4
ZWMpIEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmFycmF5U3RydWN0dXJlKCksIGRlbGV0ZUNvdW50LCBDcmVhdGVDb21wYWN0KTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHJlc09iajsKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBl
eGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGRlbGV0ZUNv
dW50OyBrKyspCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuaAppbmRleCA5NjY0MWJkMmJiYmM0NDFmMTBmYzc0NTQ2MDJjYzcxOWI4ZTVlZWYzLi42ZGFk
ZjUxMWEwY2E0ODk4MmVjMzdiODRmOTMxMjA5NTE2ZmI1MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKQEAgLTI4LDE0ICsyOCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFycmF5UHJvdG90eXBlIDogcHVibGljIEpTQXJy
YXkgewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXJyYXlQcm90b3R5cGUoSlNHbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgZXhwbGlj
aXQgQXJyYXlQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAg
ICBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
ci5oCmluZGV4IGVkZWVjNTc1NmExZDNkYTIxY2ZiYWViYWI4Zjk4ODY3MzgyODE2OWYuLmRmN2I3
ZjYxZGM3YTg4NTg5ODA3ODRlOGNmMDk0OWIyOWVjYjFjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9vYmpl
Y3Qob2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fb2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICAgICAgbV9vYmplY3QtPnNldFN0cnVj
dHVyZShTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgbV9vYmplY3QtPnN0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICAgICAgbV9vYmplY3QtPnNl
dFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRy
YW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9vYmplY3QtPnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIH0K
IAogICAgICAgICB+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZTVi
MGYzZDgzZjZlY2Y4MjFmMGRiYWQxNzlhODZjNTA2MTIzMzg0Zi4uYTFhNGVkNDhiZmIyYzhkZGI2
ZWE4ODFjYmU3OTE1N2JiODAyNWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xlYW5Db25zdHJ1Y3Rv
cik7CiAKLUJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCitC
b29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29sZWFu
UHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVj
LCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmgKaW5kZXggMjU1MGIzYjM1NDdkNmEwOWMzMmYwNTBlMjliZWU3NmZl
OTZjMjJmZi4uZmEwZDA1ZTU4ODdmMTAxMjY5NjFmMTNhYzJlODExMTUzODg0MjIyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgK
QEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCb29sZWFuQ29u
c3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAg
ICBCb29sZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBCb29sZWFuUHJvdG90eXBlKik7CisgICAgICAgIEJvb2xl
YW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJv
b2xlYW5Qcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKaW5kZXggMjk0NWMwZWViNWYz
OWY5NTRkYmM1NTBhZjkxZTUzMzJiOWMwZDhmOS4uZTI0YTMwYTRiYjU0YWU1MDBlZDBlOWQ3MTY1
ZmM5Y2U3YTVkOWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhbk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbk9iamVjdC5jcHAKQEAgLTI3LDggKzI3LDggQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChCb29sZWFuT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEJvb2xlYW5PYmplY3Q6OnNfaW5m
byA9IHsgIkJvb2xlYW4iLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotQm9v
bGVhbk9iamVjdDo6Qm9vbGVhbk9iamVjdChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTV3JhcHBlck9iamVjdChzdHJ1Y3R1cmUp
CitCb29sZWFuT2JqZWN0OjpCb29sZWFuT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKaW5kZXggZWYyZDQwMzRk
NTUzNGY0ODBjZWM2MTE4NWNkYzRjYWQwNzNmNzAxZS4uZGVmNDRiNDRkY2Q4NGZjZTAzMjY5MTkw
ZmY2N2NhYmI1MDAyNzJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhbk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5PYmplY3QuaApAQCAtMjcsMTEgKzI3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQm9vbGVhbk9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgZXhwbGljaXQgQm9vbGVhbk9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgICAgICBleHBsaWNpdCBCb29s
ZWFuT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHN0YXRpYyBj
b25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCBkMGE2NGFmYjc4OWI2N2YyODA3
MDM3MjQ1ZDVjMzQ3MzQ5YmIzMjJlLi4yMDk5MGUxNjY5NmMwZWYzZTY5ZmM5YzgzYTJmNTNmODU3
OGYwMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKIAogLy8gRUNN
QSAxNS42LjQKIAotQm9vbGVhblByb3RvdHlwZTo6Qm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQorQm9vbGVh
blByb3RvdHlwZTo6Qm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0
aW9uU3RydWN0dXJlKQogICAgIDogQm9vbGVhbk9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0
cnVjdHVyZSkKIHsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNC
b29sZWFuKGZhbHNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuUHJvdG90eXBlLmgKaW5kZXggZDZkM2Q5ZmIyOGY2MTM3ZGJjMDViNDE0MmY2OGQ5ZDE5ZGM5
NmJmZC4uNWNjYmQyYjRiNmRlZGQyMmE2NDdiZTExMzkzZDNhZmNhYmY4YmNlZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaApAQCAtMjcs
NyArMjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5Qcm90b3R5cGUg
OiBwdWJsaWMgQm9vbGVhbk9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBCb29sZWFuUHJv
dG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIEJvb2xlYW5Q
cm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1
cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDBhMDYxNDgxZmFmN2FlYzJlNDlkN2JhOGVkMDQwZTRiMmQyNzRiN2UuLjliYmI2ODgxNGUw
MTI2MTg5YzE1MzBiZmM2MzYyYjQwMWQyOWNlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVVUQyhFeGVjU3RhdGUqKTsK
IAotRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0
ZVByb3RvdHlwZSkKK0RhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5
cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGRhdGVQcm90b3R5cGUtPmNsYXNzSW5m
bygpLT5jbGFzc05hbWUpKQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZGF0ZVByb3Rv
dHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAppbmRleCBiZDUyOWYxNmYxODc4
ODM1MGYxMTJjMmNjODY3MjU2M2Q5ODk2ODEyLi4yM2EwMzExYWM4ZTkxZGU1ZDUyYzNhZmYyNDEz
MmUxMTdkMTlhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIERhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERhdGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1
cmUsIERhdGVQcm90b3R5cGUqKTsKKyAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVy
ZSwgRGF0ZVByb3RvdHlwZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKaW5kZXggNzRhZGRhNDdmYWIz
ZmE2ZTExMmI4OGE1Zjc3NmM0NzY3NjE4MTNjZi4uZDhjYTA3MjQ5MWI4NTgzZGZjODFlMTI5NWEy
ZDhiMzkyYTY0NDdkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuY3BwCkBAIC0zNCwxNSArMzQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0
IENsYXNzSW5mbyBEYXRlSW5zdGFuY2U6OnNfaW5mbyA9IHsiRGF0ZSIsICZKU1dyYXBwZXJPYmpl
Y3Q6OnNfaW5mbywgMCwgMH07CiAKLURhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0
ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBK
U1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQorRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTV3JhcHBlck9iamVj
dChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOwogICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc05h
TigpKTsKIH0KIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgZG91YmxlIHRpbWUpCi0gICAg
OiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQorRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFuY2Uo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgZG91YmxlIHRpbWUpCisgICAg
OiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmds
b2JhbERhdGEoKSwganNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKaW5kZXggZDBkY2YwYmMzNDZkZDc3Mjk1YzMx
MDA5MTMxNjYzZDM0MjIyZjJhYy4uNjE5NWM4NTQ5ZjU1MzRjNTc1ZmU4ODBlYmZjMWM3ZmRjMmE5
MzY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3Rh
bmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgK
QEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEYXRlSW5zdGFu
Y2UgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBkb3VibGUp
OwotICAgICAgICBleHBsaWNpdCBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBkb3VibGUpOworICAgICAgICBleHBsaWNpdCBEYXRlSW5zdGFuY2UoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgZG91YmxlIGludGVybmFsTnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gaW50ZXJuYWxWYWx1ZSgpLnVuY2hlY2tlZEdldE51bWJlcigpOyB9CiAKQEAgLTUy
LDcgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gY2FsY3VsYXRl
R3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDMxNGJhYTRjMmM5Y2FhMjlm
M2UyOGZiYWFjZjY5OWNiOTljNTM4MmUuLjQ0NGZhOThiOTE3M2VkYmRhNjhiOWJiMWYxMDdlNDky
N2MzYzEwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIERhdGVQcm90b3R5
cGU6OnNfaW5mbyA9IHsiRGF0ZSIsICZEYXRlSW5zdGFuY2U6OnNfaW5mbywgMCwgRXhlY1MKIAog
Ly8gRUNNQSAxNS45LjQKIAotRGF0ZVByb3RvdHlwZTo6RGF0ZVByb3RvdHlwZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKQorRGF0ZVByb3RvdHlwZTo6RGF0ZVByb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oCmluZGV4IDBlYmJlZGM3ZTMwMmQwYWQ3NzcyNzUyMTdmN2EzMWExYmRmNWI0
MjguLjJlMTAzMGRmZmJkMTg2OTczZTJiYjlkOTQwNmQ0ZjA0Y2QzMDQzMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKQEAgLTI5LDE0ICsyOSwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERhdGVQcm90b3R5cGUgOiBwdWJsaWMg
RGF0ZUluc3RhbmNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAg
ICAgICAgRGF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggYjg0ZjVl
YWMwYjMyZTkwNzkxMjc3ZGIxNDYxNDNhOWNlODIyMzRjYS4uN2VkYTE5ZjU0YmM2NTBmMDIxYjc2
MGE2NDFhOWYyMTZiZWFkNzRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNT
dGF0ZSogZXhlYykKIAogY2xhc3MgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgotICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdl
KQorICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKQogICAgICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERh
dGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0
eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAppbmRleCA3ZjRmODJjZWM1ZWJjNDU4YWFkOTQ3ZjRhMzg4N2EzNjYxYTQ0MGI2Li5k
ZjExMmRkMjIyMWY5Yzk4ZjdiZGU5MGJjMGJjOGU5MTMwMjRiZTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMjksNyAr
MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJv
ckNvbnN0cnVjdG9yKTsKIAotRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUp
CitFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJv
dG90eXBlKiBlcnJvclByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZXJy
b3JQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIC8vIEVDTUEgMTUu
MTEuMy4xIEVycm9yLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDNkMGQ3MDY1MGRhMmQ2NzYxZmI2NTBmZTY1ODhi
NjY3OTZlYTk1MDQuLmNlZWMwMDViZTgwMmZkMzUyOTE0MTE0NjA3MmJmMjFjNTM3ZWFmODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgK
QEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFcnJvckNvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAg
RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIEVycm9yUHJvdG90eXBlKik7CisgICAgICAgIEVycm9yQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFcnJvclByb3Rv
dHlwZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCAwZGIyYWY4YTY5ZTUzMGU2YjE3OGY4
NjBlOWI1ODQxMjc0MGM4ZTRlLi5lZDk1YmE0YTE3NzhkZWYyYTRhYWU5ODZlNDBlMmIwZjgyMTU0
NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcApAQCAtMjUsMjggKzI1LDI4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0lu
Zm8gRXJyb3JJbnN0YW5jZTo6c19pbmZvID0geyAiRXJyb3IiLCAmSlNOb25GaW5hbE9iamVjdDo6
c19pbmZvLCAwLCAwIH07CiAKLUVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkK
LSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorRXJyb3JJbnN0YW5jZTo6RXJyb3JJ
bnN0YW5jZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogSlNOb25GaW5hbE9iamVjdCgqZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9h
cHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKICAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsICIiKSk7CiB9CiAKLUVycm9ySW5zdGFu
Y2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKLSAgICA6
IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5j
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCgqZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKQogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG1lc3Nh
Z2UpKTsKIH0KIAotRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitFcnJvckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpj
cmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBFcnJv
ckluc3RhbmNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CiB9CiAKLUVycm9ySW5z
dGFuY2UqIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UpCitFcnJvckluc3Rh
bmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogewogICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVk
KCkpCiAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEVycm9ySW5zdGFuY2UoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgc3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaAppbmRleCA4MmRiZjBmNTYzODJlYmMwODU0MmQ1NzE0YjE2M2JlYzliNmI3
NDIxLi5hZmNmMTU4YWQzYWU3ZTcwY2UzODRkY2E0NGM1NGU1NzRlZjllODVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC0yOSwxMyArMjks
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2lu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShK
U0dsb2JhbERhdGEqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5n
Jik7Ci0gICAgICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBKU1ZhbHVlIG1lc3NhZ2UpOworICAgICAg
ICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIFN0cnVjdHVyZSos
IGNvbnN0IFVTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIG1lc3NhZ2UpOwogCiAKICAgICAgICAgYm9v
bCBhcHBlbmRTb3VyY2VUb01lc3NhZ2UoKSB7IHJldHVybiBtX2FwcGVuZFNvdXJjZVRvTWVzc2Fn
ZTsgfQpAQCAtNDUsOCArNDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBi
b29sIGlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKLSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5j
ZShKU0dsb2JhbERhdGEqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3Ry
aW5nJik7CisgICAgICAgIGV4cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiwgU3Ry
dWN0dXJlKik7CisgICAgICAgIGV4cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiwg
U3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgICAgIGJvb2wgbV9hcHBlbmRTb3Vy
Y2VUb01lc3NhZ2U7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmNwcAppbmRleCBlMTMyNTFjZTYzNDI4NjBjY2UzOGM5MWNhOTQ0YjJi
YmNkYTIyMzY0Li5hNTdlOTQ3ZmRhZDNiYjI5MGM0ODdiZDkwMTc1YzY0NTgyNzg5MGRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JQcm90b3R5cGUp
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqKTsKIAogLy8gRUNNQSAxNS45LjQKLUVycm9yUHJvdG90eXBlOjpFcnJv
clByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0
aW9uU3RydWN0dXJlKQorRXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBFcnJvckluc3RhbmNlKCZleGVj
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2ls
bCBiZSBhZGRlZCBsYXRlciBpbiBFcnJvckNvbnN0cnVjdG9yJ3MgY29uc3RydWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCmluZGV4IDNjMmZl
ZDMwMzI5MzhmMWUyMmM2NzYzNTU0NDliNDMzZmQ2NjFiYTQuLjk0MzdkM2E2MjkxMDI1NTAxZDZi
YTUxOWIzMTg0NGIzZDMwYzkwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEVycm9yUHJvdG90eXBlIDogcHVibGljIEVycm9ySW5zdGFuY2UgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0
dXJlKTsKKyAgICAgICAgRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDNjNjM3ZTRjNDQ4MjYzYzQ0NzkwZmJmNzNlMDk0
YTA0MGMxYTUzZS4uMWQ3NDMxNTNjYTE3NmFlNTE1MTNhYWNkZmZkYjJkNjI4ODdiYzczNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnRlcnJ1cHRlZEV4
ZWN1dGlvbkVycm9yIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIElu
dGVycnVwdGVkRXhlY3V0aW9uRXJyb3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQotICAgICAg
ICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YS0+aW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
clN0cnVjdHVyZSkKKyAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5pbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLmdldCgpKQogICAgIHsK
ICAgICB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgSlNPYmplY3QqIGNyZWF0ZUludGVycnVwdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIGNsYXNzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQotICAg
ICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YS0+dGVybWluYXRlZEV4ZWN1dGlvbkVy
cm9yU3RydWN0dXJlKQorICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoKmdsb2JhbERhdGEsIGds
b2JhbERhdGEtPnRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZS5nZXQoKSkKICAgICB7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CmluZGV4IDVjZDAyZjczM2JlNDJjY2UyMGYzYWM3YmYxMjFiNjc5ODViOTA0NDEuLmZhMTRhZDUw
NjBlMGVhNzA1YWU5MjQ1MjY0YTE0M2M4NTAwMjk1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC00OCwxMCArNDgsNiBAQCBOYXRpdmVFeGVj
dXRhYmxlOjp+TmF0aXZlRXhlY3V0YWJsZSgpCiB7CiB9CiAKLVZQdHJIYWNrRXhlY3V0YWJsZTo6
flZQdHJIYWNrRXhlY3V0YWJsZSgpCi17Ci19Ci0KIGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0
YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19p
bmZvLCAwLCAwIH07CiAKIEV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTE4NTJiZThl
ZGQ5MWRiNzk5MjliYTNhZGJhYWJkNTJjZTQ5YWJlYi4uZmJlMzNjZjk4Mjg4ZjliYWM2NWNhZjA0
OTc1ZjFhN2E2ZmUyYmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtNTIsOCArNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQgPSAtMTsKICAgICAKICAgICBw
dWJsaWM6Ci0gICAgICAgIEV4ZWN1dGFibGVCYXNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQg
bnVtUGFyYW1ldGVycykKLSAgICAgICAgICAgIDogSlNDZWxsKHN0cnVjdHVyZSkKKyAgICAgICAg
RXhlY3V0YWJsZUJhc2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IG51bVBhcmFtZXRlcnMpCisgICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwobnVtUGFy
YW1ldGVycykKICAgICAgICAgICAgICwgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0KG51bVBh
cmFtZXRlcnMpCiAgICAgICAgIHsKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9PSBOVU1fUEFSQU1FVEVS
U19JU19IT1NUOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUlu
Zm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyB9CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CkBAIC0x
MTYsMTIgKzExNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEs
IHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oTGVhZlR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQogCiAgICAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBKSVRDb2RlIGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rv
cikKLSAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xvYmFsRGF0YS5uYXRpdmVFeGVjdXRh
YmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NUKQorICAgICAgICAgICAg
OiBFeGVjdXRhYmxlQmFzZShnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLm5hdGl2ZUV4ZWN1dGFibGVT
dHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCiAgICAgICAgICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0
b3IpCiAgICAgICAgIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogI2Vsc2UKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rv
cikKLSAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xvYmFsRGF0YS5uYXRpdmVFeGVjdXRh
YmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NUKQorICAgICAgICAgICAg
OiBFeGVjdXRhYmxlQmFzZShnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLm5hdGl2ZUV4ZWN1dGFibGVT
dHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCiAgICAgICAgICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0
b3IpCiAgICAgICAgIHsKQEAgLTE0NiwyMCArMTQ2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKICAgICB9OwogCi0gICAgY2xhc3Mg
VlB0ckhhY2tFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFZQdHJIYWNrRXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAg
ICAgICAgIDogRXhlY3V0YWJsZUJhc2Uoc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19JU19IT1NU
KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB+VlB0ckhhY2tFeGVjdXRhYmxlKCk7
Ci0gICAgfTsKLQogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJs
ZUJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVC
YXNlKHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQorICAgICAgICAgICAg
OiBFeGVjdXRhYmxlQmFzZSgqZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19O
T1RfQ09NUElMRUQpCiAgICAgICAgICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAgICAgICAg
ICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkK
ICAgICAgICAgewpAQCAtMTczLDcgKzE2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRF
UlNfTk9UX0NPTVBJTEVEKQorICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShleGVjLT5nbG9i
YWxEYXRhKCksIHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICAg
ICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICAgICAsIG1fZmVhdHVyZXMoaXNJblN0
cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDApCiAgICAgICAgIHsKQEAgLTI0Miw3
ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRK
SVRDb2RlRm9yQ2FsbCgpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Ns
b3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNNYXJrQ2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKQEAg
LTI4OSw3ICsyNzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAgICAg
ICAgIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Ns
b3RDb3VudCwgMCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IFNjcmlwdEV4ZWN1
dGFibGU6OlN0cnVjdHVyZUZsYWdzOwpAQCAtMzgyLDcgKzM3Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGRpc2NhcmRDb2RlKCk7CiAgICAgICAgIHZvaWQgbWFya0NoaWxkcmVu
KE1hcmtTdGFjayYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xv
YmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHBy
b3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgMCk7IH0KIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMs
IEZ1bmN0aW9uUGFyYW1ldGVycyosIGJvb2wsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGE5ZjBhMDY2MmQ5ZmUwODc4NTVmOGI0MWMxZGU3ZDI4ZDRjMTlhYmEu
LjllN2Q4ZDU0MDEwYWIyNWM0OTI0ZmI3OWVjOTRlNjU0NDA5YzBkZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEZ1bmN0aW9uQ29uc3RydWN0b3IpOwogCi1GdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlv
bkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90
eXBlKiBmdW5jdGlvblByb3RvdHlwZSkKK0Z1bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
KQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBmdW5jdGlv
blByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4
IDdmMjFiMjBmYzUxYTYxNzE4NTNkM2RlYmRlZmNhOGEwODQwMjJiZmUuLjMxYTA0Yzk5ZmYyNmE1
ZjNhNjgxYjQyNGUwZDJkMzgzYjYwNjczYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIEZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBGdW5jdGlvblByb3RvdHlwZSop
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMyZDhhZDM3N2E2ZDRkOGYwZGFl
ZjE3ZDU3ZDFhNTIxZjViNzNhM2QuLmUyYTQ5NDE2ZGRlZTNjNGI3NWYxZmEzMjYwNzU1ODM1MTc5
NTdmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkoRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY0NhbGwoRXhlY1N0YXRlKik7CiAKLUZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQorRnVuY3Rpb25Qcm90b3R5cGU6
OkZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubnVsbElkZW50aWZpZXIpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKaW5kZXggNDQ3ZjAw
YmQ4MTBmNWU1OWVmNzk2YTU4ODJlYTFjZjZkNGYyNWM4MS4uYWI3MDhkZDdkZTMzYTE5MDBhNDNi
MGFhNThlYzZjYWE2ZDUxMTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBAIC0yNywxMCArMjcsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAg
IEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CiAgICAgICAgIHZvaWQgYWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgSlNGdW5jdGlvbioqIGNh
bGxGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGFwcGx5RnVuY3Rpb24pOwogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90bykKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHBy
b3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggMGNkZmVjNDk4ODYyZjQ5MDQ2ZGNiMDhlM2ZkMzU4MWQ2
Y2U4NzhlMS4uYTIyMmM3YTRiYTFkNDgwODg0OTYwZGJiZjhhZjI5ZDdjZDhiNzhkZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVi
bGljOgogICAgICAgICBHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQotICAgICAgICAgICAg
OiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLmdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkK
KyAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0
YSgpLmdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgewogICAgICAgICB9CiAK
QEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0R2V0dGVy
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGdldHRlcikgeyBtX2dldHRlci5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2V0dGVyKTsgfQogICAgICAgICBKU09iamVjdCogc2V0dGVy
KCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXIuZ2V0KCk7IH0KICAgICAgICAgdm9pZCBzZXRTZXR0
ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogc2V0dGVyKSB7IG1fc2V0dGVy
LnNldChnbG9iYWxEYXRhLCB0aGlzLCBzZXR0ZXIpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJv
dG90eXBlLCBUeXBlSW5mbyhHZXR0ZXJTZXR0ZXJUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4p
LCBBbm9ueW1vdXNTbG90Q291bnQsIDApOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmluZGV4IGFlZjYw
Yzg3NjUwMWIyNWY4YzM4MTc5Y2M3ZTY3YTIwNGEwMzRkZTkuLjI3NjExYjc1N2IzNGJlNWM1NjRj
ZTAzYmIwNTUzYmE3MzZlNjQ2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC01OSw3ICs1OSw2IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmdPbmNlKCkKICAgICBzX2R0b2FQNU11dGV4ID0gbmV3
IE11dGV4OwogICAgIGluaXRpYWxpemVEYXRlcygpOwogICAgIFJlZ2lzdGVyRmlsZTo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwotICAgIFN0cnVjdHVyZTo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAKaW5kZXggNjA5MTgzMWE1ZmE4MGIwNjE1MDczYmZlNjk1MjliMDlkMWUz
ZjUwYy4uYzNiMDdmODI5NzAyOGU5NmYyZmY1MDNkOTUxNzhmMWNjZjk4ZjZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAg
LTM2LDEzICszNiwxMiBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEludGVybmFsRnVuY3Rp
b24pOwogCiBjb25zdCBDbGFzc0luZm8gSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotSW50
ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChzdHJ1Y3R1cmUp
CitJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBl
KQorICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2spCiB7Ci0g
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAotSW50ZXJuYWxGdW5jdGlvbjo6SW50
ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKQorSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQogICAgIDogSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggMDhjOThhNTM4MGYxNzI5NTM2ZWQ5OTE5ZmZiYmI4
NjU0OTBhYTE5NC4uMjhlMjYwZTMwMTMwZGRkOGMwYWU3OTZkNjYzMzM3Mjk4ZmU5Y2ZhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgVVN0cmluZyBk
aXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVk
RGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvKSAKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgCiAgICAgICAgIHsgCiAgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsgCiAgICAgICAgIH0KQEAgLTQ4LDkgKzQ4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICAvLyBPbmx5IHVzZWQg
dG8gYWxsb3cgdXMgdG8gZGV0ZXJtaW5lIHRoZSBKU0Z1bmN0aW9uIHZwdHIKLSAgICAgICAgSW50
ZXJuYWxGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSk7Cisg
ICAgICAgIEludGVybmFsRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpOwogCi0gICAgICAg
IEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEludGVy
bmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIENhbGxU
eXBlIGdldENhbGxEYXRhKENhbGxEYXRhJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKaW5kZXggMDBmZTBhMDEzMzkwNjA1MzE5
NDIyZDAwODEzOTc1Y2NjMTYzMGYzZS4uMDE2NTQ4ODViZDdiZDFlNTkzMjI1MGYyNjRjMzVmYzdl
ZmY3ZWViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElW
YWx1ZVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBP
dmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAwKTsKICAgICAgICAgfQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNBUElWYWx1ZVdyYXBwZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQotICAgICAgICAgICAgOiBKU0NlbGwoZXhl
Yy0+Z2xvYmFsRGF0YSgpLmFwaVdyYXBwZXJTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6
IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5hcGlXcmFwcGVy
U3RydWN0dXJlLmdldCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3ZhbHVlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgIEFTU0VSVCghdmFsdWUu
aXNDZWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKaW5kZXggODNiNmExYzEyYzRjOGRkNWRlOTBlMDQ3NzM1MjEwODM1OTQ3MGI4Yy4uNGUz
NjY0MWQwZTVjODA1ZWM5YmYwYzhmZDZmZjEyZDFhNTc4MTY1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNBY3RpdmF0aW9uKTsKIGNvbnN0IENsYXNzSW5mbyBK
U0FjdGl2YXRpb246OnNfaW5mbyA9IHsgIkpTQWN0aXZhdGlvbiIsICZCYXNlOjpzX2luZm8sIDAs
IDAgfTsKIAogSlNBY3RpdmF0aW9uOjpKU0FjdGl2YXRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlKQotICAgIDogQmFzZShjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKS5hY3RpdmF0aW9uU3RydWN0dXJlLCBmdW5jdGlvbkV4ZWN1dGFi
bGUtPnN5bWJvbFRhYmxlKCksIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpCisgICAgOiBCYXNlKGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5hY3RpdmF0aW9u
U3RydWN0dXJlLmdldCgpLCBmdW5jdGlvbkV4ZWN1dGFibGUtPnN5bWJvbFRhYmxlKCksIGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCkpCiAgICAgLCBtX251bVBhcmFtZXRlcnNNaW51c1RoaXMoc3RhdGlj
X2Nhc3Q8aW50PihmdW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpKQogICAgICwg
bV9udW1DYXB0dXJlZFZhcnMoZnVuY3Rpb25FeGVjdXRhYmxlLT5jYXB0dXJlZFZhcmlhYmxlQ291
bnQoKSkKICAgICAsIG1fcmVxdWlyZXNEeW5hbWljQ2hlY2tzKGZ1bmN0aW9uRXhlY3V0YWJsZS0+
dXNlc0V2YWwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmgKaW5kZXggNzQ2M2Y0NzNkYzhjNDYwNWI2NDA4MzZmYTg0ZDg0ZGNlM2RhODk1Yi4uNjU2NDJm
MTEyNjJiMzVlNDhjNzdmZGZmOWJlMmYxYjFlNjVjNjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8s
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVk
c1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyB8IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAxZDYyMWZlOWY5MGQwNGMzNGZk
Y2EyMjJhOWVmYmU0MTI1MGI1ZTIzLi5iZjYxMDk3YWNmODg1OGQ3MjkyNzNmNmRiNjI2NDRkOTlj
NmMxMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAt
MTI3LDI2ICsxMjcsMTIgQEAgaW5saW5lIHZvaWQgSlNBcnJheTo6Y2hlY2tDb25zaXN0ZW5jeShD
b25zaXN0ZW5jeUNoZWNrVHlwZSkKICNlbmRpZgogCiBKU0FycmF5OjpKU0FycmF5KFZQdHJTdGVh
bGluZ0hhY2tUeXBlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChTdHJ1Y3R1cmU6OmNyZWF0ZShT
dHJ1Y3R1cmU6OlZQdHJTdGVhbGluZ0hhY2ssICZzX2luZm8pKQorICAgIDogSlNOb25GaW5hbE9i
amVjdChWUHRyU3RlYWxpbmdIYWNrKQogewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
Ci0KLSAgICB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkgPSAwOwotCi0gICAgbV9zdG9yYWdlID0g
c3RhdGljX2Nhc3Q8QXJyYXlTdG9yYWdlKj4oZmFzdFplcm9lZE1hbGxvYyhzdG9yYWdlU2l6ZShp
bml0aWFsQ2FwYWNpdHkpKSk7Ci0gICAgbV9zdG9yYWdlLT5tX2FsbG9jQmFzZSA9IG1fc3RvcmFn
ZTsKLSAgICBtX2luZGV4QmlhcyA9IDA7Ci0gICAgbV92ZWN0b3JMZW5ndGggPSBpbml0aWFsQ2Fw
YWNpdHk7Ci0KLSAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgCi0gICAgLy8gSXQncyBub3Qg
c2FmZSB0byBjYWxsIEhlYXA6OmhlYXAodGhpcykgaW4gb3JkZXIgdG8gcmVwb3J0IGV4dHJhIG1l
bW9yeQotICAgIC8vIGNvc3QgaGVyZSwgYmVjYXVzZSB0aGUgVlB0clN0ZWFsaW5nSGFja1R5cGUg
SlNBcnJheSBpcyBub3QgYWxsb2NhdGVkIG9uCi0gICAgLy8gdGhlIGhlYXAuIEZvciB0aGUgc2Ft
ZSByZWFzb24sIGl0J3MgT0sgbm90IHRvIHJlcG9ydCBleHRyYSBjb3N0LgogfQogCi1KU0FycmF5
OjpKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgIDog
SlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitKU0FycmF5OjpKU0FycmF5KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwogCkBAIC0xNjIsOCArMTQ4LDggQEAgSlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICBIZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRF
eHRyYU1lbW9yeUNvc3Qoc3RvcmFnZVNpemUoMCkpOwogfQogCi1KU0FycmF5OjpKU0FycmF5KE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVu
Z3RoLCBBcnJheUNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCi0gICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KHN0cnVjdHVyZSkKK0pTQXJyYXk6OkpTQXJyYXkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCwgQXJyYXlDcmVh
dGlvbk1vZGUgY3JlYXRpb25Nb2RlKQorICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIApAQCAtMjA0
LDggKzE5MCw4IEBAIEpTQXJyYXk6OkpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsCiAgICAgSGVhcDo6aGVhcCh0aGlz
KS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0b3JhZ2VTaXplKGluaXRpYWxDYXBhY2l0eSkpOwog
fQogCi1KU0FycmF5OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IEFyZ0xpc3QmIGxpc3QpCi0gICAg
OiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK0pTQXJyYXk6OkpTQXJyYXkoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgQXJnTGlzdCYgbGlz
dCkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogewogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAppbmRleCAxYTZlYmE4YjBmOWY1NmM3ZTVlYjc5NDYwZGZjOGM4YTRmMWUyZjlk
Li44YmU4NTEzNmI0OWQxMDdmNWZiNmU5NTJkZmFjOTAyOWU1NmZhYzZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC02MSwxMiArNjEsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNrIH07CiAgICAg
ICAgIEpTQXJyYXkoVlB0clN0ZWFsaW5nSGFja1R5cGUpOwogCi0gICAgICAgIGV4cGxpY2l0IEpT
QXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIEpTQXJyYXkoTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCwgQXJyYXlD
cmVhdGlvbk1vZGUpOwotICAgICAgICBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpOworICAgICAg
ICBleHBsaWNpdCBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBK
U0FycmF5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgs
IEFycmF5Q3JlYXRpb25Nb2RlKTsKKyAgICAgICAgSlNBcnJheShKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCB+
SlNBcnJheSgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
QEAgLTEyNCw3ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBmaWxsQXJn
TGlzdChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwogICAgICAgICB2b2lkIGNv
cHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUqLCBSZWdpc3RlciosIHVpbnQzMl90KTsKIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKaW5kZXggZmJhZWExZGY2YWEy
Y2VmODBkNjdkNDExZGUyNDk5ZTVjZjVlMWM0OC4uYzJhYmFlZTFjOGZiZmMxZWI4NDZmOTkwOGQ2
NDdkMWFhYTRlMTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCeXRlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0
ZUFycmF5LmNwcApAQCAtMzUsOCArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xh
c3NJbmZvIEpTQnl0ZUFycmF5OjpzX2RlZmF1bHRJbmZvID0geyAiQnl0ZUFycmF5IiwgJkJhc2U6
OnNfaW5mbywgMCwgMCB9OwogCi1KU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBl
eGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBz
dG9yYWdlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitKU0J5dGVBcnJheTo6
SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnl0ZUFy
cmF5KiBzdG9yYWdlKQorICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSkKICAgICAsIG1fc3RvcmFnZShzdG9yYWdlKQogewogICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUp
OwpAQCAtNTAsNyArNTAsNyBAQCBKU0J5dGVBcnJheTo6fkpTQnl0ZUFycmF5KCkKICNlbmRpZgog
CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBjbGFzc0luZm8pCitTdHJ1Y3R1cmUqIEpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgSlND
OjpDbGFzc0luZm8qIGNsYXNzSW5mbykKIHsKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIEFub255bW91c1Nsb3RDb3VudCwgY2xhc3NJbmZvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCmluZGV4IGU2NzQ5NTgwYjEyNDMzMmNiOGJhNGQx
MGY0YzRmNWJmNTRlZDRkZDguLmM0ODFiYjRjOGI5M2VjMTYxMjk3MWRhMTQ5NWE3NmU3MmJkZjVi
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAt
NzUsOCArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBzZXRJbmRleChp
LCBieXRlVmFsdWUpOwogICAgICAgICB9CiAKLSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRl
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2Up
OwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0g
JnNfZGVmYXVsdEluZm8pOworICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
SlNDOjpDbGFzc0luZm8qID0gJnNfZGVmYXVsdEluZm8pOwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKQEAgLTEwMCw5ICsxMDAsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0gVlB0
clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNrIH07CiAgICAgICAgIEpTQnl0ZUFy
cmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0
KFN0cnVjdHVyZTo6Y3JlYXRlKFN0cnVjdHVyZTo6VlB0clN0ZWFsaW5nSGFjaywgJnNfaW5mbykp
CisgICAgICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoVlB0clN0ZWFsaW5nSGFjaykKICAgICAg
ICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CmluZGV4IGNlN2ZlMjI3OGIzZTY1ODFhNGI0OTBlNzZjNDRjMGMxNmNhMzJjODEuLmFmZDg0NTAy
NDdkMjc3ZGFlMjljNjc1OGIxNWE5ZmFjN2I0YmEwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMjA5LDQgKzIwOSwxNCBAQCBKU09iamVjdCogSlNDZWxs
Ojp0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0CiAgICAgcmV0dXJu
IDA7CiB9CiAKK2Jvb2wgaXNab21iaWUoY29uc3QgSlNDZWxsKiBjZWxsKQoreworI2lmIEVOQUJM
RShKU0NfWk9NQklFUykKKyAgICByZXR1cm4gY2VsbCAmJiBjZWxsLT5pc1pvbWJpZSgpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAppbmRleCBjYmZjMTEzNzNjYmE2OTRhZjQ3OTFjNDMzOTM0ZDRiNzEwNjU1ZGZlLi43ZWU4NzFj
MWM2OTAyNGI3ZDQ4MmJhMGM1NDUwMmY1YTU4NTE5ZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgi
Ci0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTY5LDE0ICs2OCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2Vk
QmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTY29wZUNoYWluTm9kZTsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIFN0cnVjdHVyZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZUNoYWlu
OwogCisgICAgcHJvdGVjdGVkOgorICAgICAgICBlbnVtIFZQdHJTdGVhbGluZ0hhY2tUeXBlIHsg
VlB0clN0ZWFsaW5nSGFjayB9OworCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgSlND
ZWxsKFN0cnVjdHVyZSopOworICAgICAgICBleHBsaWNpdCBKU0NlbGwoVlB0clN0ZWFsaW5nSGFj
a1R5cGUpIHsgfQorICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAg
ICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZUR1bW15U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYp
OworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVEdW1teVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmKTsKIAogICAgICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICAgICAgYm9vbCBp
c1N0cmluZygpIGNvbnN0OwpAQCAtMTQyLDcgKzE0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFN0cnVjdHVyZSogY29uc3QgKiBhZGRyZXNzT2ZTdHJ1Y3R1cmUo
KSBjb25zdAorICAgICAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZTdHJ1Y3R1cmUoKSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gJm1fc3RydWN0dXJlOwogICAgICAgICB9CkBA
IC0xNTUsMTIgKzE1OSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOworICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwogCi0gICAgaW5saW5lIEpT
Q2VsbDo6SlNDZWxsKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IG1fc3RydWN0dXJl
KHN0cnVjdHVyZSkKKyAgICBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBtX3N0cnVjdHVyZShnbG9i
YWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpCiAgICAgeworICAgICAgICAvLyBWZXJ5IGZpcnN0IHNl
dCBvZiBhbGxvY2F0aW9ucyB3b24ndCBoYXZlIGEgcmVhbCBzdHJ1Y3R1cmUuCisgICAgICAgIEFT
U0VSVChtX3N0cnVjdHVyZSB8fCAhZ2xvYmFsRGF0YS5kdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVy
ZSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQ2VsbDo6fkpTQ2VsbCgpCkBAIC0xNjksMTEgKzE3
NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6
c3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZTsKKyAg
ICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lk
IEpTQ2VsbDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpCisgICAgaW5saW5lIHZvaWQgSlNDZWxs
OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgeworICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKCZtX3N0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUg
aW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNDAsNyArMzQ3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQogICAgIGlubGluZSBib29s
IEpTVmFsdWU6OmlzWm9tYmllKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0NlbGwo
KSAmJiBhc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNab21iaWUoKTsKKyAgICAgICAgcmV0dXJuIGlz
Q2VsbCgpICYmIGFzQ2VsbCgpID4gKEpTQ2VsbCopMHgxZmZmZmZmZmZMICYmIGFzQ2VsbCgpLT5p
c1pvbWJpZSgpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGI4ZTQ5OWI2ODc5Y2IzYmUxMWU5YzU3NzIxYmU5NGVh
YzVlMDdlYTkuLmExOGU5NzMwNmJiZjc0Nzg0OGJkOWZjMmNiNTliNTAyY2NiYTUyM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01NiwxNCAr
NTYsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCk7CiB9CiAKLUpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFZQdHJIYWNrRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSkKLSAgICA6IEJhc2Uoc3RydWN0dXJlKQorSlNGdW5jdGlvbjo6SlNG
dW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSkKKyAgICA6IEJhc2UoVlB0clN0ZWFsaW5nSGFj
aykKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIG1fZXhlY3V0YWJsZS5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKGV4ZWN1dGFibGUpOwogfQogCi1KU0Z1bmN0aW9uOjpKU0Z1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIE5hdGl2ZUV4ZWN1dGFibGUqIHRodW5rKQorSlNGdW5jdGlvbjo6SlNG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBO
YXRpdmVFeGVjdXRhYmxlKiB0aHVuaykKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB0aHVuaykK
ICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGVDaGFpbigpKQpAQCAtNzMsNyArNzEsNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9u
TnVsbFBhcwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKIH0KIAotSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVG
dW5jdGlvbiBmdW5jKQorSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogICAgIDog
QmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDUwNWI5ZGUy
NzJiNWQ0ZDVjYWRiMDBhYjEwYzRiZWY5ZmIzYjYyM2QuLjE3NGNkMzg0ZTcxNDU0ODQzYmU1ZDIz
OTA0MzkyMjExYzM5NGFmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgKQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVk
ZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKICAgICBwdWJsaWM6Ci0gICAgICAg
IEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rp
b24pOwotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYs
IE5hdGl2ZUV4ZWN1dGFibGUqKTsKKyAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBO
YXRpdmVGdW5jdGlvbik7CisgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZl
RXhlY3V0YWJsZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgfkpTRnVuY3Rpb24o
KTsKIApAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkg
CiAgICAgICAgIHsgCiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFu
b255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IAogICAgICAgICB9CkBAIC04Nyw3ICs4Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
SlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNGdW5j
dGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBWUHRySGFja0V4ZWN1dGFibGUqKTsK
KyAgICAgICAgZXhwbGljaXQgSlNGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7CiAKICAg
ICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCA2MjkwZmY4Yzdh
MTY0MDZjMmE0ODVhMzhmNTAwOTY3ODMxMDcxOTViLi41ZjY4ZGU5M2I2NDc0NzA1NTQ0MmU5Y2Fj
NGVlNjMzMDI0OTcyYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3Rh
dGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1pvbWJpZS5oIgogI2luY2x1ZGUgIkxleGVy
LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTExNSwyNiAr
MTE2LDE4IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKCkKICAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoSlNBcnJheSkgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNBcnJheV9t
dXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKICAgICBKU0NlbGwqIGpzQXJyYXkgPSBuZXcgKHN0
b3JhZ2UpIEpTQXJyYXkoSlNBcnJheTo6VlB0clN0ZWFsaW5nSGFjayk7CiAgICAgSlNHbG9iYWxE
YXRhOjpqc0FycmF5VlB0ciA9IGpzQXJyYXktPnZwdHIoKTsKLSAgICBqc0FycmF5LT5+SlNDZWxs
KCk7CiAKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNCeXRlQXJyYXkpIDw9IHNpemVvZihz
dG9yYWdlKSwgc2l6ZW9mX0pTQnl0ZUFycmF5X211c3RfYmVfbGVzc190aGFuX3N0b3JhZ2UpOwog
ICAgIEpTQ2VsbCoganNCeXRlQXJyYXkgPSBuZXcgKHN0b3JhZ2UpIEpTQnl0ZUFycmF5KEpTQnl0
ZUFycmF5OjpWUHRyU3RlYWxpbmdIYWNrKTsKICAgICBKU0dsb2JhbERhdGE6OmpzQnl0ZUFycmF5
VlB0ciA9IGpzQnl0ZUFycmF5LT52cHRyKCk7Ci0gICAganNCeXRlQXJyYXktPn5KU0NlbGwoKTsK
IAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU1N0cmluZykgPD0gc2l6ZW9mKHN0b3JhZ2Up
LCBzaXplb2ZfSlNTdHJpbmdfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7CiAgICAgSlNDZWxs
KiBqc1N0cmluZyA9IG5ldyAoc3RvcmFnZSkgSlNTdHJpbmcoSlNTdHJpbmc6OlZQdHJTdGVhbGlu
Z0hhY2spOwogICAgIEpTR2xvYmFsRGF0YTo6anNTdHJpbmdWUHRyID0ganNTdHJpbmctPnZwdHIo
KTsKLSAgICBqc1N0cmluZy0+fkpTQ2VsbCgpOwogCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KEpTRnVuY3Rpb24pIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTRnVuY3Rpb25fbXVzdF9i
ZV9sZXNzX3RoYW5fc3RvcmFnZSk7Ci0gICAgY2hhciBleGVjdXRhYmxlU3RvcmFnZVtzaXplb2Yo
VlB0ckhhY2tFeGVjdXRhYmxlKV07Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVN0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y3JlYXRlKFN0cnVjdHVyZTo6VlB0clN0ZWFsaW5nSGFjaywg
MCk7Ci0gICAgSlNDZWxsKiBleGVjdXRhYmxlID0gbmV3IChleGVjdXRhYmxlU3RvcmFnZSkgVlB0
ckhhY2tFeGVjdXRhYmxlKGV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgIEpTQ2VsbCog
anNGdW5jdGlvbiA9IG5ldyAoc3RvcmFnZSkgSlNGdW5jdGlvbihTdHJ1Y3R1cmU6OmNyZWF0ZShT
dHJ1Y3R1cmU6OlZQdHJTdGVhbGluZ0hhY2ssICZKU0Z1bmN0aW9uOjpzX2luZm8pLCBzdGF0aWNf
Y2FzdDxWUHRySGFja0V4ZWN1dGFibGUqPihleGVjdXRhYmxlKSk7CisgICAgSlNDZWxsKiBqc0Z1
bmN0aW9uID0gbmV3IChzdG9yYWdlKSBKU0Z1bmN0aW9uKEpTQ2VsbDo6VlB0clN0ZWFsaW5nSGFj
ayk7CiAgICAgSlNHbG9iYWxEYXRhOjpqc0Z1bmN0aW9uVlB0ciA9IGpzRnVuY3Rpb24tPnZwdHIo
KTsKLSAgICBleGVjdXRhYmxlLT5+SlNDZWxsKCk7Ci0gICAganNGdW5jdGlvbi0+fkpTQ2VsbCgp
OwogfQogCiBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZFN0YWNrVHlwZSkKQEAgLTE2OCwyOSArMTYx
LDM5IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERh
dGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkCiAgICAgLCBleGNsdXNpdmVUaHJlYWQoMCkK
ICNlbmRpZgogewotICAgIGFjdGl2YXRpb25TdHJ1Y3R1cmUgPSBKU0FjdGl2YXRpb246OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIGludGVycnVwdGVkRXhlY3V0aW9uRXJy
b3JTdHJ1Y3R1cmUgPSBKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKTsKLSAgICB0ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUgPSBKU05vbkZp
bmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBzdGF0aWNT
Y29wZVN0cnVjdHVyZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywganNOdWxsKCkpOwotICAgIHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlID0gU3RyaWN0
RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIHN0
cmluZ1N0cnVjdHVyZSA9IEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgp
KTsKLSAgICBub3RBbk9iamVjdFN0cnVjdHVyZSA9IEpTTm90QW5PYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
ID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwo
KSk7Ci0gICAgZ2V0dGVyU2V0dGVyU3RydWN0dXJlID0gR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBhcGlXcmFwcGVyU3RydWN0dXJlID0gSlNBUElW
YWx1ZVdyYXBwZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIHNjb3Bl
Q2hhaW5Ob2RlU3RydWN0dXJlID0gU2NvcGVDaGFpbk5vZGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywganNOdWxsKCkpOwotICAgIGV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBFeGVjdXRhYmxlQmFzZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgbmF0aXZlRXhlY3V0YWJsZVN0
cnVjdHVyZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxs
KCkpOwotICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIHByb2dyYW1FeGVjdXRhYmxlU3RydWN0
dXJlID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkp
OwotICAgIGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZSA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgZHVtbXlNYXJrYWJsZUNlbGxT
dHJ1Y3R1cmUgPSBKU0NlbGw6OmNyZWF0ZUR1bW15U3RydWN0dXJlKCp0aGlzKTsKLSAgICBzdHJ1
Y3R1cmVDaGFpblN0cnVjdHVyZSA9IFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIGpzTnVsbCgpKTsKLQogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlz
KTsKICAgICBpZiAoZ2xvYmFsRGF0YVR5cGUgPT0gRGVmYXVsdCkKICAgICAgICAgbV9zdGFjayA9
IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwogCisgICAgLy8gTmVlZCB0byBiZSBjYXJlZnVsIHRv
IGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50IGhlcmUKKyAgICBJZGVudGlmaWVyVGFibGUqIGV4
aXN0aW5nRW50cnlJZGVudGlmaWVyVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElk
ZW50aWZpZXJUYWJsZShpZGVudGlmaWVyVGFibGUpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CisgICAgc3RydWN0dXJlU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0
dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMpKTsKKyAgICBhY3RpdmF0aW9uU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7
CisgICAgaW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTTm9u
RmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICB0ZXJt
aW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU05vbkZpbmFsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgc3RhdGljU2NvcGVTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIGpzTnVsbCgpKSk7CisgICAgc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwo
KSkpOworICAgIHN0cmluZ1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU3RyaW5nOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgbm90QW5PYmplY3RTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU05vdEFuT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7Cisg
ICAgcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgZ2V0dGVy
U2V0dGVyU3RydWN0dXJlLnNldCgqdGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIGpzTnVsbCgpKSk7CisgICAgYXBpV3JhcHBlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpT
QVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAg
c2NvcGVDaGFpbk5vZGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTY29wZUNoYWluTm9kZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIGV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBFeGVjdXRhYmxlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkp
OworICAgIG5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgZXZhbEV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCBqc051bGwoKSkpOworICAgIHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhp
cywgUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsK
KyAgICBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBkdW1teU1hcmth
YmxlQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUo
KnRoaXMpKTsKKyAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVy
ZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisKKyNpZiBFTkFCTEUo
SlNDX1pPTUJJRVMpCisgICAgem9tYmllU3RydWN0dXJlLnNldCgqdGhpcywgSlNab21iaWU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyNlbmRpZgorCisgICAgd3RmVGhyZWFk
RGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZXhpc3RpbmdFbnRyeUlkZW50aWZpZXJU
YWJsZSk7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhcnRQcm9maWxlclNlcnZlcklmTmVl
ZGVkKCk7CiAjZW5kaWYKQEAgLTIyMiw2ICsyMjUsMzMgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2Jh
bERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJl
YWQKICNlbmRpZgogfQogCit2b2lkIEpTR2xvYmFsRGF0YTo6Y2xlYXJCdWlsdGluU3RydWN0dXJl
cygpCit7CisgICAgc3RydWN0dXJlU3RydWN0dXJlLmNsZWFyKCk7CisgICAgYWN0aXZhdGlvblN0
cnVjdHVyZS5jbGVhcigpOworICAgIGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICB0ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUuY2xlYXIoKTsK
KyAgICBzdGF0aWNTY29wZVN0cnVjdHVyZS5jbGVhcigpOworICAgIHN0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlLmNsZWFyKCk7CisgICAgc3RyaW5nU3RydWN0dXJlLmNsZWFyKCk7CisgICAg
bm90QW5PYmplY3RTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0
cnVjdHVyZS5jbGVhcigpOworICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5jbGVhcigpOworICAg
IGFwaVdyYXBwZXJTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBzY29wZUNoYWluTm9kZVN0cnVjdHVy
ZS5jbGVhcigpOworICAgIGV4ZWN1dGFibGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBuYXRpdmVF
eGVjdXRhYmxlU3RydWN0dXJlLmNsZWFyKCk7CisgICAgZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5jbGVhcigpOworICAgIGZ1
bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5jbGVhcigpOworICAgIGR1bW15TWFya2FibGVDZWxs
U3RydWN0dXJlLmNsZWFyKCk7CisgICAgc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuY2xlYXIoKTsK
KyAgICAKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgem9tYmllU3RydWN0dXJlLmNsZWFy
KCk7CisjZW5kaWYKK30KKwogSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKIHsKICAgICAv
LyBCeSB0aGUgdGltZSB0aGlzIGlzIGRlc3Ryb3llZCwgaGVhcC5kZXN0cm95KCkgbXVzdCBhbHJl
YWR5IGhhdmUgYmVlbiBjYWxsZWQuCkBAIC0yODIsMTAgKzMxMiw3IEBAIFBhc3NSZWZQdHI8SlNH
bG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRTdGFja1R5cGUgdHlwZSkKIAog
UGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFsRGF0YTo6Y3JlYXRlTGVha2VkKFRocmVh
ZFN0YWNrVHlwZSB0eXBlKQogewotICAgIFN0cnVjdHVyZTo6c3RhcnRJZ25vcmluZ0xlYWtzKCk7
Ci0gICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZGF0YSA9IGNyZWF0ZSh0eXBlKTsKLSAgICBTdHJ1
Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtzKCk7Ci0gICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwor
ICAgIHJldHVybiBjcmVhdGUodHlwZSk7CiB9CiAKIGJvb2wgSlNHbG9iYWxEYXRhOjpzaGFyZWRJ
bnN0YW5jZUV4aXN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCmluZGV4IDBjMzdjZGE5MjkyYjNhOWViNTRhNTI3MzMxNTg4MzBhMDM3YTlhMmEuLmYx
MDg1YWY0MmIxOTA4MDFlY2Y4ZWI1NzViMTI3NDkxODUwN2U5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAi
RXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdz
LmgiCkBAIC0xNDUsMjQgKzE0NiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qg
SGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFi
bGUqIHN0cmluZ1RhYmxlOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gYWN0
aXZhdGlvblN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gaW50ZXJydXB0ZWRF
eGVjdXRpb25FcnJvclN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdGVybWlu
YXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBz
dGF0aWNTY29wZVN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RyaWN0RXZh
bEFjdGl2YXRpb25TdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cmluZ1N0
cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbm90QW5PYmplY3RTdHJ1Y3R1cmU7
Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
OwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7Ci0gICAg
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGFwaVdyYXBwZXJTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBleGVjdXRhYmxlU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBu
YXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBldmFs
RXhlY3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZHVtbXlNYXJrYWJs
ZUNlbGxTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWlu
U3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVTdHJ1Y3R1cmU7
CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGFjdGl2YXRpb25TdHJ1Y3R1cmU7CisgICAgICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7Cisg
ICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVy
ZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RhdGljU2NvcGVTdHJ1Y3R1cmU7CisgICAg
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOworICAg
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IG5vdEFuT2JqZWN0U3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJl
PiBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gZ2V0dGVyU2V0dGVyU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBhcGlX
cmFwcGVyU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzY29wZUNoYWluTm9k
ZVN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVN0cnVjdHVy
ZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gbmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZTsK
KyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAg
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOworICAgICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAgICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlOworICAgICAgICBT
dHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKKworI2lmIEVOQUJMRShK
U0NfWk9NQklFUykKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gem9tYmllU3RydWN0dXJlOwor
I2VuZGlmCiAKICAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVWUHRycygpOwogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0FycmF5VlB0cjsKQEAgLTI2MSw2ICsyNjcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkdW1wUmVnRXhwVHJhY2UoKTsKICAgICAgICAg
SGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRsZSgpIHsgcmV0dXJuIGhlYXAuYWxsb2NhdGVH
bG9iYWxIYW5kbGUoKTsgfQogICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRlTG9jYWxIYW5kbGUo
KSB7IHJldHVybiBoZWFwLmFsbG9jYXRlTG9jYWxIYW5kbGUoKTsgfQorICAgICAgICB2b2lkIGNs
ZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTR2xvYmFs
RGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlKTsKQEAgLTI3Miw2ICsyNzksMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YWNrQm91bmRzIG1fc3RhY2s7CiAgICAgfTsK
IAorICAgIGlubGluZSBIYW5kbGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLmFsbG9jYXRl
R2xvYmFsSGFuZGxlKCk7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTR2xvYmFsRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggODRjODVhZTdhY2Y4MmZjYmE5MzdkNDVkN2IyYWVkNzMzM2Vm
NjYzMy4uYjgyOTQ5YWJlZGI4YTRiOThjOGIwNjhmZGFmY2ZlZmVhZTgzNzg2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODQs
MTIgKzg0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJr
SWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIFdyaXQKICAgICAgICAgbWFya1N0YWNrLmFw
cGVuZCh2KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5lZWRlZChNYXJrU3RhY2sm
IG1hcmtTdGFjaywgY29uc3QgUmVmUHRyPFN0cnVjdHVyZT4mIHMpCi17Ci0gICAgaWYgKHMpCi0g
ICAgICAgIHMtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKLX0KLQogSlNHbG9iYWxPYmplY3Q6
On5KU0dsb2JhbE9iamVjdCgpCiB7CiAgICAgQVNTRVJUKEpTTG9jazo6Y3VycmVudFRocmVhZElz
SG9sZGluZ0xvY2soKSk7CkBAIC0xNzYsNDYgKzE3MCw0NiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAvLyBQcm90b3R5cGVzCiAKICAgICBtX2Z1
bmN0aW9uUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykg
RnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKSkpOyAvLyBUaGUgcmVhbCBwcm90
b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5cGUgaXMgY3JlYXRlZC4KLSAgICBt
X2Z1bmN0aW9uU3RydWN0dXJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Ci0gICAgbV9pbnRlcm5hbEZ1
bmN0aW9uU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9mdW5jdGlv
blN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxs
RnVuY3Rpb24gPSAwOwogICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24gPSAwOwogICAgIG1f
ZnVuY3Rpb25Qcm90b3R5cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhleGVjLCB0aGlzLCBtX2Z1
bmN0aW9uU3RydWN0dXJlLmdldCgpLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7CiAg
ICAgbV9jYWxsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY2FsbEZ1bmN0
aW9uKTsKICAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
YXBwbHlGdW5jdGlvbik7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgbmV3IChleGVjKSBPYmplY3RQcm90b3R5cGUoZXhlYywgdGhpcywgT2JqZWN0
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSks
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5z
dHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24obV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90
b3R5cGVXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKTsKIAotICAgIG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUgPSBtX29iamVjdFByb3Rv
dHlwZS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBtX2VtcHR5T2JqZWN0
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpKTsKIAotICAgIG1fY2FsbGJhY2tGdW5j
dGlvblN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7Ci0gICAgbV9hcmd1bWVu
dHNTdHJ1Y3R1cmUgPSBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKLSAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JT
dHJ1Y3R1cmUgPSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKLSAgICBtX2NhbGxiYWNrT2Jq
ZWN0U3RydWN0dXJlID0gSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSk7CisgICAgbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fYXJndW1lbnRz
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFyZ3VtZW50czo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fY2FsbGJhY2tPYmpl
Y3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja09iamVj
dDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9hcnJheVByb3RvdHlw
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEFycmF5UHJvdG90eXBl
KHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKLSAgICBtX2FycmF5U3RydWN0dXJlID0gSlNB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9hcnJheVByb3RvdHlw
ZS5nZXQoKSk7Ci0gICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUgPSBSZWdFeHBNYXRj
aGVzQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fYXJyYXlQcm90
b3R5cGUuZ2V0KCkpOworICAgIG1fYXJyYXlTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9h
cnJheVByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSkpOwog
CiAgICAgbV9zdHJpbmdQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBTdHJpbmdQcm90b3R5cGUoZXhlYywgdGhpcywgU3RyaW5nUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
KTsKLSAgICBtX3N0cmluZ09iamVjdFN0cnVjdHVyZSA9IFN0cmluZ09iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCkpOworICAg
IG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFN0
cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJpbmdQ
cm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fYm9vbGVhblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgdGhpcywg
Qm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7Ci0gICAg
bV9ib29sZWFuT2JqZWN0U3RydWN0dXJlID0gQm9vbGVhbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9ib29sZWFuUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2Jv
b2xlYW5PYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgQm9vbGVh
bk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9ib29sZWFuUHJv
dG90eXBlLmdldCgpKSk7CiAKICAgICBtX251bWJlclByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE51bWJlclByb3RvdHlwZShleGVjLCB0aGlzLCBOdW1i
ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOwotICAgIG1fbnVt
YmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBtX251bWJlclByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9udW1iZXJPYmpl
Y3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgTnVtYmVyT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX251bWJlclByb3RvdHlwZS5nZXQo
KSkpOwogCiAgICAgbV9kYXRlUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG5ldyAoZXhlYykgRGF0ZVByb3RvdHlwZShleGVjLCB0aGlzLCBEYXRlUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
KTsKLSAgICBtX2RhdGVTdHJ1Y3R1cmUgPSBEYXRlSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIG1fZGF0ZVByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9kYXRlU3Ry
dWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIERhdGVJbnN0YW5jZTo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9kYXRlUHJvdG90eXBlLmdldCgpKSk7CiAK
ICAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcg
KGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShleGVjLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwg
bV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOwotICAgIG1fcmVnRXhwU3RydWN0dXJlID0gUmVn
RXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKSk7CisgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9tZXRob2RDYWxsRHVtbXku
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykp
OwogCiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBFcnJv
clByb3RvdHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpKTsKLSAgICBtX2Vycm9yU3RydWN0dXJlID0gRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3JQcm90b3R5cGUpOworICAgIG1f
ZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3JQcm90b3R5cGUpKTsK
IAogICAgIC8vIENvbnN0cnVjdG9ycwogCkBAIC0yMzEsOCArMjI1LDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICBtX2Vycm9yQ29uc3RydWN0
b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIEVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBlcnJvclByb3RvdHlwZSkp
OwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXJyb3JQcm90b3R5cGUpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVycm9yU3Ry
dWN0dXJlID0gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgU3RydWN0dXJlKiBu
YXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJvclByb3RvdHlwZSk7CisgICAgU3Ry
dWN0dXJlKiBuYXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOwogICAgIG1fZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2
ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIkV2YWxFcnJv
ciIpKTsKICAgICBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgdGhpcywgbmF0
aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmFuZ2VF
cnJvciIpKTsKICAgICBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRo
aXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
IlJlZmVyZW5jZUVycm9yIikpOwpAQCAtMzQyLDIxICszMzYsMjEgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssICZtX2RhdGVQcm90b3R5cGUpOwogICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssICZtX3JlZ0V4cFByb3RvdHlwZSk7CiAKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBt
X2FyZ3VtZW50c1N0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9hcnJh
eVN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9ib29sZWFuT2JqZWN0
U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2NhbGxiYWNrQ29uc3Ry
dWN0b3JTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9jYWxsYmFj
a09iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9kYXRlU3Ry
dWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2VtcHR5T2JqZWN0U3RydWN0
dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2Vycm9yU3RydWN0dXJlKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2Z1bmN0aW9uU3RydWN0dXJlKTsKLSAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCBtX251bWJlck9iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwotICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fcmVnRXhwU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCBtX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCAmbV9hcmd1bWVudHNTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssICZtX2FycmF5U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCAmbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCAmbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCAmbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJm1fZGF0ZVN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ss
ICZtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9mdW5j
dGlvblN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fbnVtYmVyT2Jq
ZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9yZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX3JlZ0V4
cFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fc3RyaW5nT2JqZWN0
U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9pbnRlcm5hbEZ1bmN0
aW9uU3RydWN0dXJlKTsKIAogICAgIGlmIChtX3JlZ2lzdGVyQXJyYXkpIHsKICAgICAgICAgLy8g
T3V0c2lkZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2RlLCB3aGVuIG91ciB2YXJpYWJsZXMg
YXJlIHRvcm4gb2ZmLApAQCAtMzkxLDcgKzM4NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNv
cHlHbG9iYWxzRnJvbShSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lz
dGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxEYXRhKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJGaWxlLmxhc3RHbG9iYWwoKSksIG51
bUdsb2JhbHMpOworICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lz
dGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxEYXRhKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJGaWxlLmxhc3RHbG9iYWwoKSksIG51
bUdsb2JhbHMsIG51bUdsb2JhbHMpOwogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0
ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIG51bUdsb2JhbHM7CiAgICAgc2V0UmVnaXN0ZXJz
KHJlZ2lzdGVycywgcmVnaXN0ZXJBcnJheS5yZWxlYXNlKCksIG51bUdsb2JhbHMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMzAw
ZjRiMDQ5ODU4OTY1ZTNjMTI5MGZmMTNhMTQ3YjNkOGI0MDU3NS4uMGUzNjkyMDg2MDkxZTM3ZWEy
ODIwYzA4MzdmNWE0YTkzODM2OWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC04NywyMSArODcsMjEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFdyaXRlQmFycmllcjxEYXRlUHJvdG90eXBlPiBtX2RhdGVQcm90b3R5cGU7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwog
Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fYXJndW1lbnRzU3RydWN0dXJlOwotICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBtX2FycmF5U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJl
PiBtX2RhdGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7
Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAgICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlOwotICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKLSAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBt
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fYXJndW1lbnRzU3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2FycmF5U3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Jv
b2xlYW5PYmplY3RTdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2RhdGVTdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
bnVtYmVyT2JqZWN0U3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CiAKICAgICAgICAgdW5zaWduZWQgbV9wcm9m
aWxlR3JvdXA7CiAgICAgICAgIERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwpAQCAtMTE1LDcgKzExNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBK
U0dsb2JhbERhdGEqKTsKICAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVj
dChKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbERhdGEsIGpzTnVsbCgpKSwg
Jm1fc3ltYm9sVGFibGUsIDApCisgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhLCBqc051bGwo
KSksICZtX3N5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAgLCBtX3JlZ2lzdGVyQXJyYXlTaXpl
KDApCiAgICAgICAgICAgICAsIG1fZ2xvYmFsU2NvcGVDaGFpbigpCiAgICAgICAgICAgICAsIG1f
d2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVyKCkgKiAoc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCkBAIC0xMjUsOCArMTI1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpbml0KHRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9iamVjdChOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChz
dHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQorICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9i
amVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
ICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgJm1fc3lt
Ym9sVGFibGUsIDApCiAgICAgICAgICAgICAsIG1fcmVnaXN0ZXJBcnJheVNpemUoMCkKICAgICAg
ICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKICAgICAgICAgICAgICwgbV93ZWFrUmFuZG9t
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKQEAgLTEzNyw4ICsxMzcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBKU0dsb2JhbE9i
amVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNPYmplY3QqIHRo
aXNWYWx1ZSkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChzdHJ1Y3R1cmUsICZtX3N5
bWJvbFRhYmxlLCAwKQorICAgICAgICBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGhpc1ZhbHVlKQorICAgICAg
ICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgJm1fc3ltYm9s
VGFibGUsIDApCiAgICAgICAgICAgICAsIG1fcmVnaXN0ZXJBcnJheVNpemUoMCkKICAgICAgICAg
ICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKICAgICAgICAgICAgICwgbV93ZWFrUmFuZG9tKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVy
biAqbV9nbG9iYWxEYXRhLmdldCgpOyB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAtMzYzLDcgKzM2Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBXZSBjYWNoZSBvdXIgcHJvdG90eXBlIGNoYWluIHNvIG91ciBjbGllbnRz
IGNhbiBzaGFyZSBpdC4KICAgICAgICAgaWYgKCFpc1ZhbGlkKGV4ZWMsIG1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4uZ2V0KCkpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHByb3Rv
dHlwZUZvckxvb2t1cChleGVjKTsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4u
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIHByb3RvdHlwZS5pc051bGwoKSA/IDAgOiBhc09iamVjdChwcm90b3R5cGUpLT5z
dHJ1Y3R1cmUoKSksIDApOworICAgICAgICAgICAgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvdG90eXBlLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KHByb3RvdHlwZSkt
PnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4uZ2V0KCk7CiAgICAgfQpAQCAtMzc0LDkgKzM3NCw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gcHJvdG90eXBlRm9yTG9va3VwKGV4ZWMpOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiog
Y2FjaGVkU3RydWN0dXJlID0gY2FjaGVkUHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsKKyAgICAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVjdHVyZSA9IGNhY2hlZFByb3RvdHlw
ZUNoYWluLT5oZWFkKCk7CiAgICAgICAgIHdoaWxlKCpjYWNoZWRTdHJ1Y3R1cmUgJiYgIXByb3Rv
dHlwZS5pc051bGwoKSkgewotICAgICAgICAgICAgaWYgKGFzT2JqZWN0KHByb3RvdHlwZSktPnN0
cnVjdHVyZSgpICE9ICpjYWNoZWRTdHJ1Y3R1cmUpCisgICAgICAgICAgICBpZiAoYXNPYmplY3Qo
cHJvdG90eXBlKS0+c3RydWN0dXJlKCkgIT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICArK2NhY2hlZFN0cnVjdHVyZTsK
ICAgICAgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPnByb3RvdHlwZSgp
OwpAQCAtNDA3LDE3ICs0MDcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgaW5saW5l
IEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmFycmF5U3RydWN0dXJlKCkpOworICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0
cnVjdHVyZSgpKTsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVt
cHR5QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlKCkpOworICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpKTsKICAgICB9CiAK
ICAgICBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChleGVj
KSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwg
aW5pdGlhbExlbmd0aCwgQ3JlYXRlSW5pdGlhbGl6ZWQpOworICAgICAgICByZXR1cm4gbmV3IChl
eGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5hcnJheVN0cnVjdHVyZSgpLCBpbml0aWFsTGVuZ3RoLCBDcmVhdGVJbml0aWFsaXplZCk7
CiAgICAgfQogCiAgICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzaW5nbGVJdGVtVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU05vdEFuT2JqZWN0LmgKaW5kZXggNzViY2ExOGQ4MDVkZjc3YjBjOTQzOWU0MmI0
NDkwMzdiMWI0MmRjMC4uNGM2ODA2YTVmMTI1MGViMjJjMzA3NDJjMzA1MjRhOTRmODdmZmI0NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaApAQCAt
MzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTTm90QW5PYmplY3Qg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBKU05vdEFu
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKLSAgICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCkubm90QW5PYmplY3RTdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IEpT
Tm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkubm90
QW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggOGZjN2FjOWNmZDM0MjJm
N2U1NGYyOWY5NzRlZDQwMzUxMWIxYmM1Ni4uMjdmYzU2OWVhYWY5YjFmZThjYjY4ZmJiNDA0ODMy
YTRmNTk1Mjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqKTsKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUpTT05PYmplY3Q6OkpTT05PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCitKU09OT2JqZWN0OjpKU09O
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmgKaW5kZXggYTUyYzU0MzhkMDVjOWU2ODM4Yjk5ODBlYmZh
YTMzODQzODhjZTFlNC4uYzg3YzY0MTliOWM2ZTk2NGJmOGJkNzY1NzExZGMwODJiMzM3YTZhZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaApAQCAtMzQsOSAr
MzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTT05PYmplY3QgOiBwdWJsaWMg
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTT05PYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUpOworICAgICAgICBKU09OT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4
IGFiNDcyZDQ2OTM3ZDgzZjI4Mzk4MTFhZGJiN2EwOTBjYjFiNGZkYTIuLjk2NzdmMjMyMWU5ZmJl
OTEwZDY0Yjk1NTFiOTFiOTNkZTQ0MTlhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKQEAgLTMyOCwxMCArMzI4LDggQEAgdm9pZCBKU09iamVjdDo6ZGVm
aW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU08KICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0
byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQogICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5n
IG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJv
cGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICBpZiAoIW1fc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0g
U3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJl
KTsKLSAgICAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoIW1fc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAg
ICAgIHNldFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZTo6Z2V0dGVyU2V0
dGVyVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0KIAog
ICAgIG1fc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwpAQCAt
MzU1LDEwICszNTMsOCBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTTwogICAgIC8vIGdldHRlcnMg
YW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJl
CiAgICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0
dGVyLgogICAgIGlmIChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KSB7Ci0gICAgICAgIGlmICghbV9zdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmdldHRlclNldHRl
clRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX3N0cnVjdHVyZSk7Ci0gICAgICAgICAg
ICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKCFtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICBzZXRTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX3N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0KIAogICAgIG1f
c3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwpAQCAtNTEyLDE4
ICs1MDgsMTggQEAgSlNPYmplY3QqIEpTT2JqZWN0Ojp1bndyYXBwZWRPYmplY3QoKQogCiB2b2lk
IEpTT2JqZWN0OjpzZWFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsKLSAgICBzZXRTdHJ1
Y3R1cmUoU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkp
OworICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmZy
ZWV6ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7Ci0gICAgc2V0U3RydWN0dXJlKFN0cnVj
dHVyZTo6ZnJlZXplVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOworICAgIHNl
dFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9pZCBKU09iamVjdDo6cHJldmVudEV4
dGVuc2lvbnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewogICAgIGlmIChpc0V4dGVuc2li
bGUoKSkKLSAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlKSk7CisgICAgICAgIHNldFN0cnVjdHVy
ZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBtX3N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpyZW1vdmVE
aXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCkBAIC01MzYsOCArNTMyLDcgQEAgdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7Ci0gICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxl
YXNlKCkpOworICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZS5nZXQoKSwgcHJvcGVydHlO
YW1lLCBvZmZzZXQpKTsKICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAg
IHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiB9CkBAIC01NzUsNyArNTcwLDgg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJv
cGVydHlTbG90JiBzbG90LCBXcml0ZUJhcnIKIAogU3RydWN0dXJlKiBKU09iamVjdDo6Y3JlYXRl
SW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAgIG1faW5oZXJpdG9y
SUQgPSBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShnbG9iYWxEYXRhLCB0aGlzKTsKKyAgICBt
X2luaGVyaXRvcklELnNldChnbG9iYWxEYXRhLCB0aGlzLCBjcmVhdGVFbXB0eU9iamVjdFN0cnVj
dHVyZShnbG9iYWxEYXRhLCB0aGlzKSk7CisgICAgQVNTRVJUKG1faW5oZXJpdG9ySUQtPmlzRW1w
dHkoKSk7CiAgICAgcmV0dXJuIG1faW5oZXJpdG9ySUQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGI1M2FlZmNkMDAzNmFjZGI2NTYwMzY0
Y2RhMDhkOTZiZTgyMWE2YWEuLjgwNzM1ZjhjNDIxMDgxYTAwOTc3ZDRkM2RmMzA1ZWQxZTZjNDg1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtOTAsNyAr
OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNHbG9i
YWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBib29sIHNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAg
Ci0gICAgICAgIHZvaWQgc2V0U3RydWN0dXJlKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4p
OworICAgICAgICB2b2lkIHNldFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAogICAgICAg
ICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CkBAIC0xNzAsNyArMTcwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb24gLSBwcm9wZXJ0eVN0
b3JhZ2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKFN0cnVjdHVy
ZSopOworICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKIAogICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMo
KSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKTsgfQpAQCAtMjQ5LDcgKzI0OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CkBAIC0yNjMsNyArMjYzLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIC8vIFRvIGluc3RhbnRpYXRlIG9iamVjdHMgeW91IGxpa2VseSB3
YW50IEpTRmluYWxPYmplY3QsIGJlbG93LgogICAgICAgICAvLyBUbyBjcmVhdGUgZGVyaXZlZCB0
eXBlcyB5b3UgbGlrZWx5IHdhbnQgSlNOb25GaW5hbE9iamVjdCwgYmVsb3cuCi0gICAgICAgIEpT
T2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFByb3BlcnR5U3RvcmFnZSBpbmxp
bmVTdG9yYWdlKTsKKyAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOworICAgICAgICBKU09iamVjdChWUHRyU3Rl
YWxpbmdIYWNrVHlwZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCisgICAgICAgICAg
ICA6IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrKQorICAgICAgICAgICAgLCBtX3Byb3BlcnR5U3Rv
cmFnZShpbmxpbmVTdG9yYWdlKQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6
CiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9u
cyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgpAQCAtMjk4LDcg
KzMwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUluaGVy
aXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgICAgIFByb3BlcnR5U3RvcmFnZSBtX3Byb3Bl
cnR5U3RvcmFnZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9pbmhlcml0b3JJRDsKKyAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbmhlcml0b3JJRDsKICAgICB9OwogCiAK
QEAgLTMxOSwxNCArMzI0LDE5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGlu
ZVN0b3JhZ2VDYXBhY2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKU09iamVjdDsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAg
ICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUsIG1faW5saW5lU3Rv
cmFnZSkKKyAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNr
VHlwZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoVlB0clN0ZWFsaW5nSGFjaywgbV9pbmxpbmVT
dG9yYWdlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZXhwbGljaXQgSlNO
b25GaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5s
aW5lU3RvcmFnZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCEoT0JKRUNUX09GRlNF
VE9GKEpTTm9uRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkgJSBzaXplb2YoZG91YmxlKSkp
OwogICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID09IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKQEAg
LTM0MiwxOSArMzUyLDE5IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKU09iamVjdDsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEpTRmluYWxP
YmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlKQorICAgICAgICBzdGF0aWMgSlNGaW5hbE9iamVjdCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKGV4ZWMpIEpTRmluYWxPYmplY3Qoc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgKGV4ZWMpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1
Y3R1cmUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19p
bmZvKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgSlNGaW5h
bE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAg
ICAgIDogSlNPYmplY3Qoc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCisgICAgICAgIGV4cGxp
Y2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBt
X2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChPQkpFQ1RfT0ZG
U0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSAlIHNpemVvZihkb3VibGUpID09
IDApOwogICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpID09IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5KTsKQEAg
LTM3MSwxMiArMzgxLDEyIEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpCiAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lu
bGluZVN0b3JhZ2UpOwogfQogCi1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
CitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgcmV0dXJuIEpTRmluYWxPYmplY3Q6OmNyZWF0
ZShleGVjLCBzdHJ1Y3R1cmUpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNy
ZWF0ZUVtcHR5T2JqZWN0U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCitpbmxpbmUgU3RydWN0dXJlKiBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIHJl
dHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgcHJvdG90eXBl
KTsKIH0KQEAgLTM5Miw4ICs0MDIsOCBAQCBpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFs
dWUgdmFsdWUpCiAgICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAotaW5s
aW5lIEpTT2JqZWN0OjpKU09iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCi0gICAgOiBKU0NlbGwoc3RydWN0
dXJlLnJlbGVhc2VSZWYoKSkgLy8gfkpTT2JqZWN0IGJhbGFuY2VzIHRoaXMgcmVmKCkKK2lubGlu
ZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCisgICAgOiBKU0NlbGwo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoaW5saW5lU3Rv
cmFnZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtNDAxLDE0ICs0MTEs
MTMgQEAgaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWcKICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUtPmlz
RW1wdHkoKSk7CiAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAo
dGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOwogICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDx2b2lkKj4oaW5saW5lU3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMgKyAxKSk7
CisgICAgQVNTRVJUKG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBl
KTsKIH0KIAogaW5saW5lIEpTT2JqZWN0Ojp+SlNPYmplY3QoKQogewotICAgIEFTU0VSVChtX3N0
cnVjdHVyZSk7CiAgICAgaWYgKCFpc1VzaW5nSW5saW5lU3RvcmFnZSgpKQogICAgICAgICBkZWxl
dGUgW10gbV9wcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgbV9zdHJ1Y3R1cmUtPmRlcmVmKCk7CiB9CiAK
IGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdApAQCAtNDMyLDIwICs0
NDEsMjAgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNr
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWwKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
IHsKICAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBuZXdTdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwg
bV9zdHJ1Y3R1cmUsIHByb3RvdHlwZSk7Ci0gICAgc2V0U3RydWN0dXJlKG5ld1N0cnVjdHVyZS5y
ZWxlYXNlKCkpOworICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OmNoYW5n
ZVByb3RvdHlwZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3Rv
dHlwZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlKE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnNl
dFN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewotICAgIG1fc3RydWN0dXJlLT5kZXJlZigpOwotICAgIG1fc3RydWN0dXJlID0gc3RydWN0
dXJlLmxlYWtSZWYoKTsgLy8gfkpTT2JqZWN0IGJhbGFuY2VzIHRoaXMgcmVmKCkKKyAgICBtX3N0
cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKTsKIH0KIAogaW5saW5lIFN0
cnVjdHVyZSogSlNPYmplY3Q6OmluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
IHsKLSAgICBpZiAobV9pbmhlcml0b3JJRCkKKyAgICBpZiAobV9pbmhlcml0b3JJRCkgeworICAg
ICAgICBBU1NFUlQobV9pbmhlcml0b3JJRC0+aXNFbXB0eSgpKTsKICAgICAgICAgcmV0dXJuIG1f
aW5oZXJpdG9ySUQuZ2V0KCk7CisgICAgfQogICAgIHJldHVybiBjcmVhdGVJbmhlcml0b3JJRChn
bG9iYWxEYXRhKTsKIH0KIApAQCAtNTk2LDEyICs2MDUsMTIgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmkKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9
IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwotICAgIGlmIChSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgeyAgICAKKyAgICBpZiAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUobV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNG
dW5jdGlvbiwgb2Zmc2V0KSkgeyAgICAKICAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBz
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICBhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUu
cmVsZWFzZSgpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKICAg
ICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMgd2l0aCBzcGVjaWZp
YyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUsCiAgICAgICAgIC8vIHNvIGxlYXZl
IHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCkBAIC02MzMsNyArNjQyLDcgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIC8vIGNhc2UgKDIpIERlc3BlY2lmeSwgZmFsbCB0aHJvdWdo
IHRvICgzKS4KLSAgICAgICAgICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1
bmN0aW9uVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSk7
CisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpkZXNwZWNp
ZnlGdW5jdGlvblRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3Bl
cnR5TmFtZSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90
LCBkbyB0aGUgcHV0LCByZXR1cm4uCkBAIC02NDUsMTMgKzY1NCwxMyBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaQogICAgIGlmICghaXNFeHRlbnNpYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0
cnVjdHVyZS5nZXQoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9u
LCBvZmZzZXQpOwogCiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1
cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAog
ICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
OwotICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBzZXRTdHJ1Y3R1
cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJhbnNp
dGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUsCiAg
ICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNoYWJsZSBzdGF0ZS4KQEAgLTcyMiwx
MSArNzMxLDExIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0CiAgICAgcHV0RGlyZWN0T2Zmc2V0
KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
dHJhbnNpdGlvblRvKFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQoraW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKQogewogICAgIGlmIChtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAg
IGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpLCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNl
dFN0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpOworICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBu
ZXdTdHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6dG9QcmltaXRpdmUo
RXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNv
bnN0CkBAIC04MTUsMTAgKzgyNCwxMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6Om1h
cmtDaGlsZHJlbkRpcmVjdChNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU0NlbGw6Om1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOwogCi0gICAgbV9zdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUo
bWFya1N0YWNrKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFn
ZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VTaXplKCk7CiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdlU2l6
ZSk7CisgICAgaWYgKG1faW5oZXJpdG9ySUQpCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1f
aW5oZXJpdG9ySUQpOwogfQogCiAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkzNzAxMzk4NTc4Y2IzOWYx
ODliMjNlY2JjNDJkYTQxZjBiNjE3OWMuLmZhMGU1NGE3OTFlYjRiODNlZDRhOWI5ZGExZWY1OTMz
Yjc0MzI0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkK
K0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNO
b25GaW5hbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewog
ICAgIENPTVBJTEVfQVNTRVJUKEFub255bW91c1Nsb3RDb3VudCA9PSAxLCBBbm9ueW1vdXNTbG90
Q291bnRfbXVzdF9iZV9vbmUpOwogICAgIEFTU0VSVCghZ2xvYmFsT2JqZWN0IHx8IGdsb2JhbE9i
amVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CkBAIC00MSw2ICs0MSwxNyBAQCBKU09iamVjdFdpdGhH
bG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgICAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKSwgR2xvYmFsT2JqZWN0U2xvdCwgZ2xvYmFsT2JqZWN0KTsKIH0KIAorSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0OjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQorewor
ICAgIENPTVBJTEVfQVNTRVJUKEFub255bW91c1Nsb3RDb3VudCA9PSAxLCBBbm9ueW1vdXNTbG90
Q291bnRfbXVzdF9iZV9vbmUpOworICAgIEFTU0VSVCghZ2xvYmFsT2JqZWN0IHx8IGdsb2JhbE9i
amVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAg
IGNsZWFyQW5vbnltb3VzVmFsdWUoR2xvYmFsT2JqZWN0U2xvdCk7CisgICAgZWxzZQorICAgICAg
ICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxEYXRhLCBHbG9iYWxPYmplY3RTbG90LCBnbG9iYWxP
YmplY3QpOworfQorCiBKU0dsb2JhbE9iamVjdCogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Ojpn
bG9iYWxPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBhc0dsb2JhbE9iamVjdCgoZ2V0QW5v
bnltb3VzVmFsdWUoR2xvYmFsT2JqZWN0U2xvdCkuYXNDZWxsKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgK
aW5kZXggODM4MDUxNGQ1N2FjYmY1ZThiNWIwZWY1NDA1M2U4MmM4MWMxNzUzNy4uZjBmZDA0NjFl
ZDE4NGJkZTIwNjM1ZTE2NzRkY2RjMTU2ZTY5MWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKIGNsYXNzIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykKICAgICB7CiAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2lu
Zm8pOwogICAgIH0KQEAgLTQyLDEwICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
Pik7CisgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CisgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICBKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qo
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNOb25G
aW5hbE9iamVjdChzdHJ1Y3R1cmUpCisgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KFZQdHJT
dGVhbGluZ0hhY2tUeXBlKQorICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoVlB0clN0ZWFsaW5n
SGFjaykKICAgICB7CiAgICAgICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgYnkgSlNGdW5jdGlv
biB3aGVuIHdlIGFxdWlyZSB0aGUgSlNGdW5jdGlvbiB2cHRyLgogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAKaW5kZXggNmYzMWY5OTlkNzA5NWRjYzVjZjZkM2QwNmNjMzJkMjg2OGViMjhiNy4uZDVhZjA0
NDY1NjcxMzQxMjRkNmFmNWVlYmRhMDliZWNhNzExOWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAg
LTM1LDkgKzM1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogCitjb25zdCBDbGFzc0luZm8gSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6c19pbmZvID0geyAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciIsIDAsIDAs
IDAgfTsKKwogaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRl
cmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFt
ZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3RzKQotICAgIDogSlNDZWxsKGV4ZWMt
Pmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKSkKLSAgICAs
IG1fY2FjaGVkU3RydWN0dXJlKDApCisgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCkpCiAg
ICAgLCBtX251bUNhY2hlYWJsZVNsb3RzKG51bUNhY2hlYWJsZVNsb3RzKQogICAgICwgbV9qc1N0
cmluZ3NTaXplKHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6
ZSgpKQogICAgICwgbV9qc1N0cmluZ3MoYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVu
a25vd24+W21fanNTdHJpbmdzU2l6ZV0pKQpAQCAtNzEsMTQgKzcyLDE0IEBAIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0CiAgICAgCiAgICAgc2l6ZV90IGNvdW50ID0gbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgbyk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluID0gby0+
c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluKGV4ZWMpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
KiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOworICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAoc3RydWN0dXJlW2ld
LT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgICAgIHJl
dHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwogICAgIH0KIAogICAgIGpzUHJvcGVydHlOYW1l
SXRlcmF0b3ItPnNldENhY2hlZFByb3RvdHlwZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlQ2hhaW4pOwotICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNldENhY2hlZFN0cnVj
dHVyZShvLT5zdHJ1Y3R1cmUoKSk7CisgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2Fj
aGVkU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgby0+c3RydWN0dXJlKCkpOwogICAgIG8t
PnN0cnVjdHVyZSgpLT5zZXRFbnVtZXJhdGlvbkNhY2hlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik7CiAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7
CiB9CkBAIC04Niw3ICs4Nyw3IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiBKU1ZhbHVlIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBzaXplX3QgaSkKIHsKICAgICBKU1ZhbHVlIGlkZW50aWZpZXIgPSBtX2pzU3RyaW5nc1tpXS5n
ZXQoKTsKLSAgICBpZiAobV9jYWNoZWRTdHJ1Y3R1cmUgPT0gYmFzZS0+c3RydWN0dXJlKCkgJiYg
bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSA9PSBiYXNlLT5zdHJ1Y3R1cmUoKS0+cHJvdG90
eXBlQ2hhaW4oZXhlYykpCisgICAgaWYgKG1fY2FjaGVkU3RydWN0dXJlLmdldCgpID09IGJhc2Ut
PnN0cnVjdHVyZSgpICYmIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkgPT0gYmFzZS0+c3Ry
dWN0dXJlKCktPnByb3RvdHlwZUNoYWluKGV4ZWMpKQogICAgICAgICByZXR1cm4gaWRlbnRpZmll
cjsKIAogICAgIGlmICghYmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBh
c1N0cmluZyhpZGVudGlmaWVyKS0+dmFsdWUoZXhlYykpKSkKQEAgLTEwMSwxMiArMTAyLDQgQEAg
dm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJr
U3RhY2spCiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4p
OwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotCi1KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp+
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpCi17Ci0gICAgQVNTRVJUKCFtX2NhY2hlZFN0cnVjdHVy
ZSB8fCBtX2NhY2hlZFN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpICE9IHRoaXMpOwotfQot
Ci0jZW5kaWYKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4IGY5OGM0MGVmMGY3
N2E2MWEzZmNhNGUyZTc1ZjM5NzJlMmZiNzJkMjUuLmI4NTdkYzA5ZDA2YjI4ODk5MTNhNTA4NWIw
YmYwMzFlODRjZjFjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAgICAgICAgIAotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hp
bGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOworICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBl
LCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwog
ICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3Io
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC02NSwxMSArNjUsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwgc2l6ZV90IGkp
OwogICAgICAgICBzaXplX3Qgc2l6ZSgpIHsgcmV0dXJuIG1fanNTdHJpbmdzU2l6ZTsgfQogCi0g
ICAgICAgIHZvaWQgc2V0Q2FjaGVkU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
ICAgICB2b2lkIHNldENhY2hlZFN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fY2Fj
aGVkU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgbV9jYWNoZWRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgICAgICAgICBtX2NhY2hlZFN0
cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKTsKICAgICAgICAgfQogICAg
ICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY2FjaGVkU3RydWN0
dXJlLmdldCgpOyB9CiAKQEAgLTc3LDEzICs3NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKCkgeyByZXR1cm4gbV9jYWNo
ZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGlj
IGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Io
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEs
IHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKLSAgICAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgICAgICB2aXJ0dWFsIH5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCk7Ci0jZW5kaWYKIAot
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICAgICAgdWlu
dDMyX3QgbV9udW1DYWNoZWFibGVTbG90czsKICAgICAgICAgdWludDMyX3QgbV9qc1N0cmluZ3NT
aXplOwpAQCAtOTMsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBT
dHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFpc0RpY3Rpb25hcnkoKSk7Ci0gICAgICAgIG1fZW51bWVyYXRpb25DYWNoZS5zZXQo
Z2xvYmFsRGF0YSwgZW51bWVyYXRpb25DYWNoZSk7CisgICAgICAgIG1fZW51bWVyYXRpb25DYWNo
ZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZW51bWVyYXRpb25DYWNoZSk7CiAgICAgfQogCiAgICAg
aW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIFN0cnVjdHVyZTo6ZW51bWVyYXRpb25DYWNo
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmgKaW5kZXggM2UxOWJiYzIzNjZhOWMxZDhmNGE5NGNiZjYwYjdiNDM3OTNlY2E2MS4u
OGMzYTI0OTVjNjgwM2MwN2Q1NTEwNWY0ZGZmZjMzNDI3N2QwZDVkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDewogICAgIGNsYXNzIEpTU3RhdGljU2NvcGVPYmplY3Qg
OiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBKU1N0YXRp
Y1Njb3BlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi0gICAgICAgICAgICA6IEpTVmFyaWFi
bGVPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnN0YXRpY1Njb3BlU3RydWN0dXJlLCAmbV9zeW1i
b2xUYWJsZSwgcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KCZtX3JlZ2lzdGVyU3RvcmUgKyAx
KSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmdsb2JhbERhdGEoKS5zdGF0aWNTY29wZVN0cnVjdHVyZS5nZXQoKSwgJm1fc3ltYm9sVGFi
bGUsIHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPigmbV9yZWdpc3RlclN0b3JlICsgMSkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1fcmVnaXN0ZXJTdG9yZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5p
bXBsKCksIFN5bWJvbFRhYmxlRW50cnkoLTEsIGF0dHJpYnV0ZXMpKTsKQEAgLTQ3LDcgKzQ3LDcg
QEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZv
aWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAm
c19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyB9CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE5lZWRzVGhpc0NvbnZlcnNpb24gfCBPdmVycmlkZXNNYXJr
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6
U3RydWN0dXJlRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApp
bmRleCBhZjZhOTMyOTc5ZjA3OTU3MzFlNWRlMzQ3ZWQ0Nzg5YzIxZTViMzcxLi4zNDIyZGFkM2Qw
YzBjYThiYjlhM2ZlMTEwZWFhMmNhYzFjY2E1NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKQEAgLTE4NSw3ICsxODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfTsKIAogICAgICAgICBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUpCi0gICAgICAgICAgICA6IEpTQ2VsbChn
bG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbCgq
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAg
ICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KDApCkBAIC0xOTYsNyArMTk2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZW51bSBIYXNPdGhlck93bmVyVHlwZSB7IEhhc090aGVy
T3duZXIgfTsKICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiB2YWx1ZSwgSGFzT3RoZXJPd25lclR5cGUpCi0gICAgICAgICAgICA6IEpTQ2Vs
bChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2Vs
bCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAg
ICAgICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV92YWx1ZSh2
YWx1ZSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KDApCkBAIC0yMDQsNyArMjA0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNOdWxsKCkpOwog
ICAgICAgICB9CiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSwgSGFzT3RoZXJPd25lclR5cGUpCi0gICAgICAgICAg
ICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAg
ICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KQogICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS0+bGVuZ3RoKCkpCiAgICAgICAgICAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQpAQCAtMjEyLDcg
KzIxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLmlz
TnVsbCgpKTsKICAgICAgICAgfQogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIFBhc3NSZWZQdHI8Um9wZUltcGw+IHJvcGUpCi0gICAgICAgICAgICA6IEpTQ2VsbChn
bG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbCgq
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAg
ICAgLCBtX2xlbmd0aChyb3BlLT5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50
KDEpCiAgICAgICAgIHsKQEAgLTIyMSw3ICsyMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRl
bmF0aW5nIHMxICYgczIuCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdp
dGggZmliZXJDb3VudCA8PSAzLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQot
ICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQor
ICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgoczEtPmxlbmd0aCgpICsgczItPmxl
bmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3VudCkKICAgICAgICAg
ewpAQCAtMjM0LDcgKzIzNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBUaGlzIGNv
bnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBz
Mi4KICAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50
IDw9IDMuCiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdW5zaWdu
ZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBjb25zdCBVU3RyaW5nJiB1MikKLSAgICAgICAg
ICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAg
ICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHMxLT5sZW5ndGgoKSArIHUyLmxlbmd0aCgpKQog
ICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3VudCkKICAgICAgICAgewpAQCAtMjQ3
LDcgKzI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAg
ICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCiAg
ICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJD
b3VudCwgY29uc3QgVVN0cmluZyYgdTEsIEpTU3RyaW5nKiBzMikKLSAgICAgICAgICAgIDogSlND
ZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlND
ZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAg
ICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgczItPmxlbmd0aCgpKQogICAgICAgICAg
ICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3VudCkKICAgICAgICAgewpAQCAtMjYyLDcgKzI2Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyB2YWx1ZSBtdXN0IHJlcXVpcmUgYSBmaWJl
ckNvdW50IG9mIGF0IGxlYXN0IG9uZSBpbXBsaWVzIHRoYXQgdGhlIGxlbmd0aAogICAgICAgICAv
LyBmb3IgZWFjaCB2YWx1ZSBtdXN0IGJlIGV4YWN0bHkgMSEKICAgICAgICAgSlNTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBKU1ZhbHVlIHYzKQotICAgICAg
ICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkK
KyAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0
YSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgoMCkKICAg
ICAgICAgICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAg
ICB7CkBAIC0yNzUsNyArMjc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gVGhp
cyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5nIHUx
ICYgdTIuCiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
VVN0cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyKQotICAgICAgICAgICAgOiBKU0NlbGwoZ2xv
YmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoKmds
b2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAg
ICwgbV9sZW5ndGgodTEubGVuZ3RoKCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9m
aWJlckNvdW50KDIpCiAgICAgICAgIHsKQEAgLTI4Nyw3ICsyODcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5n
IGJ5IGNvbmNhdGVuYXRpbmcgdTEsIHUyICYgdTMuCiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyLCBj
b25zdCBVU3RyaW5nJiB1MykKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUx
Lmxlbmd0aCgpICsgdTIubGVuZ3RoKCkgKyB1My5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9m
aWJlckNvdW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgICB7CkBAIC0yOTksNyAr
Mjk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBKU1N0cmluZyhK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHZhbHVlLCBKU1N0cmluZ0Zp
bmFsaXplckNhbGxiYWNrIGZpbmFsaXplciwgdm9pZCogY29udGV4dCkKLSAgICAgICAgICAgIDog
SlNDZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDog
SlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAg
ICAgICAgICAgICAsIG1fbGVuZ3RoKHZhbHVlLmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX3Zh
bHVlKHZhbHVlKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoMCkKQEAgLTM0OSwxMiArMzQ5
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTVmFsdWUgcmVwbGFjZUNoYXJhY3Rl
cihFeGVjU3RhdGUqLCBVQ2hhciwgY29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQpOwogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE5lZWRzVGhpc0NvbnZlcnNpb24pLCBBbm9ueW1vdXNTbG90Q291bnQs
IDApOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uKSwgQW5vbnltb3VzU2xvdENvdW50
LCAwKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZW51bSBWUHRyU3RlYWxpbmdIYWNrVHlw
ZSB7IFZQdHJTdGVhbGluZ0hhY2sgfTsKICAgICAgICAgSlNTdHJpbmcoVlB0clN0ZWFsaW5nSGFj
a1R5cGUpIAotICAgICAgICAgICAgOiBKU0NlbGwoMCkKKyAgICAgICAgICAgIDogSlNDZWxsKFZQ
dHJTdGVhbGluZ0hhY2spCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQogICAgICAgICB7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggODgy
YjIxODhlOTdiODg2ZWI0ODQ0MzdkYzRjZGVmYzM1ZjlhYjE5Mi4uZGJhMDNmNjNkMTQ4YTRkYmEz
NWQ2MDVhNDNkNTRmZTQ2ZGRhZDAxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKQEAgLTMzLDEwICszMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTnVtYmVy
VHlwZSAgICAgICAgPSAzLAogICAgICAgICBOdWxsVHlwZSAgICAgICAgICA9IDQsCiAgICAgICAg
IFN0cmluZ1R5cGUgICAgICAgID0gNSwKKyAgICAgICAgTGVhZlR5cGUgICAgICAgICAgPSA2LAog
ICAgICAgICAvLyBUaGUgQ29tcG91bmRUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpT
VHlwZSB0aGF0IG1heSBoYXZlIGNoaWxkcmVuCi0gICAgICAgIENvbXBvdW5kVHlwZSAgICAgID0g
NiwKLSAgICAgICAgT2JqZWN0VHlwZSAgICAgICAgPSA3LAotICAgICAgICBHZXR0ZXJTZXR0ZXJU
eXBlICA9IDgKKyAgICAgICAgQ29tcG91bmRUeXBlICAgICAgPSA3LAorICAgICAgICBPYmplY3RU
eXBlICAgICAgICA9IDgsCisgICAgICAgIEdldHRlclNldHRlclR5cGUgID0gOQogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCmluZGV4IDI4NGQyYjI2OTMyYjVmZGViYWVhYmRkNzc5Yjc1YjY1MWRiMmU3MGIuLmFj
ZGU4MWYxNzhlZTMzMTkxYWUxZDE2MWI2NmUxMjVmM2JlOTIzNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTU0LDYgKzU0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChmbGFncyA8PSAweDFGRik7CiAg
ICAgICAgICAgICBBU1NFUlQodHlwZSA8PSAweEZGKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBl
ID49IENvbXBvdW5kVHlwZSB8fCAhKGZsYWdzICYgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSk7CiAg
ICAgICAgICAgICAvLyBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIG1lYW5zIChJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgJiAhT3ZlcnJpZGVzSGFzSW5zdGFuY2UpCiAgICAgICAgICAgICBpZiAo
KG1fZmxhZ3MgJiAoSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzSGFzSW5zdGFuY2Up
KSA9PSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UpCiAgICAgICAgICAgICAgICAgbV9mbGFncyB8PSBJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oCmluZGV4IGQ5NzQyNzM1YjY4M2RlYTAwM2FiOGIwNjJhZDU5ZmM3MmMwYzhkYWQu
LmFlOWQwMmNjYmFkOTA0YTAxNmI1MDNiYmI3YmVlZDUzZWJmY2JkZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKQEAgLTQ2Niw2ICs0NjYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUgYSwgY29uc3Qg
SlNDZWxsKiBiKSB7IHJldHVybiBhICE9IEpTVmFsdWUoYik7IH0KICAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEpTQ2VsbCogYSwgY29uc3QgSlNWYWx1ZSBiKSB7IHJldHVybiBKU1Zh
bHVlKGEpICE9IGI7IH0KIAorICAgIGJvb2wgaXNab21iaWUoY29uc3QgSlNDZWxsKik7CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKaW5kZXggODkxYWRhOGM0M2Ez
N2FhN2JjMTI2ZTMzMDQ3NTA3MDIwYzNlMzFjOS4uODliYjZiMDJiNjdkOTlhYzJkYzNkNDVjZjUz
ODM3OWZjZGZjZjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFyaWFibGVPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGNvbnN0ICogYWRkcmVzc09mUmVnaXN0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gJm1fcmVnaXN0ZXJzOyB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAtNjYsOCArNjYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0
dXJlRmxhZ3M7CiAKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBSZWdpc3Rlciog
cmVnaXN0ZXJzKQotICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKKyAg
ICAgICAgSlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIFJlZ2lzdGVyKiByZWdpc3Rl
cnMpCisgICAgICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KQogICAgICAgICAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQogICAgICAgICAgICAg
LCBtX3JlZ2lzdGVycyhyZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHJl
Z2lzdGVycykpCiAgICAgICAgIHsKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSA9
PSBzaXplb2YoUmVnaXN0ZXIpLCBSZWdpc3Rlcl9zaG91bGRfYmVfc2FtZV9zaXplX2FzX1dyaXRl
QmFycmllcik7CiAgICAgICAgIH0KIAotICAgICAgICBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gY29weVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxEYXRhJiwgV3JpdGVCYXJy
aWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBjb3VudCk7CisgICAgICAgIFBhc3NPd25BcnJheVB0
cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBjb3B5UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEm
LCBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHNyYywgc2l6ZV90IGNvdW50LCBzaXplX3QgY2FsbGZy
YW1lU3RhcnRzKTsKICAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25v
d24+KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBy
ZWdpc3RlckFycmF5KTsKIAogICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTEzNywxMCArMTM3LDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFzc093bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IEpTVmFyaWFibGVPYmplY3Q6OmNvcHlSZWdp
c3RlckFycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgV3JpdGVCYXJyaWVyPFVua25vd24+
KiBzcmMsIHNpemVfdCBjb3VudCkKKyAgICBpbmxpbmUgUGFzc093bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxVbmtub3duPiA+IEpTVmFyaWFibGVPYmplY3Q6OmNvcHlSZWdpc3RlckFycmF5KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBj
b3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cykKICAgICB7CiAgICAgICAgIE93bkFycmF5UHRy
PFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5l
dyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bY291bnRdKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxm
cmFtZVN0YXJ0czsgaSsrKQorICAgICAgICAgICAgcmVnaXN0ZXJBcnJheVtpXS5zZXQoZ2xvYmFs
RGF0YSwgdGhpcywgc3JjW2ldLmdldCgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IGNhbGxm
cmFtZVN0YXJ0cyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgaSA8IGNvdW50
OyBpKyspCiAgICAgICAgICAgICByZWdpc3RlckFycmF5W2ldLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBzcmNbaV0uZ2V0KCkpOwogCiAgICAgICAgIHJldHVybiByZWdpc3RlckFycmF5LnJlbGVhc2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgK
aW5kZXggNjM4MzNlOWYzNzRlYzdjNzlhYTdhZDgyMGU4YTA0MTJmYmRhZDM4MC4uYTdkYmUwZDkw
MmVmYjkwOWVlYTZlMWI1ZGQwMDg1ZmYxMGZiMjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKQEAgLTMwLDEzICszMCwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2ggYXJlIHdy
YXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCiAgICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGlj
aXQgSlNXcmFwcGVyT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgICAg
ICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0OwogICAg
ICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSk7CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAt
NTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+IG1faW50ZXJuYWxWYWx1ZTsKICAgICB9OwogCi0gICAgaW5saW5lIEpTV3JhcHBlck9iamVj
dDo6SlNXcmFwcGVyT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorICAgIGlubGluZSBKU1dy
YXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTWm9tYmllLmNwcAppbmRleCAzNWUxMzE1NWE3Njk3NjNkZjRkOGNhYWIzNDc3NTJjZjkz
N2RjZGFjLi5lZmFiYzkzZmMxYmMzNTE5NjEwNmNmZDdkMzA3NTA5YzVhMzU1OGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuY3BwCkBAIC0zNSwxNyArMzUsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTWm9tYmllOjpzX2luZm8gPSB7
ICJab21iaWUiLCAwLCAwLCAwIH07CiAKLVN0cnVjdHVyZSogSlNab21iaWU6OmxlYWtlZFpvbWJp
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi17Ci0gICAgc3RhdGljIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gMDsKLSAgICBpZiAoIXN0cnVjdHVyZSkgewotICAgICAgICBTdHJ1
Y3R1cmU6OnN0YXJ0SWdub3JpbmdMZWFrcygpOwotICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBqc051bGwoKSwgVHlwZUluZm8oVW5zcGVjaWZpZWRUeXBl
KSwgMCwgJnNfaW5mbykubGVha1JlZigpOwotICAgICAgICBTdHJ1Y3R1cmU6OnN0b3BJZ25vcmlu
Z0xlYWtzKCk7Ci0gICAgfQotICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci19Ci0KIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShKU0NfWk9NQklFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTWm9tYmllLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pv
bWJpZS5oCmluZGV4IGRmZmYxYTdhNjYzNzMxOGQwMDk5MDQ3NzkxYmQ4ZDc0MGMyMGIyMDcuLjA1
NTliOTY5NGI4OTMwY2QwMWEzNzE1MDE3YmY5OTJhMDhhZDU5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaApAQCAtMjcsMjEgKzI3LDIxIEBACiAjZGVmaW5lIEpT
Wm9tYmllX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
CiAjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTWm9t
YmllIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6Ci0gICAgSlNab21iaWUoY29uc3QgQ2xhc3NJ
bmZvKiBvbGRJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0NlbGwoc3Ry
dWN0dXJlKQorICAgIEpTWm9tYmllKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgQ2xh
c3NJbmZvKiBvbGRJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0NlbGwo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICAsIG1fb2xkSW5mbyhvbGRJbmZvKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNab21iaWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgc3RhdGljIFN0
cnVjdHVyZSogbGVha2VkWm9tYmllU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgdmly
dHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQVBJVmFsdWVXcmFwcGVyKCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Niw5ICs2Niw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgMCksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKExlYWZUeXBl
LCAwKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CiAKICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5jcHAKaW5kZXggN2I4NTZhMWI1YjQ2OWNmN2Y1ZmMyZWRlOWJlYjUyNjNiMDMy
ZTQ4OC4uNTJiZDc2YWQ0YjhiMDM1NmI2ZDNjYjhlNjU4OTJhZWE2MDIyNTIzYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8KIEBlbmQKICovCiAKLU1hdGhPYmplY3Q6Ok1hdGhP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKK01hdGhPYmplY3Q6Ok1hdGhPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCmluZGV4IDI2ZWFhZTA0NDk5Mjhk
ZTUxYTVjNGRlNWVkZmZjYmEyZWJkYzU3MTMuLjc1NzUzYmUyOTIyZTliNzk0YmUyYTE0ODIwYmQ1
YWY4MTc1ZjQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0
LmgKQEAgLTI3LDE0ICsyNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE1hdGhP
YmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIE1hdGhPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgTWF0aE9iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ4ZmRhNjlh
ODQwN2JkNTBiZWRmM2U0ZWU3YTBhZTM3YzI2ODU5NjYuLjljZDVkY2JmN2YzNWQyZDRiYThiMTRh
NWZlMmM2YTBkYTQ5ZGVhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBAIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik7CiAKIGNvbnN0
IENsYXNzSW5mbyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAgfTsKIAotTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3Qg
VVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCitOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24o
JmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIo
ZXhlYywgbmFtZUFuZE1lc3NhZ2UpKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CkBAIC00MSwxMyArNDEsMjMgQEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KgogCiAgICAgcHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4x
MS43LjUKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKLSAgICBtX2Vycm9yU3RydWN0dXJlID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKKyAgICBtX2Vycm9yU3RydWN0dXJl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9y
U3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBl
KCkgPT0gT2JqZWN0VHlwZSk7Cit9CisKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQoreworICAgIEludGVybmFsRnVuY3Rpb246
Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIGlmIChtX2Vycm9yU3RydWN0dXJlKQorICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2Vycm9yU3RydWN0dXJlKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApIDoganNVbmRlZmluZWQoKTsKICAgICBT
dHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gc3RhdGljX2Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKS0+ZXJyb3JTdHJ1Y3R1cmUoKTsKKyAgICBBU1NFUlQoZXJy
b3JTdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApp
bmRleCAyM2Y3OThlNDcyOWJlYmU3YTk4YzYyZDg0ZDNiZDI2YzdjMWI3ODA3Li5lOTZkYWY2NDRm
YTRhMGE5ZDQzYWE5MTA5ZjViMDk5MzUyODMwOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0zMSwxMSAr
MzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNT
bG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CkBAIC00MywxMCArNDMsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBJ
bnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFs
IENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9l
cnJvclN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9lcnJvclN0
cnVjdHVyZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCA0
ZTEwMjY4ZWViMmZlMGU2Yjc1MGUwYWRkMTQ2ZjdjZDcyNmRiZWIyLi5kZTI3ZDU5ZWU0ZTJlYTA1
YWY1YTAwYWM0N2QwZmNiMjAzYWM4MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9y
UHJvdG90eXBlKTsKIAotTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNz
YWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK05hdGl2ZUVycm9yUHJv
dG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBu
YW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCiAgICAg
OiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAg
ICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5h
bWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAppbmRleCAzMDY5
MGQ1YmM3ZTczZjg5YjYxMTRhM2FhYjQ0ZTFjY2NmZjRlYWU5Li5lMWIwNWNlYjgyYmMzZjQwMmYz
MWQ3MzY1OWIzODI5MjU3YTEwZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgTmF0aXZlRXJyb3JQ
cm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJiwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOworICAg
ICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKik7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWVlMTQzYTNmMDdkNTYxNmE2MGIx
ZGJmYTdjY2ViOTg0ZDZmN2JiZS4uNDE5M2Y3OTgxOGY5MzExMGI2YTQxOGMwMjZiMmY1Y2FiZmRi
Y2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmNwcApAQCAtNTQsNyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8gTnVtYmVyQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQog
QGVuZAogKi8KIAotTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQor
TnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclBy
b3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBu
dW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUpKQogewogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
Q29uc3RydWN0b3IuaAppbmRleCBhYjQ1MDdlNTgzZWIyNWIyN2FmZjIzNDE5YzQyNzhlMWE3OTYx
NTgyLi42OWFhOGExMzIwYTcwZDgwODM3NTRkZWVhY2RmMDEzYWNiMDAzOWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKQEAgLTI5
LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJl
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiwgTnVtYmVyUHJvdG90eXBlKik7CisgICAgICAgIE51bWJlckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgTnVtYmVyUHJvdG90
eXBlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAK
ICAgICAgICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1v
dXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKaW5kZXggNzRiNWU5ODFlM2FkZjVhNTMzOWMy
MTMyNzJjM2Q5NDdkZmI0YjE5MC4uNmVlMTAzYjM4NTYyOTUxZTUyMmM1ODM1Mjk1YTkwYTYzMTVm
MmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3Qu
Y3BwCkBAIC0zMSw4ICszMSw4IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTnVtYmVyT2Jq
ZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIE51bWJlck9iamVjdDo6c19pbmZvID0geyAiTnVtYmVy
IiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLU51bWJlck9iamVjdDo6TnVt
YmVyT2JqZWN0KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK051bWJlck9iamVjdDo6
TnVtYmVyT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogewogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlck9iamVjdC5oCmluZGV4IDkwZDBiMjZlMzA4Mjg0NjI4MGViMTRmYTAwZDhi
Mzg1YzRiMGM4ZDcuLmNiYTY1ZGQwZjcyNDg0OWY4ZGE2YWQ3ZWUzNzM3NTI1YjM2M2Y3MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCkBAIC0yNywx
MSArMjcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJPYmplY3QgOiBw
dWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IE51
bWJlck9iamVjdChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsK
KyAgICAgICAgZXhwbGljaXQgTnVtYmVyT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDZjMDI3YjM2
Y2U5YzU1YjQxMDZmY2JiYWMwNTcyNDU2MjM0MjQ3ODMuLjI0NTMyZGQ1MTI5MjViZDIyYmYwOGMw
MWRlYzFiYTE4OTg3YTNmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUq
KTsKIAogLy8gRUNNQSAxNS43LjQKIAotTnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVy
ZSkKK051bWJlclByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBOdW1iZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRh
KCksIGpzTnVtYmVyKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmgKaW5kZXggMTkxYWI0NzhhM2M3NTQ5Y2U5OTJiY2VmMTU3ODg5ZTJkZTcy
NDUzMS4uNDViZGZlN2JiMmZjZDgwNjBlYjNjNmNlNWJjMjMzZmU4ZGJlNTdmYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKQEAgLTI3LDcg
KzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJQcm90b3R5cGUgOiBw
dWJsaWMgTnVtYmVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJlclByb3RvdHlw
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBOdW1iZXJQcm90b3R5
cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1
bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRl
eCA2YmQyYTI4MzZlNWNmYjM4NzYwYmE2MDNiMjVhNmI4MDNkMmFlMjEwLi5hZWQ1ZTI0NmE0M2Rm
ZTU2ZTBiZDM1M2U3Y2I2N2M5OWExMjZiOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGNv
bnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
SW50ZXJuYWxGdW5jdGlvbjo6c19pCiBAZW5kCiAqLwogCi1PYmplY3RDb25zdHJ1Y3Rvcjo6T2Jq
ZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90
eXBlKiBvYmplY3RQcm90b3R5cGUpCitPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCiAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSkKIHsKICAgICAvLyBFQ01BIDE1LjIuMy4x
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAppbmRleCBiN2JmYzFkNzE3YzcxNzhlMzNjMjk2YWQ3YjRiOTc0MDFlYWU0M2QxLi42ZWJhZmNk
YWRmYWE4YzU2ODQxNGEyMDZkZmEwMjQyZWIzNjQ0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTI5LDE0ICsyOSwxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+LCBPYmplY3RQcm90b3R5cGUqKTsKKyAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmplY3RQcm90b3R5cGUqKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAK
aW5kZXggMTg3NDU2ZjIyN2ZlZDQ4OGI2YTAyZTcyY2FiNTU4NWFhZWU4MDkyMi4uNzQ2OTE3MmM4
OTZlNzExNzUwMzE4ZjA3Mjg3ZWQxMTkwMzEyODQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0xvb2t1cFNl
dHRlcihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmco
RXhlY1N0YXRlKik7CiAKLU9iamVjdFByb3RvdHlwZTo6T2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKLSAgICA6
IEpTTm9uRmluYWxPYmplY3Qoc3R1Y3R1cmUpCitPYmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3R1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCisgICAgOiBKU05v
bkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3R1Y3R1cmUpCiAgICAgLCBtX2hhc05v
UHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyh0cnVlKQogewogICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCmluZGV4IDYxYzhmNTdkMTQ4
OGQzNTg2NGFmZTNkOTVhNzg5YWQ4M2RjYTc1ZDEuLjlmYjdmYWU1YzZlNTc2MWNhZmE0MzQ4NTk5
MDMxZTBiMGJiYmMxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdFByb3RvdHlwZS5oCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgT2JqZWN0UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1
YmxpYzoKLSAgICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSk7CisgICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCBlZGJkMzVmNDhh
MjZjMjhkNjlkMGUxYzQ3NDYyOGZhY2U3MTgwMWI4Li5mYzE5NWNkODdjNWIzNmNlOTNhMTU1NDk1
ZTdiMGJmMmExMjI2MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgUHJv
cGVydHlNYXBIYXNoVGFibGVfaAogCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldy
aXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTI0NCw3ICsyNDUsNyBA
QCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2Fw
YWNpdHkpCiAgICAgQVNTRVJUKGlzUG93ZXJPZjIobV9pbmRleFNpemUpKTsKIH0KIAotaW5saW5l
IFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgY29u
c3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIGNvbnN0IFByb3Bl
cnR5VGFibGUmIG90aGVyKQogICAgIDogbV9pbmRleFNpemUob3RoZXIubV9pbmRleFNpemUpCiAg
ICAgLCBtX2luZGV4TWFzayhvdGhlci5tX2luZGV4TWFzaykKICAgICAsIG1faW5kZXgoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQqPihmYXN0TWFsbG9jKGRhdGFTaXplKCkpKSkKQEAgLTI1Niw4ICsyNTcs
MTAgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwg
SlNDZWxsKiwgY29uc3QgUHJvcGVydHlUYWJsZSYKICAgICBtZW1jcHkobV9pbmRleCwgb3RoZXIu
bV9pbmRleCwgZGF0YVNpemUoKSk7CiAKICAgICBpdGVyYXRvciBlbmQgPSB0aGlzLT5lbmQoKTsK
LSAgICBmb3IgKGl0ZXJhdG9yIGl0ZXIgPSBiZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQor
ICAgIGZvciAoaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgaXRlci0+a2V5LT5yZWYoKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKGdsb2JhbERh
dGEsIG93bmVyLCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKKyAgICB9CiAKICAgICAvLyBD
b3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBWZWN0b3I8dW5zaWduZWQ+KiBv
dGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKQEAgLTI2
NSw3ICsyNjgsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2Jh
bERhdGEmLCBKU0NlbGwqLCBjb25zdCBQcm9wZXJ0eVRhYmxlJgogICAgICAgICBtX2RlbGV0ZWRP
ZmZzZXRzLnNldChuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVkT2Zmc2V0cykpOwog
fQogCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90
aGVyKQoraW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0
IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIDogbV9pbmRleFNpemUoc2l6ZUZvckNhcGFjaXR5
KGluaXRpYWxDYXBhY2l0eSkpCiAgICAgLCBtX2luZGV4TWFzayhtX2luZGV4U2l6ZSAtIDEpCiAg
ICAgLCBtX2luZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdFplcm9lZE1hbGxvYyhkYXRh
U2l6ZSgpKSkpCkBAIC0yODAsNiArMjgzLDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3Bl
cnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgdW5zaWduZWQgaW5pdGlhbENhcGEKICAg
ICAgICAgQVNTRVJUKGNhbkluc2VydCgpKTsKICAgICAgICAgcmVpbnNlcnQoKml0ZXIpOwogICAg
ICAgICBpdGVyLT5rZXktPnJlZigpOworICAgICAgICB3cml0ZUJhcnJpZXIoZ2xvYmFsRGF0YSwg
b3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOwogICAgIH0KIAogICAgIC8vIENvcHkg
dGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDE5YjRiMzYxZTZjODg0ZDk0
MWYwYjczZGVlNTVmZjk1NTZlZDIwYmQuLjNkYTAxOTgxY2JlODczZWU5NzhlNDI2ZmI5MDIwNDJh
YmY3NjQ4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4
cENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpz
X2kKIEBlbmQKICovCiAKLVJlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlw
ZSkKK1JlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdF
eHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhl
YywgIlJlZ0V4cCIpKQogICAgICwgZChhZG9wdFB0cihuZXcgUmVnRXhwQ29uc3RydWN0b3JQcml2
YXRlKSkKIHsKQEAgLTEwOSw3ICsxMDksNyBAQCBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogfQog
CiBSZWdFeHBNYXRjaGVzQXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqIGV4ZWMs
IFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSogZGF0YSkKLSAgICA6IEpTQXJyYXkoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgZGF0YS0+
bGFzdE51bVN1YlBhdHRlcm5zICsgMSwgQ3JlYXRlSW5pdGlhbGl6ZWQpCisgICAgOiBKU0FycmF5
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgZGF0YS0+bGFzdE51bVN1YlBhdHRlcm5zICsgMSwgQ3Jl
YXRlSW5pdGlhbGl6ZWQpCiB7CiAgICAgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBkID0gbmV3
IFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZTsKICAgICBkLT5pbnB1dCA9IGRhdGEtPmxhc3RJbnB1
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oCmluZGV4IDVlMGIyYjg1MGIxYjhhNmMyYzAwMDg4NzU2MzVjMmZmYzk5MTVjMDQuLjU0ODY2
NGU1ODRmZTEyNjZmNzM4M2I3YTQxOTNiYjBlMTA3NGI2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaApAQCAtNTcsOSArNTcsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+LCBSZWdFeHBQcm90b3R5cGUqKTsKKyAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHBQcm90b3R5cGUqKTsKIAot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0YjUw
MjhiZDk3M2M2MmRhMzZlYWNlMDU4MzNiNjkxNzlkMjQ5NzkzLi5kODI0ZWNkYjA4YmUzOGM5Y2Iw
ZmY1Mzg1ZjY0NmMxMjE1NDViMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJl
Z0V4cE9iamVjdDo6c19pbmZvID0geyAiUmVnRXhwIiwgJkpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dDo6c18KIEBlbmQKICovCiAKLVJlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBOb25OdWxsUGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCkKK1JlZ0V4cE9iamVjdDo6UmVnRXhw
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBOb25OdWxsUGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCkKICAgICA6IEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIGQoYWRvcHRQdHIobmV3
IFJlZ0V4cE9iamVjdERhdGEocmVnRXhwKSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGZhMjAyNGRjZDc1ZTdhYzVjMjY4YzE4NzdlMDY5
NDEwMDQyMTViOWYuLjQyNzRmZmY0MTQ5MWQyZTU2NjU5NTgzMWU1NGM2NjU4MGRiZmRjYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0zMCw3
ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBK
U09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKIAotICAgICAgICBSZWdFeHBPYmplY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwg
Tm9uTnVsbFBhc3NSZWZQdHI8UmVnRXhwPik7CisgICAgICAgIFJlZ0V4cE9iamVjdChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIE5vbk51bGxQYXNzUmVmUHRyPFJlZ0V4cD4pOwogICAgICAg
ICB2aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsKIAogICAgICAgICB2b2lkIHNldFJlZ0V4cChQYXNz
UmVmUHRyPFJlZ0V4cD4gcikgeyBkLT5yZWdFeHAgPSByOyB9CkBAIC01OCw3ICs1OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAKaW5kZXggNjE3NDdiMWZjNjU3MWM2YWIwYmQxMDA0ZDQxOWU3OGIxYjVlMzUz
ZC4uNWJiOGFkOGJiOTM4MmQ4YzlkYjQ0ODE2ODgyZmQyODZlNDRmMjJmMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiAvLyBFQ01BIDE1LjEwLjUKIAotUmVnRXhwUHJv
dG90eXBlOjpSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKK1JlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBSZWdF
eHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFJlZ0V4cDo6Y3JlYXRlKCZleGVjLT5n
bG9iYWxEYXRhKCksICIiLCBOb0ZsYWdzKSkKIHsKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsZSwg
cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSksIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5kZXggNzBkNzdkOWM4NDk2MTUxNTdl
NzJmYjAxYTA1ODcwMjYxYTEyYTdhMy4uMmNjNTQwNTg2NTBhYzIzZmMyOWJjYWIwMmFkYjRiYjE5
OTFkNDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBS
ZWdFeHBQcm90b3R5cGUgOiBwdWJsaWMgUmVnRXhwT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFJlZ0V4cFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAg
ICAgICBSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRl
eCBmMGZmNzU3ODk1MmQyZGRmMWVkNjc4MDhjYTEyZDE1ZmMwODRhOTU2Li5kMGEyNjcyYjYxODBm
MTliYjExZjdlZjJkOTVmOGViZjJlNTRkYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIFNjb3BlQ2hhaW5Ob2RlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAg
ICAgICBTY29wZUNoYWluTm9kZShTY29wZUNoYWluTm9kZSogbmV4dCwgSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogZ2xvYmFsVGhpcykKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEt
PnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoKmds
b2JhbERhdGEsIGdsb2JhbERhdGEtPnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdldCgpKQogICAg
ICAgICAgICAgLCBnbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG5leHQoKmds
b2JhbERhdGEsIHRoaXMsIG5leHQpCiAgICAgICAgICAgICAsIG9iamVjdCgqZ2xvYmFsRGF0YSwg
dGhpcywgb2JqZWN0KQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBwcmludCgpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
LCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENv
dW50LCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICBwcml2YXRlOgogICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJr
Q2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
Y3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
Y3RFdmFsQWN0aXZhdGlvbi5jcHAKaW5kZXggMjRjNTAxZTU3MDkzNWZkZTY2YTNhMTMyZjQ5NmZl
OWZkMDM3NTExMi4uZTY2NmRlZTE1NzkyYjdmYmU4OTdlNjBkMmM1MDNkNjIzYjc2ZmQ4MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3Rp
dmF0aW9uLmNwcApAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFN0cmljdEV2
YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCi0gICAg
OiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkuc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCkpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmNwcAppbmRleCBlZDA4OGU0ZjZkMDczNmQ5YTBiZGI4NDcyNTQ1NWQwZDkzYjI3MDg1
Li41NjAyMDJhNTU5ZTZkOWJiNWJjYjU4YjFhOWIxNGMxNTA4MWJjOThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC00
OCw3ICs0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zy
b21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMpCiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
U3RyaW5nQ29uc3RydWN0b3IpOwogCi1TdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCitTdHJpbmdDb25zdHJ1Y3Rv
cjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVu
dGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7
CiAgICAgLy8gRUNNQSAxNS41LjMuMSBTdHJpbmcucHJvdG90eXBlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAppbmRleCAzYTQyYzdlOTU2
MTI4N2U4NjU4NmYwYWQyNzNkN2U2Mzc3ZjVlMzg2Li4xMTdjY2U4Y2E5ODBjM2U3MzczOGU2NWQ5
N2FjOGU4NTBhYjExZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0NvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBTdHJpbmdDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBmdW5j
dGlvblN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKik7CisgICAgICAgIFN0cmluZ0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBm
dW5jdGlvblN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKik7CiAKICAgICAgICAgdmlydHVhbCBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0N2U1ODYwYWQ5ZjU0MTky
YzcxZmM0MDUyMDk2ZmRkM2JjMzdmNWE3Li42N2RjMjkxYjA5ZWNmN2Q3ZWJhODhhYWYyOTZmYTUz
NDhlYzIyY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKQEAgLTI5LDIyICsyOSwyMiBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0
cmluZ09iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OnNfaW5mbyA9IHsg
IlN0cmluZyIsICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1TdHJpbmdPYmpl
Y3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK1N0cmlu
Z09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUp
CiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVl
KGV4ZWMtPmdsb2JhbERhdGEoKSwganNFbXB0eVN0cmluZyhleGVjKSk7CiB9CiAKLVN0cmluZ09i
amVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCi0gICAgOiBKU1dy
YXBwZXJPYmplY3Qoc3RydWN0dXJlKQorU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmlu
ZykKKyAgICA6IEpTV3JhcHBlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERh
dGEsIHN0cmluZyk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJp
bmcmIHN0cmluZykKLSAgICA6IEpTV3JhcHBlck9iamVjdChzdHJ1Y3R1cmUpCitTdHJpbmdPYmpl
Y3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBzdHJpbmcpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAg
ICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZXhlYywgc3Ry
aW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmlu
ZGV4IGFlMzM3NmQyMmFjZTUzYTgxOWEzMDdkNDkzYzUxNWE5Mjg3OWQwNjYuLjRjMTYwNDRmYmE2
OTg1NzRjZWQ3MzJhMjJjY2Y2ZmM2NmQyNDdiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC0yOCw4ICsyOCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAg
ICAgcHVibGljOgotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIFN0cmlu
Z09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgU3RyaW5nT2JqZWN0KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMg
U3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmlu
ZyopOwogCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNT
dHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBwZXJP
YmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3Vu
dCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTV3JhcHBlck9iamVjdDo6U3RydWN0
dXJlRmxhZ3M7Ci0gICAgICAgIFN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+LCBKU1N0cmluZyopOworICAgICAgICBTdHJpbmdPYmplY3QoSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNTdHJpbmcqKTsKICAgICB9OwogCiAgICAgU3RyaW5n
T2JqZWN0KiBhc1N0cmluZ09iamVjdChKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5oCmluZGV4IGU0YzcwNjEyMmNlMTcxM2Q0M2VlOTUzZDFiYzg5Zjc1
MGU5YjRlN2MuLjMxMzM5NDQ1OGYzZDAxMTg0MTJjNjQ4ODgwMzQ0MDI3MjM3Y2FjZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaApAQCAtMzcsMTIgKzM3LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBT
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJp
bmcpCisgICAgICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgc3RyaW5nKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8p
IAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKICAgICAgICAgeyAKICAgICAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKaW5kZXggYTZiZjRlNjI1MmViYThiOTFhMjg1NzI0NDBkZTg0ZDhlMmExN2RjYy4u
OTExMTJhNTViODk2NzdlNmM3MjVjNWI0ZWQ1YTQ3Nzg2NWFlYjVlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzEsNyAr
MTMxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvID0geyAiU3Ry
aW5nIiwgJlN0cmluZ09iamVjdDo6c19pbmZvLCAwLAogKi8KIAogLy8gRUNNQSAxNS41LjQKLVN0
cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUpCitTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
U3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaAppbmRleCA1N2RlZjIyODFiMWQ1YzQ4ZjEzNGFkNWQ0MjFlMDc3ZWU1YTA4N2E4Li42YzRi
NDc1NjQxM2FjMjcwZjlmN2VhMzI0ODAxM2E4N2U4ZTFmMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaApAQCAtMjksMTIgKzI5LDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGljIFN0
cmluZ09iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAg
ICAgICAgU3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBiZDdkOWRkYTkwMTcyYWU2MjVjNzNmMDNi
NzNhZWZiMjJjY2EwZjdlLi5lMmQ1NGRjYjhiOTRhZmMyM2FkZTJmMzdlNGU0ZDBjOGEyNDg4ZmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTYx
LDIxICs2MSw2IEBAIGludCBudW1SZW1vdmVzOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRl
ZiBOREVCVUcKLXN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciBzdHJ1Y3R1cmVDb3Vu
dGVyKCJTdHJ1Y3R1cmUiKTsKLQotI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLXN0
YXRpYyBNdXRleCYgaWdub3JlU2V0TXV0ZXgoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
TXV0ZXgsIG11dGV4LCAoKSk7Ci0gICAgcmV0dXJuIG11dGV4OwotfQotI2VuZGlmCi0KLXN0YXRp
YyBib29sIHNob3VsZElnbm9yZUxlYWtzOwotc3RhdGljIEhhc2hTZXQ8U3RydWN0dXJlKj4mIGln
bm9yZVNldCA9ICoobmV3IEhhc2hTZXQ8U3RydWN0dXJlKj4pOwotI2VuZGlmCi0KICNpZiBEVU1Q
X1NUUlVDVFVSRV9JRF9TVEFUSVNUSUNTCiBzdGF0aWMgSGFzaFNldDxTdHJ1Y3R1cmUqPiYgbGl2
ZVN0cnVjdHVyZVNldCA9ICoobmV3IEhhc2hTZXQ8U3RydWN0dXJlKj4pOwogI2VuZGlmCkBAIC0x
MDYsNDEgKzkxLDQxIEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6cmVt
b3ZlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAvLyBtYXAgbW9kZSkuCiAgICAgICAg
IC8vIEFzIHN1Y2gsIHRoZSBwYXNzZWQgc3RydWN0dXJlICptdXN0KiBiZSB0aGUgZXhpc3Rpbmcg
dHJhbnNpdGlvbi4KICAgICAgICAgQVNTRVJUKHNpbmdsZVRyYW5zaXRpb24oKSA9PSBzdHJ1Y3R1
cmUpOwotICAgICAgICBzZXRTaW5nbGVUcmFuc2l0aW9uKDApOworICAgICAgICBjbGVhclNpbmds
ZVRyYW5zaXRpb24oKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDaGVjayB3aGV0aGVyIGEg
bWFwcGluZyBleGlzdHMgZm9yIHN0cnVjdHVyZSdzIGtleSwgYW5kIHdoZXRoZXIgdGhlCiAgICAg
ICAgIC8vIGVudHJ5IGlzIHN0cnVjdHVyZSAodGhlIGxhdHRlciBjaGVjayBtYXkgZmFpbCBpZiB3
ZSBpbml0aWFsbHkgaGFkIGEKICAgICAgICAgLy8gdHJhbnNpdGlvbiB3aXRoIGEgc3BlY2lmaWMg
dmFsdWUsIGFuZCB0aGlzIGhhcyBiZWVuIGRlc3BlY2lmaWVkKS4KICAgICAgICAgVHJhbnNpdGlv
bk1hcDo6aXRlcmF0b3IgZW50cnkgPSBtYXAoKS0+ZmluZChtYWtlX3BhaXIoc3RydWN0dXJlLT5t
X25hbWVJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpKTsKLSAg
ICAgICAgaWYgKGVudHJ5ICE9IG1hcCgpLT5lbmQoKSAmJiBzdHJ1Y3R1cmUgPT0gZW50cnktPnNl
Y29uZCkKKyAgICAgICAgaWYgKGVudHJ5ICE9IG1hcCgpLT5lbmQoKSAmJiBzdHJ1Y3R1cmUgPT0g
ZW50cnkuZ2V0KCkuc2Vjb25kKQogICAgICAgICAgICAgbWFwKCktPnJlbW92ZShlbnRyeSk7CiAg
ICAgfQogfQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6
YWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAg
ICAgaWYgKGlzVXNpbmdTaW5nbGVTbG90KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBleGlzdGlu
Z1RyYW5zaXRpb24gPSBzaW5nbGVUcmFuc2l0aW9uKCk7CiAKICAgICAgICAgLy8gVGhpcyBoYW5k
bGVzIHRoZSBmaXJzdCB0cmFuc2l0aW9uIGJlaW5nIGFkZGVkLgogICAgICAgICBpZiAoIWV4aXN0
aW5nVHJhbnNpdGlvbikgewotICAgICAgICAgICAgc2V0U2luZ2xlVHJhbnNpdGlvbihzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgc2V0U2luZ2xlVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhpcyBo
YW5kbGVzIHRoZSBzZWNvbmQgdHJhbnNpdGlvbiBiZWluZyBhZGRlZAogICAgICAgICAvLyAob3Ig
dGhlIGZpcnN0IHRyYW5zaXRpb24gYmVpbmcgZGVzcGVjaWZpZWQhKQogICAgICAgICBzZXRNYXAo
bmV3IFRyYW5zaXRpb25NYXAoKSk7Ci0gICAgICAgIGFkZChleGlzdGluZ1RyYW5zaXRpb24pOwor
ICAgICAgICBhZGQoZ2xvYmFsRGF0YSwgZXhpc3RpbmdUcmFuc2l0aW9uKTsKICAgICB9CiAKICAg
ICAvLyBBZGQgdGhlIHN0cnVjdHVyZSB0byB0aGUgbWFwLgotICAgIHN0ZDo6cGFpcjxUcmFuc2l0
aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwKCktPmFkZChtYWtlX3BhaXIoc3Ry
dWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlv
dXMpLCBzdHJ1Y3R1cmUpOworICAgIHN0ZDo6cGFpcjxUcmFuc2l0aW9uTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbWFwKCktPmFkZChnbG9iYWxEYXRhLCBtYWtlX3BhaXIoc3RydWN0dXJl
LT5tX25hbWVJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpLCBz
dHJ1Y3R1cmUpOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkgewogICAgICAgICAvLyBUaGVyZSBh
bHJlYWR5IGlzIGFuIGVudHJ5ISAtIHdlIHNob3VsZCBvbmx5IGhpdCB0aGlzIHdoZW4gZGVzcGVj
aWZ5aW5nLgotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQtPm1fc3BlY2lmaWNW
YWx1ZUluUHJldmlvdXMpOworICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LmdldCgpLnNlY29u
ZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAgICAgICAgIEFTU0VSVCghc3RydWN0dXJl
LT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQgPSBzdHJ1Y3R1cmU7CisgICAgICAgIG1hcCgpLT5zZXQocmVzdWx0LmZpcnN0LCBzdHJ1Y3R1
cmUpOwogICAgIH0KIH0KIApAQCAtMTg5LDEwICsxNzQsMTAgQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1
bXBTdGF0aXN0aWNzKCkKICNlbmRpZgogfQogCi1TdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU1ZhbHVl
IHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueW1vdXNT
bG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQotICAgIDogbV90eXBlSW5mbyh0
eXBlSW5mbykKLSAgICAsIG1fcHJvdG90eXBlKHByb3RvdHlwZSkKLSAgICAsIG1fc3BlY2lmaWNW
YWx1ZUluUHJldmlvdXMoMCkKK1N0cnVjdHVyZTo6U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgdW5z
aWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAg
ICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQo
KSkKKyAgICAsIG1fdHlwZUluZm8odHlwZUluZm8pCisgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxE
YXRhLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAg
LCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHR5cGVJbmZvLmlzRmluYWwoKSA/IEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDogSlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdG9y
YWdlQ2FwYWNpdHkpCiAgICAgLCBtX29mZnNldChub09mZnNldCkKQEAgLTIwNiwyNyArMTkxLDM2
IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5m
byYgdHlwZUluZm8sIHVuc2lnbmVkIGFub255CiAgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25zKGZh
bHNlKQogewogICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7Ci0gICAgQVNTRVJUKG1fcHJvdG90eXBl
LT5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLT5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fcHJv
dG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNOdWxsKCkpOworfQogCi0jaWZuZGVm
IE5ERUJVRwotI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLSAgICBNdXRleExvY2tl
ciBwcm90ZWN0KGlnbm9yZVNldE11dGV4KCkpOwotI2VuZGlmCi0gICAgaWYgKHNob3VsZElnbm9y
ZUxlYWtzKQotICAgICAgICBpZ25vcmVTZXQuYWRkKHRoaXMpOwotICAgIGVsc2UKLSAgICAgICAg
c3RydWN0dXJlQ291bnRlci5pbmNyZW1lbnQoKTsKLSNlbmRpZgorY29uc3QgQ2xhc3NJbmZvIFN0
cnVjdHVyZTo6c19pbmZvID0geyAiU3RydWN0dXJlIiwgMCwgMCwgMCB9OwogCi0jaWYgRFVNUF9T
VFJVQ1RVUkVfSURfU1RBVElTVElDUwotICAgIGxpdmVTdHJ1Y3R1cmVTZXQuYWRkKHRoaXMpOwot
I2VuZGlmCitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisg
ICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgdGhpcykKKyAgICAsIG1fdHlwZUluZm8oQ29tcG91bmRU
eXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pCisgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRh
LCB0aGlzLCBqc051bGwoKSkKKyAgICAsIG1fY2xhc3NJbmZvKCZzX2luZm8pCisgICAgLCBtX3By
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KDApCisgICAgLCBtX29mZnNldChub09mZnNldCkKKyAgICAs
IG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQorICAgICwgbV9pc1Bpbm5lZFBy
b3BlcnR5VGFibGUoZmFsc2UpCisgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoZmFs
c2UpCisgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKGZhbHNlKQorICAgICwgbV9h
dHRyaWJ1dGVzSW5QcmV2aW91cygwKQorICAgICwgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291
bnQoMCkKKyAgICAsIG1fYW5vbnltb3VzU2xvdENvdW50KDApCisgICAgLCBtX3ByZXZlbnRFeHRl
bnNpb25zKGZhbHNlKQoreworICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7CisgICAgQVNTRVJUKG1f
cHJvdG90eXBlLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIWdsb2JhbERhdGEuc3RydWN0dXJlU3Ry
dWN0dXJlKTsKIH0KIAotU3RydWN0dXJlOjpTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJlKiBwcmV2
aW91cykKLSAgICA6IG1fdHlwZUluZm8ocHJldmlvdXMtPnR5cGVJbmZvKCkpCi0gICAgLCBtX3By
b3RvdHlwZShwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCi0gICAgLCBtX3NwZWNpZmljVmFs
dWVJblByZXZpb3VzKDApCitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCisgICAgOiBKU0NlbGwoZ2xvYmFsRGF0
YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3R5cGVJbmZv
KHByZXZpb3VzLT50eXBlSW5mbygpKQorICAgICwgbV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhp
cywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlv
dXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShwcmV2aW91
cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkKICAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQpA
QCAtMjQwLDU4ICsyMzQsMTEgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJl
KiBwcmV2aW91cykKICAgICAsIG1fcHJldmVudEV4dGVuc2lvbnMocHJldmlvdXMtPm1fcHJldmVu
dEV4dGVuc2lvbnMpCiB7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlKTsKLSAgICBBU1NFUlQobV9w
cm90b3R5cGUtPmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUtPmlzTnVsbCgpKTsKLQotI2lmbmRl
ZiBOREVCVUcKLSNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCi0gICAgTXV0ZXhMb2Nr
ZXIgcHJvdGVjdChpZ25vcmVTZXRNdXRleCgpKTsKLSNlbmRpZgotICAgIGlmIChzaG91bGRJZ25v
cmVMZWFrcykKLSAgICAgICAgaWdub3JlU2V0LmFkZCh0aGlzKTsKLSAgICBlbHNlCi0gICAgICAg
IHN0cnVjdHVyZUNvdW50ZXIuaW5jcmVtZW50KCk7Ci0jZW5kaWYKLQotI2lmIERVTVBfU1RSVUNU
VVJFX0lEX1NUQVRJU1RJQ1MKLSAgICBsaXZlU3RydWN0dXJlU2V0LmFkZCh0aGlzKTsKLSNlbmRp
ZgorICAgIEFTU0VSVChtX3Byb3RvdHlwZS5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLmlzTnVs
bCgpKTsKIH0KIAogU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKIHsKLSAgICBpZiAobV9wcmV2aW91
cykgewotICAgICAgICBBU1NFUlQobV9uYW1lSW5QcmV2aW91cyk7Ci0gICAgICAgIG1fcHJldmlv
dXMtPm1fdHJhbnNpdGlvblRhYmxlLnJlbW92ZSh0aGlzKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkRF
QlVHCi0jaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQotICAgIE11dGV4TG9ja2VyIHBy
b3RlY3QoaWdub3JlU2V0TXV0ZXgoKSk7Ci0jZW5kaWYKLSAgICBIYXNoU2V0PFN0cnVjdHVyZSo+
OjppdGVyYXRvciBpdCA9IGlnbm9yZVNldC5maW5kKHRoaXMpOwotICAgIGlmIChpdCAhPSBpZ25v
cmVTZXQuZW5kKCkpCi0gICAgICAgIGlnbm9yZVNldC5yZW1vdmUoaXQpOwotICAgIGVsc2UKLSAg
ICAgICAgc3RydWN0dXJlQ291bnRlci5kZWNyZW1lbnQoKTsKLSNlbmRpZgotCi0jaWYgRFVNUF9T
VFJVQ1RVUkVfSURfU1RBVElTVElDUwotICAgIGxpdmVTdHJ1Y3R1cmVTZXQucmVtb3ZlKHRoaXMp
OwotI2VuZGlmCi19Ci0KLXZvaWQgU3RydWN0dXJlOjpzdGFydElnbm9yaW5nTGVha3MoKQotewot
I2lmbmRlZiBOREVCVUcKLSAgICBzaG91bGRJZ25vcmVMZWFrcyA9IHRydWU7Ci0jZW5kaWYKLX0K
LQotdm9pZCBTdHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtzKCkKLXsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgc2hvdWxkSWdub3JlTGVha3MgPSBmYWxzZTsKLSNlbmRpZgogfQogCiB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBA
IC0zMjEsNyArMjY4LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogCiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IHN0cnVj
dHVyZXMuc2l6ZSgpIC0gMjsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgc3RydWN0dXJlID0gc3Ry
dWN0dXJlc1tpXTsKLSAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeShnbG9iYWxEYXRhLCAw
LCBzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIG1fYW5vbnltb3VzU2xvdENvdW50
ICsgc3RydWN0dXJlLT5tX29mZnNldCwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3Vz
LCBzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBQcm9wZXJ0
eU1hcEVudHJ5IGVudHJ5KGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2
aW91cy5nZXQoKSwgbV9hbm9ueW1vdXNTbG90Q291bnQgKyBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBz
dHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1Zh
bHVlSW5QcmV2aW91cy5nZXQoKSk7CiAgICAgICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKGVudHJ5
KTsKICAgICB9CiB9CkBAIC0zNDgsMTMgKzI5NSwxMyBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bgogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNl
dCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90
JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAg
ICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKIAog
ICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFu
c2l0aW9uVGFibGUuZ2V0KHByb3BlcnR5TmFtZS5pbXBsKCksIGF0dHJpYnV0ZXMpKSB7Ci0gICAg
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5zaXRpb24t
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXM7CisgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlv
dXMuZ2V0KCk7CiAgICAgICAgIGlmIChzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAmJiBzcGVjaWZp
Y1ZhbHVlSW5QcmV2aW91cyAhPSBzcGVjaWZpY1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24tPm1fb2Zmc2V0ICE9IG5vT2Zmc2V0
KTsKQEAgLTM2Nyw3ICszMTQsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjph
ZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdAogICAgIHJldHVy
biAwOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0Nl
bGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCiB7CiAgICAg
Ly8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhp
cyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVhZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhl
IGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmlidXRlcywgYnV0CkBAIC0zODcsMjMgKzMz
NCwyMyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLAogICAgICAgICBzcGVjaWZpY1ZhbHVlID0g
MDsKIAogICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Db3VudCgpID4gc19tYXhUcmFuc2l0
aW9uTGVuZ3RoKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b0Nh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAg
ICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0
cmFuc2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0KGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIEFTU0VS
VChvZmZzZXQgPj0gc3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudCk7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50ID09IHRyYW5zaXRpb24tPm1fYW5v
bnltb3VzU2xvdENvdW50KTsKICAgICAgICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFn
ZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAg
ICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAg
cmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVj
dHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSk7CiAKLSAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLnNldChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCksIDApOwot
ICAgIHRyYW5zaXRpb24tPm1fcHJldmlvdXMgPSBzdHJ1Y3R1cmU7CisgICAgdHJhbnNpdGlvbi0+
bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0
dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKKyAgICB0cmFuc2l0aW9uLT5tX3By
ZXZpb3VzLnNldChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUpOwogICAgIHRyYW5z
aXRpb24tPm1fbmFtZUluUHJldmlvdXMgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwogICAgIHRyYW5z
aXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOwotICAgIHRyYW5zaXRp
b24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBzcGVjaWZpY1ZhbHVlOworICAgIHRyYW5z
aXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuc2V0KGdsb2JhbERhdGEsIHRyYW5zaXRp
b24sIHNwZWNpZmljVmFsdWUpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxl
KSB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKQpAQCAt
NDI1LDUwICszNzIsNTAgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJv
cGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwKIAogICAgIHRyYW5zaXRp
b24tPm1fb2Zmc2V0ID0gb2Zmc2V0IC0gc3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudDsK
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9u
LT5hbm9ueW1vdXNTbG90Q291bnQoKSk7Ci0gICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJs
ZS5hZGQodHJhbnNpdGlvbi5nZXQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgp
OworICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKGdsb2JhbERhdGEsIHRyYW5z
aXRpb24pOworICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKIHsKICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKLSAgICBS
ZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9u
ID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5yZW1vdmUocHJvcGVydHlOYW1lKTsKICAg
ICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50ID09IHRyYW5zaXRpb24tPm1f
YW5vbnltb3VzU2xvdENvdW50KTsKIAotICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVj
dHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSogU3Ry
dWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1
cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAotICAgIHRy
YW5zaXRpb24tPm1fcHJvdG90eXBlID0gcHJvdG90eXBlOworICAgIHRyYW5zaXRpb24tPm1fcHJv
dG90eXBlLnNldChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBwcm90b3R5cGUpOwogCiAgICAgLy8g
RG9uJ3Qgc2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCiAK
ICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxE
YXRhKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQ
cm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJs
ZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7
CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIAog
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24t
PmFub255bW91c1Nsb3RDb3VudCgpKTsKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rp
b24pCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIHJlcGxhY2VGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX3NwZWNp
ZmljRnVuY3Rpb25UaHJhc2hDb3VudCA8IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCk7
Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwor
ICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogCiAgICAgKyt0cmFuc2l0aW9uLT5tX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsKIAog
ICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0
aGlzLgogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nhcnko
Z2xvYmFsRGF0YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJl
LT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3Bl
cnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIHRyYW5z
aXRpb24pOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsK
IAogICAgIGlmICh0cmFuc2l0aW9uLT5tX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9PSBt
YXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpCkBAIC00NzksNTIgKzQyNiw1MiBAQCBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYQogICAgIH0KICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5h
bm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7
Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHJldHVybiB0cmFuc2l0aW9u
OwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5z
aXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIC8vIERvbid0IHNl
dCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCiAgICAgc3Ry
dWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0g
ICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlU
YWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1
Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwogICAgIHRy
YW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICAKICAgICBBU1NF
UlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1v
dXNTbG90Q291bnQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHJl
dHVybiB0cmFuc2l0aW9uOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0
b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBEaWN0aW9uYXJ5S2luZCBraW5kKQogewogICAgIEFTU0VSVCghc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICAKLSAgICBSZWZQdHI8U3RydWN0
dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFu
c2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBzdHJ1Y3R1cmUt
Pm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKLSAgICB0cmFu
c2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGds
b2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+
Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgdHJhbnNpdGlv
bi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIHRyYW5zaXRpb24tPm1fZGlj
dGlvbmFyeUtpbmQgPSBraW5kOwogICAgIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmFub255bW91
c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFub255bW91c1Nsb3RDb3VudCgpKTsKLSAgICBy
ZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAK
LVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K1N0cnVjdHVyZSogU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgcmV0
dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDYWNoZWRE
aWN0aW9uYXJ5S2luZCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRv
VW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogICAgIHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCk7CiB9CiAKIC8vIEluIGZ1
dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHRyYW5zaXRpb24uCi1QYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNlYWxUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJh
bnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogdHJhbnNpdGlv
biA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwog
CiAgICAgaWYgKHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSkgewogICAgICAgICBQcm9wZXJ0
eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUtPmVuZCgp
OwpAQCAtNTMyLDEzICs0NzksMTMgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6
c2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3QKICAgICAgICAg
ICAgIGl0ZXItPmF0dHJpYnV0ZXMgfD0gRG9udERlbGV0ZTsKICAgICB9CiAKLSAgICByZXR1cm4g
dHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKIC8vIElu
IGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHRyYW5zaXRpb24uCi1QYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZnJl
ZXplVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBwcmV2ZW50RXh0ZW5z
aW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRy
YW5zaXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKTsKIAogICAgIGlmICh0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAg
UHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxl
LT5lbmQoKTsKQEAgLTU0NiwyMyArNDkzLDIzIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1CiAg
ICAgICAgICAgICBpdGVyLT5hdHRyaWJ1dGVzIHw9IChEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
ICAgIH0KIAotICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJh
bnNpdGlvbjsKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3YW50IHRvIGNhY2hlIHRoaXMgdHJh
bnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNp
b25zVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKKyAgICBTdHJ1
Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAg
IC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0aGlz
LgogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xv
YmFsRGF0YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5j
b3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIHRyYW5zaXRp
b24pOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAg
ICB0cmFuc2l0aW9uLT5tX3ByZXZlbnRFeHRlbnNpb25zID0gdHJ1ZTsKIAogICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFub255bW91c1Ns
b3RDb3VudCgpKTsKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHRyYW5zaXRpb247CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlz
IHByb3BlcnR5LgpAQCAtNjAxLDcgKzU0OCw3IEBAIGJvb2wgU3RydWN0dXJlOjppc0Zyb3plbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVjdCkKK1N0cnVjdHVyZSogU3RydWN0
dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlzRGljdGlvbmFyeSgpKTsKICAgICBp
ZiAoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewpAQCAtNjg4LDkgKzYzNSw5IEBAIGlubGlu
ZSB2b2lkIFN0cnVjdHVyZTo6Y2hlY2tDb25zaXN0ZW5jeSgpCiAKICNlbmRpZgogCi1Qcm9wZXJ0
eVRhYmxlKiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK1Byb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVyKQogewotICAgIHJldHVybiBtX3By
b3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCAwLCAqbV9wcm9wZXJ0
eVRhYmxlKSA6IDA7CisgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRh
YmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IDA7CiB9CiAKIHNpemVf
dCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cmluZ0ltcGwqIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUp
CkBAIC03NTgsNyArNzA1LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLAogICAgICAgICBuZXdP
ZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSArIG1fYW5vbnltb3VzU2xvdENvdW50Owog
ICAgIEFTU0VSVChuZXdPZmZzZXQgPj0gbV9hbm9ueW1vdXNTbG90Q291bnQpOwogCi0gICAgbV9w
cm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShnbG9iYWxEYXRhLCAwLCByZXAsIG5l
d09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOworICAgIG1fcHJvcGVydHlUYWJs
ZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsK
ICAgICByZXR1cm4gbmV3T2Zmc2V0OwpAQCAtODE4LDExICs3NjUsMjYgQEAgdm9pZCBTdHJ1Y3R1
cmU6OmdldFByb3BlcnR5TmFtZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHIKICAgICB9CiB9CiAKLXZvaWQgU3RydWN0dXJlOjppbml0aWFsaXplVGhyZWFk
aW5nKCkKLXsKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhS
RUFEUykKLSAgICBpZ25vcmVTZXRNdXRleCgpOwotI2VuZGlmCit2b2lkIFN0cnVjdHVyZTo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQoreworICAgIEpTQ2VsbDo6bWFya0NoaWxk
cmVuKG1hcmtTdGFjayk7CisgICAgaWYgKG1fcHJvdG90eXBlKQorICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKCZtX3Byb3RvdHlwZSk7CisgICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCisg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAgIGlm
IChtX3ByZXZpb3VzKQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3ByZXZpb3VzKTsKKyAg
ICBpZiAobV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKKyAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZCgmbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAgaWYgKG1fZW51bWVyYXRpb25DYWNo
ZSkKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lbnVtZXJhdGlvbkNhY2hlKTsKKyAgICBp
ZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVu
ZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CisgICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6
aXRlcmF0b3IgcHRyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0
cikgeworICAgICAgICAgICAgaWYgKHB0ci0+c3BlY2lmaWNWYWx1ZSkKKyAgICAgICAgICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZwdHItPnNwZWNpZmljVmFsdWUpOworICAgICAgICB9CisgICAg
fQogfQogCiAjaWYgRE9fUFJPUEVSVFlNQVBfQ09OU1RFTkNZX0NIRUNLCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDk0YTA2YjJmOTY5ZjJlZDNmZjdkZGUw
YmU2ZjExY2I4NDhkY2I4MTAuLjAxMGZkZmQyZWM4NjhlNTkyYmE1MDllM2YzZjk4YWIwODdhZTIw
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC01NSw0
OSArNTUsNDEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMKICAgICB9OwogCi0gICAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8
U3RydWN0dXJlPiB7CisgICAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
cHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOwot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZShKU0dsb2JhbERhdGEm
LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBh
bm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueW1vdXNT
bG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cnVjdHVyZShwcm90b3R5cGUsIHR5cGVJbmZvLCBh
bm9ueW1vdXNTbG90Q291bnQsIGNsYXNzSW5mbykpOworICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKCZnbG9i
YWxEYXRhKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCB0eXBlSW5mbywgYW5vbnlt
b3VzU2xvdENvdW50LCBjbGFzc0luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgZW51bSBWUHRy
U3RlYWxpbmdIYWNrVHlwZSB7IFZQdHJTdGVhbGluZ0hhY2sgfTsKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGUoVlB0clN0ZWFsaW5nSGFja1R5cGUsIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0cnVjdHVyZShqc051bGwoKSwgVHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwg
Y2xhc3NJbmZvKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBzdGFydElnbm9y
aW5nTGVha3MoKTsKLSAgICAgICAgc3RhdGljIHZvaWQgc3RvcElnbm9yaW5nTGVha3MoKTsKLQog
ICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVEaWN0aW9u
YXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZnJlZXplVHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwor
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNp
emVfdCYgb2Zmc2V0KTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBl
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGdldHRlclNldHRlclRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFy
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGZy
ZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqKTsKIAogICAgICAgICBib29sIGlzU2VhbGVkKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRXh0ZW5z
aWJsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAKLSAgICAgICAg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYsIEpTT2JqZWN0Kik7CisgICAgICAgIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAogICAgICAgICB+U3RydWN0dXJl
KCk7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgCiAg
ICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU1ZhbHVlIHBy
b3RvdHlwZSkgeyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsgfQorICAgICAgICB2b2lkIHNldFBy
b3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHByb3RvdHlw
ZSk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1
cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KICAgICAgICAgYm9v
bCBpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtp
bmQgPT0gVW5jYWNoZWREaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTA3LDExICs5OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9v
a3VwKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBl
Q2hhaW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJr
U3RhY2smIG1hcmtTdGFjaykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fcHJvdG90eXBl
KQotICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fcHJvdG90eXBlKTsKLSAgICAg
ICAgfQorICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAogICAgICAgICBT
dHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9
CiAKQEAgLTE0Nyw4ICsxMzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwotCiAgICAgICAgIHN0YXRp
YyBwdHJkaWZmX3QgcHJvdG90eXBlT2Zmc2V0KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJvdG90eXBlKTsKQEAgLTE2NCwyMSAr
MTUwLDMxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8pICsgVHlwZUluZm86OnR5cGVPZmZzZXQoKTsKICAg
ICAgICAgfQogCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghZ2xv
YmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoJmds
b2JhbERhdGEpIFN0cnVjdHVyZShnbG9iYWxEYXRhKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYs
IHVuc2lnbmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZvKik7Ci0gICAgICAg
IFN0cnVjdHVyZShjb25zdCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIHVuc2lnbmVkIGFub255
bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZvKik7CisgICAgICAgIFN0cnVjdHVyZShKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVj
dHVyZSopOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlKGNv
bnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1cmUoc3Ry
dWN0dXJlKSk7CisgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1
cmUpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoJmdsb2JhbERhdGEpIFN0cnVjdHVyZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOworCiAgICAgICAgIHR5cGVkZWYgZW51bSB7IAogICAg
ICAgICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwKICAgICAgICAgICAgIENhY2hlZERpY3Rp
b25hcnlLaW5kID0gMSwKICAgICAgICAgICAgIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQgPSAyCiAg
ICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBE
aWN0aW9uYXJ5S2luZCk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvRGljdGlvbmFyeVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCiAg
ICAgICAgIHNpemVfdCBwdXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAg
ICAgICBzaXplX3QgcmVtb3ZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CkBAIC0x
ODksNyArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgZGVzcGVjaWZ5RnVu
Y3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICB2b2lkIGRl
c3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBQcm9wZXJ0eVRh
YmxlKiBjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgUHJvcGVydHlU
YWJsZSogY29weVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiBvd25lcik7
CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmKTsKICAg
ICAgICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQogICAgICAgICB7CkBAIC0yMTMsMTggKzIwOSwxOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwogCi0gICAgICAgIERlcHJlY2F0
ZWRQdHI8VW5rbm93bj4gbV9wcm90b3R5cGU7Ci0gICAgICAgIG11dGFibGUgV2VhazxTdHJ1Y3R1
cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+IG1fcHJvdG90eXBlOworICAgICAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKIAotICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBtX3ByZXZpb3VzOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByZXZp
b3VzOwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2aW91czsKLSAgICAg
ICAgSlNDZWxsKiBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzOworICAgICAgICBXcml0ZUJhcnJp
ZXI8SlNDZWxsPiBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzOwogCiAgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogbV9jbGFzc0luZm87CiAKICAgICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
IG1fdHJhbnNpdGlvblRhYmxlOwogCi0gICAgICAgIFdlYWs8SlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cj4gbV9lbnVtZXJhdGlvbkNhY2hlOworICAgICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcj4gbV9lbnVtZXJhdGlvbkNhY2hlOwogCiAgICAgICAgIE93blB0cjxQcm9wZXJ0
eVRhYmxlPiBtX3Byb3BlcnR5VGFibGU7CiAKQEAgLTI3Nyw3ICsyNzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKICAgICB9CiAK
LSAgICBpbmxpbmUgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgIGlubGluZSBTdHJ1Y3R1cmUqIEpT
Q2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGpzTnVsbCgp
LCBUeXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOwogICAg
IH0KQEAgLTI5OSw2ICsyOTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX3Zh
bHVlcy5hcHBlbmQoY2VsbCk7CiAgICAgfQogCisgICAgaW5saW5lIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZTo6SGFzaDo6S2V5IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6V2Vha0dDTWFwRmlu
YWxpemVyQ2FsbGJhY2s6OmtleUZvckZpbmFsaXplcih2b2lkKiwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICByZXR1cm4gSGFzaDo6S2V5KHN0cnVjdHVyZS0+bV9uYW1lSW5Q
cmV2aW91cy5nZXQoKSwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzKTsKKyAgICB9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBhYjUx
YzAyNGRjYjQzYzBkODgwNjE0ZTMyNjI4NzQ3YjA5MDY1M2I3Li5hZDZhYmZmODE2MDM5NGQ2NDBj
NDhiZTI1MTIzMzFiNWJlZDM4OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC0zNCwxOSArMzQsMTkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiBDbGFzc0luZm8gU3RydWN0dXJlQ2hhaW46OnNfaW5mbyA9IHsgIlN0cnVjdHVy
ZUNoYWluIiwgMCwgMCwgMCB9OwogCi1TdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogaGVhZCkKLSAg
ICA6IEpTQ2VsbChzdHJ1Y3R1cmUucmVsZWFzZVJlZigpKQorU3RydWN0dXJlQ2hhaW46OlN0cnVj
dHVyZUNoYWluKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogaGVhZCkKKyAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7
CiAgICAgc2l6ZV90IHNpemUgPSAwOwogICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gaGVh
ZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgp
ID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpKS0+c3RydWN0dXJlKCkp
CiAgICAgICAgICsrc2l6ZTsKICAgICAKLSAgICBtX3ZlY3RvciA9IGFkb3B0QXJyYXlQdHIobmV3
IFJlZlB0cjxTdHJ1Y3R1cmU+W3NpemUgKyAxXSk7CisgICAgbV92ZWN0b3IgPSBhZG9wdEFycmF5
UHRyKG5ldyBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPltzaXplICsgMV0pOwogCiAgICAgc2l6ZV90
IGkgPSAwOwogICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3Vy
cmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0
KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpKS0+c3RydWN0dXJlKCkpCi0gICAgICAgIG1fdmVj
dG9yW2krK10gPSBjdXJyZW50OwotICAgIG1fdmVjdG9yW2ldID0gMDsKKyAgICAgICAgbV92ZWN0
b3JbaSsrXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgY3VycmVudCk7CisgICAgbV92ZWN0b3JbaV0u
Y2xlYXIoKTsKIH0KIAogU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCkBAIC01Nyw3
ICs1Nyw3IEBAIHZvaWQgU3RydWN0dXJlQ2hhaW46Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKIHsKICAgICBzaXplX3QgaSA9IDA7CiAgICAgd2hpbGUgKG1fdmVjdG9yW2ldKQot
ICAgICAgICBtX3ZlY3RvcltpKytdLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJm1fdmVjdG9yW2krK10pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCmlu
ZGV4IDgzNDk2OWZjN2IwOWE4YmFhMWUxNmE4NWQwZWE5N2FjNDBhZTk1MjIuLmI5ODRiZTZhNmRj
OGE2N2JiODAxN2E2MTQxMGZiOTU0ODVkZTQ3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNDIsMTYgKzQyLDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgU3RydWN0dXJlQ2hh
aW4oZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZSwgaGVhZCk7IH0KLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQorICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgU3RydWN0dXJl
Q2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQo
KSwgaGVhZCk7IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJl
dHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBv
dW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgMCwgJnNfaW5mbyk7IH0KKyAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRy
ZW4pLCAwLCAmc19pbmZvKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RydWN0dXJlQ2hh
aW4oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBoZWFkKTsKKyAgICAg
ICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBo
ZWFkKTsKICAgICAgICAgflN0cnVjdHVyZUNoYWluKCk7Ci0gICAgICAgIE93bkFycmF5UHRyPFJl
ZlB0cjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CisgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgICAgIHN0YXRpYyBDbGFzc0luZm8gc19p
bmZvOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXggZGE3OGUxYjk5NjgzMjZlZGEzNjY0
MTZkY2YxZWI0MTk2ODYwMTRhNi4uNWY2ZTVmYTRlZjI0YmUwYmVhYzNkYWVlOTA4NWJhNzhiODc3
ZmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlX2gKIAogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWFrR0NNYXAuaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjksNyArNjksMTYgQEAgY2xh
c3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIHsKICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRmlyc3RUcmFpdHM6Omlz
RGVsZXRlZFZhbHVlKHZhbHVlLmZpcnN0KTsgfQogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8SGFzaDo6S2V5LCBTdHJ1Y3R1cmUqLCBIYXNoLCBIYXNoVHJhaXRzPiBUcmFuc2l0aW9uTWFw
OworICAgIHN0cnVjdCBXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFjayB7CisgICAgICAgIHN0YXRp
YyB2b2lkKiBmaW5hbGl6ZXJDb250ZXh0Rm9yKEhhc2g6OktleSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBIYXNo
OjpLZXkga2V5Rm9yRmluYWxpemVyKHZvaWQqIGNvbnRleHQsIFN0cnVjdHVyZSopOworICAgIH07
CisKKyAgICB0eXBlZGVmIFdlYWtHQ01hcDxIYXNoOjpLZXksIFN0cnVjdHVyZSwgV2Vha0dDTWFw
RmluYWxpemVyQ2FsbGJhY2ssIEhhc2gsIEhhc2hUcmFpdHM+IFRyYW5zaXRpb25NYXA7CiAKIHB1
YmxpYzoKICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUoKQpAQCAtODEsOSArOTAsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFpc1VzaW5nU2luZ2xlU2xvdCgpKQogICAgICAg
ICAgICAgZGVsZXRlIG1hcCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGVhclNpbmds
ZVRyYW5zaXRpb24oKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBhZGQoU3RydWN0dXJlKik7
CisgICAgaW5saW5lIHZvaWQgYWRkKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgIGlu
bGluZSB2b2lkIHJlbW92ZShTdHJ1Y3R1cmUqKTsKICAgICBpbmxpbmUgYm9vbCBjb250YWlucyhT
dHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpIGNvbnN0OwogICAgIGlubGluZSBT
dHJ1Y3R1cmUqIGdldChTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpIGNvbnN0
OwpAQCAtMTAwLDkgKzExMSwxOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUcmFuc2l0aW9uTWFwKj4obV9kYXRhKTsKICAgICB9CiAKKyAgICBIYW5kbGVTbG90
IHNsb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkp
OworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PihtX2RhdGEgJiB+
VXNpbmdTaW5nbGVTbG90RmxhZyk7CisgICAgfQorCiAgICAgdm9pZCBzZXRNYXAoVHJhbnNpdGlv
bk1hcCogbWFwKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKEhhbmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKSkKKyAg
ICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CiAK
ICAgICAgICAgLy8gVGhpcyBpbXBsaWNpdGx5IGNsZWFycyB0aGUgZmxhZyB0aGF0IGluZGljYXRl
cyB3ZSdyZSB1c2luZyBhIHNpbmdsZSB0cmFuc2l0aW9uCiAgICAgICAgIG1fZGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1hcCk7CkBAIC0xMTMsMTMgKzEzMywyOSBAQCBwcml2YXRl
OgogICAgIFN0cnVjdHVyZSogc2luZ2xlVHJhbnNpdGlvbigpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQoaXNVc2luZ1NpbmdsZVNsb3QoKSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFN0cnVjdHVyZSo+KG1fZGF0YSAmIH5Vc2luZ1NpbmdsZVNsb3RGbGFnKTsKKyAgICAg
ICAgaWYgKEhhbmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKSkKKyAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KHNsb3QtPmFzQ2VsbCgpKTsKKyAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotCi0gICAgdm9pZCBzZXRTaW5nbGVUcmFuc2l0aW9uKFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIAorICAgIHZvaWQgY2xlYXJTaW5nbGVUcmFuc2l0aW9uKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKKyAgICAgICAgaWYgKEhh
bmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKSkKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6Omhl
YXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0
U2luZ2xlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAg
ICAgICBtX2RhdGEgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihzdHJ1Y3R1cmUpIHwgVXNp
bmdTaW5nbGVTbG90RmxhZzsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gdGhpcy0+c2xvdCgp
OworICAgICAgICBpZiAoIXNsb3QpIHsKKyAgICAgICAgICAgIHNsb3QgPSBnbG9iYWxEYXRhLmFs
bG9jYXRlR2xvYmFsSGFuZGxlKCk7CisgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNs
b3QpLT5tYWtlV2VhayhzbG90LCAwLCAwKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KHNsb3QpIHwgVXNpbmdTaW5nbGVTbG90RmxhZzsKKyAgICAgICAg
fQorICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xvdCwg
cmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgKnNsb3QgPSBy
ZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHN0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgaW50cHRy
X3QgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a0dDTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRl
eCAyYWZmMDlhMTJjYmJkMzQ1NzNlZTZhZDA1NzFiMTFmNjc1ZTc3NmYxLi41YWQxYzYyYTNlOTcy
OThkMjQwNDdmNjQ5ODc4ZDE5NzI1OWUyMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NNYXAuaApAQCAtMzQsMTcgKzM0LDMxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAv
LyBBIEhhc2hNYXAgZm9yIEdDJ2QgdmFsdWVzIHRoYXQgcmVtb3ZlcyBlbnRyaWVzIHdoZW4gdGhl
IGFzc29jaWF0ZWQgdmFsdWUKIC8vIGRpZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0
eXBlbmFtZSBNYXBwZWRUeXBlPiBjbGFzcyBXZWFrR0NNYXAgOiBwcml2YXRlIFdlYWtIYW5kbGVP
d25lciB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4g
c3RydWN0IERlZmF1bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFjayB7CisgICAgc3RhdGljIHZv
aWQqIGZpbmFsaXplckNvbnRleHRGb3IoS2V5VHlwZSBrZXkpCisgICAgeworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oa2V5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgS2V5
VHlwZSBrZXlGb3JGaW5hbGl6ZXIodm9pZCogY29udGV4dCwgdHlwZW5hbWUgSGFuZGxlVHlwZXM8
TWFwcGVkVHlwZT46OkV4dGVybmFsVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEtleVR5cGU+KGNvbnRleHQpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5cGVuYW1lIEZpbmFsaXplckNhbGxi
YWNrID0gRGVmYXVsdFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrPEtleVR5cGUsIE1hcHBlZFR5
cGU+LCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5VHlwZT46Okhh
c2gsIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5VHlwZT4gPgorY2xhc3Mg
V2Vha0dDTWFwIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtHQ01hcCk7CiAKLSAgICB0
eXBlZGVmIEhhc2hNYXA8S2V5VHlwZSwgSGFuZGxlU2xvdD4gTWFwVHlwZTsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8S2V5VHlwZSwgSGFuZGxlU2xvdCwgSGFzaEFyZywgS2V5VHJhaXRzQXJnPiBNYXBU
eXBlOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OkV4dGVy
bmFsVHlwZSBFeHRlcm5hbFR5cGU7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBUeXBlOjppdGVy
YXRvciBtYXBfaXRlcmF0b3I7CiAKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBpdGVyYXRvciB7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBXZWFrR0NNYXA7CiAgICAgICAgIGl0ZXJhdG9yKG1hcF9pdGVy
YXRvciBpdGVyKQogICAgICAgICAgICAgOiBtX2l0ZXJhdG9yKGl0ZXIpCiAgICAgICAgIHsKQEAg
LTYyLDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0
b3I7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIG1hcF9pdGVyYXRvciBt
X2l0ZXJhdG9yOworICAgICAgICBtYXBfaXRlcmF0b3IgbV9pdGVyYXRvcjsKICAgICB9OwogCiAg
ICAgV2Vha0dDTWFwKCkKQEAgLTc4LDYgKzkyLDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9tYXAu
Y2xlYXIoKTsKICAgICB9CiAKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hcC5jb250YWlucyhrZXkpOworICAgIH0K
KworICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fbWFwLmZpbmQoa2V5KTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShpdGVyYXRv
ciBpdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGl0ZXIubV9pdGVyYXRvciAhPSBtX21hcC5l
bmQoKSk7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGl0ZXIubV9pdGVyYXRvci0+c2Vjb25k
OworICAgICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xv
dCktPmRlYWxsb2NhdGUoc2xvdCk7CisgICAgICAgIG1fbWFwLnJlbW92ZShpdGVyLm1faXRlcmF0
b3IpOworICAgIH0KKwogICAgIEV4dGVybmFsVHlwZSBnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpnZXRG
cm9tU2xvdChtX21hcC5nZXQoa2V5KSk7CkBAIC04OCw2ICsxMjEsMjcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9tYXAuZ2V0KGtleSk7CiAgICAgfQogCisgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBF
eHRlcm5hbFR5cGUgdmFsdWUpCisgICAgeworICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6
Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAgIGlmIChp
dGVyLnNlY29uZCkgeworICAgICAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gZ2xvYmFsRGF0YS5h
bGxvY2F0ZUdsb2JhbEhhbmRsZSgpOworICAgICAgICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0g
c2xvdDsKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNs
b3QsIHRoaXMsIEZpbmFsaXplckNhbGxiYWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKGtleSkpOwor
ICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3Qs
IHZhbHVlKTsKKyAgICAgICAgICAgICpzbG90ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGl0ZXI7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0KGl0ZXJhdG9yIGl0ZXIsIEV4
dGVybmFsVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGl0ZXIu
bV9pdGVyYXRvci0+c2Vjb25kOworICAgICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEhhbmRs
ZUhlYXA6OmhlYXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CisgICAgICAg
ICpzbG90ID0gdmFsdWU7CisgICAgfQorCiAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIHBhaXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX21h
cC5hZGQoa2V5LCAwKTsKQEAgLTEyMiw5ICsxNzYsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lk
KiBjb250ZXh0KQorICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gbV9t
YXAudGFrZShzdGF0aWNfY2FzdDxLZXlUeXBlPihjb250ZXh0KSk7CisgICAgICAgIEhhbmRsZVNs
b3Qgc2xvdCA9IG1fbWFwLnRha2UoRmluYWxpemVyQ2FsbGJhY2s6OmtleUZvckZpbmFsaXplcihj
b250ZXh0LCBIYW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6Z2V0RnJvbVNsb3QoaGFuZGxlLnNsb3Qo
KSkpKTsKICAgICAgICAgQVNTRVJUKHNsb3QpOwogICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9y
KHNsb3QpLT5kZWFsbG9jYXRlKHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKaW5kZXggMzRkZWJhMmE2MDQ4ODI1MGFiMWY1YjBmMjU5
ZTdhOWY0OWFmY2Q5MS4uZjkzYzI1MDM5ZTQxNGQ1ZjVjODZiOTk4N2U2YjJjZmQ1NGI0MDMzZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKQEAgLTMy
LDYgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNHbG9i
YWxEYXRhOwogCitpbmxpbmUgdm9pZCB3cml0ZUJhcnJpZXIoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SlNDZWxsKiwgSlNWYWx1ZSkKK3sKK30KKworaW5saW5lIHZvaWQgd3JpdGVCYXJyaWVyKEpTR2xv
YmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopCit7Cit9CisKIHR5cGVkZWYgZW51bSB7
IH0gVW5rbm93bjsKIHR5cGVkZWYgSlNWYWx1ZSogSGFuZGxlU2xvdDsKIApAQCAtOTIsNyArMTAw
LDE2IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBKU1ZhbHVlQ2hlY2tlcjxKU1ZhbHVlPiB7CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CiBwdWJsaWM6CiAgICAg
Q09NUElMRV9BU1NFUlQoIUpTVmFsdWVDaGVja2VyPFQ+OjpJc0pTVmFsdWUsIFdyaXRlQmFycmll
cl9KU1ZhbHVlX2lzX2ludmFsaWRfX3VzZV91bmtub3duKTsKLSAgICB2b2lkIHNldChKU0dsb2Jh
bERhdGEmLCBjb25zdCBKU0NlbGwqLCBUKiB2YWx1ZSkgeyB0aGlzLT5tX2NlbGwgPSByZWludGVy
cHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsgfQorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUpCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG93bmVyLCBvd25lcik7CisgICAgICAgIHRoaXMtPm1fY2VsbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOworICAgICAgICB3cml0ZUJhcnJpZXIoZ2xv
YmFsRGF0YSwgb3duZXIsIHRoaXMtPm1fY2VsbCk7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQor
ICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG93bmVyKSk7CisgICAgICAgIEFTU0VSVCghaXNab21i
aWUobV9jZWxsKSk7CisjZW5kaWYKKyAgICB9CiAgICAgCiAgICAgVCogZ2V0KCkgY29uc3QKICAg
ICB7CkBAIC0xMDEsMTEgKzExOCwxNiBAQCBwdWJsaWM6CiAKICAgICBUKiBvcGVyYXRvciooKSBj
b25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2VsbCk7CisjaWYgRU5BQkxFKEpTQ19aT01C
SUVTKQorICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG1fY2VsbCkpOworI2VuZGlmCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsKICAgICB9CiAKICAgICBUKiBvcGVyYXRv
ci0+KCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX2NlbGwpOwogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7CiAgICAgfQogCkBAIC0xMTgsNyArMTQwLDEzIEBA
IHB1YmxpYzoKICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2Nl
bGw7IH0KIAotICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihUKiB2YWx1ZSkgeyB0aGlz
LT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsgfQorICAgIHZvaWQg
c2V0V2l0aG91dFdyaXRlQmFycmllcihUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMtPm1f
Y2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOworI2lmIEVOQUJMRShKU0Nf
Wk9NQklFUykKKyAgICAgICAgQVNTRVJUKCFtX2NlbGwgfHwgIWlzWm9tYmllKG1fY2VsbCkpOwor
I2VuZGlmCisgICAgfQogCiBwcml2YXRlOgogICAgIEpTQ2VsbCogbV9jZWxsOwpAQCAtMTI2LDE4
ICsxNTQsMzMgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SlNDZWxsKiwgSlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KTsgfQotICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlIHZhbHVlKSB7IG1f
dmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyB9Ci0gICAgSlNWYWx1ZSBnZXQoKSBjb25z
dAorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNDZWxsKiBv
d25lciwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQob3duZXIs
IG93bmVyKTsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFTU0VSVCghaXNab21i
aWUob3duZXIpKTsKKyAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc1pvbWJpZSgpKTsKKyNlbmRpZgor
ICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgd3JpdGVC
YXJyaWVyKGdsb2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0V2l0
aG91dFdyaXRlQmFycmllcihKU1ZhbHVlIHZhbHVlKQogICAgIHsKICNpZiBFTkFCTEUoSlNDX1pP
TUJJRVMpCi0gICAgICAgIEFTU0VSVCghSlNWYWx1ZTo6ZGVjb2RlKG1fdmFsdWUpIHx8ICFKU1Zh
bHVlOjpkZWNvZGUobV92YWx1ZSkuaXNab21iaWUoKSk7CisgICAgICAgIEFTU0VSVCghdmFsdWUu
aXNab21iaWUoKSk7CiAjZW5kaWYKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7CisgICAgfQorCisgICAgSlNWYWx1ZSBnZXQoKSBjb25zdAorICAgIHsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX3ZhbHVlKTsKICAgICB9CiAgICAgdm9pZCBjbGVhcigp
IHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOyB9CiAgICAgdm9pZCBzZXRV
bmRlZmluZWQoKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0K
ICAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNOdW1iZXIoKTsgfQor
ICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc09iamVjdCgpOyB9Cisg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc051bGwoKTsgfQogICAgIGJv
b2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc0dldHRlclNldHRlcigp
OyB9CiAgICAgCiAgICAgSlNWYWx1ZSogc2xvdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRl
eCA5ZTNjZDc5MzExNTc1MDQ1Y2Q1MGVlODUzZTE0MDAwNTBjZjVmYTQzLi5lODc0MTUyMjI5MDQ4
YWI1OTA2YzQ5MTBiMmI3ODMzMzhlZWY3ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdDIGFs
bG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBGaXggdXAgSlNHIHRvIGNvcnJlY3RseSBtYXJrIFN0
cnVjdHVyZSwgZXQgYWwuCisKKyAgICAgICAgKiBKU1J1bi5jcHA6CisgICAgICAgIChKU0dsdWVH
bG9iYWxPYmplY3Q6OkpTR2x1ZUdsb2JhbE9iamVjdCk6CisgICAgICAgICogSlNSdW4uaDoKKyAg
ICAgICAgKiBKU1V0aWxzLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0S0pTVmFsdWUpOgorICAgICAg
ICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAgICAoVXNlck9iamVjdEltcDo6VXNlck9iamVj
dEltcCk6CisgICAgICAgICogVXNlck9iamVjdEltcC5oOgorICAgICAgICAoVXNlck9iamVjdElt
cDo6Y3JlYXRlU3RydWN0dXJlKToKKwogMjAxMS0wNC0wOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2Fy
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9KU1J1bi5jcHAKaW5kZXggYTgwOTZhYTRiYWM3MzVlNWI3NjQ2ZDk1MzkyYmExZGViMDk4
YTIxYS4uM2I5ZDI0NWVhMzg0MmQ4Nzg1OTk0Njc4YTM4MTUzZTk1YzlmZGUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvSlNSdW4uY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db21wbGV0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlQ29kZS5o
PgogCi1KU0dsdWVHbG9iYWxPYmplY3Q6OkpTR2x1ZUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRmxhZ3MgZmxh
Z3MpCi0gICAgOiBKU0dsb2JhbE9iamVjdChzdHJ1Y3R1cmUpCitKU0dsdWVHbG9iYWxPYmplY3Q6
OkpTR2x1ZUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0ZsYWdzIGZsYWdzKQorICAgIDogSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogICAgICwgbV9mbGFncyhmbGFncykKLSAgICAsIG1fdXNlck9iamVjdFN0
cnVjdHVyZShVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwganNOdWxs
KCkpKQorICAgICwgbV91c2VyT2JqZWN0U3RydWN0dXJlKGdsb2JhbERhdGEsIFVzZXJPYmplY3RJ
bXA6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhLCBqc051bGwoKSkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oIGIvU291cmNlL0phdmFTY3JpcHRH
bHVlL0pTUnVuLmgKaW5kZXggMWY1MGYzNzY5NmYzNzE4OGEyYjYzZDFmZDU2YzdjOWE4MzQ5OGNm
OC4uOWZlNzc2NzllNGM5MzVkMTY4OGJlYzZhMzE1YjVkMjU1ZWVkNjQ4YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVl
L0pTUnVuLmgKQEAgLTM1LDE0ICszNSwxNCBAQAogCiBjbGFzcyBKU0dsdWVHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgSlNHbHVlR2xv
YmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNGbGFncyA9
IGtKU0ZsYWdOb25lKTsKKyAgICAgICAgSlNHbHVlR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSosIEpTRmxhZ3MgPSBrSlNGbGFnTm9uZSk7CiAKICAgICAgICAgSlNGbGFncyBG
bGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICAgICAgU3RydWN0dXJlKiB1c2Vy
T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV91c2VyT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBKU0ZsYWdzIG1fZmxhZ3M7Ci0gICAgICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IG1fdXNlck9iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gbV91c2VyT2JqZWN0U3RydWN0dXJlOwogfTsKIAogY2xhc3MgSlNSdW4gOiBw
dWJsaWMgSlNCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1V0aWxz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcAppbmRleCBiNjJlN2JmYjZl
ODk4YzhmMmRhNjIyNzllYzhhMWM5OWE0ZWJjMWE1Li43ZGI2NTBmMTY3N2RiODZjYjAyZDA1MGMz
MmZkNmVjNDJjYjY1ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNVdGls
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTVXRpbHMuY3BwCkBAIC0xODQsNyAr
MTg0LDcgQEAgSlNWYWx1ZSBKU09iamVjdEtKU1ZhbHVlKEpTVXNlck9iamVjdCogcHRyKQogICAg
ICAgICBpZiAoIWhhbmRsZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gbmV3
IChleGVjKSBVc2VyT2JqZWN0SW1wKGdldFRocmVhZEdsb2JhbE9iamVjdCgpLT51c2VyT2JqZWN0
U3RydWN0dXJlKCksIHB0cik7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgKGV4ZWMpIFVzZXJP
YmplY3RJbXAoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnZXRUaHJlYWRHbG9iYWxPYmplY3QoKS0+dXNl
ck9iamVjdFN0cnVjdHVyZSgpLCBwdHIpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAKaW5kZXggYTA0ZjU4
ZTQ2NDBkYTE0NDE4ZDY4NThmMTJiZGI0OTI1ZTkxYjlmYS4uYzkzNzQ4ZjAwMTBhN2ZjNmVlZmIw
MzM2NTEyYjNhM2M1NzRhOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1Vz
ZXJPYmplY3RJbXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1w
LmNwcApAQCAtMzQsOCArMzQsOCBAQAogCiBjb25zdCBDbGFzc0luZm8gVXNlck9iamVjdEltcDo6
c19pbmZvID0geyAiVXNlck9iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAg
fTsKIAotVXNlck9iamVjdEltcDo6VXNlck9iamVjdEltcChQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlLCBKU1VzZXJPYmplY3QqIHVzZXJPYmplY3QpCi0gICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KHN0cnVjdHVyZSkKK1VzZXJPYmplY3RJbXA6OlVzZXJPYmplY3RJbXAoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNVc2VyT2JqZWN0KiB1c2VyT2Jq
ZWN0KQorICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAg
LCBmSlNVc2VyT2JqZWN0KChKU1VzZXJPYmplY3QqKXVzZXJPYmplY3QtPlJldGFpbigpKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5kZXggYzZiOGQ4NmY1ZDlhYjY5
YzFlMWU1NjllYzgyYzZiZTI1MTJkODU1MS4uOWJkNmYwZmUwNjRmMTYyNDY4YjAyMzE4N2U4OTFk
NTZjZWVmNmVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJ
bXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCkBAIC0zNiw3
ICszNiw3IEBACiAKIGNsYXNzIFVzZXJPYmplY3RJbXAgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgVXNlck9iamVjdEltcChQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEpT
VXNlck9iamVjdCopOworICAgIFVzZXJPYmplY3RJbXAoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgSlNVc2VyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+VXNlck9iamVjdEltcCgpOwogCiAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IAogICAgIEpTVXNlck9iamVjdCAqR2V0SlNVc2VyT2JqZWN0KCkgY29uc3Q7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk4YTZkNmI2ZDNm
NDc4OTdhZDMzNGIwZjJmM2RmM2NhMTM1NjllYTAuLmNiNmYwNGQzNzM2MDkxMGYxMWI3NjkzYWY2
NWE3MTI4MGM1ZGIyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw4NiBAQAogMjAxMS0wNC0xMyAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBV
cGRhdGUgV2ViQ29yZSBmb3IgU3RydWN0dXJlIGJlaW5nIGEgR0MgYWxsb2NhdGVkIG9iamVjdAor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRp
b0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdFdpdGhHbG9i
YWxQb2ludGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NT2JqZWN0
V2l0aEdsb2JhbFBvaW50ZXI6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ29uc3RydWN0b3JPYmplY3Q6OkRPTUNvbnN0cnVjdG9yT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50OjpET01Db25zdHJ1
Y3RvcldpdGhEb2N1bWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFs
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpET01PYmplY3Q6OkRPTU9iamVjdCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lt
YWdlRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU09w
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250
ZXh0QmFzZTo6SlNXb3JrZXJDb250ZXh0QmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrZXJDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0QmFz
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRG
cmFtZURhdGEuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJy
aWRnZS9jL0NSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGlt
ZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNl
LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0aG9kOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6Cisg
ICAgICAgIChKYXZhUnVudGltZU1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBi
cmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6SmF2YVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnJpZGdl
L29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iakNS
dW50aW1lT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVB
cnJheTo6UnVudGltZUFycmF5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgor
ICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6
UnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAg
ICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVP
YmplY3Q6OlJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5o
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisKKzIwMTEtMDQtMTMgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBC
YXJyYWNsb3VnaC4KIAogICAgICAgICBNYWtlIFByb3BlcnR5TWFwRW50cnkgdXNlIGEgV3JpdGVC
YXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDBlMWI4YjJk
MTcxMGIzNTVhZGVlZDBiYzU1MTQ0MWVkN2FkOTYxM2IuLmRhYzYxMTc3NmM4MTg0MDA2YzYxNTFl
NjJjZDAyMjliNDg0ZWFhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTgyLDcgKzE1ODIs
NyBAQCBfX05QTl9TZXRQcm9wZXJ0eQogX19OUE5fVVRGOEZyb21JZGVudGlmaWVyCiBfX1pON1dl
YkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyMHdpbmRvd1NjcmlwdE5QT2JqZWN0RXYKIF9fWk43V2Vi
Q29yZTE2U2NyaXB0Q29udHJvbGxlcjI5Y2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW5FUHYK
LV9fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOUzBfOVdl
YWtHQ01hcElQTjNXVEYxMFN0cmluZ0ltcGxFTlMwXzhKU1N0cmluZ0VFRVM2XworX19aTjdXZWJD
b3JlMTZqc1N0cmluZ1Nsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk5TMF85V2Vha0dDTWFwSVBO
M1dURjEwU3RyaW5nSW1wbEVOUzBfOEpTU3RyaW5nRU5TMF8zM0RlZmF1bHRXZWFrR0NNYXBGaW5h
bGl6ZXJDYWxsYmFja0lTNl9TN19FRU5TNF8xMFN0cmluZ0hhc2hFTlM0XzEwSGFzaFRyYWl0c0lT
Nl9FRUVFUzZfCiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTFnZXROUE9iamVjdEV2
CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjljYW5BY2Nlc3NFUEtTMF8KIF9fWk5LN1dl
YkNvcmU0S1VSTDEwcHJvdG9jb2xJc0VQS2MKQEAgLTE1OTksNyArMTU5OSw3IEBAIF9fWk4zSlND
MTNSdW50aW1lTWV0aG9kMTFnZXRDYWxsRGF0YUVSTlNfOENhbGxEYXRhRQogX19aTjNKU0MxM1J1
bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDI0Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJO
U18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UK
LV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxP
YmplY3RFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzEwSWRl
bnRpZmllckVSTlM1XzZWZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCitfX1pOM0pT
QzEzUnVudGltZU1ldGhvZEMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBO
U185U3RydWN0dXJlRVJLTlNfMTBJZGVudGlmaWVyRVJOM1dURjZWZWN0b3JJUE5TXzhCaW5kaW5n
czZNZXRob2RFTG0wRUVFCiBfX1pOM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdEQxRXYKIF9fWk4z
SlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVSTlNfOENhbGxEYXRhRQog
X19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQpAQCAtMTYwOSwxNCArMTYwOSwxNCBAQCBfX1pOM0pT
QzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNT
dGF0ZUVSTlNfMTdQcm9wZQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QyNGdldE93
blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNf
MThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDNw
dXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0
UHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Q2c19pbmZvRQot
X19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRK
U0dsb2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRU5T
Nl8xMFBhc3NSZWZQdHJJTlMwXzhJbnN0YW5jZUVFRQorX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVj
dHVyZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCiBfX1pOM0pTQzhCaW5kaW5n
czEzUnVudGltZU9iamVjdEQyRXYKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3RhbmNlMTljcmVhdGVS
dW50aW1lT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M4QmluZGluZ3M4SW5zdGFuY2VD
MkVOM1dURjEwUGFzc1JlZlB0cklOUzBfMTBSb290T2JqZWN0RUVFCiBfX1pOM0pTQzhCaW5kaW5n
czhJbnN0YW5jZUQyRXYKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDdpc1ZhbGlkRVBTMF8K
IF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE2Y3JlYXRlUm9vdE9iamVjdEVQdgotX19a
TjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVOM1dU
RjE3Tm9uTnVsbFBhc3NSZWZQdHJJTjNKU0M5U3RydWN0dXJlRUVFUEtOUzRfOUNsYXNzSW5mb0UK
K19fWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RF
UE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMjFnZXRDYWNo
ZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlDbGFzc0luZm9F
CiBfX1pOSzNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1bHRWYWx1ZUVQTlNfOUV4
ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCiBfX1pUVk4zSlNDMTNSdW50aW1l
TWV0aG9kRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0
b3IuaAppbmRleCBiZTBiODAwMDA1YmYyMjFhYmVkN2E5ODQ2ZDhhMTNhZWMzNWI0NDMxLi4xNDQw
MzU1YTgwMDhjN2U1ZjQ1ZDZjNzljMjUyNDljMWJlOWJhZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaApAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBKU0F1ZGlvQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCmluZGV4IDg1MDFlYjkyNTY0NDA5OTFkYTU4OWNhZGRiMjI2ZGUyZWRi
Y2Q3YTkuLjQ3MGVkZDkyYjVlZTY5YzJhOGZjY2ViMzNiMjkyNjU1OTc2YTJhOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNjQ2LDExICs2NDYs
MTEgQEAgU3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgQ2xhc3NJbmYKICAgICByZXR1cm4gc3RydWN0dXJlcy5nZXQo
Y2xhc3NJbmZvKS5nZXQoKTsKIH0KIAotU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCitTdHJ1Y3R1cmUqIGNhY2hl
RE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKIHsKICAgICBKU0RPTVN0cnVj
dHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlcygpOwogICAgIEFT
U0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsKLSAgICByZXR1cm4gc3RydWN0
dXJlcy5zZXQoY2xhc3NJbmZvLCBzdHJ1Y3R1cmUpLmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAg
cmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSkuZmly
c3QtPnNlY29uZC5nZXQoKTsKIH0KIAogSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggOTM0ZDliMzFhNDYxYjIxNzlkYmQ0
MTlmZGVlMDAyYTgwZTMyODNjNS4uZWU0MTUwMTdmZmZmY2Q4ZjJlMDgyOWUxMjZiZGVmYjhlOGJm
ODFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTY0
LDEzICs2NCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAg
ICAgICAgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIDogRE9NT2Jq
ZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBBU1NFUlQgaXMgdmFsaWQsIGJ1dCBmaXJlcyBpbiBmYXN0L2RvbS9nYy02Lmh0
bWwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCkBAIC04MywxNCArODMsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCBjb25zdHJ1Y3RvciBvYmplY3RzIGlu
IHRoZSBKU0MgYmluZGluZ3MuCiAgICAgY2xhc3MgRE9NQ29uc3RydWN0b3JPYmplY3QgOiBwdWJs
aWMgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6OkltcGxlbWVudHNIYXNJ
bnN0YW5jZSB8IEpTQzo6T3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgRE9NT2JqZWN0V2l0aEdsb2Jh
bFBvaW50ZXI6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBET01Db25zdHJ1Y3Rvck9iamVjdChO
b25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorICAgICAgICBET01Db25zdHJ1Y3Rvck9iamVjdChKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
ICAgICAgICAgOiBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKICAgICAgICAgewogICAgICAgICB9CkBAIC0xMDYsNyArMTA2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIERPTUNvbnN0
cnVjdG9yV2l0aERvY3VtZW50KE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIERPTUNvbnN0
cnVjdG9yV2l0aERvY3VtZW50KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7CkBA
IC0xMjksNyArMTI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGJvb2wgaGFzQ2FjaGVk
RE9NTm9kZVdyYXBwZXJVbmNoZWNrZWQoRG9jdW1lbnQqLCBOb2RlKik7CiAKICAgICBKU0M6OlN0
cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3Qg
SlNDOjpDbGFzc0luZm8qKTsKLSAgICBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUo
SlNET01HbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvKik7CisgICAgSlNDOjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0
dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNz
SW5mbyopOwogCiAgICAgaW5saW5lIEpTRE9NR2xvYmFsT2JqZWN0KiBkZXByZWNhdGVkR2xvYmFs
T2JqZWN0Rm9yUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyY2Vm
OTkwNmU5MDc0YTljOTFhOTFmMTMwYTNkNmRjMGJlMjUzYWQ4Li4zZTNkMDM3NzJiODhhMWQxMDVi
MDIzODI4ZWE0OGE2Y2QxNjUyZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJE
T01HbG9iYWxPYmplY3QiLCAmSlNHbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1KU0RP
TUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwgSlNPYmpl
Y3QqIHRoaXNWYWx1ZSkKLSAgICA6IEpTR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgdGhpc1ZhbHVl
KQorSlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxk
PiB3b3JsZCwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKKyAgICA6IEpTR2xvYmFsT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgdGhpc1ZhbHVlKQogICAgICwgbV9jdXJyZW50RXZlbnQoMCkKICAg
ICAsIG1fd29ybGQod29ybGQpCiB7CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSlNET01HbG9iYWxP
YmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIAogICAgIEpTRE9NU3Ry
dWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7CiAgICAgZm9yIChK
U0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+c2Vjb25kLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFj
ayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJml0LT5zZWNvbmQpOwogCiAgICAgSlNET01D
b25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IGNvbnN0cnVjdG9ycygpLmVuZCgpOwogICAg
IGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCku
YmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggMWU5OTJjNWI3MWZkYzYyOGU2NTFkY2IyZjcy
YzE1MTY0ZWZiMjQwNC4uOTE5MGUwMWIzNjRkM2M1MzkyMjNiNDQxMjMyMDhjYWZjNmZkZGM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBKU0V2ZW50TGlz
dGVuZXI7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5mbyosIFJlZlB0cjxKU0M6OlN0cnVjdHVyZT4gPiBK
U0RPTVN0cnVjdHVyZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0lu
Zm8qLCBKU0M6OldyaXRlQmFycmllcjxKU0M6OlN0cnVjdHVyZT4gPiBKU0RPTVN0cnVjdHVyZU1h
cDsKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OldyaXRl
QmFycmllcjxKU0M6OkpTT2JqZWN0PiA+IEpTRE9NQ29uc3RydWN0b3JNYXA7CiAKICAgICBjbGFz
cyBKU0RPTUdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTR2xvYmFsT2JqZWN0IHsKQEAgLTQ2
LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByb3RlY3RlZDoKICAgICAgICAg
c3RydWN0IEpTRE9NR2xvYmFsT2JqZWN0RGF0YTsKIAotICAgICAgICBKU0RPTUdsb2JhbE9iamVj
dChOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8RE9NV3JhcHBl
cldvcmxkPiwgSlNDOjpKU09iamVjdCogdGhpc1ZhbHVlKTsKKyAgICAgICAgSlNET01HbG9iYWxP
YmplY3QoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiwgSlNDOjpKU09iamVjdCogdGhpc1ZhbHVlKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMoKSB7IHJldHVybiBtX3N0cnVj
dHVyZXM7IH0KQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggNTg0ZjYxMGNjZTkxMTNhNzljOGU3ZTYyNDI0MGRiM2M5
OWMwZTk2YS4uMTBmN2NkOTk3ZThlZjJlMThiMTVmZDM2OGI3YWU3NDMxYjJhYmMwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00NSw4
ICs0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2lu
ZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8s
IDAsIDAgfTsKIAotSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3cs
IEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQotICAgIDogSlNET01HbG9iYWxPYmplY3Qoc3RydWN0
dXJlLCBzaGVsbC0+d29ybGQoKSwgc2hlbGwpCitKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93
QmFzZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNz
UmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKKyAgICA6
IEpTRE9NR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgc2hlbGwtPndvcmxkKCks
IHNoZWxsKQogICAgICwgbV9pbXBsKHdpbmRvdykKICAgICAsIG1fc2hlbGwoc2hlbGwpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IGQxOTI2
NTAxODdmOGM4NGFhOGNiMWEyYWE3ODU3YzBmZmQyZDU0MDUuLjk0NmY5NWM3ZDQzMjAzOTU4YzM4
YTMyYjAyZTY2NjI5MWI5OGI4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBKU0RPTVdpbmRvd0Jhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3QgewogICAg
ICAgICB0eXBlZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICBKU0RPTVdpbmRvd0Jhc2UoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+LCBQ
YXNzUmVmUHRyPERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKKyAgICAgICAgSlNET01X
aW5kb3dCYXNlKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAg
dm9pZCB1cGRhdGVEb2N1bWVudCgpOwpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGJhNWIwY2NiNDVkOTUwMTUx
OWY5Yzg2ZmU4NzU0MTdlN2Y4NDRjYTUuLjBhZWM5Njg4NGQ2ZWJjNWE0NTlkNTc5ODA2MGM1OGEz
N2ZjMWVkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNE
T01XaW5kb3dTaGVsbCk7CiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dTaGVsbDo6c19pbmZv
ID0geyAiSlNET01XaW5kb3dTaGVsbCIsICZCYXNlOjpzX2luZm8sIDAsIDAgfTsKIAogSlNET01X
aW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93
LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQotICAgIDogQmFzZShKU0RPTVdpbmRvd1NoZWxsOjpj
cmVhdGVTdHJ1Y3R1cmUoKndvcmxkLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKSkKKyAgICA6IEJh
c2UoKndvcmxkLT5nbG9iYWxEYXRhKCksIEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVy
ZSgqd29ybGQtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpKQogICAgICwgbV93b3JsZCh3b3JsZCkK
IHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtNjAsMTEgKzYwLDExIEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiAgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJv
dG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhl
IGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8g
Y29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKLSAgICBSZWZQdHI8
U3RydWN0dXJlPiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzTnVsbCgp
KTsKLSAgICBTdHJvbmc8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBuZXcgSlNET01XaW5kb3dQcm90b3R5cGUoMCwgcHJv
dG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOworICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlID0gSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBqc051bGwoKSk7CisgICAgU3Ryb25nPEpTRE9NV2lu
ZG93UHJvdG90eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEo
KSwgbmV3IEpTRE9NV2luZG93UHJvdG90eXBlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCksIDAsIHByb3RvdHlwZVN0cnVjdHVyZSkpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOwotICAgIEpTRE9NV2luZG93KiBq
c0RPTVdpbmRvdyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RP
TVdpbmRvdyhzdHJ1Y3R1cmUucmVsZWFzZSgpLCBkb21XaW5kb3csIHRoaXMpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOworICAgIEpTRE9NV2lu
ZG93KiBqc0RPTVdpbmRvdyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
KSBKU0RPTVdpbmRvdygqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBzdHJ1Y3R1
cmUsIGRvbVdpbmRvdywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgq
SlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RPTVdpbmRvdyk7CiAgICAg
c2V0V2luZG93KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzRE9NV2luZG93
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApp
bmRleCA1NzViMjk2YzQ5Y2VjYjM1OGUxODQ4MmNkNmI1OGRjMGZmY2NkYmI1Li5jMmM1MzM2YWVk
YTZhNmJlMTdlNWExZjE3YzAyYjRiNzc0NWJkM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTsKIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IAogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IDBmODAzMWMwZmE5YmY0ZDM1ZDZjZmYxZTM1OWYx
ZTQ1ZDYyZWU4NWEuLjhkZjU4MDExZTM5ZjIyYmY5N2IwNTY2YTc4YjU1ODU0OGM3MzY2N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC0yOSw3ICsyOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBSZW5hbWUgdG8gSlNET01XcmFwcGVy
LgogY2xhc3MgRE9NT2JqZWN0IDogcHVibGljIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
IHsKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBET01PYmplY3QoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0
dXJlKSAKKyAgICBleHBsaWNpdCBET01PYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSAKICAgICAgICAgOiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgewogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGU0
NDRkODg4NDAwYzg3YjlkN2M3ZGE5OGFjMzZhODJiMGEwMzk4MzUuLjhkYzBlMWZiNzI3YjlhMmZi
MTIzYzUwM2UzOTk3OWI2ODQ2YWFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMzgsNyArMzgsMTEgQEAgSlNFdmVudExpc3RlbmVy
OjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwg
Ym9vbCBpc0EKICAgICAsIG1faXNBdHRyaWJ1dGUoaXNBdHRyaWJ1dGUpCiAgICAgLCBtX2lzb2xh
dGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKIHsKLSAgICBtX2pzRnVuY3Rpb24uc2V0KCptX2lzb2xh
dGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGlmICh3cmFw
cGVyKQorICAgICAgICBtX2pzRnVuY3Rpb24uc2V0KCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERh
dGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFmdW5j
dGlvbik7CisKIH0KIAogSlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExpc3RlbmVyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKaW5kZXggNjU0
ZTIyM2ZhOGRiNWJmYWFhYWNlZGZlZDM1Y2Y3MDJhNzk5M2ExMy4uNGVmNDA1ZGRjZWVhZGM1NzFh
MmI1ZjlmZDdkMGFmYTViOTJjY2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxK
U0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lt
YWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0
YUN1c3RvbS5jcHAKaW5kZXggYTkyZWQ0NzBjNDkyOWE3MDNkMTE4Y2ZhMmE3Y2EwYjljMWY5NDE3
YS4uNWI0NDllNjlmZmM1YWE5ODcwMGNlYmI1NTMyZTNjZjEzNDZkNTc3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApAQCAtNDgsOCAr
NDgsOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9N
X09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBpbWFnZURhdGEp
OwogICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRhdGEiKTsKICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIGNwYUNsYXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVsQXJyYXkiLCAmSlNCeXRl
QXJyYXk6OkJhc2U6OnNfaW5mbywgMCwgMCB9OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVm
UHRyPFN0cnVjdHVyZT4sIGNwYVN0cnVjdHVyZSwgKEpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSwgJmNwYUNsYXNzSW5mbykpKTsKLSAgICB3
cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgbmV3IChleGVj
KSBKU0J5dGVBcnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRh
KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
b25nPFN0cnVjdHVyZT4sIGNwYVN0cnVjdHVyZSwgKGV4ZWMtPmdsb2JhbERhdGEoKSwgSlNCeXRl
QXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpLCAmY3Bh
Q2xhc3NJbmZvKSkpOworICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGRhdGFOYW1lLCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5KGV4ZWMsIGNwYVN0cnVjdHVyZS5nZXQo
KSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAg
ICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1hZ2VEYXRhLT5kYXRhKCkt
Pmxlbmd0aCgpKTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAppbmRleCA4YTE4MDA3MWNhZjA1
NmNjYjJhMmZjOTBiY2UxZTgxMGJkZDQ1Yjk0Li4zMzE3OTc4NTQ4NWNmZDE4MmE4NzJmYjJhZTQ3
MzU5YjIwYzMyMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09w
dGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRp
b25Db25zdHJ1Y3Rvci5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEpTT3B0aW9uQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
QmFzZS5jcHAKaW5kZXggMWM5MDRiMDhhMGZkNTE3ODUxZTk2Yzg0Y2ZkYWE1ZTdkYWJjNjNjNS4u
Y2JmMDFiN2NhZmQ3YjViYTlhMjI1ZTJmNzFkOWY4YTUzMTJmZjEzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKQEAgLTQ1LDgg
KzQ1LDggQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dvcmtlckNvbnRleHRCYXNlKTsK
IAogY29uc3QgQ2xhc3NJbmZvIEpTV29ya2VyQ29udGV4dEJhc2U6OnNfaW5mbyA9IHsgIldvcmtl
ckNvbnRleHQiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1KU1dvcmtl
ckNvbnRleHRCYXNlOjpKU1dvcmtlckNvbnRleHRCYXNlKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gaW1wbCkKLSAg
ICA6IEpTRE9NR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgbm9ybWFsV29ybGQoKmltcGwtPnNjcmlw
dCgpLT5nbG9iYWxEYXRhKCkpLCB0aGlzKQorSlNXb3JrZXJDb250ZXh0QmFzZTo6SlNXb3JrZXJD
b250ZXh0QmFzZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBpbXBsKQorICAgIDogSlNET01H
bG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBub3JtYWxXb3JsZChnbG9iYWxEYXRh
KSwgdGhpcykKICAgICAsIG1faW1wbChpbXBsKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19p
bmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmgKaW5kZXggYjljMjM0YTJiZmJiZDgyYTA1ZjU4MjE0MWRhYzExMjBhYTAyNzI0OC4uYWY2
OGI1ODExMTBmN2M0YjJhYmRkYmM3ZjlkNjY4YmM3NDY2MThmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0QmFzZSA6IHB1
YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiAgICAgICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmpl
Y3QgQmFzZTsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTV29ya2VyQ29udGV4dEJhc2UoTm9uTnVs
bFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+LCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KTsK
KyAgICAgICAgSlNXb3JrZXJDb250ZXh0QmFzZShKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3Ry
dWN0dXJlKiwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0Pik7CiAgICAgICAgIHZpcnR1YWwgfkpT
V29ya2VyQ29udGV4dEJhc2UoKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0lu
Zm8gc19pbmZvOwpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFdvcmtlckNvbnRleHQqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KICAg
ICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3Q7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
aAppbmRleCBlZTk4MWEyNTFiNjQ5ODNkNTM4Y2I5OWMzOTA1Y2EwNDJiODViN2RlLi5hODVlMTZm
OTc3NTk5NTM3MWVjNzZlM2YyYzMyYzg0MmE5OGVmOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaApAQCAtMzMsNiArMzMsNyBA
QAogI2RlZmluZSBTY3JpcHRDYWNoZWRGcmFtZURhdGFfaAogCiAjaW5jbHVkZSA8aGVhcC9TdHJv
bmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDBhMGViOTEwOTNmODE5ZTdjOGMxMGJlYzFiMWVlOGZl
ZDFkYmQyYjQuLjBlN2ZlZDAwNTJkNDllZmM3NzcxMWYxNjcyOWI5OWEzZDA4NzM0NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4
dCogSlNDb250ZXh0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNW
YWx1ZVJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWQ2MWE4NDUwZTIwYjMyZTVmOGZhMmNkNjUzZTA4YTNk
Y2UzOTY2Ni4uNDg0Nzg4MWM3NjNmNTA0MzQ3YzE5NDY1MzUyNDkxNjZkNzE0M2U2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2Ny
aXB0Q29udHJvbGxlcihXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQogewogICAgIG1fd29ya2VyQ29u
dGV4dFdyYXBwZXIuY2xlYXIoKTsgLy8gVW5wcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0LgorICAg
IG1fZ2xvYmFsRGF0YS0+Y2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwogICAgIG1fZ2xvYmFsRGF0
YS0+aGVhcC5kZXN0cm95KCk7CiB9CiAKQEAgLTczLDI1ICs3NCwyNSBAQCB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVjdCB0
aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAgICAv
LyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFsIG9i
amVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3duIHBy
b3RvdHlwZS4pCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gd29ya2VyQ29udGV4dFByb3RvdHlwZVN0
cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2ds
b2JhbERhdGEsIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNXb3JrZXJDb250ZXh0UHJvdG90eXBl
PiB3b3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRh
LmdldCgpKSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgd29ya2VyQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZS5yZWxlYXNlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIHdvcmtlckNvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUgPSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqbV9nbG9iYWxEYXRhLCBqc051bGwoKSk7CisgICAgU3Ryb25nPEpTV29ya2VyQ29udGV4dFBy
b3RvdHlwZT4gd29ya2VyQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xv
YmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAs
IHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKIAogICAgIGlmIChtX3dvcmtlckNv
bnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdv
cmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3Jr
ZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVkV29y
a2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxE
YXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJv
dG90eXBlKDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKSk7
Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIGRlZGljYXRlZENvbnRleHRQ
cm90b3R5cGUuZ2V0KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsK
KyAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNh
dGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQo
KSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9n
bG9iYWxEYXRhLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBt
X3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0
YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1f
d29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgbV93
b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEu
Z2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAg
d29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwg
MCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIGRlZGljYXRlZENvbnRl
eHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2Vy
Q29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNv
bnRleHQoKSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHNoYXJlZENvbnRleHRQcm90b3R5
cGVTdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAg
ICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFBy
b3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUu
cmVsZWFzZSgpKSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hh
cmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIHNoYXJlZENv
bnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHNoYXJlZENvbnRleHRQ
cm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsK
KyAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29u
dGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNT
aGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRl
eHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBK
U1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBzaGFy
ZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFw
cGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRX
b3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9TaGFy
ZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQo
Km1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29u
dGV4dCgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRX
b3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5v
bnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQo
KSk7CiAgICAgICAgIHNoYXJlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCpt
X2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IDMxNDEyZDI3MTllOTMzMDVkM2ZjZTgwMzgyNTU1NTVkMzlkMjk5MDguLmU4NGU0YjBi
N2RiM2JiZWNkMjgxYWRiNWYyMDUwM2NmZmEyMTRhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC02ODIsMTEgKzY4Miwx
MSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAkY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgUGFz
c1JlZlB0cjwkaW1wbFR5cGU+LCBKU0RPTVdpbmRvd1NoZWxsKik7XG4iKTsKKyAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlND
OjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4sIEpTRE9NV2luZG93U2hlbGwqKTtc
biIpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29y
a2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNz
TmFtZShOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8JGltcGxU
eXBlPik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1l
KEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlw
ZT4pO1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAkY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgSlNET01HbG9i
YWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIpOwogICAgIH0KIAogICAgICMgUHJv
dG90eXBlCkBAIC03NDYsNyArNzQ2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRz
dHJ1Y3R1cmVGbGFnc3siSlNDOjpOZWVkc1RoaXNDb252ZXJzaW9uIn0gPSAxOwogICAgIH0KICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LAotICAgICAgICAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpT
Qzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iIC4KKyAgICAgICAgIiAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgogICAgICAgICAiICAgIHtcbiIgLgogICAg
ICAgICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7XG4iIC4KICAgICAgICAgIiAgICB9XG5cbiIp
OwpAQCAtOTU4LDcgKzk1OCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAkc3RydWN0
dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzTWFya0NoaWxkcmVuIn0gPSAxOwogICAgIH0KICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LAotICAgICAgICAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6
U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iIC4KKyAgICAgICAgIiAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgogICAgICAgICAiICAgIHtcbiIgLgogICAgICAg
ICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFu
b255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7XG4iIC4KICAgICAgICAgIiAgICB9XG4iKTsKQEAg
LTk3MCw3ICs5NzAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIEN1c3RvbSBkZWZpbmVH
ZXR0ZXIgZnVuY3Rpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9p
ZCBkZWZpbmVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJv
dG90eXBlRGVmaW5lR2V0dGVyIn07CiAKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7
Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfVxuIik7CisgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dChnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgeyB9XG4iKTsKIAogICAgICMg
c3RydWN0dXJlIGZsYWdzCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByb3RlY3RlZDpcbiIp
OwpAQCAtMTQwNywxNCArMTQwNywxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsK
ICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCJKU0RPTVdpbmRvd1NoZWxsIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwg
SlNET01XaW5kb3dTaGVsbCogc2hlbGwpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHN0cnVjdHVyZSwgaW1wbCwgc2hlbGwpXG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1w
bFR5cGU+IGltcGwsIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKVxuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUsIGltcGwsIHNoZWxsKVxuIik7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JU
eXBlKCRpbnRlcmZhY2VOYW1lKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNz
TmFtZX06OiRjbGFzc05hbWUoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGltcGwpXG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5
cGU+IGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50
Q2xhc3NOYW1lKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbClcbiIpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkaW1w
bFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAgaWYgKCRoYXNQYXJlbnQpIHsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCwgaW1wbClcbiIpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTQ0Miw5ICsxNDQy
LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9OjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIGlmICgkaGFzUGFyZW50ICYmICRwYXJlbnRDbGFz
c05hbWUgbmUgIkpTQzo6RE9NTm9kZUZpbHRlciIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShnbG9i
YWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgJHtwYXJlbnRDbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2Jh
bE9iamVjdCkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIG5ldyAoZXhlYykgJHtjbGFzc05hbWV9UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksICR7cGFyZW50Q2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBn
bG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZShnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcg
KGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTtcbiIpOwog
ICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CkBA
IC0yODcyLDcgKzI4NzIsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlBy
b3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKIAotICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtc
biIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pO1xu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL0NSdW50aW1lT2JqZWN0LmgKaW5kZXggODU4MTVmYmQ0Njk4NDVhZmU2NTA0ZGY2ZjZi
OTliZTc0YjcyZjY3MC4uYzk2ODg3YTMzODNhMWIzOTE3Mzg5Y2E2NzliOGE2YTk0YjBhMDRmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFu
Y2UuY3BwCmluZGV4IGVmMGViMDI0MWQ5NzdhNmZkYzYwNjEyZTM4Y2M1MTYyMjY5YmJjOGUuLmQw
ZmEzY2YzZTc5MDc4MDc2MjcwMDc5OGRhNTcwYjRkMjJhMDIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfaW5zdGFuY2UuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YUluc3RhbmNlSlNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJ
bnN0YW5jZUpTQy5jcHAKaW5kZXggODA2ZWZhNjAxMGU3NzczNDM4N2I4OWNkNTg0NDVkNDdiZDhi
NTI5Ni4uYWI2NDEzMjBhYTQ1MDExYWFjMTQ2ZTZiZGNhZGI4ZmQ5MzcwNWRkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCkBAIC0x
MjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgKaW5kZXggMDNmMTE2
ZmFkZjVkYTQwZThkODhmNzY4ZDMyMGQxNjYzYjQyZDIwYi4uOGEzNjEyZjViNmVhYzhhODI0ZjIx
ZmE4ZDQzODM1Mzg5NDAyYzIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L2pzYy9KYXZhUnVudGltZU9iamVjdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVu
dGltZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmpl
Y3QuaAppbmRleCBiMjlhMzMzOTk5NWJiOTU5Y2JlYWVhMzQ5ZTNmYzJkOWI3MWY5YTlmLi5mOGVh
ZGE3Y2NhYjVjYWM4ODRiOGRkYjZmYzliNDQxNTA0NzcyOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291
bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCmluZGV4IDRmOTNjZmE2YWY5NzE2ZGRkYjRmZDFkZWUzYzFjODQ5ZjU1M2Y5ZTYu
LjYxYzY3Y2I5MDliNDQzNmZkNjdkMzY4Nzg1YjBlMmUxYTUxYTQ2NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNT
bG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLmgKaW5kZXggNGVmMGFmZDU3Mzk3ZWE1Zjc1ZmQ1ODM2YTM2NzQ2MDQ1YmEzNzI4
MS4uZWRlZDJmZWE0NTA2NjdlMTE5OTdmYWRlMmVhYmQwNjU5ZWM0NTgxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGExMzg2NjBiNzI3ODAxMjgzOThlMzQxOWY4YmMzNDM1
MTEzYWFhYzMuLmUzYzhmNTczN2UzMmI5MjIwM2RlOTU4MGQ1ZWZiOWNmNWJiODNmYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgY29u
c3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkpT
QXJyYXk6OnNfaW5mbywgMCwgMAogUnVudGltZUFycmF5OjpSdW50aW1lQXJyYXkoRXhlY1N0YXRl
KiBleGVjLCBCaW5kaW5nczo6QXJyYXkqIGFycmF5KQogICAgIC8vIEZJWE1FOiBkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2Jh
bCBvYmplY3QKICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmpl
Y3QgZm9yICJhcnJheSIuCi0gICAgOiBKU0FycmF5KGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8
UnVudGltZUFycmF5PihleGVjKSkKKyAgICA6IEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVBcnJheT4oZXhlYykpCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRTdWJjbGFzc0RhdGEoYXJyYXkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggOTU1NTU0NTJkZWY5NmFmMDZjYTY5
NWRmNWRiMDhkMDdhOGE2YzA1OC4uOGZkMzA1MjkyYzFhYjY1YjQwOGYyYzgyNWUwNjM3MjMzM2Fj
M2Y2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC01OCw3ICs1OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUo
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IDRiNWVjZmZjY2E0MzI4ODM3ZTk5NGNi
MzRjODExOGFiNmQyYjZkNmIuLjI5N2ZiNmJkNWYyMGZjMzIxMGQ4OWM4MWZjYjMyZGEwZmYyMTBm
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFJ1bnRpbWVNZXRob2QpOwogCiBjb25z
dCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUnVudGltZU1ldGhvZCIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAgfTsKIAotUnVudGltZU1ldGhvZDo6UnVudGlt
ZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG0pCitSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0
aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBCaW5kaW5nczo6TWV0aG9k
TGlzdCYgbSkKICAgICAvLyBDYWxsZXJzIHdpbGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBn
bG9iYWwgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtIi4KICAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGlkZW50KQogICAgICwgX21ldGhvZExpc3QobmV3IE1ldGhvZExpc3QobSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCmluZGV4IDlkZjc5NmViMDcxNWJmMzJi
MzRkMjIzZmI1MmIzYzgyNjJiYzZiZTMuLjcxMmEzMDU5NjczYjQyZTVkYTQ5NjNjNDE4OTU4YjVj
ZDJjODliMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBSdW50aW1lTWV0aG9kIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgotICAgIFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYpOworICAgIFJ1bnRpbWVNZXRo
b2QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYpOwogICAgIEJpbmRpbmdzOjpNZXRob2RM
aXN0KiBtZXRob2RzKCkgY29uc3QgeyByZXR1cm4gX21ldGhvZExpc3QuZ2V0KCk7IH0KIAogICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCk7CiAgICAg
fQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
QW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCBkZTE5NjRhNDRhZjJlNDg4YzAyM2MyN2M0YzA3NWQ3
Y2NiNzhjZGZhLi43OWJjYmNlNjEyYjI5OTRkNjgxMzIyMGI4Yjc5ZTdhNjQzZGY4OTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNf
aW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2lu
Zm8sIDAsIDAgfTsKIAotUnVudGltZU9iamVjdDo6UnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCitSdW50aW1lT2JqZWN0
OjpSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKICAg
ICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAg
ICAsIG1faW5zdGFuY2UoaW5zdGFuY2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCmluZGV4IGJiNmQwNTEwZjI4ZDQzZGI1NzUxODUwOWUxMGJkMTJhNDNkMzRhYjQuLjg5
OTgxMDJlODk4ZWIwMzMwZjc0YTA2ZDUyMDI1Nzg2NDU0YjE0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBCaW5kaW5n
cyB7CiAKIGNsYXNzIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKLSAgICBSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgUGFzc1JlZlB0cjxJbnN0YW5jZT4p
OworICAgIFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7CiAgICAgdmlydHVhbCB+UnVudGltZU9iamVjdCgp
OwogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGI5Yzk5ODNlMzI4YjNlZWIzM2UxYmQyZjBmMmFl
YmM3YmIzNjI0ZjUuLmY5NjQ2OWY0YzliNjRlYmY3ZjEwNWZiOThlMDMzZTZmZTIzMGZjYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDE1OTI1YTgxODU3MDhjOWEwMzlkYTMxMzBjMTE4OGY1NTQ4YWUzNjIuLjQ4
ZmQ0ZGMwNDYzMjMzOTJkZjA4YjY2NGUyYmJkOWU3YjVkNTg2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdD
IGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBVcGRhdGUgV2ViS2l0IGZvciB0aGUgd29ybGQg
b2YgR0MgYWxsb2NhdGVkIFN0cnVjdHVyZQorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJv
eHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVj
dC5oOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisKIDIwMTEtMDQtMTIgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkuaAppbmRleCA1N2Q1ODc3NGE2Nzg2Y2RlMzJjYjVlMzNkM2ZkZmVjNmM2ZjkyNzJj
Li5iZjM2ZmJkNWYzZDZlMmEwMDRjMTMxOGI4MmY1MjJmOGUzMDk5NjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmbmRlZiBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHlfaAogI2RlZmluZSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAog
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxEYXRhLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1
ZGUgPFdlYktpdC9ucGFwaS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggZjI2Yjg1ZGNlYTJhMzlmYTUzOWYwODg2MzQ1ZjVh
NTE4MjAyNDMzNi4uMWY5NmM1M2RiOGIyNzM3NWE1OWVhNjI1Zjk0YjVkOWYxY2Q5YjlhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3Qu
aAppbmRleCBhMDdjODZjODg4ZTc3YmEzYmMxNjRjNGRhYzA3N2U4MmYyMDdmM2I0Li5kYTZkZTg4
YTA2ZDA1NzIyNjRiNjI2M2JmNzI2ODJjMTdmMDM1MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaApAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAKICAgICBQcm94eUluc3RhbmNlKiBnZXRJbnRlcm5hbFByb3h5SW5z
dGFuY2UoKSBjb25zdDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYwN2Zj
OWQ0OTFjZWY4NzdlYzVmZDgxZTlmYWU0ZGFjYzUxMTU3YzguLjNiOWNiODZmOGRmOTEwMzU5YmMy
NzI3ODMyMGMzMTliNWM3ODQ2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0w
NC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAg
ICAgICBVcGRhdGUgV0syIGZvciB0aGUgd29ybGQgb2YgR0MgYWxsb2NhdGVkIFN0cnVjdHVyZQor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAg
ICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAoV2ViS2l0
OjpKU05QT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorCiAyMDExLTA0LTEyICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBI
dW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QTWV0aG9kLmgKaW5kZXggZjBjMjQyNGFkYmZiMWFiYTM3NzRiMjliZmNhYTQ2MTkz
YWI4MzRlOS4uMGZkMDFlYWUyYzM1M2Y0YmEyZGRmNTc4NDdmMzViYTUyYTAyYmU2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRo
b2QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE1ldGhvZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBOUElkZW50aWZpZXIgbnBJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9ucElkZW50aWZpZXI7IH0KIAogcHJpdmF0ZTog
ICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCBlOGEwOGRhZDQ4N2Uw
MDdjOGY0Njg2Y2FlYjU0YTc0MTkwMmNjMzBjLi5lZDEyNGI5OGM3ZDY5Y2Y5MmE3ZTUxOTZiOWQz
MjdmNTgzY2NhZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlO
YW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKICAgICAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89494</attachid>
            <date>2011-04-13 17:04:47 -0700</date>
            <delta_ts>2011-04-13 18:15:44 -0700</delta_ts>
            <desc>qt fixes</desc>
            <filename>bug-58483-20110413170446.patch</filename>
            <type>text/plain</type>
            <size>384775</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3ODMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2djLTEwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMC5odG1sCmluZGV4IGFh
MWRkNDViMmFlNjA1OGE5ZTkzMjA1OGVjYjc0ZmJmODUyYWRkOGEuLmE5NTcxYThiYmZkMTAzM2Nk
MWI1MmJmYzU5NmM1Y2FiNWVhMmQ5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2djLTEwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAuaHRtbApAQCAtMjAs
NiArMjAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
ICAgICB7CiAgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgIHdpbmRvdy5m
cmFtZXMubXlmcmFtZS5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7CiAgICAgICAgIGJlZm9yZSA9IEdD
Q29udHJvbGxlci5nZXRKU09iamVjdENvdW50KCk7CiAgICAgICAgIAogICAgICAgICB3aW5kb3cu
ZnJhbWVzLm15ZnJhbWUubG9jYXRpb24ucmVsb2FkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCmluZGV4IGU4YWUyNzQ5
Yjc0N2I0MmE2MzdjNmJlNjJlZjlhZjI2NmIxZGNjZDkuLmZhOWQyMTZkZDExMjUwMTI3ZWU2ODVm
ZTFlYzhkNTlmZjI2OGM5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkNhbGxiYWNrQ29uc3RydWN0b3IiLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8s
IDAsIDAgfTsKIAotSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rv
ckNhbGxiYWNrIGNhbGxiYWNrKQorSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNr
IGNhbGxiYWNrKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKQogICAgICwgbV9jbGFzcyhqc0NsYXNzKQogICAgICwgbV9jYWxsYmFjayhjYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oCmluZGV4IDAwMWM0MTYxNmRmMDg3NjA0ZTc4NjhkMDMwZTUxMzFkM2RiYjM2N2IuLjY0
YjIzN2RmZDNkOGJhYWNjOGE5OTM4OTM4MGYwNWVkZWE2OTIxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtMzMsMTMgKzMz
LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3IgOiBw
dWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBKU0NhbGxiYWNr
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBKU0NsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIEpT
Q2FsbGJhY2tDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTQ2xhc3NS
ZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdmlydHVhbCB+SlND
YWxsYmFja0NvbnN0cnVjdG9yKCk7CiAgICAgSlNDbGFzc1JlZiBjbGFzc1JlZigpIGNvbnN0IHsg
cmV0dXJuIG1fY2xhc3M7IH0KICAgICBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sg
Y2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrOyB9CiAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggMTFmYjk1YzVjMTBm
MjM4YzY4NzEyMDdkZjc4ZjIxMzkyOGNjMWJkZi4uNTVjOWVkNGFlODdjMjI5MGVmYjQ4MDQ0NmU5
ODA2NWQ5YzE4NDllZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tGdW5jdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBJbnRl
cm5hbEZ1bmN0aW9uIG1pc2gtbWFzaGVzIGNvbnN0cnVjdG9yIGFuZCBmdW5jdGlvbiBiZWhhdmlv
ciAtLSB3ZSBzaG91bGQgCiAgICAgLy8gcmVmYWN0b3IgdGhlIGNvZGUgc28gdGhpcyBvdmVycmlk
ZSBpc24ndCBuZWNlc3NhcnkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAorICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsgCiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDYwZmQ4Y2QzYTZmM2M5NzRl
NWZjMjBjOWVhMTVmYjQ4N2EyNDFiMjYuLmQyZTBkY2I3YTNhNDg5Yjg1OWY4YmJkYjU2ODI1YzRh
YjI2MWY2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCkBAIC0xMTcsOCArMTE3LDggQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIDogV2Vh
a0hhbmRsZU93bmVyIHsKIHRlbXBsYXRlIDxjbGFzcyBCYXNlPgogY2xhc3MgSlNDYWxsYmFja09i
amVjdCA6IHB1YmxpYyBCYXNlIHsKIHB1YmxpYzoKLSAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlND
bGFzc1JlZiwgdm9pZCogZGF0YSk7Ci0gICAgSlNDYWxsYmFja09iamVjdChKU0NsYXNzUmVmLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgdm9pZCogZGF0
YSk7CisgICAgSlNDYWxsYmFja09iamVjdChKU0dsb2JhbERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1
Y3R1cmUqKTsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZSh2b2lkKiBkYXRhKTsKICAgICB2b2lkKiBn
ZXRQcml2YXRlKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIEpTQ2xhc3NSZWYg
Y2xhc3NSZWYoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0RGF0YS0+anNDbGFzczsg
fQogICAgIGJvb2wgaW5oZXJpdHMoSlNDbGFzc1JlZikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsgCiAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBCYXNlOjpBbm9ueW1vdXNTbG90Q291bnQsICZz
X2luZm8pOyAKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDUwYjg0Yzc2ZjJhNjA4OTU5ZDJjYjA3MTM4
OWNiNmQwMzNlYjk1MGIuLjg2MzllMWFlZjk5OTVmMmNmMWU4OTM0ZDZjMWM5ZDZiYmY1ZTM3MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PEJh
c2U+KiBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojphc0NhbGxiYWNrT2JqZWN0KEpTVmFsdWUKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1KU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxi
YWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFz
cywgdm9pZCogZGF0YSkKK0pTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogQmFzZShn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKGFkb3B0
UHRyKG5ldyBKU0NhbGxiYWNrT2JqZWN0RGF0YShkYXRhLCBqc0NsYXNzKSkpCiB7CkBAIC02MSw4
ICs2MSw4IEBAIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAvLyBHbG9iYWwgb2JqZWN0IGNvbnN0
cnVjdG9yLgogLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRvIGEgc2VwYXJhdGUgSlNHbG9iYWxDYWxs
YmFja09iamVjdCBjbGFzcyBkZXJpdmVkIGZyb20gdGhpcyBvbmUuCiB0ZW1wbGF0ZSA8Y2xhc3Mg
QmFzZT4KLUpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoSlNDbGFzc1Jl
ZiBqc0NsYXNzLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6
IEJhc2Uoc3RydWN0dXJlKQorSlNDYWxsYmFja09iamVjdDxCYXNlPjo6SlNDYWxsYmFja09iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2xhc3NSZWYganNDbGFzcywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1f
Y2FsbGJhY2tPYmplY3REYXRhKGFkb3B0UHRyKG5ldyBKU0NhbGxiYWNrT2JqZWN0RGF0YSgwLCBq
c0NsYXNzKSkpCiB7CiAgICAgQVNTRVJUKEJhc2U6OmluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAxNThiMjU2MjZkMmEx
NDYyNjRhNTNiOWMzZGIwMDc5NzM3Y2EyYzI1Li4wM2QwNjIyNGM4YTYwOTQ1Yzc0NTE0MjM0M2Fj
ODQ5ZTE0MWYyMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRD
cmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzCiAgICAgICAgIHJl
dHVybiBKU0dsb2JhbENvbnRleHRSZXRhaW4odG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpKTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bmV3IChnbG9iYWxEYXRhLmdldCgpKSBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pihn
bG9iYWxPYmplY3RDbGFzcywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0
ZVN0cnVjdHVyZSgqZ2xvYmFsRGF0YSwganNOdWxsKCkpKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbmV3IChnbG9iYWxEYXRhLmdldCgpKSBKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0PigqZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0Q2xhc3MsIEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVs
bCgpKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFzcy0+cHJvdG90eXBlKGV4
ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQpAQCAtMTQxLDkgKzE0MSwxMCBAQCB2b2lkIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKICAgICAvLyAgIGl0IG1h
eSAgcmVsZWFzZSBhIGxvdCBvZiBHQyBtZW1vcnkgLSBydW4gdGhlIGdhcmJhZ2UgY29sbGVjdG9y
IG5vdy4KICAgICAvLyAqIElmIHRoZXJlIGFyZSBtb3JlIHJlZmVyZW5jZXMgcmVtYWluaW5nIHRo
ZSB0aGUgZ2xvYmFsIG9iamVjdCwgdGhlbiBkbyBub3RoaW5nCiAgICAgLy8gICAoc3BlY2lmaWNh
bGx5IHRoYXQgaXMgbW9yZSBwcm90ZWN0cywgd2hpY2ggd2UgYXNzdW1lIGNvbWUgZnJvbSBvdGhl
ciBKU0dsb2JhbENvbnRleHRSZWZzKS4KLSAgICBpZiAocmVsZWFzaW5nQ29udGV4dEdyb3VwKQor
ICAgIGlmIChyZWxlYXNpbmdDb250ZXh0R3JvdXApIHsKKyAgICAgICAgZ2xvYmFsRGF0YS5jbGVh
ckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAgICAgICAgIGdsb2JhbERhdGEuaGVhcC5kZXN0cm95KCk7
Ci0gICAgZWxzZSBpZiAocmVsZWFzaW5nR2xvYmFsT2JqZWN0KQorICAgIH0gZWxzZSBpZiAocmVs
ZWFzaW5nR2xvYmFsT2JqZWN0KQogICAgICAgICBnbG9iYWxEYXRhLmhlYXAuY29sbGVjdEFsbEdh
cmJhZ2UoKTsKIAogICAgIGdsb2JhbERhdGEuZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CmluZGV4IGE2NDVkMTdlNGVmZWYxNjY2ZjAxMDVhMWJjZDZmMWU0ZTgyMGZkZmUuLjg5NDczOTY0
YTM5MGQ3ZDQxOTM4YmUxM2QxZWEyZmEwNzQyOWY3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQxMCBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBUdXJuIFN0cnVjdHVyZSBpbnRvIGEgR0Mg
YWxsb2NhdGVkIG9iamVjdC4gIE1vc3Qgb2YgdGhpcyBwYXRjaAorICAgICAgICBpcyB0aGUgbWVj
aGFuaWNhbCBjaGFuZ2Ugb2YgcmVwbGFjaW5nIHZhcmlhdGlvbnMgb24gUmVmUHRyPFN0cnVjdHVy
ZT4KKyAgICAgICAgd2l0aCBlaXRoZXIgU3RydWN0dXJlKiAoZm9yIGFyZ3VtZW50cyBhbmQgbG9j
YWxzKSwgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4KKyAgICAgICAgZm9yIHRoZSBmZXcgY2FzZXMg
d2hlcmUgU3RydWN0dXJlcyBhcmUgaGVsZCBieSBHQyBhbGxvY2F0ZWQgb2JqZWN0cworICAgICAg
ICBhbmQgU3Ryb25nPFN0cnVjdHVyZT4gZm9yIHRoZSByb290IHN0cnVjdHVyZSBvYmplY3RzIGlu
IEdsb2JhbERhdGEuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29uc3RydWN0
b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6OjpKU0Nh
bGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptYXJrU3RydWN0dXJl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6
c2V0U2Vlbik6CisgICAgICAgIChKU0M6Okdsb2JhbFJlc29sdmVJbmZvOjpHbG9iYWxSZXNvbHZl
SW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY1N0dWJJbmZvOjpzZXQp
OgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OlBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdDo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9u
OjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTdHViSW5mbzo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Omlu
aXRHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlk
Q2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkUmVw
bGFjZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24pOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
ckFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogaGVhcC9IYW5kbGUuaDoK
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjpkcmFpbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJr
ZWRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzd2VlcCk6CisgICAgICAgICog
aGVhcC9TdHJvbmcuaDoKKyAgICAgICAgKEpTQzo6U3Ryb25nOjpTdHJvbmcpOgorICAgICAgICAo
SlNDOjpTdHJvbmc6OnNldCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dW5jYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVuY2FjaGVHZXRCeUlEKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
OjpwYXRjaE1ldGhvZENhbGxQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpw
YXRjaE1ldGhvZENhbGxQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNl
bGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xp
c3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6dHJ5Q2FjaGVQ
dXRCeUlEKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0M6OmdldFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3QpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFj
ZUpJVC5oOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6c3RvcmVQdHJXaXRoV3JpdGVC
YXJyaWVyKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY2xlYW51cEdsb2JhbERhdGEp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmNvcHlSZWdpc3RlcnMpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3Ry
dWN0b3I6OkFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBy
b3RvdHlwZTo6QXJyYXlQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1Nw
bGljZSk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Jh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmg6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyOjpCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcik6CisgICAgICAgICogcnVu
dGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3Ry
dWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpCb29sZWFuT2JqZWN0OjpCb29sZWFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6
OkRhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpEYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RGF0
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OkVycm9ySW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkVycm9yKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlv
bkVycm9yOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVCYXNlOjpFeGVjdXRhYmxlQmFzZSk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpO
YXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0
RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpHZXR0ZXJT
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
aW5pdGlhbGl6ZVRocmVhZGluZ09uY2UpOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAoSlND
OjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpKU0FQSVZh
bHVlV3JhcHBlcik6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OkpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJy
YXkuY3BwOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkpOgorICAgICAg
ICAoSlNDOjpKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheSk6
CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjppc1pvbWJpZSk6
CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0Nl
bGw6OkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjphZGRyZXNzT2ZTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6Om1hcmtDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6SlNWYWx1ZTo6aXNab21iaWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmNsZWFyQnVpbHRp
blN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6YWxsb2Nh
dGVHbG9iYWxIYW5kbGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmNvcHlHbG9iYWxzRnJvbSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpwcm90b3R5cGVDaGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxp
ZCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5QXJyYXkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpKU05vdEFu
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09OT2Jq
ZWN0OjpKU09OT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZUdldHRlcik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6c2VhbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmcmVlemUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRv
cklEKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3Qp
OgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KToKKyAgICAgICAg
KEpTQzo6Y3JlYXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6fkpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aW5oZXJpdG9ySUQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJhbnNpdGlvblRvKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdFdpdGhH
bG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdFdp
dGhHbG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmdldCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnNldENhY2hlZFN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0RW51bWVyYXRpb25DYWNoZSk6
CisgICAgICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTU3RhdGljU2NvcGVPYmplY3Q6OkpTU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAoSlND
OjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OkpTU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAg
KEpTQzo6VHlwZUluZm86OlR5cGVJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJs
ZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmpl
Y3Q6OmNvcHlSZWdpc3RlckFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVyT2JqZWN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTWm9tYmllLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTWm9tYmllLmg6Cisg
ICAgICAgIChKU0M6OkpTWm9tYmllOjpKU1pvbWJpZSk6CisgICAgICAgIChKU0M6OkpTWm9tYmll
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6Ok1hdGhPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
TWF0aE9iamVjdC5oOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvclBy
b3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZl
RXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok51
bWJlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0OjpOdW1iZXJPYmplY3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJl
ck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rv
cjo6T2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25z
dHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVz
QXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlJlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdF
eHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVDaGFpbk5vZGU6OlNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKEpTQzo6U2NvcGVD
aGFpbk5vZGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJp
Y3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpTdHJpbmdP
YmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmg6CisgICAgICAgIChKU0M6OlN0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQ
cm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZTo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRk
UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlw
ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9u
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6Y29weVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1dCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGU6OldlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrOjprZXlGb3JGaW5hbGl6ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
aGFpbjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6aGVhZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6V2Vha0dDTWFwRmlu
YWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRGb3IpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6On5TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNsb3QpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNldE1hcCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTo6c2luZ2xlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6Y2xlYXJTaW5nbGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpzZXRTaW5nbGVUcmFuc2l0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorICAgICAgICAoSlNDOjpEZWZhdWx0V2Vha0dDTWFw
RmluYWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRGb3IpOgorICAgICAgICAoSlNDOjpE
ZWZhdWx0V2Vha0dDTWFwRmluYWxpemVyQ2FsbGJhY2s6OmtleUZvckZpbmFsaXplcik6CisgICAg
ICAgIChKU0M6OldlYWtHQ01hcDo6Y29udGFpbnMpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6
OmZpbmQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OnJlbW92ZSk6CisgICAgICAgIChKU0M6
OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAg
ICAoSlNDOjpXZWFrR0NNYXA6OmZpbmFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFy
cmllci5oOgorICAgICAgICAoSlNDOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpXcml0
ZUJhcnJpZXJCYXNlOjpzZXQpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVy
YXRvciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0aG91dFdyaXRlQmFycmllcik6CisK
IDIwMTEtMDQtMTMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cAppbmRleCAyZjExNjZj
MWVlZTg3OWNjYjdhYWQ3ZTdiMDBkODRkMWRmZjE1ODUwLi5mOWVlZTg1ZmNjN2Q0M2RmZGZjNDBj
M2ZhODdlOWEzODU2OWNkYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0b25seS5leHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHkuZXhwCkBAIC0xICsxIEBACi1fX1pO
M0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4z
V1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNfMTBJZGVudGlmaWVy
RVBGeFMyX0UKK19fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNH
bG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVudGlmaWVyRVBGeFMyX0UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRv
bmx5LmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRv
bmx5LmV4cAppbmRleCBjNjkzMzIyNTZmODkyNGVlNDc3YjYxZWZiOThmMDZiZTU4NjU2OGZiLi5l
YWE5ZjUxMzlmMjJlMDNjODBlZDdjZjQ3OTJlNDhkYWY5MTZhNjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhwCkBA
IC0xICsxIEBACi1fX1pOM0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpT
R2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJL
TlNfMTBJZGVudGlmaWVyRVBGUHZTMl9FCitfX1pOM0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhl
Y1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRp
ZmllckVQRlB2UzJfRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5k
ZXggNWVjMzNmNjIyMThkNWNhNjc2YzJkMzM1OTA2MzAyMDVkYjdlZTdlOC4uZTIwOTI4OTBlMWMx
NzMzZGExMjllMmU1Zjk0YmRkY2NmMjU0MWU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBfX1pOM0pTQzEwdGhyb3dFcnJv
ckVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185
RXhlY1N0YXRlRVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxM3NfZGVmYXVs
dEluZm9FCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxNWNyZWF0ZVN0cnVjdHVyZUVSTlNfMTJKU0ds
b2JhbERhdGFFTlNfN0pTVmFsdWVFUEtOU185Q2xhc3NJbmZvRQotX19aTjNKU0MxMUpTQnl0ZUFy
cmF5QzFFUE5TXzlFeGVjU3RhdGVFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1
cmVFRUVQTlMzXzlCeXRlQXJyYXlFCitfX1pOM0pTQzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNT
dGF0ZUVQTlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQogX19aTjNKU0MxMU1hcmtlZFNw
YWNlMjFhbGxvY2F0ZUZyb21TaXplQ2xhc3NFUk5TMF85U2l6ZUNsYXNzRQogX19aTjNKU0MxMVBh
cnNlckFyZW5hNXJlc2V0RXYKIF9fWk4zSlNDMTFjaGVja1N5bnRheEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwU291cmNlQ29kZUUKIF9fWk4zSlNDMTFjcmVhdGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzdVU3RyaW5nRQogX19aTjNKU0MxMXJlZ0V4cEZsYWdzRVJLTlNfN1VTdHJpbmdFCiBfX1pO
M0pTQzEyRGF0ZUluc3RhbmNlNnNfaW5mb0UKLV9fWk4zSlNDMTJEYXRlSW5zdGFuY2VDMUVQTlNf
OUV4ZWNTdGF0ZUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRWQKK19f
Wk4zSlNDMTJEYXRlSW5zdGFuY2VDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVkCiBf
X1pOM0pTQzEySlNHbG9iYWxEYXRhMTBDbGllbnREYXRhRDJFdgogX19aTjNKU0MxMkpTR2xvYmFs
RGF0YTExanNBcnJheVZQdHJFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJjcmVhdGVMZWFrZWRF
TlNfMTVUaHJlYWRTdGFja1R5cGVFCkBAIC0xMzIsMTAgKzEzMiwxMSBAQCBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTRkdW1wU2FtcGxlRGF0YUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTJKU0ds
b2JhbERhdGExNHJlc2V0RGF0ZUNhY2hlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExNHNoYXJl
ZEluc3RhbmNlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExNWR1bXBSZWdFeHBUcmFjZUV2Citf
X1pOM0pTQzEySlNHbG9iYWxEYXRhMjJjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzRXYKIF9fWk4zSlND
MTJKU0dsb2JhbERhdGE2Y3JlYXRlRU5TXzE1VGhyZWFkU3RhY2tUeXBlRQogX19aTjNKU0MxMkpT
R2xvYmFsRGF0YUQxRXYKIF9fWk4zSlNDMTJSZWdFeHBPYmplY3Q2c19pbmZvRQotX19aTjNKU0Mx
MlJlZ0V4cE9iamVjdEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1Jl
ZlB0cklOU185U3RydWN0dXJlRUVFTlM0X0lOU182UmVnRXhwRUVFCitfX1pOM0pTQzEyUmVnRXhw
T2JqZWN0QzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFTjNXVEYxN05vbk51
bGxQYXNzUmVmUHRySU5TXzZSZWdFeHBFRUUKIF9fWk4zSlNDMTJTYW1wbGluZ1Rvb2w1c2V0dXBF
dgogX19aTjNKU0MxMlNtYWxsU3RyaW5nczE3Y3JlYXRlRW1wdHlTdHJpbmdFUE5TXzEySlNHbG9i
YWxEYXRhRQogX19aTjNKU0MxMlNtYWxsU3RyaW5nczI3Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nRVBOU18xMkpTR2xvYmFsRGF0YUVoCkBAIC0xNDYsNyArMTQ3LDcgQEAgX19aTjNKU0MxMlN0
cmluZ09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9w
ZXJ0eU5hbWVBcnIKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2Ny
aXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEy
U3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNfOUV4ZWNT
dGF0ZUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfN1VTdHJp
bmdFCitfX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1
cmVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNKU0MxM1Nh
bXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczVzdGFydEV2CkBAIC0x
NzQsNyArMTc1LDcgQEAgX19aTjNKU0MxNWNyZWF0ZVR5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzdVU3RyaW5nRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb24xMnZ0YWJsZUFuY2hvckV2
CiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRlRQogX19aTjNK
U0MxNkludGVybmFsRnVuY3Rpb242c19pbmZvRQotX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25D
MkVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQ
YXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zSlNDMTZJ
bnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0
RVBOU185U3RydWN0dXJlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVP
YmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQog
X19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5bWJvbFRhYmxlR2V0RVJLTlNfMTBJZGVudGlm
aWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0
MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQpAQCAtMjA1LDcgKzIwNiw4IEBAIF9fWk4zSlNDMjNB
YnN0cmFjdFNhbXBsaW5nQ291bnRlcjRkdW1wRXYKIF9fWk4zSlNDMjNvYmplY3RQcm90b0Z1bmNU
b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMjNzZXRVcFN0YXRpY0Z1bmN0aW9uU2xv
dEVQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNoRW50cnlFUE5TXzhKU09iamVjdEVSS05TXzEwSWRl
bnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzI0RHluYW1pY0dsb2JhbE9iamVj
dFNjb3BlQzFFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RQotX19aTjNK
U0MyNEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RG
MTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFCitfX1pOM0pTQzI0SlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0QzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFCitf
X1pOM0pTQzI0SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QzJFUk5TXzEySlNHbG9iYWxEYXRhRVBO
U18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRQogX19aTjNKU0MyNGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMjVldmFsdWF0ZUluR2xvYmFs
Q2FsbEZyYW1lRVJLTlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVlRVBOU18xNEpTR2xvYmFsT2JqZWN0
RQogX19aTjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpT
R2xvYmFsRGF0YUUKQEAgLTI1NCw5ICsyNTYsOSBAQCBfX1pOM0pTQzdKU0FycmF5MTVzZXRTdWJj
bGFzc0RhdGFFUHYKIF9fWk4zSlNDN0pTQXJyYXkxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4
ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M3SlNBcnJheTZzX2luZm9FCiBf
X1pOM0pTQzdKU0FycmF5OXNldExlbmd0aEVqCi1fX1pOM0pTQzdKU0FycmF5QzFFTjNXVEYxN05v
bk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUUKLV9fWk4zSlNDN0pTQXJyYXlDMUVSTlNf
MTJKU0dsb2JhbERhdGFFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVS
S05TXzdBcmdMaXN0RQotX19aTjNKU0M3SlNBcnJheUMyRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0
cklOU185U3RydWN0dXJlRUVFCitfX1pOM0pTQzdKU0FycmF5QzFFUk5TXzEySlNHbG9iYWxEYXRh
RVBOU185U3RydWN0dXJlRQorX19aTjNKU0M3SlNBcnJheUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQ
TlNfOVN0cnVjdHVyZUVSS05TXzdBcmdMaXN0RQorX19aTjNKU0M3SlNBcnJheUMyRVJOU18xMkpT
R2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUUKIF9fWk4zSlNDN0pTQXJyYXlEMkV2CiBfX1pOM0pT
QzdKU1ZhbHVlMTNpc1ZhbGlkQ2FsbGVlRXYKIF9fWk4zSlNDN1Byb2ZpbGUxMHJlc3RvcmVBbGxF
dgpAQCAtMzA5LDEyICszMTEsMTEgQEAgX19aTjNKU0M4UHJvZmlsZXIxM3N0b3BQcm9maWxpbmdF
UE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDOFByb2ZpbGVyMTRzdGFydFBy
b2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmlsZXI4
cHJvZmlsZXJFdgogX19aTjNKU0M4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUE5TXzE0U2NvcGVD
aGFpbk5vZGVFUktOU18xMFNvdXJjZUNvZGVFTlNfN0pTVmFsdWVFCitfX1pOM0pTQzhpc1pvbWJp
ZUVQS05TXzZKU0NlbGxFCiBfX1pOM0pTQzlDb2RlQmxvY2tEMUV2CiBfX1pOM0pTQzlDb2RlQmxv
Y2tEMkV2CiBfX1pOM0pTQzlNYXJrU3RhY2sxMHNfcGFnZVNpemVFCiBfX1pOM0pTQzlNYXJrU3Rh
Y2sxOGluaXRpYWxpemVQYWdlc2l6ZUV2Ci1fX1pOM0pTQzlTdHJ1Y3R1cmUxN3N0b3BJZ25vcmlu
Z0xlYWtzRXYKLV9fWk4zSlNDOVN0cnVjdHVyZTE4c3RhcnRJZ25vcmluZ0xlYWtzRXYKIF9fWk4z
SlNDOVN0cnVjdHVyZTIxYWRkUHJvcGVydHlUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVQ
UzBfUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRVJtCiBfX1pOM0pTQzlTdHJ1Y3R1cmUy
Mm1hdGVyaWFsaXplUHJvcGVydHlNYXBFUk5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M5U3Ry
dWN0dXJlMjVjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVQUzBf
TlNfN0pTVmFsdWVFCkBAIC0zMjMsNyArMzI0LDcgQEAgX19aTjNKU0M5U3RydWN0dXJlMjdkZXNw
ZWNpZnlGdW5jdGlvblRyYW5zaXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVBTMF9SS05TXzEwSWQK
IF9fWk4zSlNDOVN0cnVjdHVyZTI4YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbkVSTlNfMTJK
U0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRQogX19aTjNKU0M5U3Ry
dWN0dXJlM2dldEVSTlNfMTJKU0dsb2JhbERhdGFFUE4zV1RGMTBTdHJpbmdJbXBsRVJqUlBOU182
SlNDZWxsRQogX19aTjNKU0M5U3RydWN0dXJlNDBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlRVBTMF9SS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFUm0KLV9fWk4z
SlNDOVN0cnVjdHVyZUMxRU5TXzdKU1ZhbHVlRVJLTlNfOFR5cGVJbmZvRWpQS05TXzlDbGFzc0lu
Zm9FCitfX1pOM0pTQzlTdHJ1Y3R1cmVDMUVSTlNfMTJKU0dsb2JhbERhdGFFTlNfN0pTVmFsdWVF
UktOU184VHlwZUluZm9FalBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUQxRXYK
IF9fWk4zSlNDOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVOU18xM0NvbnN0
cnVjdFR5cGVFUktOU18xM0NvbnN0cnVjdERhdGFFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDZXFF
UktOU183VVN0cmluZ0VQS2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggNDZmYmI5Nzk1OTQyYjJlMzY3ZTM0YjYwYmE5MTNmNmQw
Yzc4NjZkMS4uMmJjMDIwNDE5OGZkMzAyODNhNmZiNTBhYTkyNzBlZDU2NGFhYTlhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAg
LTMsMjQgKzMsMTQgQEAgRVhQT1JUUwogICAgID8/MENTdHJpbmdAV1RGQEBRQUVAUEJEQFoKICAg
ICA/PzBDU3RyaW5nQFdURkBAUUFFQFBCRElAWgogICAgID8/MENvbGxhdG9yQFdURkBAUUFFQFBC
REBaCi0gICAgPz8wRGF0ZUluc3RhbmNlQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFY/JE5vbk51
bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBOQFoKICAgICA/PzBEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrQEpTQ0BAUUFFQFBBVkhlYXBAMUBAWgogICAgID8/MERyb3BBbGxMb2Nr
c0BKU0xvY2tASlNDQEBRQUVAVzRKU0xvY2tCZWhhdmlvckAyQEBaCi0gICAgPz8wRHluYW1pY0ds
b2JhbE9iamVjdFNjb3BlQEpTQ0BAUUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVkpTR2xvYmFsT2Jq
ZWN0QDFAQFoKLSAgICA/PzBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFFQFBBVkpTR2xvYmFsRGF0
YUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBK
U0NAQEBXVEZAQEFCVklkZW50aWZpZXJAMUBAWgotICAgID8/MEpTQXJyYXlASlNDQEBRQUVAQUFW
SlNHbG9iYWxEYXRhQDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZA
QEFCVkFyZ0xpc3RAMUBAWiAgCi0gICAgPz8wSlNBcnJheUBKU0NAQFFBRUBWPyROb25OdWxsUGFz
c1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQFoKLSAgICA/PzBKU0J5dGVBcnJheUBKU0NA
QFFBRUBQQVZFeGVjU3RhdGVAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BA
QFdURkBAUEFWQnl0ZUFycmF5QDRAQFoKLSAgICA/PzBKU0Z1bmN0aW9uQEpTQ0BAUUFFQFBBVkV4
ZWNTdGF0ZUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVj
dHVyZUBKU0NAQEBXVEZAQEhBQlZJZGVudGlmaWVyQDFAUDZJX0owQFpAWgorICAgID8/MER5bmFt
aWNHbG9iYWxPYmplY3RTY29wZUBKU0NAQFFBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZKU0dsb2Jh
bE9iamVjdEAxQEBaICAKICAgICA/PzBKU0xvY2tASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAQFoK
LSAgICA/PzBKU09iamVjdFdpdGhHbG9iYWxPYmplY3RASlNDQEBJQUVAUEFWSlNHbG9iYWxPYmpl
Y3RAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQFoKICAgICA/
PzBNRDVAV1RGQEBRQUVAWFoKICAgICA/PzBNdXRleEBXVEZAQFFBRUBYWgogICAgID8/MFJlZkNv
dW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRUBQQkRAWgotICAgID8/MFJlZ0V4cE9iamVjdEBKU0NA
QFFBRUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVA
SlNDQEBAV1RGQEBWPyROb25OdWxsUGFzc1JlZlB0ckBWUmVnRXhwQEpTQ0BAQDRAQFoKICAgICA/
PzBTSEExQFdURkBAUUFFQFhaCi0gICAgPz8wU3RyaW5nT2JqZWN0QEpTQ0BAUUFFQFBBVkV4ZWNT
dGF0ZUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQlZVU3Ry
aW5nQDFAQFoKLSAgICA/PzBTdHJ1Y3R1cmVASlNDQEBBQUVAVkpTVmFsdWVAMUBBQlZUeXBlSW5m
b0AxQElQQlVDbGFzc0luZm9AMUBAWgogICAgID8/MFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBY
WgogICAgID8/MFVTdHJpbmdASlNDQEBRQUVAUEJEQFoKICAgICA/PzBVU3RyaW5nQEpTQ0BAUUFF
QFBCRElAWgpAQCAtMzcsNyArMjcsNiBAQCBFWFBPUlRTCiAgICAgPz8xUmVmQ291bnRlZExlYWtD
b3VudGVyQFdURkBAUUFFQFhaCiAgICAgPz8xUmVnRXhwQEpTQ0BAUUFFQFhaCiAgICAgPz8xU291
cmNlUHJvdmlkZXJDYWNoZUBKU0NAQFFBRUBYWgotICAgID8/MVN0cnVjdHVyZUBKU0NAQFFBRUBY
WgogICAgID8/MVRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgogICAgID8/MVdURlRocmVhZERh
dGFAV1RGQEBRQUVAWFoKICAgICA/PzFXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVAWFoKQEAgLTUy
LDggKzQxLDYgQEAgRVhQT1JUUwogICAgID9hZGRCeXRlc0BNRDVAV1RGQEBRQUVYUEJFSUBaCiAg
ICAgP2FkZEJ5dGVzQFNIQTFAV1RGQEBRQUVYUEJFSUBaCiAgICAgP2FkZEN1cnJlbnRUaHJlYWRA
TWFjaGluZVRocmVhZHNASlNDQEBRQUVYWFoKLSAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0
cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQVZK
U0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0g
ICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpT
Q0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQFBBVjEyQEFCVklkZW50
aWZpZXJAMkBJUEFWSlNDZWxsQDJAQUFJQFoKICAgICA/YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmllckAy
QElQQVZKU0NlbGxAMkBAWgogICAgID9hZGRTbG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/
JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBQQVZTdHJp
bmdJbXBsQDRAQFoKICAgICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWElAWgpAQCAtNzgsNyAr
NjUsNiBAQCBFWFBPUlRTCiAgICAgP2NhbGxPbk1haW5UaHJlYWRBbmRXYWl0QFdURkBAWUFYUDZB
WFBBWEBaMEBaCiAgICAgP2NhbmNlbENhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFow
QFoKICAgICA/Y2FwYWNpdHlASGVhcEBKU0NAQFFCRUlYWgotICAgID9jaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlND
QEBAV1RGQEBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWSlNWYWx1ZUAyQEBaCiAgICAgP2NoZWNr
Q3VycmVudElkZW50aWZpZXJUYWJsZUBJZGVudGlmaWVyQEpTQ0BAQ0FYUEFWRXhlY1N0YXRlQDJA
QFoKICAgICA/Y2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlQElkZW50aWZpZXJASlNDQEBDQVhQ
QVZKU0dsb2JhbERhdGFAMkBAWgogICAgID9jaGVja1N5bnRheEBKU0NAQFlBP0FWQ29tcGxldGlv
bkAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlNvdXJjZUNvZGVAMUBAWgpAQCAtMTA4LDcgKzk0LDYgQEAg
RVhQT1JUUwogICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQ
QVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3JlYXRlU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nQFNtYWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBFQFoKICAgICA/
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0
ZUAxQEBaCi0gICAgP2NyZWF0ZVN0cnVjdHVyZUBKU0J5dGVBcnJheUBKU0NAQFNBP0FWPyRQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQVZKU0dsb2JhbERhdGFAMkBWSlNWYWx1ZUAy
QFBCVUNsYXNzSW5mb0AyQEBaCiAgICAgP2NyZWF0ZVN5bnRheEVycm9yQEpTQ0BAWUFQQVZKU09i
amVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgogICAgID9jcmVhdGVUYWJsZUBI
YXNoVGFibGVASlNDQEBBQkVYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y3JlYXRlVGhyZWFk
QFdURkBAWUFJUDZBUEFYUEFYQFowQFoKQEAgLTE0NCw3ICsxMjksNiBAQCBFWFBPUlRTCiAgICAg
P2RlbGV0ZVByb3BlcnR5QFN0cmluZ09iamVjdEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRlQDJAQUJW
SWRlbnRpZmllckAyQEBaCiAgICAgP2RlbGV0ZVRhYmxlQEhhc2hUYWJsZUBKU0NAQFFCRVhYWgog
ICAgID9kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25AU3RydWN0dXJlQEpTQ0BAUUFFWEFBVkpT
R2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBAWgotICAgID9kZXNwZWNpZnlGdW5jdGlvblRy
YW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NA
QEBXVEZAQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9k
ZXN0cm95QEhlYXBASlNDQEBRQUVYWFoKICAgICA/ZGV0YWNoQERlYnVnZ2VyQEpTQ0BAVUFFWFBB
VkpTR2xvYmFsT2JqZWN0QDJAQFoKICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCkBAIC0z
MTMsMTAgKzI5Nyw4IEBAIEVYUE9SVFMKICAgICA/c2lnbmFsQFRocmVhZENvbmRpdGlvbkBXVEZA
QFFBRVhYWgogICAgID9zaXplQEhlYXBASlNDQEBRQkVJWFoKICAgICA/c2xvd0FwcGVuZEBNYXJr
ZWRBcmd1bWVudEJ1ZmZlckBKU0NAQEFBRVhWSlNWYWx1ZUAyQEBaCi0gICAgP3N0YXJ0SWdub3Jp
bmdMZWFrc0BTdHJ1Y3R1cmVASlNDQEBTQVhYWgogICAgID9zdGFydFByb2ZpbGluZ0BQcm9maWxl
ckBKU0NAQFFBRVhQQVZFeGVjU3RhdGVAMkBBQlZVU3RyaW5nQDJAQFoKICAgICA/c3RhcnRTYW1w
bGluZ0BKU0dsb2JhbERhdGFASlNDQEBRQUVYWFoKLSAgICA/c3RvcElnbm9yaW5nTGVha3NAU3Ry
dWN0dXJlQEpTQ0BAU0FYWFoKICAgICA/c3RvcFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRT9B
Vj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJp
bmdAMkBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCiAgICAg
P3N0cnRvZEBXVEZAQFlBTlBCRFBBUEFEQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYjIwY2E0NGQ1OTAwMGU5YTU1ODM2ZDViNGQwYWFiMGE1
YjNlYTA1Ni4uMGU2NDhiYTgwM2Q4MDljY2UzN2NlN2I1NTJkMWVlOTNkYWZhOTIyOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEzOTAsMzEg
KzEzOTAsOSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIENvZGVUeXBlIGNvZGVUeXBlLCBKU0dsbwogCiBDb2RlQmxvY2s6On5Db2RlQmxv
Y2soKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
Ci0gICAgICAgIGRlcmVmU3RydWN0dXJlcygmbV9pbnN0cnVjdGlvbnNbbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zW2ldXSk7Ci0KLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBk
ZXJlZlN0cnVjdHVyZXMoJm1faW5zdHJ1Y3Rpb25zW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKLSNlbmRpZgogI2lmIEVOQUJMRShKSVQpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9
IG1fZ2xvYmFsUmVzb2x2ZUluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAg
ICAgICAgaWYgKG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZSkKLSAgICAgICAgICAg
IG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICB9Ci0KICAg
ICBmb3IgKHNpemVfdCBzaXplID0gbV9zdHJ1Y3R1cmVTdHViSW5mb3Muc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5mb3NbaV0uZGVyZWYoKTsK
LQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkU3RydWN0dXJlKSB7Ci0gICAgICAgICAg
ICBzdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgICAgICAvLyBCb3RoIG1lbWJlcnMgbXVzdCBi
ZSBmaWxsZWQgYXQgdGhlIHNhbWUgdGltZQotICAgICAgICAgICAgQVNTRVJUKCEhbV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBt
X21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLT5kZXJlZigp
OwotICAgICAgICB9Ci0gICAgfQotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogI2lmIERVTVBf
Q09ERV9CTE9DS19TVEFUSVNUSUNTCkBAIC0xNDIyLDM1ICsxNDAwLDM3IEBAIENvZGVCbG9jazo6
fkNvZGVCbG9jaygpCiAjZW5kaWYKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJl
cyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdAordm9pZCBDb2RlQmxvY2s6Om1hcmtTdHJ1Y3R1cmVz
KE1hcmtTdGFjayYgbWFya1N0YWNrLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogewogICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CiAKICAg
ICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5
X2lkX3NlbGYpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X2dldF9ieV9pZF9nZXR0ZXJfc2VsZikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmKSkgewotICAgICAgICB2UENbNF0u
dS5zdHJ1Y3R1cmUtPmRlcmVmKCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51
LnN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9wcm90bykgfHwgdlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRl
cl9wcm90bykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
Z2V0X2J5X2lkX2N1c3RvbV9wcm90bykpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5k
ZXJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUtPmRlcmVmKCk7CisgICAgICAgIG1h
cmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51LnN0cnVjdHVyZSk7CisgICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJnZQQ1s1XS51LnN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZF9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
Z2V0X2J5X2lkX2dldHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpIHsKLSAgICAgICAgdlBDWzRd
LnUuc3RydWN0dXJlLT5kZXJlZigpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNF0u
dS5zdHJ1Y3R1cmUpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNV0udS5zdHJ1Y3R1
cmVDaGFpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkgewot
ICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0
cnVjdHVyZS0+ZGVyZWYoKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3Ry
dWN0dXJlKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzVdLnUuc3RydWN0dXJlKTsK
KyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfcmVwbGFjZSkpIHsKLSAgICAgICAgdlBDWzRdLnUu
c3RydWN0dXJlLT5kZXJlZigpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNF0udS5z
dHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9yZXNvbHZlX2dsb2JhbCkgfHwgdlBDWzBd
LnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYykpIHsKICAgICAgICAgaWYgKHZQQ1szXS51LnN0cnVjdHVyZSkKLSAgICAgICAgICAgIHZQ
Q1szXS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
JnZQQ1szXS51LnN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJv
dG9fbGlzdCkpCkBAIC0xNDYwLDcgKzE0NDAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZGVyZWZTdHJ1
Y3R1cmVzKEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiAgICAgICAgIHx8ICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvX2xp
c3QpKQogICAgICAgICB8fCAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmX2xpc3QpKSkgewogICAgICAgICBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcyA9IHZQQ1s0XS51LnBv
bHltb3JwaGljU3RydWN0dXJlczsKLSAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5kZXJl
ZlN0cnVjdHVyZXModlBDWzVdLnUub3BlcmFuZCk7CisgICAgICAgIHBvbHltb3JwaGljU3RydWN0
dXJlcy0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2ssIHZQQ1s1XS51Lm9wZXJhbmQpOwogICAgICAg
ICBkZWxldGUgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTQ2OSwzNyArMTQ0OSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkZXJlZlN0cnVjdHVyZXMoSW5z
dHJ1Y3Rpb24qIHZQQykgY29uc3QKICAgICBBU1NFUlQodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZW5lcmljKSB8fCB2UENbMF0udS5v
cGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfZ2VuZXJpYykgfHwg
dlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2FycmF5X2xl
bmd0aCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0
X3N0cmluZ19sZW5ndGgpKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnJlZlN0cnVjdHVyZXMoSW5z
dHJ1Y3Rpb24qIHZQQykgY29uc3QKLXsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBt
X2dsb2JhbERhdGEtPmludGVycHJldGVyOwotCi0gICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKSB8fCB2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGYpIHx8
IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9j
dXN0b21fc2VsZikpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3Byb3RvKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvKSB8fCB2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3By
b3RvKSkgewotICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICB2UENb
NV0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hh
aW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9nZXR0ZXJfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fY2hhaW4pKSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0
cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
KSkgewotICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICB2UENbNV0u
dS5zdHJ1Y3R1cmUtPnJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2UENb
MF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfcmVwbGFj
ZSkpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgcmVmIHRoZWly
IFN0cnVjdHVyZXMuCi0gICAgQVNTRVJUKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKLX0KLQogdm9p
ZCBFdmFsQ29kZUNhY2hlOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewog
ICAgIEV2YWxDYWNoZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9jYWNoZU1hcC5lbmQoKTsKQEAgLTE1
MjQsMzAgKzE0NzMsMjQgQEAgdm9pZCBDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNr
JiBtYXJrU3RhY2spCiAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZjYWxsTGlua0luZm8o
aSkuY2FsbGVlKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOwotICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQyA9ICZtX2luc3RydWN0
aW9uc1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKLSAgICAgICAgaWYgKHZQQ1sw
XS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikg
fHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lk
X2dldHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKCZ2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbik7Ci0gICAgICAgIGVsc2UgaWYgKHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
KSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s2XS51LnN0cnVjdHVyZUNoYWlu
KTsKLSAgICB9CisgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbWFya1N0cnVjdHVy
ZXMobWFya1N0YWNrLCAmbV9pbnN0cnVjdGlvbnNbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
c1tpXV0pOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9nbG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAg
ICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dsb2JhbFJlc29sdmVJbmZvc1tpXS5z
dHJ1Y3R1cmUpCi0gICAgICAgICAgICBzdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNr
KTsKKyAgICAgICAgaWYgKG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZSkKKyAgICAg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVy
ZSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9z
LnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fc3RydWN0dXJlU3R1Yklu
Zm9zW2ldLm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKIAogICAgIGZvciAoc2l6ZV90IHNpemUg
PSBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewot
ICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3Nb
aV0uY2FjaGVkU3RydWN0dXJlKSB7CisgICAgICAgIGlmIChtX21ldGhvZENhbGxMaW5rSW5mb3Nb
aV0uY2FjaGVkU3RydWN0dXJlKSB7CiAgICAgICAgICAgICAvLyBCb3RoIG1lbWJlcnMgbXVzdCBi
ZSBmaWxsZWQgYXQgdGhlIHNhbWUgdGltZQotICAgICAgICAgICAgc3RydWN0dXJlLT5tYXJrQWdn
cmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX21ldGhv
ZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVCgh
IW1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAg
ICAgICAgICAgbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVy
ZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZCgmbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAppbmRleCAyNWU2NWY0NzUzY2YzNTVjZWI4OWFjYzMyNDRiZWM4OTUyZTgyMjVh
Li5hZjY4ZWI1ODFjYWRhZDI3NWE5Y2ZmNDhkODA0NDE4MGM2Mjk1ZTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMjIsOCArMTIyLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgTWV0aG9kQ2FsbExpbmtJbmZvIHsKICAgICAgICAg
TWV0aG9kQ2FsbExpbmtJbmZvKCkKLSAgICAgICAgICAgIDogY2FjaGVkU3RydWN0dXJlKDApCi0g
ICAgICAgICAgICAsIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSgwKQogICAgICAgICB7CiAgICAg
ICAgIH0KIApAQCAtMTQyLDI0ICsxNDAsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAvLyAgICAgLSBPbmNlIHRoaXMgdHJhbnNpdGlvbiBoYXMgYmVlbiB0YWtlbiBvbmNlLCBjYWNo
ZWRTdHJ1Y3R1cmUgaXMKICAgICAgICAgICAgIC8vICAgICAgIG51bGwgYW5kIGNhY2hlZFByb3Rv
dHlwZVN0cnVjdHVyZSBpcyBzZXQgdG8gYSBudW4tbnVsbCB2YWx1ZS4KICAgICAgICAgICAgIC8v
ICAgICAtIE9uY2UgdGhlIGNhbGwgaXMgbGlua2VkIGJvdGggc3RydWN0dXJlcyBhcmUgc2V0IHRv
IG5vbi1udWxsIHZhbHVlcy4KLSAgICAgICAgICAgIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSA9
IChTdHJ1Y3R1cmUqKTE7CisgICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0
V2l0aG91dFdyaXRlQmFycmllcigoU3RydWN0dXJlKikxKTsKICAgICAgICAgfQogCiAgICAgICAg
IENvZGVMb2NhdGlvbkNhbGwgY2FsbFJldHVybkxvY2F0aW9uOwogICAgICAgICBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIgc3RydWN0dXJlTGFiZWw7Ci0gICAgICAgIFN0cnVjdHVyZSogY2FjaGVk
U3RydWN0dXJlOwotICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZTsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkU3RydWN0dXJlOworICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmU7CiAgICAg
fTsKIAogICAgIHN0cnVjdCBHbG9iYWxSZXNvbHZlSW5mbyB7CiAgICAgICAgIEdsb2JhbFJlc29s
dmVJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgOiBzdHJ1Y3R1cmUo
MCkKLSAgICAgICAgICAgICwgb2Zmc2V0KDApCisgICAgICAgICAgICA6IG9mZnNldCgwKQogICAg
ICAgICAgICAgLCBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZTsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0OwogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKICAgICB9OwpAQCAtMjE1LDggKzIxMiw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKIAogICAgICAg
ICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJik7Ci0gICAgICAgIHZvaWQgcmVmU3RydWN0
dXJlcyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdDsKLSAgICAgICAgdm9pZCBkZXJlZlN0cnVjdHVy
ZXMoSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0
YXRpc3RpY3MoKTsKIApAQCAtNDg2LDYgKzQ4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPElu
c3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8
SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICNl
bmRpZgorICAgICAgICB2b2lkIG1hcmtTdHJ1Y3R1cmVzKE1hcmtTdGFjayYsIEluc3RydWN0aW9u
KiB2UEMpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmgKaW5kZXggYjVlNWM1MmYwZjVjNGM4NTk1MzE0OWRlZDVkNDM2Y2Q1YWI4NTk2NS4uZDljYmIx
MWFkODY2MGE0ZmRhMGMyNDkwYmFiZTJjZjM4OTIwMDE0MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTYxLDQ1ICs2MSw0NSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RydWN0IFBvbHltb3JwaGljU3R1YkluZm8gewogICAgICAgICAg
ICAgYm9vbCBpc0NoYWluOwogICAgICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lOwotICAgICAgICAgICAgU3RydWN0dXJlKiBi
YXNlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gYmFzZTsKICAgICAgICAg
ICAgIHVuaW9uIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvOworICAgICAgICAg
ICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBwcm90bzsKICAgICAgICAgICAgICAg
ICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBjaGFpbjsKICAgICAgICAgICAgIH0g
dTsKIAotICAgICAgICAgICAgdm9pZCBzZXQoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBfYmFzZSkKKyAgICAgICAg
ICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91dGluZSwg
U3RydWN0dXJlKiBfYmFzZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHViUm91
dGluZSA9IF9zdHViUm91dGluZTsKLSAgICAgICAgICAgICAgICBiYXNlID0gX2Jhc2U7Ci0gICAg
ICAgICAgICAgICAgdS5wcm90byA9IDA7CisgICAgICAgICAgICAgICAgYmFzZS5zZXQoZ2xvYmFs
RGF0YSwgb3duZXIsIF9iYXNlKTsKKyAgICAgICAgICAgICAgICB1LnByb3RvLmNsZWFyKCk7CiAg
ICAgICAgICAgICAgICAgaXNDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICB2b2lkIHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RT
dHViUm91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1cmUq
IF9wcm90bykKKyAgICAgICAgICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDZWxsKiBvd25lciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVU
eXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlKiBfcHJvdG8pCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3R1YlJvdXRpbmUgPSBfc3R1YlJvdXRpbmU7
Ci0gICAgICAgICAgICAgICAgYmFzZSA9IF9iYXNlOwotICAgICAgICAgICAgICAgIHUucHJvdG8g
PSBfcHJvdG87CisgICAgICAgICAgICAgICAgYmFzZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIF9i
YXNlKTsKKyAgICAgICAgICAgICAgICB1LnByb3RvLnNldChnbG9iYWxEYXRhLCBvd25lciwgX3By
b3RvKTsKICAgICAgICAgICAgICAgICBpc0NoYWluID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDZWxsKiBvd25lciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRp
bmVUeXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlQ2hhaW4qIF9j
aGFpbikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHViUm91dGluZSA9IF9zdHVi
Um91dGluZTsKLSAgICAgICAgICAgICAgICBiYXNlID0gX2Jhc2U7CisgICAgICAgICAgICAgICAg
YmFzZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIF9iYXNlKTsKICAgICAgICAgICAgICAgICB1LmNo
YWluLnNldChnbG9iYWxEYXRhLCBvd25lciwgX2NoYWluKTsKICAgICAgICAgICAgICAgICBpc0No
YWluID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBsaXN0W1BPTFlNT1JQSElDX0xJ
U1RfQ0FDSEVfU0laRV07CiAgICAgICAgIAotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0
dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIGZpcnN0QmFzZSkKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5l
LCBTdHJ1Y3R1cmUqIGZpcnN0QmFzZSkKICAgICAgICAgewotICAgICAgICAgICAgbGlzdFswXS5z
ZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSk7CisgICAgICAgICAgICBsaXN0WzBdLnNldChnbG9i
YWxEYXRhLCBvd25lciwgc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIGZpcnN0QmFz
ZSwgU3RydWN0dXJlKiBmaXJzdFByb3RvKQorICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUsIFN0cnVj
dHVyZSogZmlyc3RCYXNlLCBTdHJ1Y3R1cmUqIGZpcnN0UHJvdG8pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGxpc3RbMF0uc2V0KHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0UHJvdG8pOwor
ICAgICAgICAgICAgbGlzdFswXS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHN0dWJSb3V0aW5lLCBm
aXJzdEJhc2UsIGZpcnN0UHJvdG8pOwogICAgICAgICB9CiAKICAgICAgICAgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25l
ciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0
aW5lLCBTdHJ1Y3R1cmUqIGZpcnN0QmFzZSwgU3RydWN0dXJlQ2hhaW4qIGZpcnN0Q2hhaW4pCkBA
IC0xMDcsMjcgKzEwNywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGxpc3RbMF0u
c2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHViUm91dGluZSwgZmlyc3RCYXNlLCBmaXJzdENoYWlu
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGVyZWZTdHJ1Y3R1cmVzKGludCBjb3VudCkK
LSAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgUG9seW1vcnBoaWNTdHViSW5mbyYgaW5mbyA9IGxpc3RbaV07Ci0K
LSAgICAgICAgICAgICAgICBBU1NFUlQoaW5mby5iYXNlKTsKLSAgICAgICAgICAgICAgICBpbmZv
LmJhc2UtPmRlcmVmKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaW5mby51LnByb3RvKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghaW5mby5pc0NoYWluKQotICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mby51LnByb3RvLT5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2sm
IG1hcmtTdGFjaywgaW50IGNvdW50KQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICBQb2x5bW9ycGhpY1N0dWJJ
bmZvJiBpbmZvID0gbGlzdFtpXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5mby5iYXNlKTsK
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZv
LmJhc2UpOworICAgICAgICAgICAgICAgIGlmIChpbmZvLnUucHJvdG8gJiYgIWluZm8uaXNDaGFp
bikKKyAgICAgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaW5mby51LnByb3RvKTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5mby51LmNoYWluICYmIGluZm8uaXNDaGFpbikKICAgICAg
ICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaW5mby51LmNoYWluKTsKICAgICAgICAg
ICAgIH0KQEAgLTE1Myw3ICsxNDEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB1
Lm9wZXJhbmQgPSBvcGVyYW5kOwogICAgICAgICB9CiAKLSAgICAgICAgSW5zdHJ1Y3Rpb24oU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpIHsgdS5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7IH0KKyAgICAgICAg
SW5zdHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgdS5zdHJ1Y3R1cmUuY2xl
YXIoKTsKKyAgICAgICAgICAgIHUuc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgfQogICAgICAgICBJbnN0cnVjdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbikK
ICAgICAgICAgewogICAgICAgICAgICAgdS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwpAQCAtMTcw
LDcgKzE2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAg
ICBPcGNvZGUgb3Bjb2RlOwogICAgICAgICAgICAgaW50IG9wZXJhbmQ7Ci0gICAgICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0
dXJlPiBzdHJ1Y3R1cmU7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNo
YWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxs
PiBqc0NlbGw7CiAgICAgICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBv
bHltb3JwaGljU3RydWN0dXJlczsKQEAgLTE3OSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSW5zdHJ1Y3Rpb24oU3RydWN0dXJlQ2hh
aW4qKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oU3RydWN0dXJlKik7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBlMTBkYzVjZjVlMTcwNTg2M2M3MjNlNzI4ZWY5ZWRk
YmI1ZjA0YzVjLi5iZTU3NjBhMWE4ZGI0NzU5MDEyOTllYmRlYmQ2NTJhZTI1NTgwNTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKQEAgLTM1LDQyICszNSwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OmRlcmVmKCkKIHsKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNl
IGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAgICAgICAgdS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0
U3RydWN0dXJlLT5kZXJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBhY2Nlc3NfZ2V0
X2J5X2lkX3Byb3RvOgotICAgICAgICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJl
LT5kZXJlZigpOwotICAgICAgICB1LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUtPmRl
cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46
Ci0gICAgICAgIHUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0g
ICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OiB7CiAg
ICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1
cmVzID0gdS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKLSAgICAgICAgcG9seW1vcnBo
aWNTdHJ1Y3R1cmVzLT5kZXJlZlN0cnVjdHVyZXModS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemUp
OwogICAgICAgICBkZWxldGUgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OiB7CiAgICAgICAg
IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0g
dS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAgICAgIHBvbHltb3JwaGljU3Ry
dWN0dXJlcy0+ZGVyZWZTdHJ1Y3R1cmVzKHUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CiAg
ICAgICAgIGRlbGV0ZSBwb2x5bW9ycGhpY1N0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6CisgICAgY2FzZSBhY2Nlc3NfZ2V0
X2J5X2lkX3Byb3RvOgorICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbjoKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlv
bi5wcmV2aW91c1N0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlv
bi5zdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19w
dXRfYnlfaWRfcmVwbGFjZToKLSAgICAgICAgdS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3Ry
dWN0dXJlLT5kZXJlZigpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5
X2lkOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZDoKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlf
aWRfZ2VuZXJpYzoKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfZ2VuZXJpYzoKICAgICBjYXNl
IGFjY2Vzc19nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGNhc2UgYWNjZXNzX2dldF9zdHJpbmdfbGVu
Z3RoOgotICAgICAgICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgcmVmIHRoZWlyIFN0cnVj
dHVyZXMuCisgICAgICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCBoYXZlIHRvIHJlbGVh
c2UgYW55IGFsbG9jYXRlZCBtZW1vcnkKICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODEsMTQgKzY3LDE0IEBAIHZvaWQgU3Ry
dWN0dXJlU3R1YkluZm86Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAg
ICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6
Ci0gICAgICAgIHUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0
ZShtYXJrU3RhY2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRTZWxmLmJh
c2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0
X2J5X2lkX3Byb3RvOgotICAgICAgICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJl
LT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci0gICAgICAgIHUuZ2V0QnlJZFByb3RvLnByb3Rv
dHlwZVN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBtYXJrU3Rh
Y2suYXBwZW5kKCZ1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmdS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAg
dS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3Rh
Y2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0
U3RydWN0dXJlKTsKICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5nZXRCeUlkQ2hhaW4uY2hh
aW4pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGZfbGlz
dDogewpAQCAtMTAyLDEyICs4OCwxMiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdn
cmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uOgotICAgICAgICB1LnB1dEJ5SWRUcmFu
c2l0aW9uLnByZXZpb3VzU3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci0gICAg
ICAgIHUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFj
ayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlv
dXNTdHJ1Y3R1cmUpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0
aW9uLnN0cnVjdHVyZSk7CiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJZFRyYW5z
aXRpb24uY2hhaW4pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lk
X3JlcGxhY2U6Ci0gICAgICAgIHUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+
bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1
dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBhY2Nlc3NfZ2V0X2J5X2lkOgogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZDoKQEAgLTEx
NSw3ICsxMDEsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdncmVnYXRlKE1hcmtT
dGFjayYgbWFya1N0YWNrKQogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9nZW5lcmljOgogICAg
IGNhc2UgYWNjZXNzX2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X3N0cmlu
Z19sZW5ndGg6Ci0gICAgICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCByZWYgdGhlaXIg
U3RydWN0dXJlcy4KKyAgICAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IG5lZWQgdG8g
bWFyayBhbnl0aGluZwogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDY3MDJkY2VjZDQ5NzllMzU2NTI2ZDg1OThjODQz
N2NhZTQ0ODA2NWEuLmJmZWViMWVhZDAzMWRmNDliOWY1MWVhMDU5ZDRhODFiM2EyYWY0OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCkBAIC01OCwzMiArNTgsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKFN0cnVjdHVyZSogYmFzZU9iamVj
dFN0cnVjdHVyZSkKKyAgICAgICAgdm9pZCBpbml0R2V0QnlJZFNlbGYoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX3Nl
bGY7CiAKLSAgICAgICAgICAgIHUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZSA9IGJh
c2VPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0U3RydWN0dXJlLT5yZWYo
KTsKKyAgICAgICAgICAgIHUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoZ2xv
YmFsRGF0YSwgb3duZXIsIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBpbml0R2V0QnlJZFByb3RvKFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUpCisgICAgICAgIHZvaWQgaW5pdEdldEJ5SWRQ
cm90byhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSog
YmFzZU9iamVjdFN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOwog
Ci0gICAgICAgICAgICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlID0gYmFzZU9i
amVjdFN0cnVjdHVyZTsKLSAgICAgICAgICAgIGJhc2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOwot
Ci0gICAgICAgICAgICB1LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5
cGVTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnJlZigpOworICAg
ICAgICAgICAgdS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0
YSwgb3duZXIsIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgICAgICAgICAgdS5nZXRCeUlkUHJv
dG8ucHJvdG90eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgcHJvdG90eXBlU3Ry
dWN0dXJlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgaW5pdEdldEJ5SWRDaGFpbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogYmFzZU9iamVj
dFN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluKQogICAgICAgICB7CiAgICAgICAgICAg
ICBhY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9jaGFpbjsKIAotICAgICAgICAgICAgdS5n
ZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSA9IGJhc2VPYmplY3RTdHJ1Y3R1cmU7Ci0g
ICAgICAgICAgICBiYXNlT2JqZWN0U3RydWN0dXJlLT5yZWYoKTsKLQorICAgICAgICAgICAgdS5n
ZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGJh
c2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgdS5nZXRCeUlkQ2hhaW4uY2hhaW4uc2V0
KGdsb2JhbERhdGEsIG93bmVyLCBjaGFpbik7CiAgICAgICAgIH0KIApAQCAtMTA5LDIxICsxMDMs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5cGUg
PSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb247CiAKLSAgICAgICAgICAgIHUucHV0QnlJZFRy
YW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUgPSBwcmV2aW91c1N0cnVjdHVyZTsKLSAgICAgICAg
ICAgIHByZXZpb3VzU3RydWN0dXJlLT5yZWYoKTsKLQotICAgICAgICAgICAgdS5wdXRCeUlkVHJh
bnNpdGlvbi5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUtPnJl
ZigpOwotCisgICAgICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJl
LnNldChnbG9iYWxEYXRhLCBvd25lciwgcHJldmlvdXNTdHJ1Y3R1cmUpOworICAgICAgICAgICAg
dS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5zZXQoZ2xvYmFs
RGF0YSwgb3duZXIsIGNoYWluKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5pdFB1dEJ5
SWRSZXBsYWNlKFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSkKKyAgICAgICAgdm9pZCBp
bml0UHV0QnlJZFJlcGxhY2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVy
LCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGFjY2Vzc1R5cGUgPSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U7CiAgICAgCi0gICAgICAgICAg
ICB1LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0U3RydWN0
dXJlOwotICAgICAgICAgICAgYmFzZU9iamVjdFN0cnVjdHVyZS0+cmVmKCk7CisgICAgICAgICAg
ICB1LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93
bmVyLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVy
ZWYoKTsKQEAgLTE0NCwxNCArMTMzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBi
YXNlT2JqZWN0U3RydWN0dXJlOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3Ry
dWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0dXJlOwogICAgICAgICAgICAgfSBnZXRCeUlkU2VsZjsK
ICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2Jq
ZWN0U3RydWN0dXJlOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2Jq
ZWN0U3RydWN0dXJlOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJl
PiBwcm90b3R5cGVTdHJ1Y3R1cmU7CiAgICAgICAgICAgICB9IGdldEJ5SWRQcm90bzsKICAgICAg
ICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3Ry
dWN0dXJlOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNl
T2JqZWN0U3RydWN0dXJlOwogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0
dXJlQ2hhaW4+IGNoYWluOwogICAgICAgICAgICAgfSBnZXRCeUlkQ2hhaW47CiAgICAgICAgICAg
ICBzdHJ1Y3QgewpAQCAtMTYzLDEyICsxNTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgaW50IGxpc3RTaXplOwogICAgICAgICAgICAgfSBnZXRCeUlkUHJvdG9MaXN0Owog
ICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3Vz
U3RydWN0dXJlOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgICAg
ICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBwcmV2aW91c1N0cnVjdHVyZTsK
KyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gc3RydWN0dXJlOwog
ICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOwog
ICAgICAgICAgICAgfSBwdXRCeUlkVHJhbnNpdGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0g
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOworICAgICAgICAg
ICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0dXJlOwog
ICAgICAgICAgICAgfSBwdXRCeUlkUmVwbGFjZTsKICAgICAgICAgfSB1OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCmlu
ZGV4IDUwYmE3NDZlZWQxNmRiMzBhYmQyOGVjYzQwNGRmN2MwYjdhODA3MzkuLjY3YTc5NmE2YWM3
NDg0YzFlN2MzMmMwM2U5ZGY5NzU4OTllMDkyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC0zMSw3ICszMSw3
IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogRGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogYWN0aXZhdGlvbikKLSAg
ICA6IEpTTm9uRmluYWxPYmplY3QoRGVidWdnZXJBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsRGF0YSwganNOdWxsKCkpKQorICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRh
LCBEZWJ1Z2dlckFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhLCBqc051bGwo
KSkpCiB7CiAgICAgQVNTRVJUKGFjdGl2YXRpb24pOwogICAgIEFTU0VSVChhY3RpdmF0aW9uLT5p
c0FjdGl2YXRpb25PYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXggZjIyZDJmZmJkOTE5NDNhZTQ4ZmM5M2Yz
YzdlODBhMjFhYmE0Yzk2ZC4uYmZiMzZkYjUzM2I3ZmRkMzZhYmUzNWM3OTk0OGU4NDc5ODZhMzNj
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0
aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFj
dGl2YXRpb24uaApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmly
dHVhbCBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBl
KSAKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IYW5kbGUuaAppbmRleCA0NzM0ZTQyMjAwODNhM2E4ZDk0MTI2ZDllNGJhZWM3MjdmYmYx
MjNjLi41MzFkNTM1NDcyZWExMzM1YmRlZDIzZDU1YjIyY2ZmMjlkMDcyNzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IYW5kbGUuaApAQCAtNDQsOSArNDQsMTMgQEAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGNsYXNzIEhhbmRsZTsKIC8vIENyZWF0aW5nIGEgSlNWYWx1ZSBIYW5kbGUgaXMgaW52YWxp
ZAogdGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFsdWU+OwogCisvLyBGb3J3YXJkIGRlY2xh
cmUgV2Vha0dDTWFwCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRU
eXBlLCB0eXBlbmFtZSBGaW5hbGl6ZXJDYWxsYmFjaywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5h
bWUgS2V5VHJhaXRzQXJnPiBjbGFzcyBXZWFrR0NNYXA7CisKIGNsYXNzIEhhbmRsZUJhc2Ugewog
ICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVIZWFwOwogICAgIGZyaWVuZCBzdHJ1Y3QgSlNDYWxsYmFj
a09iamVjdERhdGE7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1h
cHBlZFR5cGUsIHR5cGVuYW1lIEZpbmFsaXplckNhbGxiYWNrLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmc+IGZyaWVuZCBjbGFzcyBXZWFrR0NNYXA7CiAKIHB1YmxpYzoK
ICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3Nsb3QgfHwgISptX3Nsb3Q7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZjEwMmMxOGVlNDQzZWFhNTVh
ZGY2NjBiMzIyYjY5OWVlZDcwYjJhZi4uMWE4YWVkYzk1Yjc5NDFhZjgzYWUyMWE2MzBkYWZlMTI1
NjYxZTI2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKICNpbmNsdWRlICJUcmFjaW5nLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jZGVmaW5l
IENPTExFQ1RfT05fRVZFUllfU0xPV19BTExPQ0FUSU9OIDAKKyNkZWZpbmUgQ09MTEVDVF9PTl9F
VkVSWV9TTE9XX0FMTE9DQVRJT04gMQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCA1YjRhYzVhMDE4YzA5NzhmNDgy
YzE2ODE0NmRmYWFlMjJmMDY4NGRmLi4zZmIxYTk4ZGZiYWViNTliODUxNmUwMDFhNTlmMGIwZWIz
YTI4OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTU3
LDcgKzU3LDEzIEBAIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmIGNv
bnNlcnZhdGl2ZVJvb3RzKQogaW5saW5lIHZvaWQgTWFya1N0YWNrOjptYXJrQ2hpbGRyZW4oSlND
ZWxsKiBjZWxsKQogewogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7CisgICAgaWYg
KGNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA8IENvbXBvdW5kVHlwZSkgewor
ICAgICAgICBjZWxsLT5KU0NlbGw6Om1hcmtDaGlsZHJlbigqdGhpcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBpZiAoIWNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJy
aWRlc01hcmtDaGlsZHJlbigpKSB7CisgICAgICAgIEFTU0VSVChjZWxsLT5pc09iamVjdCgpKTsK
ICNpZmRlZiBOREVCVUcKICAgICAgICAgYXNPYmplY3QoY2VsbCktPm1hcmtDaGlsZHJlbkRpcmVj
dCgqdGhpcyk7CiAjZWxzZQpAQCAtMTA1LDYgKzExMSw3IEBAIHZvaWQgTWFya1N0YWNrOjpkcmFp
bigpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsKKyAgICAgICAgICAgICAgICBjZWxs
LT5KU0NlbGw6Om1hcmtDaGlsZHJlbigqdGhpcyk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJl
bnQubV92YWx1ZXMgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVt
b3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCAzOThkNDMzMjVjNjRkMmNlMmRiNDRl
ZWI3NTJkMjNjZmZmOTNjZjc4Li5hMTBhNzc4NWMzZDk2ZjYzMzc2YWY0Y2U2M2I2OTBiNDExZDk0
M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC02
MCwxNCArNjAsMTIgQEAgTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0
aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSlNHbG9iYWxEYXRhKgogCiAgICAgU3RydWN0dXJlKiBk
dW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSA9IGdsb2JhbERhdGEtPmR1bW15TWFya2FibGVDZWxs
U3RydWN0dXJlLmdldCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1f
ZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkKLSAgICAgICAgbmV3ICgmYXRvbXMoKVtpXSkg
SlNDZWxsKGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlKTsKKyAgICAgICAgbmV3ICgmYXRvbXMo
KVtpXSkgSlNDZWxsKCpnbG9iYWxEYXRhLCBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSk7CiB9
CiAKIHZvaWQgTWFya2VkQmxvY2s6OnN3ZWVwKCkKIHsKLSNpZiAhRU5BQkxFKEpTQ19aT01CSUVT
KQogICAgIFN0cnVjdHVyZSogZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUgPSBtX2hlYXAtPmds
b2JhbERhdGEoKS0+ZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUuZ2V0KCk7Ci0jZW5kaWYKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0
b21zUGVyQ2VsbCkgewogICAgICAgICBpZiAobV9tYXJrcy5nZXQoaSkpCkBAIC03NSwxNSArNzMs
MTUgQEAgdm9pZCBNYXJrZWRCbG9jazo6c3dlZXAoKQogCiAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oJmF0b21zKClbaV0pOwogI2lmIEVOQUJMRShKU0Nf
Wk9NQklFUykKLSAgICAgICAgaWYgKCFjZWxsLT5pc1pvbWJpZSgpKSB7CisgICAgICAgIGlmIChj
ZWxsLT5zdHJ1Y3R1cmUoKSAmJiBjZWxsLT5zdHJ1Y3R1cmUoKSAhPSBkdW1teU1hcmthYmxlQ2Vs
bFN0cnVjdHVyZSAmJiAhY2VsbC0+aXNab21iaWUoKSkgewogICAgICAgICAgICAgY29uc3QgQ2xh
c3NJbmZvKiBpbmZvID0gY2VsbC0+Y2xhc3NJbmZvKCk7CiAgICAgICAgICAgICBjZWxsLT5+SlND
ZWxsKCk7Ci0gICAgICAgICAgICBuZXcgKGNlbGwpIEpTWm9tYmllKGluZm8sIEpTWm9tYmllOjps
ZWFrZWRab21iaWVTdHJ1Y3R1cmUoKm1faGVhcC0+Z2xvYmFsRGF0YSgpKSk7CisgICAgICAgICAg
ICBuZXcgKGNlbGwpIEpTWm9tYmllKCptX2hlYXAtPmdsb2JhbERhdGEoKSwgaW5mbywgbV9oZWFw
LT5nbG9iYWxEYXRhKCktPnpvbWJpZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICBtX21h
cmtzLnNldChpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOwot
ICAgICAgICBuZXcgKGNlbGwpIEpTQ2VsbChkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSk7Cisg
ICAgICAgIG5ldyAoY2VsbCkgSlNDZWxsKCptX2hlYXAtPmdsb2JhbERhdGEoKSwgZHVtbXlNYXJr
YWJsZUNlbGxTdHJ1Y3R1cmUpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdHJvbmcuaAppbmRleCBlNWI0N2M3OTJiZjNkMTNiM2YzNTljOTEzYTI5OTYxYzAxYmU5ZDVh
Li4yOGQwNDM4NGIwYjIxMzE5ZjVjYTVmMzA5MTI5YzU4ODkzNTFjNzIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdHJvbmcuaApAQCAtMjksMTAgKzI5LDEyIEBACiAjaW5jbHVkZSAiQXNzZXJ0
aW9ucy5oIgogI2luY2x1ZGUgIkhhbmRsZS5oIgogI2luY2x1ZGUgIkhhbmRsZUhlYXAuaCIKLSNp
bmNsdWRlICJKU0dsb2JhbERhdGEuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTR2xv
YmFsRGF0YTsKK0hhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoSlNHbG9iYWxEYXRhJik7
CisKIC8vIEEgc3Ryb25nbHkgcmVmZXJlbmNlZCBoYW5kbGUgdGhhdCBwcmV2ZW50cyB0aGUgb2Jq
ZWN0IGl0IHBvaW50cyB0byBmcm9tIGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkLgogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewogICAgIHVzaW5n
IEhhbmRsZTxUPjo6c2xvdDsKQEAgLTQ3LDEzICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogICAgIFN0cm9uZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1
ZSA9IEV4dGVybmFsVHlwZSgpKQotICAgICAgICA6IEhhbmRsZTxUPihnbG9iYWxEYXRhLmFsbG9j
YXRlR2xvYmFsSGFuZGxlKCkpCisgICAgICAgIDogSGFuZGxlPFQ+KGFsbG9jYXRlR2xvYmFsSGFu
ZGxlKGdsb2JhbERhdGEpKQogICAgIHsKICAgICAgICAgc2V0KHZhbHVlKTsKICAgICB9CiAKICAg
ICBTdHJvbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBIYW5kbGU8VD4gaGFuZGxlKQotICAg
ICAgICA6IEhhbmRsZTxUPihnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCkpCisgICAg
ICAgIDogSGFuZGxlPFQ+KGFsbG9jYXRlR2xvYmFsSGFuZGxlKGdsb2JhbERhdGEpKQogICAgIHsK
ICAgICAgICAgc2V0KGhhbmRsZS5nZXQoKSk7CiAgICAgfQpAQCAtOTYsNyArOTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUg
dmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXNsb3QoKSkKLSAgICAgICAgICAgIHNldFNsb3Qo
Z2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpKTsKKyAgICAgICAgICAgIHNldFNsb3Qo
YWxsb2NhdGVHbG9iYWxIYW5kbGUoZ2xvYmFsRGF0YSkpOwogICAgICAgICBzZXQodmFsdWUpOwog
ICAgIH0KIApAQCAtMTM3LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NF
UlQoc2xvdCgpKTsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEhhbmRsZVR5cGVzPFQ+Ojp0b0pT
VmFsdWUoZXh0ZXJuYWxUeXBlKTsKLSAgICAgICAgQVNTRVJUKCF2YWx1ZSB8fCAhdmFsdWUuaXND
ZWxsKCkgfHwgSGVhcDo6aXNNYXJrZWQodmFsdWUuYXNDZWxsKCkpKTsKKyAgICAgICAgQVNTRVJU
KCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpOwogICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9y
KHNsb3QoKSktPndyaXRlQmFycmllcihzbG90KCksIHZhbHVlKTsKICAgICAgICAgKnNsb3QoKSA9
IHZhbHVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IGQ3OWM1ODFlMzYxNzFmNGNjY2ZhZDU3YmMzM2JkNTM2NTcy
NDk0YmEuLjcyNGY2OGYzNGU5OWMzODYyMjI1YWNiZWUxZTBkYjZhYzZiYTk5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xv
YmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnVjdGlvbioKICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKICAgICBpbnQgcHJvcGVydHkgPSB2UENb
Ml0udS5vcGVyYW5kOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzNdLnUuc3RydWN0
dXJlOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzNdLnUuc3RydWN0dXJlLmdldCgp
OwogICAgIGludCBvZmZzZXQgPSB2UENbNF0udS5vcGVyYW5kOwogCiAgICAgaWYgKHN0cnVjdHVy
ZSA9PSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKSB7CkBAIC0xNzcsMTAgKzE3Nyw3IEBAIE5F
VkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBJbnN0cnVjdGlvbioKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNs
b3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBz
bG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwogICAgICAgICBpZiAoc2xvdC5pc0NhY2hl
YWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewotICAgICAg
ICAgICAgaWYgKHZQQ1szXS51LnN0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICB2UENbM10udS5z
dHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgICAgICBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgp
LT5yZWYoKTsKLSAgICAgICAgICAgIHZQQ1szXSA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCk7
CisgICAgICAgICAgICB2UENbM10udS5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgIHZQQ1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAg
ICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA0LDcgKzIwMSw3IEBAIE5FVkVSX0lOTElORSBib29s
IEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SW5zdHJ1CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7
CiAgICAgaW50IHByb3BlcnR5ID0gdlBDWzJdLnUub3BlcmFuZDsKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHZQQ1szXS51LnN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHZQQ1szXS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICBpbnQgb2Zmc2V0ID0gdlBDWzRdLnUub3Bl
cmFuZDsKICAgICBpbnQgc2tpcCA9IHZQQ1s1XS51Lm9wZXJhbmQ7CiAgICAgCkBAIC0yNTUsMTAg
KzI1Miw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHlu
YW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1CiAgICAgaWYgKGdsb2JhbE9iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKICAgICAgICAgaWYg
KHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmpl
Y3QpIHsKLSAgICAgICAgICAgIGlmICh2UENbM10udS5zdHJ1Y3R1cmUpCi0gICAgICAgICAgICAg
ICAgdlBDWzNdLnUuc3RydWN0dXJlLT5kZXJlZigpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+cmVmKCk7Ci0gICAgICAgICAgICB2UENbM10gPSBnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpOworICAgICAgICAgICAgdlBDWzNdLnUuc3RydWN0dXJlLnNldChjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB2UENbNF0gPSBzbG90LmNhY2hlZE9mZnNl
dCgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgICAgICAgICBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKQEAgLTEyMjUsMTEgKzEyMTksMTEg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlUHV0QnlJRChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogICAgIH0KIAogICAgIC8vIENhY2hlIG1pc3M6IHJl
Y29yZCBTdHJ1Y3R1cmUgdG8gY29tcGFyZSBhZ2FpbnN0IG5leHQgdGltZS4KLSAgICBTdHJ1Y3R1
cmUqIGxhc3RTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBs
YXN0U3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmIChzdHJ1Y3R1
cmUgIT0gbGFzdFN0cnVjdHVyZSkgewogICAgICAgICAvLyBGaXJzdCBtaXNzOiByZWNvcmQgU3Ry
dWN0dXJlIHRvIGNvbXBhcmUgYWdhaW5zdCBuZXh0IHRpbWUuCiAgICAgICAgIGlmICghbGFzdFN0
cnVjdHVyZSkgewotICAgICAgICAgICAgdlBDWzRdID0gc3RydWN0dXJlOworICAgICAgICAgICAg
dlBDWzRdLnUuc3RydWN0dXJlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xMjU1LDI0ICsxMjQ5LDIzIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVy
cHJldGVyOjp0cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoK
IAogICAgICAgICAvLyBwdXRfYnlfaWRfdHJhbnNpdGlvbiBjaGVja3MgdGhlIHByb3RvdHlwZSBj
aGFpbiBmb3Igc2V0dGVycy4KICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oY2FsbEZy
YW1lLCBiYXNlQ2VsbCk7Ci0KKyAgICAgICAgSlNDZWxsKiBvd25lciA9IGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCk7CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpOwogICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb24pOwotICAgICAgICB2UENbNF0gPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KTsKLSAgICAgICAgdlBDWzVdID0gc3RydWN0dXJlOwotICAgICAgICB2UENbNl0gPSBJbnN0cnVj
dGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKKyAgICAgICAgdlBDWzRd
LnUuc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOworICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBz
dHJ1Y3R1cmUpOworICAgICAgICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+
cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lKSk7CisgICAgICAgIEFTU0VSVCh2UENbNl0udS5zdHJ1
Y3R1cmVDaGFpbik7CiAgICAgICAgIHZQQ1s3XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Ci0gICAg
ICAgIGNvZGVCbG9jay0+cmVmU3RydWN0dXJlcyh2UEMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9yZXBsYWNlKTsKICAgICB2
UENbNV0gPSBzbG90LmNhY2hlZE9mZnNldCgpOwotICAgIGNvZGVCbG9jay0+cmVmU3RydWN0dXJl
cyh2UEMpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dW5jYWNoZVB1dEJ5
SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiB2UEMpCitORVZFUl9JTkxJTkUg
dm9pZCBJbnRlcnByZXRlcjo6dW5jYWNoZVB1dEJ5SUQoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24q
IHZQQykKIHsKLSAgICBjb2RlQmxvY2stPmRlcmVmU3RydWN0dXJlcyh2UEMpOwogICAgIHZQQ1sw
XSA9IGdldE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIHZQQ1s0XSA9IDA7CiB9CkBAIC0xMzE0
LDExICsxMzA3LDExIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUdl
dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAgICB9CiAKICAgICAvLyBD
YWNoZSBtaXNzCi0gICAgU3RydWN0dXJlKiBsYXN0U3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0
dXJlOworICAgIFN0cnVjdHVyZSogbGFzdFN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5n
ZXQoKTsKICAgICBpZiAoc3RydWN0dXJlICE9IGxhc3RTdHJ1Y3R1cmUpIHsKICAgICAgICAgLy8g
Rmlyc3QgbWlzczogcmVjb3JkIFN0cnVjdHVyZSB0byBjb21wYXJlIGFnYWluc3QgbmV4dCB0aW1l
LgogICAgICAgICBpZiAoIWxhc3RTdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIHZQQ1s0XSA9IHN0
cnVjdHVyZTsKKyAgICAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS5zZXQoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTM0NCw4ICsxMzM3LDYgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKgogICAgICAgICAgICAgdlBDWzVdID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgY29kZUJsb2Nr
LT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODMs
OSArMTM3NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZUdldEJ5
SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoKICAgICAgICAgICAgIHZQQ1s2XSA9
IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHZQQ1s1XSA9
IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpOwotCi0gICAgICAgIGNvZGVCbG9jay0+cmVmU3RydWN0
dXJlcyh2UEMpOworICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBiYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTEsMTUgKzE0MDAsMTMg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogICAgICAgICB2UENbN10gPSBvZmZzZXQ7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICB2UENbNF0gPSBzdHJ1Y3R1cmU7Ci0gICAgdlBDWzVdID0g
SW5zdHJ1Y3Rpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lKSk7CisgICAgdlBD
WzRdLnUuc3RydWN0dXJlLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICB2UENbNV0udS5zdHJ1Y3R1cmVDaGFp
bi5zZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lKSk7CiAgICAgdlBDWzZdID0g
Y291bnQ7Ci0gICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CiB9CiAKLU5FVkVSX0lO
TElORSB2b2lkIEludGVycHJldGVyOjp1bmNhY2hlR2V0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSW5zdHJ1Y3Rpb24qIHZQQykKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp1bmNh
Y2hlR2V0QnlJRChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogdlBDKQogewotICAgIGNvZGVCbG9j
ay0+ZGVyZWZTdHJ1Y3R1cmVzKHZQQyk7CiAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9i
eV9pZCk7CiAgICAgdlBDWzRdID0gMDsKIH0KQEAgLTI1MjgsNyArMjUxNSw3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJG
aWxlKiByZWdpc3RlckZpCiAKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkp
KSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwot
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7Cisg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQo
KTsKIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3Ry
dWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7
CkBAIC0yNTU5LDEyICsyNTQ2LDEyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVj
dXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAKICAgICAg
ICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQoKTsKIAogICAgICAgICAgICAgaWYgKExJ
S0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpLmlzT2Jq
ZWN0KCkpOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFzT2JqZWN0
KHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0dXJlOwor
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUu
c3RydWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKExJS0VMWShwcm90b09iamVj
dC0+c3RydWN0dXJlKCkgPT0gcHJvdG90eXBlU3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAg
ICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKQEAgLTI1OTgsMTIgKzI1ODUsMTIgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgCiAgICAgICAgIGlmIChMSUtFTFkoYmFz
ZVZhbHVlLmlzQ2VsbCgpKSkgewogICAgICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VW
YWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRd
LnUuc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChMSUtFTFko
YmFzZUNlbGwtPnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKS5pc09iamVjdCgp
KTsKICAgICAgICAgICAgICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSBhc09iamVjdChzdHJ1
Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKLSAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVjdHVyZTsKKyAgICAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVj
dHVyZS5nZXQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoTElLRUxZ
KHByb3RvT2JqZWN0LT5zdHJ1Y3R1cmUoKSA9PSBwcm90b3R5cGVTdHJ1Y3R1cmUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwpAQCAtMjY0MywxMiAr
MjYzMCwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25G
bGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAKICAgICAgICAgaWYg
KExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VD
ZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUp
LmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFz
T2JqZWN0KHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0
dXJlOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBD
WzVdLnUuc3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmIChMSUtFTFkocHJvdG9PYmplY3QtPnN0cnVjdHVyZSgpID09IHByb3RvdHlwZVN0cnVjdHVy
ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CkBA
IC0yNzEyLDYgKzI2OTksOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShF
eGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICB2UEMg
Kz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCk7CiAgICAgICAgIE5FWFRf
SU5TVFJVQ1RJT04oKTsKICAgICB9CisjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9V
TkQpCisgICAgZ290byAqKCYmc2tpcF9nZXRfYnlfaWRfY2hhaW4pOworI2VuZGlmCiAgICAgREVG
SU5FX09QQ09ERShvcF9nZXRfYnlfaWRfY2hhaW4pIHsKICAgICAgICAgLyogb3BfZ2V0X2J5X2lk
X2NoYWluIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1
cmVDaGFpbihjaGFpbikgY291bnQobikgb2Zmc2V0KG4pCiAKQEAgLTI3MjQsMTIgKzI3MTQsMTIg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFn
LCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1
ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUu
YXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0
cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3Ry
dWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1
cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4q
IGl0ID0gdlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4tPmhlYWQoKTsKKyAgICAgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVh
ZCgpOwogICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHZQQ1s2XS51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291bnQ7CisgICAg
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291bnQ7CiAK
ICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKS0+cHJvdG90
eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwpAQCAtMjc1OSw2ICsyNzQ5LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZp
bGUqIHJlZ2lzdGVyRmkKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KICNpZiBV
U0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKKyAgICBza2lwX2dldF9ieV9pZF9jaGFp
bjoKICAgICBnb3RvICooJiZza2lwX2lkX2dldHRlcl9zZWxmKTsKICNlbmRpZgogICAgIERFRklO
RV9PUENPREUob3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmKSB7CkBAIC0yNzczLDcgKzI3NjQsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAKICAgICAgICAgaWYgKExJS0VMWShi
YXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENb
NF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0
XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VM
WShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAg
IEFTU0VSVChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CkBAIC0yODE2LDcgKzI4MDcsNyBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVl
LmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5z
dHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0
cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNl
Q2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VS
VChiYXNlQ2VsbC0+aXNPYmplY3QoKSk7CkBAIC0yODczLDEyICsyODY0LDEyIEBAIHNraXBfaWRf
Y3VzdG9tX3NlbGY6CiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0Nl
bGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxs
KCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVy
ZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJl
LmdldCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5z
dHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4qIGl0ID0gdlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4tPmhlYWQoKTsKKyAgICAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFp
bi0+aGVhZCgpOwogICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHZQQ1s2XS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291bnQ7
CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGVuZCA9IGl0ICsgY291
bnQ7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlQ2Vs
bC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKQEAgLTI5Mjgs
MTIgKzI5MTksMTIgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgCiAgICAgICAgIGlm
IChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkgewogICAgICAgICAgICAgSlNDZWxsKiBiYXNl
Q2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSkpIHsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFp
bi0+aGVhZCgpOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9
IHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IGNvdW50ID0gdlBDWzZdLnUub3BlcmFuZDsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiogZW5kID0gaXQgKyBjb3VudDsKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSkpOwpAQCAtMjk2NCw2ICsyOTU1LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICB9CiAjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQpCiAgICAgc2tpcF9p
ZF9jdXN0b21fY2hhaW46CisgICAgZ290byAqKCYmc2tpcF9nZXRfYXJyYXlfbGVuZ3RoKTsKICNl
bmRpZgogICAgIERFRklORV9PUENPREUob3BfZ2V0X2FycmF5X2xlbmd0aCkgewogICAgICAgICAv
KiBvcF9nZXRfYXJyYXlfbGVuZ3RoIGRzdChyKSBiYXNlKHIpIHByb3BlcnR5KGlkKSBub3Aoc0lE
KSBub3Aobikgbm9wKG4pIG5vcChuKQpAQCAtMjk4NSw2ICsyOTc3LDEwIEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAgICAgICAgIHVuY2FjaGVHZXRCeUlEKGNvZGVCbG9jaywgdlBDKTsKICAgICAg
ICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KKyNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9f
V09SS0FST1VORCkKKyAgICBza2lwX2dldF9hcnJheV9sZW5ndGg6CisgICAgZ290byAqKCYmc2tp
cF9nZXRfc3RyaW5nX2xlbmd0aCk7CisjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX2dldF9z
dHJpbmdfbGVuZ3RoKSB7CiAgICAgICAgIC8qIG9wX2dldF9zdHJpbmdfbGVuZ3RoIGRzdChyKSBi
YXNlKHIpIHByb3BlcnR5KGlkKSBub3Aoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC0z
MDA1LDYgKzMwMDEsMTAgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgdW5jYWNoZUdl
dEJ5SUQoY29kZUJsb2NrLCB2UEMpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAg
fQorI2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EKQorICAgIHNraXBfZ2V0X3N0
cmluZ19sZW5ndGg6CisgICAgZ290byAqKCYmc2tpcF9wdXRfYnlfaWQpOworI2VuZGlmCiAgICAg
REVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWQpIHsKICAgICAgICAgLyogcHV0X2J5X2lkIGJhc2Uo
cikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG5vcChuKSBub3Aobikgbm9wKG4pIG5vcChuKSBkaXJl
Y3QoYikKIApAQCAtMzAzOCw2ICszMDM4LDkgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAg
ICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcHV0X2J5X2lkKTsKICAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOwogICAgIH0KKyNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkK
KyAgICAgIHNraXBfcHV0X2J5X2lkOgorI2VuZGlmCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbikgewogICAgICAgICAvKiBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiBi
YXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBvbGRTdHJ1Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1
cmUoc0lEKSBzdHJ1Y3R1cmVDaGFpbihjaGFpbikgb2Zmc2V0KG4pIGRpcmVjdChiKQogICAgICAg
ICAgCkBAIC0zMDU0LDggKzMwNTcsOCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAK
ICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1Y3R1cmUuZ2V0KCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVjdHVy
ZSgpID09IG9sZFN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZUNlbGwt
PmlzT2JqZWN0KCkpOwpAQCAtMzA2Myw3ICszMDY2LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0ID0gdlBDWzhdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIWRpcmVjdCkgewotICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVh
ZCgpOworICAgICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSB2
UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOwogCiAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWUgcHJvdG8gPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghcHJvdG8uaXNOdWxsKCkp
IHsKQEAgLTMwNzUsMTEgKzMwNzgsMTEgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb3RvID0gYXNPYmplY3QocHJvdG8pLT5zdHJ1Y3R1cmUoKS0+cHJv
dG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+dHJhbnNpdGlvblRvKG5l
d1N0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+dHJhbnNpdGlvblRvKCpn
bG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0g
dlBDWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENb
N10udS5vcGVyYW5kOwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRG
b3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbihjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRp
b24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oKmdsb2JhbERhdGEsIGNvZGVCbG9jay0+
aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBv
ZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIAogICAgICAgICAgICAgICAg
IHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKTsKQEAgLTMxMDYs
NyArMzEwOSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgaWYgKExJS0VMWShi
YXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENb
NF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0
XS51LnN0cnVjdHVyZS5nZXQoKTsKIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+
c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
Q2VsbC0+aXNPYmplY3QoKSk7CkBAIC0zMTE0LDcgKzMxMTcsNyBAQCBza2lwX2lkX2N1c3RvbV9z
ZWxmOgogICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdlBDWzVdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9j
YXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJh
c2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKCpnbG9iYWxEYXRhLCBjb2RlQmxvY2stPmlkZW50
aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGJh
c2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgb2Zmc2V0
LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAgICB2UEMg
Kz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfcmVwbGFjZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCAzZDg3ZTUxMTFkMDJmZGI5ZWM2ODMzOWVmOGM1ZDMzMjk5ZTcwZWM4Li42Yjhj
NmRkNDY4OWNjNTg5Zjk4NTNmODIwNTk2N2FjYWU2NGE5NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTIzNSw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0
aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayogY29kZWJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIFN0cnVjdHVyZSosIHNpemVfdCBjYWNoZWRPZmZzZXQsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoUHV0QnlJZFJlcGxh
Y2UoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwg
c2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29s
IGRpcmVjdCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoTWV0aG9kQ2FsbFByb3RvKENvZGVC
bG9jayogY29kZWJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mLCBKU0Z1bmN0aW9uKiwgU3RydWN0
dXJlKiwgSlNPYmplY3QqLCBSZXR1cm5BZGRyZXNzUHRyKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiwgQ29kZUJsb2NrKiBjb2RlYmxvY2ss
IE1ldGhvZENhbGxMaW5rSW5mbyYsIEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCos
IFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuZ3RoKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA3NjMzYjZh
NmFjN2Y0MzdiYTlkNDFjNjBhN2I0NjhjOGQ0MjhiMDgyLi5hMWYxZmU2NjgzZDBiZTM5ODdjNTlj
ZTZkM2EwMTI5NzlmYTY2MTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlCiAKICAgICAvLyBlY3ggPSBiYXNlT2JqZWN0LT5tX3N0cnVjdHVyZQogICAgIGlmICgh
ZGlyZWN0KSB7Ci0gICAgICAgIGZvciAoUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhl
YWQoKTsgKml0OyArK2l0KQorICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBp
dCA9IGNoYWluLT5oZWFkKCk7ICppdDsgKytpdCkKICAgICAgICAgICAgIHRlc3RQcm90b3R5cGUo
KCppdCktPnN0b3JlZFByb3RvdHlwZSgpLCBmYWlsdXJlQ2FzZXMpOwogICAgIH0KIApAQCAtNjA2
LDExICs2MDYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZQogICAgICAgICByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMyk7CiAgICAgfQogCi0gICAgLy8gQXNzdW1lcyBt
X3JlZkNvdW50IGNhbiBiZSBkZWNyZW1lbnRlZCBlYXNpbHksIHJlZmNvdW50IGRlY3JlbWVudCBp
cyBzYWZlIGFzIAotICAgIC8vIGNvZGVibG9jayBzaG91bGQgZW5zdXJlIG9sZFN0cnVjdHVyZS0+
bV9yZWZDb3VudCA+IDAKLSAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVz
cyhvbGRTdHJ1Y3R1cmUtPmFkZHJlc3NPZkNvdW50KCkpKTsKLSAgICBhZGQzMihUcnVzdGVkSW1t
MzIoMSksIEFic29sdXRlQWRkcmVzcyhuZXdTdHJ1Y3R1cmUtPmFkZHJlc3NPZkNvdW50KCkpKTsK
LSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZVB0cldpdGhXcml0ZUJhcnJp
ZXIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCByZWdUMCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogCiAgICAgLy8gd3JpdGUgdGhlIHZhbHVlCiAgICAg
Y29tcGlsZVB1dERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDEsIG5ld1N0cnVjdHVyZSwgY2FjaGVk
T2Zmc2V0KTsKQEAgLTY1MiwxNyArNjQ4LDE1IEBAIHZvaWQgSklUOjpwYXRjaEdldEJ5SWRTZWxm
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0CiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uZGF0YUxhYmVs
MzJBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRQcm9wZXJ0eU1hcE9mZnNldCksIG9mZnNldCk7
CiB9CiAKLXZvaWQgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNh
bGxlZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90bywgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5r
SW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU09iamVjdCogcHJvdG8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKIAogICAg
IEFTU0VSVCghbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZSk7Ci0gICAgbWV0aG9k
Q2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBzdHJ1Y3R1cmUt
PnJlZigpOworICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1Y3R1cmUuc2V0KGdsb2Jh
bERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAKICAgICBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvLT5zdHJ1Y3R1cmUoKTsKLSAgICBt
ZXRob2RDYWxsTGlua0luZm8uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG90eXBlU3Ry
dWN0dXJlOwotICAgIHByb3RvdHlwZVN0cnVjdHVyZS0+cmVmKCk7CisgICAgbWV0aG9kQ2FsbExp
bmtJbmZvLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgcHJvdG90eXBlU3RydWN0dXJlKTsKIAogICAgIHJlcGF0Y2hC
dWZmZXIucmVwYXRjaChtZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwsIHN0cnVjdHVy
ZSk7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5rSW5mby5zdHJ1Y3R1
cmVMYWJlbC5kYXRhTGFiZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhvZENoZWNrUHJvdG9P
YmopLCBwcm90byk7CkBAIC03MzUsNyArNzI5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIK
ICAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJl
KTsKIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhhZCBu
b3QgY2hhbmdlZC4KLSAgICBTdHJ1Y3R1cmUqIGNvbnN0ICogcHJvdG90eXBlU3RydWN0dXJlQWRk
cmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUoKTsKKyAgICBjb25zdCB2b2lk
KiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVj
dHVyZSgpOwogI2lmIENQVShYODZfNjQpCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb3RvdHlw
ZVN0cnVjdHVyZSksIHJlZ1QzKTsKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVn
VDMpOwpAQCAtODM5LDggKzgzMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRT
ZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljCiAKICAgICBD
b2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVsID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlQWRk
ZW5kdW0oKTsKIAotICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgcG9seW1vcnBoaWNTdHJ1Y3R1
cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGVudHJ5TGFiZWwsIHN0cnVjdHVyZSk7CisgICAg
cG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KCptX2dsb2JhbERh
dGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0dXJl
KTsKIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4g
dGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAg
anVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQocGF0Y2hP
ZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7CkBAIC04NTgsNyArODUxLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFBvbHltb3JwaGkKICAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBjaGVja1N0cnVjdHVy
ZShyZWdUMCwgc3RydWN0dXJlKTsKIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0
J3MgU3RydWN0dXJlIGhhZCBub3QgY2hhbmdlZC4KLSAgICBTdHJ1Y3R1cmUqIGNvbnN0ICogcHJv
dG90eXBlU3RydWN0dXJlQWRkcmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUo
KTsKKyAgICBjb25zdCB2b2lkKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmpl
Y3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOwogI2lmIENQVShYODZfNjQpCiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKHByb3RvdHlwZVN0cnVjdHVyZSksIHJlZ1QzKTsKICAgICBKdW1wIGZhaWx1cmVD
YXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1
Y3R1cmVBZGRyZXNzKSwgcmVnVDMpOwpAQCAtOTA3LDEwICs5MDAsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
UG9seW1vcnBoaQogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFB1dFJlc3VsdCkpOwogCiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJlbCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29k
ZUFkZGVuZHVtKCk7Ci0KLSAgICBzdHJ1Y3R1cmUtPnJlZigpOwotICAgIHByb3RvdHlwZVN0cnVj
dHVyZS0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhd
LnNldChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSk7CisgICAgcHJv
dG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldCgqbV9nbG9iYWxEYXRhLCBt
X2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgcHJv
dG90eXBlU3RydWN0dXJlKTsKIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xv
dyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENv
ZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1w
QXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7CkBAIC05MjgsNyAr
OTE4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVu
ZChiYXNlT2JqZWN0Q2hlY2spOwogCiAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3Ry
dWN0dXJlOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKICAgICBKU09iamVj
dCogcHJvdG9PYmplY3QgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsg
KytpLCArK2l0KSB7CiAgICAgICAgIHByb3RvT2JqZWN0ID0gYXNPYmplY3QoY3VyclN0cnVjdHVy
ZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwpAQCAtOTc4LDcgKzk2OCw2IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJlbCA9
IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVuZHVtKCk7CiAKICAgICAvLyBUcmFjayB0aGUg
c3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCi0g
ICAgc3RydWN0dXJlLT5yZWYoKTsKICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJl
bnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgY2hhaW4pOwogCiAgICAgLy8gRmlu
YWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8g
anVtcCBoZXJlIGluc3RlYWQuCkBAIC05OTcsNyArOTg2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZENoYWluKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJl
KiBzdHIKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChjaGVja1N0cnVjdHVyZShyZWdUMCwgc3Ry
dWN0dXJlKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0g
ICAgUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKKyAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09i
amVjdCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQp
IHsKICAgICAgICAgcHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5
cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA5Mzc5ZjdhYzNmN2YzZWRiMjZl
Yjk0NGI5YzkyYjU2MWFlYTYyYzlhLi5kMGMzNjg4MjZjMWNiNjMxY2QyNmE4ZDQ2YmZkNmQ4Y2Ex
YjQ5MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVj
dHVyZQogICAgIAogICAgIGlmICghZGlyZWN0KSB7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IG5v
dGhpbmcgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIgZm9yIHRoaXMgcHJvcGVy
dHkuIAotICAgICAgICBmb3IgKFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7
ICppdDsgKytpdCkKKyAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSBj
aGFpbi0+aGVhZCgpOyAqaXQ7ICsraXQpCiAgICAgICAgICAgICB0ZXN0UHJvdG90eXBlKCgqaXQp
LT5zdG9yZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKICAgICB9CiAKQEAgLTYxOSwxMCAr
NjE5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUKICAgICAgICAgCiAgICAgICAgIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QzKTsKICAgICB9Ci0gICAgCi0gICAgc3Vi
MzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Mob2xkU3RydWN0dXJlLT5hZGRyZXNz
T2ZDb3VudCgpKSk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3Mo
bmV3U3RydWN0dXJlLT5hZGRyZXNzT2ZDb3VudCgpKSk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cihuZXdTdHJ1Y3R1cmUpLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CisKKyAgICBzdG9yZVB0cldpdGhXcml0ZUJhcnJpZXIoVHJ1c3RlZEltbVB0cihuZXdT
dHJ1Y3R1cmUpLCByZWdUMCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSkpOwogICAgIAogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KQogICAgIC8vIEZvciBNSVBTLCB3
ZSBkb24ndCBhZGQgc2l6ZW9mKHZvaWQqKSB0byB0aGUgc3RhY2sgb2Zmc2V0LgpAQCAtNjc0LDE3
ICs2NzIsMTQgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3QKICAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHBhdGNoT2Zm
c2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0MiksIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKTsgLy8gdGFnCiB9CiAKLXZvaWQgSklUOjpwYXRjaE1ldGhv
ZENhbGxQcm90byhDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRo
b2RDYWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNhbGxlZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTT2JqZWN0KiBwcm90bywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQordm9pZCBK
SVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvLCBK
U0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogcHJvdG8s
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJl
cGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAKICAgICBBU1NFUlQoIW1ldGhvZENhbGxMaW5r
SW5mby5jYWNoZWRTdHJ1Y3R1cmUpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgc3RydWN0dXJlLT5yZWYoKTsKLSAgICAKKyAgICBtZXRo
b2RDYWxsTGlua0luZm8uY2FjaGVkU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlID0gcHJvdG8tPnN0cnVjdHVyZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5j
YWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGVTdHJ1Y3R1cmU7Ci0gICAgcHJvdG90
eXBlU3RydWN0dXJlLT5yZWYoKTsKKyAgICBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVkUHJvdG90
eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgIAogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaCht
ZXRob2RDYWxsTGlua0luZm8uc3RydWN0dXJlTGFiZWwsIHN0cnVjdHVyZSk7CiAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5rSW5mby5zdHJ1Y3R1cmVMYWJlbC5kYXRhTGFi
ZWxQdHJBdE9mZnNldChwYXRjaE9mZnNldE1ldGhvZENoZWNrUHJvdG9PYmopLCBwcm90byk7CkBA
IC03NjIsNyArNzU3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKICAgICBKdW1wIGZhaWx1
cmVDYXNlczEgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKICAgICAKICAgICAv
LyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVjdHVyZSBoYWQgbm90IGNoYW5nZWQu
Ci0gICAgU3RydWN0dXJlKiBjb25zdCAqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSBwcm90
b09iamVjdC0+YWRkcmVzc09mU3RydWN0dXJlKCk7CisgICAgY29uc3Qgdm9pZCogcHJvdG90eXBl
U3RydWN0dXJlQWRkcmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUoKTsKICNp
ZiBDUFUoWDg2XzY0KQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihwcm90b3R5cGVTdHJ1Y3R1cmUp
LCByZWdUMyk7CiAgICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
YnNvbHV0ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyksIHJlZ1QzKTsKQEAgLTg2
Nyw5ICs4NjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZkxpc3QoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpYwogICAgIHBhdGNoQnVmZmVyLmxp
bmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KHBhdGNoT2Zm
c2V0R2V0QnlJZFB1dFJlc3VsdCkpOwogCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJl
bCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVuZHVtKCk7Ci0gICAgCi0gICAgc3RydWN0
dXJlLT5yZWYoKTsKLSAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4
XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlKTsKKworICAgIHBvbHltb3JwaGljU3RydWN0dXJl
cy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldCgqbV9nbG9iYWxEYXRhLCBtX2NvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSk7CiAgICAgCiAgICAgLy8gRmlu
YWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8g
anVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBz
dHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFu
Y2hUb1Nsb3dDYXNlKTsKQEAgLTg4OSw3ICs4ODMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBo
aQogICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1
cmUpOwogICAgIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJl
IGhhZCBub3QgY2hhbmdlZC4KLSAgICBTdHJ1Y3R1cmUqIGNvbnN0ICogcHJvdG90eXBlU3RydWN0
dXJlQWRkcmVzcyA9IHByb3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUoKTsKKyAgICBjb25z
dCB2b2lkKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NP
ZlN0cnVjdHVyZSgpOwogI2lmIENQVShYODZfNjQpCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBy
b3RvdHlwZVN0cnVjdHVyZSksIHJlZ1QzKTsKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNz
KSwgcmVnVDMpOwpAQCAtOTM1LDEwICs5MjksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJl
bEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFB1dFJlc3VsdCkpOwogICAgIAogICAgIENvZGVM
b2NhdGlvbkxhYmVsIGVudHJ5TGFiZWwgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGVBZGRlbmR1
bSgpOwotICAgIAotICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJl
LT5yZWYoKTsKLSAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0
KGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlKTsKKworICAgIHByb3Rv
dHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0
dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhl
IGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0
ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5qdW1wQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7
CkBAIC05NTcsNyArOTQ5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKICAgICBidWNrZXRz
T2ZGYWlsLmFwcGVuZChjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKSk7CiAgICAgCiAg
ICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4q
IGl0ID0gY2hhaW4tPmhlYWQoKTsKICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSAwOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK2l0KSB7CiAgICAgICAgIHBy
b3RvT2JqZWN0ID0gYXNPYmplY3QoY3VyclN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNh
bGxGcmFtZSkpOwpAQCAtMTAwNiw3ICs5OTgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkQ2hhaW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQog
ICAgIENvZGVMb2NhdGlvbkxhYmVsIGVudHJ5TGFiZWwgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNv
ZGVBZGRlbmR1bSgpOwogICAgIAogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRl
ZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KLSAgICBzdHJ1Y3R1cmUtPnJlZigp
OwogICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlM
YWJlbCwgc3RydWN0dXJlLCBjaGFpbik7CiAgICAgCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUg
anVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3Rl
YWQuCkBAIC0xMDI2LDcgKzEwMTcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIGJ1
Y2tldHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgUmVmUHRy
PFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQpIHsKICAgICAg
ICAgcHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29r
dXAoY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4
IGZlMjZkY2FhMTYzMmI0NjdjMWYxOGNmNzM0ZjYzZjEwY2FkNTNmNjAuLmFjNDM4Mjk4NGRhYWFh
NzYyMjc3YTUyOGU5MTkyZmM4NTE5MjIzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCkBAIC04NDgsNyArODQ4LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtz
Ojp0cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdHViSW5mby0+aW5pdFB1dEJ5SWRSZXBs
YWNlKHN0cnVjdHVyZSk7CisgICAgc3R1YkluZm8tPmluaXRQdXRCeUlkUmVwbGFjZShjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
KTsKIAogICAgIEpJVDo6cGF0Y2hQdXRCeUlkUmVwbGFjZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBz
dHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFkZHJlc3MsIGRpcmVjdCk7CiB9
CkBAIC04OTYsNyArODk2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNo
ZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KIAogICAgIGlmIChz
bG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgIC8vIHNldCB0aGlzIHVwLCBz
byBkZXJlZlN0cnVjdHVyZXMgY2FuIGRvIGl0J3Mgam9iLgotICAgICAgICBzdHViSW5mby0+aW5p
dEdldEJ5SWRTZWxmKHN0cnVjdHVyZSk7CisgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFNl
bGYoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpICE9IFBy
b3BlcnR5U2xvdDo6VmFsdWUpCiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lk
X3NlbGZfZmFpbCkpOwogICAgICAgICBlbHNlCkBAIC05MjIsNyArOTIyLDcgQEAgTkVWRVJfSU5M
SU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVCbG9jayogY28KICAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+Z2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90byhzdHJ1
Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIHN0dWJJbmZvLT5p
bml0R2V0QnlJZFByb3RvKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAK
ICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICAgICAgQVNT
RVJUKCFzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKTsKQEAgLTE1
NjAsNyArMTU2MCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9n
ZXRfYnlfaWRfbWV0aG9kX2NoZWNrKQogCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUg
ZnVuY3Rpb24gaXMgb24gdGhlIG9iamVjdCdzIHByb3RvdHlwZS4gIFBhdGNoIHVwIHRoZSBjb2Rl
IHRvIG9wdGltaXplLgogICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IHN0cnVjdHVyZS0+
cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpIHsKLSAgICAgICAgICAgIEpJVDo6cGF0Y2hN
ZXRob2RDYWxsUHJvdG8oY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0luZm8sIGNhbGxlZSwgc3Ry
dWN0dXJlLCBzbG90QmFzZU9iamVjdCwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CisgICAgICAgICAg
ICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2ssIG1ldGhvZENhbGxMaW5rSW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2Jq
ZWN0LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogCkBAIC0xNTcxLDcgKzE1NzEsNyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX21ldGhvZF9jaGVjaykK
ICAgICAgICAgLy8gZm9yIG5vdy4gIEZvciBub3cgaXQgcGVyZm9ybXMgYSBjaGVjayBvbiBhIHNw
ZWNpYWwgb2JqZWN0IG9uIHRoZSBnbG9iYWwgb2JqZWN0IG9ubHkgdXNlZCBmb3IgdGhpcwogICAg
ICAgICAvLyBwdXJwb3NlLiAgVGhlIG9iamVjdCBpcyBpbiBubyB3YXkgZXhwb3NlZCwgYW5kIGFz
IHN1Y2ggdGhlIGNoZWNrIHdpbGwgYWx3YXlzIHBhc3MuCiAgICAgICAgIGlmIChzbG90LnNsb3RC
YXNlKCkgPT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFBy
b3RvKGNvZGVCbG9jaywgbWV0aG9kQ2FsbExpbmtJbmZvLCBjYWxsZWUsIHN0cnVjdHVyZSwgY2Fs
bEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdC0+bWV0aG9kQ2FsbER1bW15KCksIFNU
VUJfUkVUVVJOX0FERFJFU1MpOworICAgICAgICAgICAgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90
byhjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0luZm8s
IGNhbGxlZSwgc3RydWN0dXJlLCBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0
LT5tZXRob2RDYWxsRHVtbXkoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjMw
LDcgKzE2MzAsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0
X2J5X2lkX3NlbGZfZmFpbCkKIAogICAgICAgICBpZiAoc3R1YkluZm8tPmFjY2Vzc1R5cGUgPT0g
YWNjZXNzX2dldF9ieV9pZF9zZWxmKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXN0dWJJbmZvLT5z
dHViUm91dGluZSk7Ci0gICAgICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QgPSBuZXcg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KENvZGVMb2NhdGlvbkxhYmVsKCksIHN0dWJJ
bmZvLT51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgICAgICAgICAgcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVMaXN0ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
Q29kZUxvY2F0aW9uTGFiZWwoKSwgc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0
cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRTZWxmTGlz
dChwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QsIDEpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVMaXN0ID0gc3R1YkluZm8tPnUuZ2V0QnlJZFNlbGZM
aXN0LnN0cnVjdHVyZUxpc3Q7CkBAIC0xNjU1LDEyICsxNjU1LDEyIEBAIHN0YXRpYyBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dFNsb3QoSlNHCiAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSB7CiAgICAgY2Fz
ZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOgotICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0
ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChzdHViSW5mby0+c3R1YlJvdXRp
bmUsIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLCBzdHViSW5m
by0+dS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBl
U3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFs
RGF0YSwgb3duZXIsIHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZFBy
b3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksIHN0dWJJbmZvLT51LmdldEJ5SWRQcm90by5w
cm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUg
PSBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90
b0xpc3QocHJvdG90eXBlU3RydWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlz
dCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFsRGF0YSwgb3duZXIs
IHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUsIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKSk7CisgICAg
ICAgIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0KGdsb2JhbERhdGEsIG93bmVyLCBzdHViSW5mby0+c3R1YlJvdXRpbmUsIHN0dWJJbmZv
LT51LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLCBzdHViSW5mby0+dS5n
ZXRCeUlkQ2hhaW4uY2hhaW4uZ2V0KCkpOwogICAgICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUg
PSBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90
b0xpc3QocHJvdG90eXBlU3RydWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwpAQCAtMjc1
MywxMCArMjc1Myw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9y
ZXNvbHZlX2dsb2JhbCkKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNh
bGxGcmFtZSwgaWRlbnQpOwogICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYg
IWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkgJiYg
c2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewogICAgICAgICAgICAgR2xvYmFsUmVz
b2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvID0gY29kZUJsb2NrLT5nbG9iYWxSZXNvbHZlSW5m
byhnbG9iYWxSZXNvbHZlSW5mb0luZGV4KTsKLSAgICAgICAgICAgIGlmIChnbG9iYWxSZXNvbHZl
SW5mby5zdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgZ2xvYmFsUmVzb2x2ZUluZm8uc3RydWN0
dXJlLT5kZXJlZigpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cmVm
KCk7Ci0gICAgICAgICAgICBnbG9iYWxSZXNvbHZlSW5mby5zdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgZ2xvYmFsUmVzb2x2ZUluZm8uc3RydWN0dXJl
LnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBnbG9iYWxSZXNvbHZl
SW5mby5vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pTSW50ZXJmYWNlSklULmgKaW5kZXggZmVhZjQ2NzUxNTkxNWY0NWEzMzc2ZWQxNjJkNDk5
NTA2NDYzNzQ5MS4uZTFkOTM1M2NiYjZmMmI2OGRiMDNhN2NhNmE1NDRhZmYyMjBjNWViOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtMTkzLDYgKzE5
MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW5saW5lIEp1bXAgZW1pdExvYWRJbnQz
Mih1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBkc3QpOwogICAgICAg
ICBpbmxpbmUgSnVtcCBlbWl0TG9hZERvdWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRl
eCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKIAorICAgICAgICBpbmxp
bmUgdm9pZCBzdG9yZVB0cldpdGhXcml0ZUJhcnJpZXIoVHJ1c3RlZEltbVB0ciBwdHIsIFJlZ2lz
dGVySUQgLyogb3duZXIgKi8sIEFkZHJlc3MgZGVzdCkKKyAgICAgICAgeworICAgICAgICAgICAg
c3RvcmVQdHIocHRyLCBkZXN0KTsKKyAgICAgICAgfQorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAgICAgaW5saW5lIEp1bXAgZW1pdEp1bXBJZk5vdEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFs
UmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIGlubGluZSBBZGRyZXNzIHRhZ0ZvcihpbnQgaW5kZXgs
IFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggOGNjYjAzOTg1MDZiZDlhMzFiZGE2YTc5YzkwNmQ3YjE0ZDQxNGY4Mi4uNzI5ZGNlOTk4
NmIwMGNkNWZhMmYwMGZkODEyNDk5MThkZDFjNDIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTM2Niw2ICszNjYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiBzdGF0aWMg
dm9pZCBjbGVhbnVwR2xvYmFsRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAgICBnbG9iYWxEYXRhLT5jbGVh
ckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAgICAgZ2xvYmFsRGF0YS0+aGVhcC5kZXN0cm95KCk7CiAg
ICAgZ2xvYmFsRGF0YS0+ZGVyZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgKaW5kZXggOTUwYmI0ZWIxMzIzM2ZmNjhkNDIzZWUwZDY4NDIzMDFiNThhNGUx
Mi4uYjVhYTQ2YmYwNzI0MGEzODg2NWQ2NzkxNTE3NjJjMWY1ZDdhNmRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTkyLDcgKzkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBkLT5yZWdpc3RlcnMgPSAmYWN0aXZhdGlvbi0+cmVnaXN0
ZXJBdCgwKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCiAgICAg
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7IAogICAgICAgICB9CkBAIC0xNDMsNyArMTQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgfQogCiAgICAgaW5saW5lIEFyZ3VtZW50czo6QXJndW1lbnRzKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoY2FsbEZyYW1lLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQorICAgICAgICA6IEpTTm9uRmluYWxP
YmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBkKGFkb3B0UHRyKG5ldyBB
cmd1bWVudHNEYXRhKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CkBAIC0xODUsNyArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5l
IEFyZ3VtZW50czo6QXJndW1lbnRzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnNU
eXBlKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQorICAgICAgICA6IEpTTm9uRmluYWxPYmpl
Y3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBkKGFkb3B0UHRyKG5ldyBBcmd1
bWVudHNEYXRhKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBA
IC0yNDcsNyArMjQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCByZWdpc3Rlck9m
ZnNldCA9IG1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZTsKICAgICAgICAgc2l6ZV90IHJlZ2lzdGVyQXJyYXlTaXplID0gbnVtTG9jYWxz
ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogCi0gICAgICAgIE93bkFycmF5
UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJB
cnJheShnbG9iYWxEYXRhLCBtX3JlZ2lzdGVycyAtIHJlZ2lzdGVyT2Zmc2V0LCByZWdpc3RlckFy
cmF5U2l6ZSk7CisgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJl
Z2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxEYXRhLCBtX3JlZ2lzdGVycyAt
IHJlZ2lzdGVyT2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSwgbV9udW1QYXJhbWV0ZXJzTWludXNU
aGlzICsgMSk7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVn
aXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwogICAgICAgICBzZXRSZWdpc3RlcnMo
cmVnaXN0ZXJzLCByZWdpc3RlckFycmF5LnJlbGVhc2UoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBlMGY0
YjIzZjQ2YjQ3ODJlYjM4ZjFlYjUxN2FkYzRkYTc0NzkwNTY2Li4wNTBlOTg5NjY0NTQzZjIyZTli
NzI2N2NiZjExNzI5YWFmNzhkM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMzcsNyArMzcsNyBAQCBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEFycmF5Q29uc3RydWN0b3IpOwogICAgIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXkoRXhlY1N0YXRlKik7
CiAKLUFycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGZ1
bmN0aW9uU3RydWN0dXJlKQorQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUsIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICAvLyBFQ01BIDE1LjQuMy4xIEFycmF5
LnByb3RvdHlwZQpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaQogICAg
ICAgICB1aW50MzJfdCBuID0gYXJncy5hdCgwKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYg
KG4gIT0gYXJncy5hdCgwKS50b051bWJlcihleGVjKSkKICAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkFycmF5IHNpemUgaXMgbm90IGEg
c21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpOwotICAgICAgICByZXR1cm4gbmV3IChl
eGVjKSBKU0FycmF5KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmUoKSwgbiwgQ3JlYXRlSW5p
dGlhbGl6ZWQpOworICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpLCBuLCBDcmVhdGVJbml0aWFs
aXplZCk7CiAgICAgfQogCiAgICAgLy8gb3RoZXJ3aXNlIHRoZSBhcnJheSBpcyBjb25zdHJ1Y3Rl
ZCB3aXRoIHRoZSBhcmd1bWVudHMgaW4gaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAppbmRleCA1ZTE0MDhmNTNkNTQzMDk5NmM4NmRjYzMz
YTdlNTQ2MWRmODAyYzk2Li45N2IyNmM1OGI3YTAyOGQ1NmZmMTc3N2EyOGNjZDgzZDBlZDQ0MjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBBcnJheVByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAg
ICAgICBBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgQXJyYXlQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2aXJ0dWFsIENv
bnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiODQzYTNkMjlkMjc5
N2EwYjQ2YjhjMGE0M2JhYTQ3NGZlOGRlYWJiLi4yOWNhZWNlYTJiNDU1Y2IxMmExMDNhZDkxMGNl
ZjVkZTUyYzVmMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCkBAIC0xMTQsOCArMTE0LDggQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5
UHJvdG90eXBlOjpzX2luZm8gPSB7IkFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgRXhlY1N0
YXQKICovCiAKIC8vIEVDTUEgMTUuNC40Ci1BcnJheVByb3RvdHlwZTo6QXJyYXlQcm90b3R5cGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUpCi0gICAgOiBKU0FycmF5KHN0cnVjdHVyZSkKK0FycmF5UHJvdG90eXBlOjpB
cnJheVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEpTQXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVj
dHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIHB1dEFub255bW91
c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxPYmplY3QpOwpAQCAt
NTc0LDcgKzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTcGxpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgZGVsZXRlQ291bnQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVsZXRlRG91YmxlKTsKICAgICB9CiAKLSAgICBKU0FycmF5KiBy
ZXNPYmogPSBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5h
cnJheVN0cnVjdHVyZSgpLCBkZWxldGVDb3VudCwgQ3JlYXRlQ29tcGFjdCk7CisgICAgSlNBcnJh
eSogcmVzT2JqID0gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCBkZWxldGVDb3VudCwgQ3Jl
YXRlQ29tcGFjdCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSByZXNPYmo7CiAgICAgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIGZvciAodW5zaWduZWQg
ayA9IDA7IGsgPCBkZWxldGVDb3VudDsgaysrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmgKaW5kZXggOTY2NDFiZDJiYmJjNDQxZjEwZmM3NDU0NjAy
Y2M3MTliOGU1ZWVmMy4uNmRhZGY1MTFhMGNhNDg5ODJlYzM3Yjg0ZjkzMTIwOTUxNmZiNTJlOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCkBA
IC0yOCwxNCArMjgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJheVByb3Rv
dHlwZSA6IHB1YmxpYyBKU0FycmF5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEFy
cmF5UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
Pik7CisgICAgICAgIGV4cGxpY2l0IEFycmF5UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CiAKICAgICAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJh
bnNpdGlvbk9wdGltaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hl
ZFRyYW5zaXRpb25PcHRpbWl6ZXIuaAppbmRleCBlZGVlYzU3NTZhMWQzZGEyMWNmYmFlYmFiOGY5
ODg2NzM4MjgxNjlmLi5kZjdiN2Y2MWRjN2E4ODU4OTgwNzg0ZThjZjA5NDliMjllY2IxYzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlv
bk9wdGltaXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX29iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgICAg
IG1fb2JqZWN0LT5zZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICAg
ICAgICAgIG1fb2JqZWN0LT5zZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjp0b0Nh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fb2JqZWN0LT5zdHJ1Y3R1
cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgfkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGU1YjBmM2Q4M2Y2ZWNmODIxZjBkYmFkMTc5YTg2YzUwNjEyMzM4NGYu
LmExYTRlZDQ4YmZiMmM4ZGRiNmVhODgxY2JlNzkxNTdiYjgwMjViMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAt
MjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChCb29sZWFuQ29uc3RydWN0b3IpOwogCi1Cb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBi
b29sZWFuUHJvdG90eXBlKQorQm9vbGVhbkNvbnN0cnVjdG9yOjpCb29sZWFuQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblByb3RvdHlwZSkKICAgICA6IElu
dGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIElkZW50aWZpZXIoZXhlYywgYm9vbGVhblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNz
TmFtZSkpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBib29sZWFuUHJvdG90eXBlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCmluZGV4IDI1NTBiM2IzNTQ3ZDZh
MDljMzJmMDUwZTI5YmVlNzZmZTk2YzIyZmYuLmZhMGQwNWU1ODg3ZjEwMTI2OTYxZjEzYWMyZTgx
MTE1Mzg4NDIyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Db25zdHJ1Y3Rvci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgQm9vbGVhbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgQm9vbGVhblByb3RvdHlw
ZSopOworICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBCb29sZWFuUHJvdG90eXBlKik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRh
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3Bw
CmluZGV4IDI5NDVjMGVlYjVmMzlmOTU0ZGJjNTUwYWY5MWU1MzMyYjljMGQ4ZjkuLmUyNGEzMGE0
YmI1NGFlNTAwZWQwZTlkNzE2NWZjOWNlN2E1ZDlhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwCkBAIC0yNyw4ICsyNyw4IEBAIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoQm9vbGVhbk9iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBC
b29sZWFuT2JqZWN0OjpzX2luZm8gPSB7ICJCb29sZWFuIiwgJkpTV3JhcHBlck9iamVjdDo6c19p
bmZvLCAwLCAwIH07CiAKLUJvb2xlYW5PYmplY3Q6OkJvb2xlYW5PYmplY3QoSlNHbG9iYWxEYXRh
JiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU1dyYXBw
ZXJPYmplY3Qoc3RydWN0dXJlKQorQm9vbGVhbk9iamVjdDo6Qm9vbGVhbk9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNXcmFwcGVy
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbk9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVj
dC5oCmluZGV4IGVmMmQ0MDM0ZDU1MzRmNDgwY2VjNjExODVjZGM0Y2FkMDczZjcwMWUuLmRlZjQ0
YjQ0ZGNkODRmY2UwMzI2OTE5MGZmNjdjYWJiNTAwMjcyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKQEAgLTI3LDExICsyNywxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5PYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVy
T2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEJvb2xlYW5PYmplY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAg
ICAgICAgZXhwbGljaXQgQm9vbGVhbk9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
IAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKICAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKaW5kZXgg
ZDBhNjRhZmI3ODliNjdmMjgwNzAzNzI0NWQ1YzM0NzM0OWJiMzIyZS4uMjA5OTBlMTY2OTZjMGVm
M2U2OWZjOWM4M2EyZjUzZjg1NzhmMDFhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKik7CiAKIC8vIEVDTUEgMTUuNi40CiAKLUJvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Q
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlv
blN0cnVjdHVyZSkKK0Jvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKICAgICA6IEJvb2xlYW5PYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVj
LT5nbG9iYWxEYXRhKCksIGpzQm9vbGVhbihmYWxzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCmluZGV4IGQ2ZDNkOWZiMjhmNjEzN2Ri
YzA1YjQxNDJmNjhkOWQxOWRjOTZiZmQuLjVjY2JkMmI0YjZkZWRkMjJhNjQ3YmUxMTM5M2QzYWZj
YWJmOGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmgKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBCb29sZWFuUHJvdG90eXBlIDogcHVibGljIEJvb2xlYW5PYmplY3QgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQm9vbGVhblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUp
OworICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcAppbmRleCAwYTA2MTQ4MWZhZjdhZWMyZTQ5ZDdiYThlZDA0MGU0YjJk
Mjc0YjdlLi45YmJiNjg4MTRlMDEyNjE4OWMxNTMwYmZjNjM2MmI0MDFkMjljZWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBh
cnNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZU5vdyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVVVEMoRXhlY1N0YXRlKik7CiAKLURhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUs
IERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUpCitEYXRlQ29uc3RydWN0b3I6OkRhdGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJv
dG90eXBlKiBkYXRlUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBkYXRl
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIGRhdGVQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgK
aW5kZXggYmQ1MjlmMTZmMTg3ODgzNTBmMTEyYzJjYzg2NzI1NjNkOTg5NjgxMi4uMjNhMDMxMWFj
OGU5MWRlNWQ1MmMzYWZmMjQxMzJlMTE3ZDE5YTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBEYXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1
cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKik7CisgICAgICAgIERhdGVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERh
dGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3Bw
CmluZGV4IDc0YWRkYTQ3ZmFiM2ZhNmUxMTJiODhhNWY3NzZjNDc2NzYxODEzY2YuLmQ4Y2EwNzI0
OTFiODU4M2RmYzgxZTEyOTVhMmQ4YjM5MmE2NDQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcApAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gRGF0ZUluc3RhbmNlOjpzX2luZm8gPSB7IkRh
dGUiLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAsIDB9OwogCi1EYXRlSW5zdGFuY2U6OkRh
dGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK0RhdGVJbnN0YW5j
ZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwganNOYU4oKSk7CiB9CiAKLURhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IGRvdWJsZSB0aW1lKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK0RhdGVJbnN0
YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGRvdWJsZSB0aW1lKQorICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
c3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgc2V0SW50
ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCmluZGV4IGQw
ZGNmMGJjMzQ2ZGQ3NzI5NWMzMTAwOTEzMTY2M2QzNDIyMmYyYWMuLjYxOTVjODU0OWY1NTM0YzU3
NWZlODgwZWJmYzFjN2ZkYzJhOTM2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVJbnN0YW5jZS5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRGF0ZUluc3RhbmNlIDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVi
bGljOgotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgZG91YmxlKTsKLSAgICAgICAgZXhwbGljaXQgRGF0ZUluc3RhbmNlKEV4ZWNT
dGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgICAgICBEYXRlSW5zdGFu
Y2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgZG91YmxlKTsKKyAgICAgICAgZXhwbGljaXQgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIGRvdWJsZSBpbnRl
cm5hbE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGludGVybmFsVmFsdWUoKS51bmNoZWNrZWRHZXRO
dW1iZXIoKTsgfQogCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGNhbGN1bGF0ZUdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRl
eCAzMTRiYWE0YzJjOWNhYTI5ZjNlMjhmYmFhY2Y2OTljYjk5YzUzODJlLi40NDRmYTk4YjkxNzNl
ZGJkYTY4YjliYjFmMTA3ZTQ5MjdjM2MxMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIGNvbnN0IENs
YXNzSW5mbyBEYXRlUHJvdG90eXBlOjpzX2luZm8gPSB7IkRhdGUiLCAmRGF0ZUluc3RhbmNlOjpz
X2luZm8sIDAsIEV4ZWNTCiAKIC8vIEVDTUEgMTUuOS40CiAKLURhdGVQcm90b3R5cGU6OkRhdGVQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKK0RhdGVQcm90b3R5cGU6OkRh
dGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IERhdGVJbnN0YW5jZShleGVjLCBzdHJ1Y3R1
cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAppbmRleCAwZWJiZWRjN2UzMDJkMGFkNzc3
Mjc1MjE3ZjdhMzFhMWJkZjViNDI4Li4yZTEwMzBkZmZiZDE4Njk3M2UyYmI5ZDk0MDZkNGYwNGNk
MzA0MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5oCkBAIC0yOSwxNCArMjksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEYXRl
UHJvdG90eXBlIDogcHVibGljIERhdGVJbnN0YW5jZSB7CiAgICAgcHVibGljOgotICAgICAgICBE
YXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPik7CisgICAgICAgIERhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENv
dW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwCmluZGV4IGI4NGY1ZWFjMGIzMmU5MDc5MTI3N2RiMTQ2MTQzYTljZTgyMjM0Y2EuLjdl
ZGExOWY1NGJjNjUwZjAyMWI3NjBhNjQxYTlmMjE2YmVhZDc0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBKU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBTdHJp
Y3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29u
c3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKQogICAgICAgICAsIG1f
bWVzc2FnZShtZXNzYWdlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggN2Y0ZjgyY2VjNWViYzQ1OGFhZDk0N2Y0
YTM4ODdhMzY2MWE0NDBiNi4uZGYxMTJkZDIyMjFmOWM5OGY3YmRlOTBiYzBiYzhlOTEzMDI0YmUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoRXJyb3JDb25zdHJ1Y3Rvcik7CiAKLUVycm9yQ29uc3RydWN0b3I6OkVy
cm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlKQorRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJ
ZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkK
IHsKICAgICAvLyBFQ01BIDE1LjExLjMuMSBFcnJvci5wcm90b3R5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAppbmRleCAzZDBkNzA2NTBk
YTJkNjc2MWZiNjUwZmU2NTg4YjY2Nzk2ZWE5NTA0Li5jZWVjMDA1YmU4MDJmZDM1MjkxNDExNDYw
NzJiZjIxYzUzN2VhZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBFcnJvclByb3RvdHlwZSopOwor
ICAgICAgICBFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRXJyb3JQcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggMGRi
MmFmOGE2OWU1MzBlNmIxNzhmODYwZTliNTg0MTI3NDBjOGU0ZS4uZWQ5NWJhNGExNzc4ZGVmMmE0
YWFlOTg2ZTQwZTJiMGY4MjE1NDc5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI1LDI4ICsyNSwyOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY29uc3QgQ2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OnNfaW5mbyA9IHsgIkVycm9yIiwg
JkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1FcnJvckluc3RhbmNlOjpFcnJv
ckluc3RhbmNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK0Vy
cm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoKmdsb2JhbERhdGEsIHN0
cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNzYWdlKGZhbHNlKQogewogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgcHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZyhnbG9iYWxEYXRhLCAiIikp
OwogfQogCi1FcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJp
bmcmIG1lc3NhZ2UpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK0Vycm9ySW5z
dGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICA6IEpTTm9uRmluYWxPYmpl
Y3QoKmdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNzYWdl
KGZhbHNlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgcHV0RGlyZWN0
KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmlu
ZyhnbG9iYWxEYXRhLCBtZXNzYWdlKSk7CiB9CiAKLUVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorRXJyb3JJbnN0YW5j
ZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIG5l
dyAoZ2xvYmFsRGF0YSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1lc3Nh
Z2UpOwogfQogCi1FcnJvckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNWYWx1ZSBt
ZXNzYWdlKQorRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkKIHsKICAgICBpZiAo
bWVzc2FnZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbmV3IChleGVjKSBFcnJvcklu
c3RhbmNlKCZleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggODJkYmYwZjU2MzgyZWJjMDg1
NDJkNTcxNGIxNjNiZWM5YjZiNzQyMS4uYWZjZjE1OGFkM2FlN2U3MGNlMzg0ZGNhNDRjNTRlNTc0
ZWY5ZTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuaApAQCAtMjksMTMgKzI5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBFcnJv
ckluc3RhbmNlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgY29uc3QgVVN0cmluZyYpOwotICAgICAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNWYWx1
ZSBtZXNzYWdlKTsKKyAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShKU0dsb2Jh
bERhdGEqLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBFcnJv
ckluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBtZXNzYWdl
KTsKIAogCiAgICAgICAgIGJvb2wgYXBwZW5kU291cmNlVG9NZXNzYWdlKCkgeyByZXR1cm4gbV9h
cHBlbmRTb3VyY2VUb01lc3NhZ2U7IH0KQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9ySW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEVycm9ySW5zdGFuY2Uo
SlNHbG9iYWxEYXRhKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIGV4
cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBleHBsaWNpdCBFcnJvckluc3RhbmNl
KEpTR2xvYmFsRGF0YSosIFN0cnVjdHVyZSopOworICAgICAgICBleHBsaWNpdCBFcnJvckluc3Rh
bmNlKEpTR2xvYmFsRGF0YSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAg
ICBib29sIG1fYXBwZW5kU291cmNlVG9NZXNzYWdlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggZTEzMjUxY2U2MzQy
ODYwY2NlMzhjOTFjYTk0NGIyYmJjZGEyMjM2NC4uYTU3ZTk0N2ZkYWQzYmIyOTBjNDg3YmQ5MDE3
NWM2NDU4Mjc4OTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEVycm9yUHJvdG90eXBlKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiAKIC8vIEVDTUEgMTUuOS40Ci1F
cnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKK0Vycm9yUHJvdG90eXBlOjpFcnJvclBy
b3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQogICAgIDog
RXJyb3JJbnN0YW5jZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgLy8g
VGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIgaW4gRXJyb3JDb25zdHJ1Y3Rvcidz
IGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90
b3R5cGUuaAppbmRleCAzYzJmZWQzMDMyOTM4ZjFlMjJjNjc2MzU1NDQ5YjQzM2ZkNjYxYmE0Li45
NDM3ZDNhNjI5MTAyNTUwMWQ2YmE1MTliMzE4NDRiM2QzMGM5MGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBFcnJv
ckluc3RhbmNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGQzYzYzN2U0YzQ0
ODI2M2M0NDc5MGZiZjczZTA5NGEwNDBjMWE1M2UuLjFkNzQzMTUzY2ExNzZhZTUxNTEzYWFjZGZm
ZGIyZDYyODg3YmM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEtPmludGVy
cnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUpCisgICAgICAgIDogSlNOb25GaW5hbE9iamVj
dCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVj
dHVyZS5nZXQoKSkKICAgICB7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBAIEpTT2JqZWN0KiBj
cmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCiBjbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiBwdWJsaWM6CiAgICAgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEtPnRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZSkKKyAgICAgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT50ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1
Y3R1cmUuZ2V0KCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA1Y2QwMmY3MzNiZTQyY2NlMjBmM2FjN2JmMTIxYjY3
OTg1YjkwNDQxLi5mYTE0YWQ1MDYwZTBlYTcwNWFlOTI0NTI2NGExNDNjODUwMDI5NTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtNDgsMTAg
KzQ4LDYgQEAgTmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUoKQogewogfQogCi1W
UHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFibGUoKQotewotfQotCiBjb25zdCBD
bGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJlNj
cmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCB9OwogCiBFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
aW5TdHJpY3RDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCmluZGV4IDExODUyYmU4ZWRkOTFkYjc5OTI5YmEzYWRiYWFiZDUyY2U0OWFiZWIuLmZiZTMz
Y2Y5ODI4OGY5YmFjNjVjYWYwNDk3NWYxYTdhNmZlMmJmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTUyLDggKzUyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVE
ID0gLTE7CiAgICAgCiAgICAgcHVibGljOgotICAgICAgICBFeGVjdXRhYmxlQmFzZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50IG51bVBhcmFtZXRlcnMpCi0gICAgICAgICAgICA6IEpTQ2VsbChz
dHJ1Y3R1cmUpCisgICAgICAgIEV4ZWN1dGFibGVCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAg
OiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICAgICAgLCBtX251bVBhcmFt
ZXRlcnNGb3JDYWxsKG51bVBhcmFtZXRlcnMpCiAgICAgICAgICAgICAsIG1fbnVtUGFyYW1ldGVy
c0ZvckNvbnN0cnVjdChudW1QYXJhbWV0ZXJzKQogICAgICAgICB7CkBAIC02NSw3ICs2NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fbnVtUGFyYW1ldGVyc0ZvckNh
bGwgPT0gTlVNX1BBUkFNRVRFUlNfSVNfSE9TVDsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21w
b3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsg
fQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSAwOwpAQCAtMTE2LDEyICsxMTYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8s
IFR5cGVJbmZvKExlYWZUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7IH0KIAogICAgIHByaXZhdGU6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgTmF0
aXZlRXhlY3V0YWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUgY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSklUQ29kZSBjb25zdHJ1Y3RUaHVuaywgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKGdsb2Jh
bERhdGEubmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNf
SE9TVCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NU
KQogICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yKGNvbnN0cnVjdG9yKQogICAgICAgICB7CkBAIC0xMzIsNyArMTMyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKGdsb2Jh
bERhdGEubmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNf
SE9TVCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NU
KQogICAgICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yKGNvbnN0cnVjdG9yKQogICAgICAgICB7CkBAIC0xNDYsMjAgKzE0NiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAg
ICAgfTsKIAotICAgIGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxl
QmFzZSB7Ci0gICAgcHVibGljOgotICAgICAgICBWUHRySGFja0V4ZWN1dGFibGUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHN0cnVjdHVyZSwgTlVN
X1BBUkFNRVRFUlNfSVNfSE9TVCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgflZQ
dHJIYWNrRXhlY3V0YWJsZSgpOwotICAgIH07Ci0KICAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxl
IDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdEV4
ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQotICAgICAg
ICAgICAgOiBFeGVjdXRhYmxlQmFzZShzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01Q
SUxFRCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoKmdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICAgICAgICAgLCBtX3NvdXJjZShz
b3VyY2UpCiAgICAgICAgICAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJp
Y3RNb2RlRmVhdHVyZSA6IDApCiAgICAgICAgIHsKQEAgLTE3Myw3ICsxNjMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0KQotICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShzdHJ1
Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKKyAgICAgICAgICAgIDogRXhlY3V0
YWJsZUJhc2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05P
VF9DT01QSUxFRCkKICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAg
LCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQog
ICAgICAgICB7CkBAIC0yNDIsNyArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKICAgICAgICAgfQogI2VuZGlmCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyB9CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAwKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgU2NyaXB0RXhlY3V0YWJsZTo6
U3RydWN0dXJlRmxhZ3M7CkBAIC0yODksNyArMjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUlu
Zm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hp
bGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKQEAgLTM4Miw3ICszNzIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaXNjYXJkQ29kZSgpOwogICAgICAg
ICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSos
IERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQs
IDApOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
Zm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBib29sLCBpbnQgZmlyc3RM
aW5lLCBpbnQgbGFzdExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBhOWYwYTA2NjJkOWZlMDg3ODU1Zjhi
NDFjMWRlN2QyOGQ0YzE5YWJhLi45ZTdkOGQ1NDAxMGFiMjVjNDkyNGZiNzllYzk0ZTY1NDQwOWMw
ZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAotRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCitGdW5jdGlvbkNvbnN0
cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBl
KiBmdW5jdGlvblByb3RvdHlwZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZnVuY3Rp
b25Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaAppbmRleCA3ZjIxYjIwZmM1MWE2MTcxODUzZDNkZWJkZWZjYThhMDg0MDIy
YmZlLi4zMWEwNGM5OWZmMjZhNWYzYTY4MWI0MjRlMGQyZDM4M2I2MDY3M2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBA
IC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Db25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBGdW5jdGlvblByb3RvdHlwZSopOworICAgICAgICBGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RnVuY3Rpb25Qcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBj
MmQ4YWQzNzdhNmQ0ZDhmMGRhZWYxN2Q1N2QxYTUyMWY1YjczYTNkLi5lMmE0OTQxNmRkZWUzYzRi
NzVmMWZhMzI2MDc1NTgzNTE3OTU3ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByb3RvRnVuY0FwcGx5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwogCi1GdW5jdGlvblBy
b3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkK
K0Z1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bGxJZGVudGlmaWVyKQogewogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5oCmluZGV4IDQ0N2YwMGJkODEwZjVlNTllZjc5NmE1ODgyZWExY2Y2ZDRmMjVjODEuLmFi
NzA4ZGQ3ZGUzM2ExOTAwYTQzYjBhYTU4ZWM2Y2FhNmQ1MTE3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMjcsMTAgKzI3
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGUgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4pOworICAgICAgICBGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIGFkZEZ1bmN0aW9uUHJvcGVydGll
cyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1
cmUsIEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpTRnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9u
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pCisgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG8pCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IDBjZGZlYzQ5ODg2MmY0
OTA0NmRjYjA4ZTNmZDM1ODFkNmNlODc4ZTEuLmEyMjJjN2E0YmExZDQ4MDg4NDk2MGRiYmY4YWYy
OWQ3Y2Q4Yjc4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYykKLSAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5nZXR0ZXJTZXR0
ZXJTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBn
ZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGdldHRlcik7IH0KICAgICAg
ICAgSlNPYmplY3QqIHNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyLmdldCgpOyB9CiAg
ICAgICAgIHZvaWQgc2V0U2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3Qq
IHNldHRlcikgeyBtX3NldHRlci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc2V0dGVyKTsgfQotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oR2V0dGVyU2V0dGVyVHlwZSwgT3Zl
cnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcAppbmRleCBhZWY2MGM4NzY1MDFiMjVmOGMzODE3OWNjN2U2N2EyMDRhMDM0ZGU5Li4y
NzYxMWI3NTdiMzRiZTVjNTY0Y2UwM2JiMDU1M2JhNzM2ZTY0NjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAt
NTksNyArNTksNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiAgICAg
c19kdG9hUDVNdXRleCA9IG5ldyBNdXRleDsKICAgICBpbml0aWFsaXplRGF0ZXMoKTsKICAgICBS
ZWdpc3RlckZpbGU6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBTdHJ1Y3R1cmU6OmluaXRp
YWxpemVUaHJlYWRpbmcoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCmluZGV4IDYwOTE4MzFhNWZhODBiMDYx
NTA3M2JmZTY5NTI5YjA5ZDFlM2Y1MGMuLmMzYjA3ZjgyOTcwMjhlOTZmMmZmNTAzZDk1MTc4ZjFj
Y2Y5OGY2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uY3BwCkBAIC0zNiwxMyArMzYsMTIgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChJbnRlcm5hbEZ1bmN0aW9uKTsKIAogY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rp
b246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c19p
bmZvLCAwLCAwIH07CiAKLUludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3Qoc3RydWN0dXJlKQorSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihW
UHRyU3RlYWxpbmdIYWNrVHlwZSkKKyAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChWUHRy
U3RlYWxpbmdIYWNrKQogewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CiAKLUlu
dGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK0ludGVybmFsRnVuY3Rpb246
OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDA4Yzk4YTUzODBm
MTcyOTUzNmVkOTkxOWZmYmJiODY1NDkwYWExOTQuLjI4ZTI2MGUzMDEzMGRkZDhjMGFlNzk2ZDY2
MzMzNzI5OGZlOWNmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0
IFVTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAog
ICAgICAgICB7IAogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7IAogICAgICAgICB9CkBAIC00OCw5ICs0OCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAg
ICAgICAgLy8gT25seSB1c2VkIHRvIGFsbG93IHVzIHRvIGRldGVybWluZSB0aGUgSlNGdW5jdGlv
biB2cHRyCi0gICAgICAgIEludGVybmFsRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUpOworICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hh
Y2tUeXBlKTsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSosIEpTR2xv
YmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgSWRlbnRpZmll
ciYpOworICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCmluZGV4
IDAwZmUwYTAxMzM5MDYwNTMxOTQyMmQwMDgxMzk3NWNjYzE2MzBmM2UuLjAxNjU0ODg1YmQ3YmQx
ZTU5MzIyNTBmMjY0YzM1ZmM3ZWZmN2VlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyksIEFub255bW91c1Nsb3RDb3VudCwgMCk7CiAgICAgICAgIH0KQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEpTQVBJVmFsdWVXcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKLSAgICAg
ICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5hcGlXcmFwcGVyU3RydWN0dXJlLmdl
dCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9i
YWxEYXRhKCkuYXBpV3JhcHBlclN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgewogICAgICAgICAg
ICAgbV92YWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAg
ICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDgzYjZhMWMxMmM0YzhkZDVkZTkwZTA0Nzcz
NTIxMDgzNTk0NzBiOGMuLjRlMzY2NDFkMGU1YzgwNWVjOWJmMGM4ZmQ2ZmYxMmQxYTU3ODE2NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQWN0aXZhdGlvbik7
CiBjb25zdCBDbGFzc0luZm8gSlNBY3RpdmF0aW9uOjpzX2luZm8gPSB7ICJKU0FjdGl2YXRpb24i
LCAmQmFzZTo6c19pbmZvLCAwLCAwIH07CiAKIEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0aW9uKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSkKLSAgICA6IEJhc2UoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuYWN0aXZhdGlvblN0cnVjdHVy
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLT5zeW1ib2xUYWJsZSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpKQorICAgIDogQmFzZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCkuYWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKSwgZnVuY3Rpb25FeGVjdXRhYmxlLT5z
eW1ib2xUYWJsZSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygpKQogICAgICwgbV9udW1QYXJhbWV0
ZXJzTWludXNUaGlzKHN0YXRpY19jYXN0PGludD4oZnVuY3Rpb25FeGVjdXRhYmxlLT5wYXJhbWV0
ZXJDb3VudCgpKSkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJzKGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkpCiAgICAgLCBtX3JlcXVpcmVzRHluYW1pY0NoZWNrcyhm
dW5jdGlvbkV4ZWN1dGFibGUtPnVzZXNFdmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQWN0aXZhdGlvbi5oCmluZGV4IDc0NjNmNDczZGM4YzQ2MDViNjQwODM2ZmE4NGQ4
NGRjZTNkYTg5NWIuLjY1NjQyZjExMjYyYjM1ZTQ4Yzc3ZmRmZjliZTJmMWIxZTY1YzY0Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCkBAIC02Niw3
ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgTmVlZHNUaGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc01hcmtDaGlsZHJl
biB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXgg
MWQ2MjFmZTlmOTBkMDRjMzRmZGNhMjIyYTllZmJlNDEyNTBiNWUyMy4uYmY2MTA5N2FjZjg4NThk
NzI5MjczZjZkYjYyNjQ0ZDk5YzZjMTJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKQEAgLTEyNywyNiArMTI3LDEyIEBAIGlubGluZSB2b2lkIEpTQXJyYXk6
OmNoZWNrQ29uc2lzdGVuY3koQ29uc2lzdGVuY3lDaGVja1R5cGUpCiAjZW5kaWYKIAogSlNBcnJh
eTo6SlNBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qo
U3RydWN0dXJlOjpjcmVhdGUoU3RydWN0dXJlOjpWUHRyU3RlYWxpbmdIYWNrLCAmc19pbmZvKSkK
KyAgICA6IEpTTm9uRmluYWxPYmplY3QoVlB0clN0ZWFsaW5nSGFjaykKIHsKLSAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwotCi0gICAgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5ID0gMDsK
LQotICAgIG1fc3RvcmFnZSA9IHN0YXRpY19jYXN0PEFycmF5U3RvcmFnZSo+KGZhc3RaZXJvZWRN
YWxsb2Moc3RvcmFnZVNpemUoaW5pdGlhbENhcGFjaXR5KSkpOwotICAgIG1fc3RvcmFnZS0+bV9h
bGxvY0Jhc2UgPSBtX3N0b3JhZ2U7Ci0gICAgbV9pbmRleEJpYXMgPSAwOwotICAgIG1fdmVjdG9y
TGVuZ3RoID0gaW5pdGlhbENhcGFjaXR5OwotCi0gICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAg
IAotICAgIC8vIEl0J3Mgbm90IHNhZmUgdG8gY2FsbCBIZWFwOjpoZWFwKHRoaXMpIGluIG9yZGVy
IHRvIHJlcG9ydCBleHRyYSBtZW1vcnkKLSAgICAvLyBjb3N0IGhlcmUsIGJlY2F1c2UgdGhlIFZQ
dHJTdGVhbGluZ0hhY2tUeXBlIEpTQXJyYXkgaXMgbm90IGFsbG9jYXRlZCBvbgotICAgIC8vIHRo
ZSBoZWFwLiBGb3IgdGhlIHNhbWUgcmVhc29uLCBpdCdzIE9LIG5vdCB0byByZXBvcnQgZXh0cmEg
Y29zdC4KIH0KIAotSlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorSlNBcnJheTo6
SlNBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIApAQCAtMTYyLDggKzE0OCw4IEBAIEpTQXJyYXk6OkpT
QXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgSGVhcDo6
aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0b3JhZ2VTaXplKDApKTsKIH0KIAot
SlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
dW5zaWduZWQgaW5pdGlhbExlbmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQot
ICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitKU0FycmF5OjpKU0FycmF5KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRp
YWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKKyAgICA6IEpTTm9uRmlu
YWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiAKQEAgLTIwNCw4ICsxOTAsOCBAQCBKU0FycmF5OjpKU0FycmF5KE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLAog
ICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzdG9yYWdlU2l6ZShp
bml0aWFsQ2FwYWNpdHkpKTsKIH0KIAotSlNBcnJheTo6SlNBcnJheShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBB
cmdMaXN0JiBsaXN0KQotICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitKU0FycmF5
OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IEFyZ0xpc3QmIGxpc3QpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggMWE2ZWJhOGIwZjlmNTZjN2U1ZWI3
OTQ2MGRmYzhjOGE0ZjFlMmY5ZC4uOGJlODUxMzZiNDlkMTA3ZjVmYjZlOTUyZGZhYzkwMjllNTZm
YWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNjEsMTIg
KzYxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwog
CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFZQdHJTdGVhbGluZ0hhY2tUeXBlIHsgVlB0clN0
ZWFsaW5nSGFjayB9OwogICAgICAgICBKU0FycmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBlKTsKIAot
ICAgICAgICBleHBsaWNpdCBKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwot
ICAgICAgICBKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIHVuc2lnbmVkIGlu
aXRpYWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlKTsKLSAgICAgICAgSlNBcnJheShKU0dsb2Jh
bERhdGEmLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0
aWFsVmFsdWVzKTsKKyAgICAgICAgZXhwbGljaXQgSlNBcnJheShKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKKyAgICAgICAgSlNBcnJheShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBpbml0aWFsTGVuZ3RoLCBBcnJheUNyZWF0aW9uTW9kZSk7CisgICAgICAgIEpTQXJyYXko
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgQXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7
CiAgICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CkBAIC0xMjQsNyArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXIm
KTsKICAgICAgICAgdm9pZCBjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiwgUmVnaXN0ZXIqLCB1
aW50MzJfdCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRl
QXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3Bw
CmluZGV4IGZiYWVhMWRmNmFhMmNlZjgwZDY3ZDQxMWRlMjQ5OWU1Y2Y1ZTFjNDguLmMyYWJhZWUx
YzhmYmZjMWViODQ2Zjk5MDhkNjQ3ZDFhYWE0ZTE5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0J5dGVBcnJheTo6c19kZWZhdWx0SW5mbyA9IHsg
IkJ5dGVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIDAgfTsKIAotSlNCeXRlQXJyYXk6OkpTQnl0
ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0
dXJlKQorSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkK
IHsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCku
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVh
ZE9ubHkgfCBEb250RGVsZXRlKTsKQEAgLTUwLDcgKzUwLDcgQEAgSlNCeXRlQXJyYXk6On5KU0J5
dGVBcnJheSgpCiAjZW5kaWYKIAogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gSlNCeXRlQXJyYXk6
OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKQorU3RydWN0dXJlKiBKU0J5dGVB
cnJheTo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CiAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIGNsYXNzSW5mbyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAppbmRleCBlNjc0
OTU4MGIxMjQzMzJjYjhiYTRkMTBmNGM0ZjViZjU0ZWQ0ZGQ4Li5jNDgxYmI0YzhiOTNlYzE2MTI5
NzFkYTE0OTVhNzZlNzJiZGY1YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmgKQEAgLTc1LDggKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgc2V0SW5kZXgoaSwgYnl0ZVZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIEpT
Qnl0ZUFycmF5KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFdURjo6
Qnl0ZUFycmF5KiBzdG9yYWdlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKKyAgICAgICAgSlNCeXRlQXJyYXko
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UpOworICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1
ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkBAIC0xMDAsOSAr
MTAwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBlbnVtIFZQdHJTdGVhbGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5nSGFjayB9
OwogICAgICAgICBKU0J5dGVBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSkKLSAgICAgICAgICAg
IDogSlNOb25GaW5hbE9iamVjdChTdHJ1Y3R1cmU6OmNyZWF0ZShTdHJ1Y3R1cmU6OlZQdHJTdGVh
bGluZ0hhY2ssICZzX2luZm8pKQorICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KFZQdHJT
dGVhbGluZ0hhY2spCiAgICAgICAgIHsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCBjZTdmZTIyNzhiM2U2NTgxYTRiNDkwZTc2YzQ0YzBj
MTZjYTMyYzgxLi5hZmQ4NDUwMjQ3ZDI3N2RhZTI5YzY3NThiMTVhOWZhYzdiNGJhMDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTIwOSw0ICsyMDksMTQg
QEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
KSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitib29sIGlzWm9tYmllKGNvbnN0IEpTQ2VsbCog
Y2VsbCkKK3sKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgcmV0dXJuIGNlbGwgJiYgY2Vs
bC0+aXNab21iaWUoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNlbGwpOworICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggY2JmYzExMzczY2JhNjk0YWY0NzkxYzQzMzkzNGQ0
YjcxMDY1NWRmZS4uN2VlODcxYzFjNjkwMjRiN2Q0ODJiYTBjNTQ1MDJmNWE1ODUxOWYyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNp
bmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgogI2lu
Y2x1ZGUgIk1hcmtTdGFjay5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02OSwxNCArNjgsMTkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgU2NvcGVDaGFp
bk5vZGU7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgZW51bSBWUHRy
U3RlYWxpbmdIYWNrVHlwZSB7IFZQdHJTdGVhbGluZ0hhY2sgfTsKKwogICAgIHByaXZhdGU6Ci0g
ICAgICAgIGV4cGxpY2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKKyAgICAgICAgZXhwbGljaXQgSlND
ZWxsKFZQdHJTdGVhbGluZ0hhY2tUeXBlKSB7IH0KKyAgICAgICAgSlNDZWxsKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlRHVt
bXlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAKICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5
cGUuCiAgICAgICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKQEAgLTE0Miw3ICsxNDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxs
LCBtX3N0cnVjdHVyZSk7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJ1Y3R1cmUqIGNvbnN0ICog
YWRkcmVzc09mU3RydWN0dXJlKCkgY29uc3QKKyAgICAgICAgY29uc3Qgdm9pZCogYWRkcmVzc09m
U3RydWN0dXJlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICZtX3N0cnVj
dHVyZTsKICAgICAgICAgfQpAQCAtMTU1LDEyICsxNTksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAg
fTsKIAotICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAg
IDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKQogICAgIHsKKyAgICAg
ICAgLy8gVmVyeSBmaXJzdCBzZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3QgaGF2ZSBhIHJlYWwgc3Ry
dWN0dXJlLgorICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwgIWdsb2JhbERhdGEuZHVtbXlN
YXJrYWJsZUNlbGxTdHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIGlubGluZSBKU0NlbGw6On5KU0Nl
bGwoKQpAQCAtMTY5LDExICsxNzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUg
U3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gbV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9
CiAKLSAgICBpbmxpbmUgdm9pZCBKU0NlbGw6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smKQorICAg
IGlubGluZSB2b2lkIEpTQ2VsbDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQog
ICAgIHsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOwogICAgIH0KIAog
ICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtMzQwLDcgKzM0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShKU0NfWk9NQklF
UykKICAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1pvbWJpZSgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzWm9tYmllKCk7
CisgICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKSA+IChKU0NlbGwqKTB4MWZmZmZm
ZmZmTCAmJiBhc0NlbGwoKS0+aXNab21iaWUoKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBiOGU0OTliNjg3OWNi
M2JlMTFlOWM1NzcyMWJlOTRlYWM1ZTA3ZWE5Li5hMThlOTczMDZiYmY3NDc4NDhiZDlmYzJjYjU5
YjUwMmNjYmE1MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtNTYsMTQgKzU2LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rp
b25Ob25JbmxpbmUoKSBjb25zdAogICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpOwogfQogCi1K
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlLCBWUHRySGFja0V4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCi0gICAgOiBCYXNlKHN0cnVjdHVy
ZSkKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCisgICAgOiBC
YXNlKFZQdHJTdGVhbGluZ0hhY2spCiB7Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
LSAgICBtX2V4ZWN1dGFibGUuc2V0V2l0aG91dFdyaXRlQmFycmllcihleGVjdXRhYmxlKTsKIH0K
IAotSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVu
aykKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1bmspCiAgICAgOiBCYXNlKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgdGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKQEAgLTczLDcgKzcxLDcg
QEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXMKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLUpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gZnVuYykKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBt
X3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAppbmRleCA1MDViOWRlMjcyYjVkNGQ1Y2FkYjAwYWIxMGM0YmVmOWZiM2I2MjNkLi4xNzRj
ZDM4NGU3MTQ1NDg0M2JlNWQyMzkwNDM5MjIxMWMzOTRhZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00NSw4ICs0NSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogCiAg
ICAgcHVibGljOgotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKLSAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVFeGVjdXRhYmxlKik7CisgICAgICAgIEpTRnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBj
b25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAgICBKU0Z1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCwgY29uc3Qg
SWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVj
U3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2
aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7IAogICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICAgICAg
fQpAQCAtODcsNyArODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEpTRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgVlB0
ckhhY2tFeGVjdXRhYmxlKik7CisgICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0ZWFs
aW5nSGFja1R5cGUpOwogCiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKaW5kZXggNjI5MGZmOGM3YTE2NDA2YzJhNDg1YTM4ZjUwMDk2NzgzMTA3MTk1Yi4uNWY2OGRl
OTNiNjQ3NDcwNTU0NDJlOWNhYzRlZTYzMzAyNDk3MmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNab21iaWUu
aCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCkBAIC0xMTUsMjYgKzExNiwxOCBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRy
cygpCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQXJyYXkpIDw9IHNpemVvZihzdG9yYWdl
KSwgc2l6ZW9mX0pTQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7CiAgICAgSlNDZWxs
KiBqc0FycmF5ID0gbmV3IChzdG9yYWdlKSBKU0FycmF5KEpTQXJyYXk6OlZQdHJTdGVhbGluZ0hh
Y2spOwogICAgIEpTR2xvYmFsRGF0YTo6anNBcnJheVZQdHIgPSBqc0FycmF5LT52cHRyKCk7Ci0g
ICAganNBcnJheS0+fkpTQ2VsbCgpOwogCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQnl0
ZUFycmF5KSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0J5dGVBcnJheV9tdXN0X2JlX2xl
c3NfdGhhbl9zdG9yYWdlKTsKICAgICBKU0NlbGwqIGpzQnl0ZUFycmF5ID0gbmV3IChzdG9yYWdl
KSBKU0J5dGVBcnJheShKU0J5dGVBcnJheTo6VlB0clN0ZWFsaW5nSGFjayk7CiAgICAgSlNHbG9i
YWxEYXRhOjpqc0J5dGVBcnJheVZQdHIgPSBqc0J5dGVBcnJheS0+dnB0cigpOwotICAgIGpzQnl0
ZUFycmF5LT5+SlNDZWxsKCk7CiAKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNTdHJpbmcp
IDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTU3RyaW5nX211c3RfYmVfbGVzc190aGFuX3N0
b3JhZ2UpOwogICAgIEpTQ2VsbCoganNTdHJpbmcgPSBuZXcgKHN0b3JhZ2UpIEpTU3RyaW5nKEpT
U3RyaW5nOjpWUHRyU3RlYWxpbmdIYWNrKTsKICAgICBKU0dsb2JhbERhdGE6OmpzU3RyaW5nVlB0
ciA9IGpzU3RyaW5nLT52cHRyKCk7Ci0gICAganNTdHJpbmctPn5KU0NlbGwoKTsKIAogICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihKU0Z1bmN0aW9uKSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVv
Zl9KU0Z1bmN0aW9uX211c3RfYmVfbGVzc190aGFuX3N0b3JhZ2UpOwotICAgIGNoYXIgZXhlY3V0
YWJsZVN0b3JhZ2Vbc2l6ZW9mKFZQdHJIYWNrRXhlY3V0YWJsZSldOwotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShTdHJ1Y3R1cmU6
OlZQdHJTdGVhbGluZ0hhY2ssIDApOwotICAgIEpTQ2VsbCogZXhlY3V0YWJsZSA9IG5ldyAoZXhl
Y3V0YWJsZVN0b3JhZ2UpIFZQdHJIYWNrRXhlY3V0YWJsZShleGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpKTsKLSAgICBKU0NlbGwqIGpzRnVuY3Rpb24gPSBuZXcgKHN0b3JhZ2UpIEpTRnVuY3Rpb24o
U3RydWN0dXJlOjpjcmVhdGUoU3RydWN0dXJlOjpWUHRyU3RlYWxpbmdIYWNrLCAmSlNGdW5jdGlv
bjo6c19pbmZvKSwgc3RhdGljX2Nhc3Q8VlB0ckhhY2tFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSkp
OworICAgIEpTQ2VsbCoganNGdW5jdGlvbiA9IG5ldyAoc3RvcmFnZSkgSlNGdW5jdGlvbihKU0Nl
bGw6OlZQdHJTdGVhbGluZ0hhY2spOwogICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIg
PSBqc0Z1bmN0aW9uLT52cHRyKCk7Ci0gICAgZXhlY3V0YWJsZS0+fkpTQ2VsbCgpOwotICAgIGpz
RnVuY3Rpb24tPn5KU0NlbGwoKTsKIH0KIAogSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xv
YmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJlYWRTdGFja1R5
cGUpCkBAIC0xNjgsMjkgKzE2MSwzOSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgICwg
ZXhjbHVzaXZlVGhyZWFkKDApCiAjZW5kaWYKIHsKLSAgICBhY3RpdmF0aW9uU3RydWN0dXJlID0g
SlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBpbnRl
cnJ1cHRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlID0gSlNOb25GaW5hbE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9y
U3RydWN0dXJlID0gSlNOb25GaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051
bGwoKSk7Ci0gICAgc3RhdGljU2NvcGVTdHJ1Y3R1cmUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBzdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZSA9IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IGpzTnVsbCgpKTsKLSAgICBzdHJpbmdTdHJ1Y3R1cmUgPSBKU1N0cmluZzo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgbm90QW5PYmplY3RTdHJ1Y3R1cmUgPSBKU05vdEFu
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBwcm9wZXJ0eU5h
bWVJdGVyYXRvclN0cnVjdHVyZSA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIGdldHRlclNldHRlclN0cnVjdHVyZSA9IEdldHRl
clNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgYXBpV3JhcHBl
clN0cnVjdHVyZSA9IEpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKTsKLSAgICBzY29wZUNoYWluTm9kZVN0cnVjdHVyZSA9IFNjb3BlQ2hhaW5Ob2RlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBleGVjdXRhYmxlU3RydWN0dXJl
ID0gRXhlY3V0YWJsZUJhc2U6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAg
IG5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZSA9IEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBwcm9n
cmFtRXhlY3V0YWJsZVN0cnVjdHVyZSA9IFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAg
IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlID0gSlNDZWxsOjpjcmVhdGVEdW1teVN0cnVjdHVy
ZSgqdGhpcyk7Ci0gICAgc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmVDaGFpbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0KICAgICBpbnRlcnByZXRlciA9IG5l
dyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQp
CiAgICAgICAgIG1fc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKIAorICAgIC8vIE5l
ZWQgdG8gYmUgY2FyZWZ1bCB0byBrZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudCBoZXJlCisgICAg
SWRlbnRpZmllclRhYmxlKiBleGlzdGluZ0VudHJ5SWRlbnRpZmllclRhYmxlID0gd3RmVGhyZWFk
RGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoaWRlbnRpZmllclRhYmxlKTsKKyAgICBK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIHN0cnVjdHVyZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CisgICAgYWN0
aXZhdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBqc051bGwoKSkpOworICAgIGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKSk7CisgICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLnNldCgqdGhp
cywgSlNOb25GaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOwor
ICAgIHN0YXRpY1Njb3BlU3RydWN0dXJlLnNldCgqdGhpcywgSlNTdGF0aWNTY29wZU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIHN0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlLnNldCgqdGhpcywgU3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBzdHJpbmdTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIG5vdEFuT2Jq
ZWN0U3RydWN0dXJlLnNldCgqdGhpcywgSlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCBqc051bGwoKSkpOworICAgIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCgq
dGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051
bGwoKSkpOworICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIGFwaVdyYXBwZXJTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU0FQSVZhbHVlV3JhcHBlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCBqc051bGwoKSkpOworICAgIHNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLnNldCgqdGhpcywgU2Nv
cGVDaGFpbk5vZGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBleGVj
dXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXhlY3V0YWJsZUJhc2U6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBuYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkp
OworICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBwcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIGpzTnVsbCgpKSk7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgp
KSk7CisgICAgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0NlbGw6OmNy
ZWF0ZUR1bW15U3RydWN0dXJlKCp0aGlzKSk7CisgICAgc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwo
KSkpOworCisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgIHpvbWJpZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTWm9tYmllOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisjZW5k
aWYKKworICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGV4aXN0
aW5nRW50cnlJZGVudGlmaWVyVGFibGUpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXJ0
UHJvZmlsZXJTZXJ2ZXJJZk5lZWRlZCgpOwogI2VuZGlmCkBAIC0yMjIsNiArMjI1LDMzIEBAIEpT
R2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBU
aHJlYWRTdGFja1R5cGUgdGhyZWFkCiAjZW5kaWYKIH0KIAordm9pZCBKU0dsb2JhbERhdGE6OmNs
ZWFyQnVpbHRpblN0cnVjdHVyZXMoKQoreworICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5jbGVhcigp
OworICAgIGFjdGl2YXRpb25TdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBpbnRlcnJ1cHRlZEV4ZWN1
dGlvbkVycm9yU3RydWN0dXJlLmNsZWFyKCk7CisgICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9y
U3RydWN0dXJlLmNsZWFyKCk7CisgICAgc3RhdGljU2NvcGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5jbGVhcigpOworICAgIHN0cmluZ1N0cnVj
dHVyZS5jbGVhcigpOworICAgIG5vdEFuT2JqZWN0U3RydWN0dXJlLmNsZWFyKCk7CisgICAgcHJv
cGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBnZXR0ZXJTZXR0ZXJTdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICBhcGlXcmFwcGVyU3RydWN0dXJlLmNsZWFyKCk7CisgICAgc2Nv
cGVDaGFpbk5vZGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBleGVjdXRhYmxlU3RydWN0dXJlLmNs
ZWFyKCk7CisgICAgbmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5jbGVhcigpOworICAgIGV2YWxF
eGVjdXRhYmxlU3RydWN0dXJlLmNsZWFyKCk7CisgICAgcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZS5jbGVhcigpOworICAgIHN0cnVjdHVyZUNoYWlu
U3RydWN0dXJlLmNsZWFyKCk7CisgICAgCisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgIHpv
bWJpZVN0cnVjdHVyZS5jbGVhcigpOworI2VuZGlmCit9CisKIEpTR2xvYmFsRGF0YTo6fkpTR2xv
YmFsRGF0YSgpCiB7CiAgICAgLy8gQnkgdGhlIHRpbWUgdGhpcyBpcyBkZXN0cm95ZWQsIGhlYXAu
ZGVzdHJveSgpIG11c3QgYWxyZWFkeSBoYXZlIGJlZW4gY2FsbGVkLgpAQCAtMjgyLDEwICszMTIs
NyBAQCBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFk
U3RhY2tUeXBlIHR5cGUpCiAKIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6
OmNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSkKIHsKLSAgICBTdHJ1Y3R1cmU6OnN0
YXJ0SWdub3JpbmdMZWFrcygpOwotICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGRhdGEgPSBjcmVh
dGUodHlwZSk7Ci0gICAgU3RydWN0dXJlOjpzdG9wSWdub3JpbmdMZWFrcygpOwotICAgIHJldHVy
biBkYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY3JlYXRlKHR5cGUpOwogfQogCiBib29sIEpT
R2xvYmFsRGF0YTo6c2hhcmVkSW5zdGFuY2VFeGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAwYzM3Y2RhOTI5MmIzYTllYjU0YTUyNzMz
MTU4ODMwYTAzN2E5YTJhLi5mMTA4NWFmNDJiMTkwODAxZWNmOGViNTc1YjEyNzQ5MTg1MDdlOTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VD
YWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJTdHJv
bmcuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJOdW1lcmljU3RyaW5ncy5oIgpAQCAtMTQ1LDI0ICsxNDYsMjkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwQ29uc3RydWN0b3JUYWJsZTsKICAg
ICAgICAgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdUYWJsZTsKICAgICAgICAgCi0gICAgICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IGFjdGl2YXRpb25TdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGludGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gc3RhdGljU2NvcGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8
U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5v
dEFuT2JqZWN0U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm9wZXJ0eU5h
bWVJdGVyYXRvclN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0
dGVyU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBhcGlXcmFwcGVyU3RydWN0
dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzY29wZUNoYWluTm9kZVN0cnVjdHVyZTsK
LSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gbmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
c3RydWN0dXJlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBhY3RpdmF0aW9u
U3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZXJtaW5hdGVkRXhl
Y3V0aW9uRXJyb3JTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0YXRpY1Nj
b3BlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RyaW5nU3RydWN0dXJl
OworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBub3RBbk9iamVjdFN0cnVjdHVyZTsKKyAgICAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAg
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclN0cnVjdHVyZTsKKyAgICAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gYXBpV3JhcHBlclN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gc2NvcGVDaGFpbk5vZGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGV4ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG5hdGl2ZUV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV2YWxFeGVjdXRh
YmxlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0
cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1
cmU7CisKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IHpvbWJpZVN0cnVjdHVyZTsKKyNlbmRpZgogCiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3JlVlB0
cnMoKTsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNBcnJheVZQdHI7CkBA
IC0yNjEsNiArMjY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZHVtcFJlZ0V4
cFRyYWNlKCk7CiAgICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJl
dHVybiBoZWFwLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7IH0KICAgICAgICAgSGFuZGxlU2xvdCBh
bGxvY2F0ZUxvY2FsSGFuZGxlKCkgeyByZXR1cm4gaGVhcC5hbGxvY2F0ZUxvY2FsSGFuZGxlKCk7
IH0KKyAgICAgICAgdm9pZCBjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSk7
CkBAIC0yNzIsNiArMjc5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGFja0JvdW5k
cyBtX3N0YWNrOwogICAgIH07CiAKKyAgICBpbmxpbmUgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2Jh
bEhhbmRsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgeworICAgICAgICByZXR1cm4g
Z2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpOworICAgIH0KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBKU0dsb2JhbERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDg0Yzg1YWU3YWNmODJmY2Jh
OTM3ZDQ1ZDdiMmFlZDczMzNlZjY2MzMuLmI4Mjk0OWFiZWRiOGE0Yjk4YzhiMDY4ZmRhZmNmZWZl
YWU4Mzc4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTg0LDEyICs4NCw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgaW5saW5lIHZvaWQgbWFya0lmTmVlZGVkKE1hcmtTdGFjayYgbWFya1N0YWNrLCBXcml0CiAg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQodik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtYXJr
SWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0IFJlZlB0cjxTdHJ1Y3R1cmU+JiBz
KQotewotICAgIGlmIChzKQotICAgICAgICBzLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci19
Ci0KIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogewogICAgIEFTU0VSVChKU0xv
Y2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwpAQCAtMTc2LDQ2ICsxNzAsNDYgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgLy8gUHJv
dG90eXBlcwogCiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBuZXcgKGV4ZWMpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIHRoaXMsIEZ1bmN0aW9u
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSkp
KTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdpbGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBl
IGlzIGNyZWF0ZWQuCi0gICAgbV9mdW5jdGlvblN0cnVjdHVyZSA9IEpTRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwotICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOworICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uID0gMDsKICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1
bmN0aW9uID0gMDsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRp
ZXMoZXhlYywgdGhpcywgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbiwg
JmFwcGx5RnVuY3Rpb24pOwogICAgIG1fY2FsbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIGNhbGxGdW5jdGlvbik7CiAgICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgT2JqZWN0UHJvdG90eXBl
KGV4ZWMsIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwganNOdWxsKCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKSk7Ci0gICAgbV9m
dW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0
aW9uKG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5z
dHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICBtX2VtcHR5T2JqZWN0U3RydWN0
dXJlID0gbV9vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CisgICAgbV9lbXB0eU9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CiAK
LSAgICBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpOwotICAgIG1fYXJndW1lbnRzU3RydWN0dXJlID0gQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7Ci0gICAgbV9j
YWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlID0gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7
Ci0gICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KTsKKyAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Pjo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKIAog
ICAgIG1fYXJyYXlQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChl
eGVjKSBBcnJheVByb3RvdHlwZSh0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgbV9h
cnJheVN0cnVjdHVyZSA9IEpTQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwotICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlID0gUmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2FycmF5U3RydWN0dXJlLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBSZWdFeHBN
YXRjaGVzQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fYXJyYXlQ
cm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fc3RyaW5nUHJvdG90eXBlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIHRoaXMsIFN0
cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPSBTdHJp
bmdPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fc3RyaW5nUHJv
dG90eXBlLmdldCgpKTsKKyAgICBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBTdHJpbmdPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIG1fc3RyaW5nUHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX2Jvb2xlYW5Qcm90
b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBCb29sZWFuUHJv
dG90eXBlKGV4ZWMsIHRoaXMsIEJvb2xlYW5Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVj
dHVyZS5nZXQoKSkpOwotICAgIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSA9IEJvb2xlYW5PYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fYm9vbGVhblByb3RvdHlw
ZS5nZXQoKSk7CisgICAgbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIEJvb2xlYW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fYm9vbGVhblByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9udW1iZXJQcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOdW1iZXJQcm90b3R5
cGUoZXhlYywgdGhpcywgTnVtYmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCkpKTsKLSAgICBtX251bWJlck9iamVjdFN0cnVjdHVyZSA9IE51bWJlck9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9udW1iZXJQcm90b3R5cGUuZ2V0KCkp
OworICAgIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIE51bWJlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9u
dW1iZXJQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fZGF0ZVByb3RvdHlwZS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIERhdGVQcm90b3R5cGUoZXhlYywgdGhpcywg
RGF0ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgbV9kYXRlU3RydWN0dXJlID0gRGF0ZUluc3RhbmNl
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2RhdGVQcm90b3R5cGUuZ2V0
KCkpOworICAgIG1fZGF0ZVN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBE
YXRlSW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZGF0ZVBy
b3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgdGhpcywgUmVn
RXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICBtX3Jl
Z0V4cFN0cnVjdHVyZSA9IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fcmVnRXhwU3RydWN0dXJl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAg
IG1fbWV0aG9kQ2FsbER1bW15LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpKTsKIAogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlw
ZSA9IG5ldyAoZXhlYykgRXJyb3JQcm90b3R5cGUoZXhlYywgdGhpcywgRXJyb3JQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgbV9lcnJvclN0cnVjdHVyZSA9
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGVycm9y
UHJvdG90eXBlKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCks
IGVycm9yUHJvdG90eXBlKSk7CiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIApAQCAtMjMxLDggKzIy
NSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAg
ICAgbV9lcnJvckNvbnN0cnVjdG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAo
ZXhlYykgRXJyb3JDb25zdHJ1Y3RvcihleGVjLCB0aGlzLCBFcnJvckNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgZXJyb3JQcm90b3R5cGUpKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVycm9y
UHJvdG90eXBlU3RydWN0dXJlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT5nbG9iYWxEYXRhKCksIGVycm9yUHJvdG90eXBlKTsKLSAgICBSZWZQdHI8U3RydWN0
dXJlPiBuYXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OworICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUgPSBOYXRpdmVF
cnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3JQ
cm90b3R5cGUpOworICAgIFN0cnVjdHVyZSogbmF0aXZlRXJyb3JTdHJ1Y3R1cmUgPSBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQcm90b3R5cGVT
dHJ1Y3R1cmUsICJFdmFsRXJyb3IiKSk7CiAgICAgbV9yYW5nZUVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiKSk7CiAgICAgbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVj
dG9yLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihleGVjLCB0aGlzLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIpKTsKQEAgLTM0MiwyMSArMzM2LDIx
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFj
aykKICAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9kYXRlUHJvdG90eXBlKTsKICAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9yZWdFeHBQcm90b3R5cGUpOwogCi0gICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgbV9hcmd1bWVudHNTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssIG1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIG1fZGF0ZVN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
bV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9l
cnJvclN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9mdW5jdGlvblN0
cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9udW1iZXJPYmplY3RTdHJ1
Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX3JlZ0V4cFN0cnVjdHVy
ZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUp
OwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fYXJndW1lbnRzU3RydWN0dXJlKTsK
KyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9hcnJheVN0cnVjdHVyZSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZSk7CisgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7Cisg
ICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7
CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUp
OworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2RhdGVTdHJ1Y3R1cmUpOworICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCAmbV9lcnJvclN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJm1fZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZtX251bWJlck9iamVjdFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCAmbV9yZWdFeHBTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssICZtX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFj
aywgJm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CiAKICAgICBpZiAobV9yZWdpc3RlckFy
cmF5KSB7CiAgICAgICAgIC8vIE91dHNpZGUgdGhlIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwg
d2hlbiBvdXIgdmFyaWFibGVzIGFyZSB0b3JuIG9mZiwKQEAgLTM5MSw3ICszODUsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojpjb3B5R2xvYmFsc0Zyb20oUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZp
bGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXkoZ2xvYmFsRGF0
YSgpLCByZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHJlZ2lzdGVyRmls
ZS5sYXN0R2xvYmFsKCkpLCBudW1HbG9iYWxzKTsKKyAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXkoZ2xvYmFsRGF0
YSgpLCByZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHJlZ2lzdGVyRmls
ZS5sYXN0R2xvYmFsKCkpLCBudW1HbG9iYWxzLCBudW1HbG9iYWxzKTsKICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyBudW1HbG9iYWxz
OwogICAgIHNldFJlZ2lzdGVycyhyZWdpc3RlcnMsIHJlZ2lzdGVyQXJyYXkucmVsZWFzZSgpLCBu
dW1HbG9iYWxzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDMwMGY0YjA0OTg1ODk2NWUzYzEyOTBmZjEzYTE0N2IzZDhiNDA1NzUu
LjBlMzY5MjA4NjA5MWUzN2VhMjgyMGMwODM3ZjVhNGE5MzgzNjliZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtODcsMjEgKzg3LDIx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8RGF0ZVByb3RvdHlwZT4g
bV9kYXRlUHJvdG90eXBlOwogICAgICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwUHJvdG90eXBlPiBt
X3JlZ0V4cFByb3RvdHlwZTsKIAotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2FyZ3VtZW50
c1N0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9hcnJheVN0cnVjdHVyZTsK
LSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlOwotICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7Ci0g
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKLSAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKLSAgICAg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9kYXRlU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJl
PiBtX2Vycm9yU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2Z1bmN0aW9u
U3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVj
dHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwotICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOworICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FyZ3VtZW50c1N0cnVjdHVyZTsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJheVN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlOworICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7CisgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKKyAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlU3RydWN0dXJlOworICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2VtcHR5T2JqZWN0U3RydWN0dXJlOworICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOworICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOworICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX251bWJlck9iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CisgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwogCiAgICAg
ICAgIHVuc2lnbmVkIG1fcHJvZmlsZUdyb3VwOwogICAgICAgICBEZWJ1Z2dlciogbV9kZWJ1Z2dl
cjsKQEAgLTExNSw3ICsxMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIAogICAgICAgICBleHBs
aWNpdCBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi0gICAgICAgICAg
ICA6IEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShnbG9i
YWxEYXRhLCBqc051bGwoKSksICZtX3N5bWJvbFRhYmxlLCAwKQorICAgICAgICAgICAgOiBKU1Zh
cmlhYmxlT2JqZWN0KGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsRGF0YSwganNOdWxsKCkpLCAmbV9zeW1ib2xUYWJsZSwgMCkKICAgICAgICAgICAgICwg
bV9yZWdpc3RlckFycmF5U2l6ZSgwKQogICAgICAgICAgICAgLCBtX2dsb2JhbFNjb3BlQ2hhaW4o
KQogICAgICAgICAgICAgLCBtX3dlYWtSYW5kb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRv
bU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEuMCkp
KQpAQCAtMTI1LDggKzEyNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaW5pdCh0
aGlzKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgSlNHbG9iYWxPYmpl
Y3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6
IEpTVmFyaWFibGVPYmplY3Qoc3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgMCkKKyAgICAgICAg
ZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAgLCBtX3JlZ2lzdGVy
QXJyYXlTaXplKDApCiAgICAgICAgICAgICAsIG1fZ2xvYmFsU2NvcGVDaGFpbigpCiAgICAgICAg
ICAgICAsIG1fd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVyKCkg
KiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCkBAIC0xMzcs
OCArMTM3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIEpTT2JqZWN0KiB0aGlzVmFsdWUpCi0gICAgICAgICAgICA6IEpTVmFyaWFibGVPYmpl
Y3Qoc3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgMCkKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3Qq
IHRoaXNWYWx1ZSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAgLCBtX3JlZ2lzdGVyQXJy
YXlTaXplKDApCiAgICAgICAgICAgICAsIG1fZ2xvYmFsU2NvcGVDaGFpbigpCiAgICAgICAgICAg
ICAsIG1fd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVyKCkgKiAo
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCkBAIC0yMzksNyAr
MjM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsRGF0YS5nZXQoKTsgfQogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KQEAgLTM2Myw3ICszNjMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gV2UgY2FjaGUgb3VyIHByb3RvdHlwZSBj
aGFpbiBzbyBvdXIgY2xpZW50cyBjYW4gc2hhcmUgaXQuCiAgICAgICAgIGlmICghaXNWYWxpZChl
eGVjLCBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKSkgewogICAgICAgICAgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JMb29rdXAoZXhlYyk7Ci0gICAgICAgICAgICBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLnNldChleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZUNoYWlu
OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuaXNOdWxsKCkgPyAwIDogYXNP
YmplY3QocHJvdG90eXBlKS0+c3RydWN0dXJlKCkpLCAwKTsKKyAgICAgICAgICAgIG1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgU3RydWN0dXJlQ2hh
aW46OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZS5pc051bGwoKSA/IDAgOiBh
c09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpOwogICAgIH0KQEAgLTM3NCw5ICszNzQs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckxvb2t1cChleGVjKTsKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVjdHVyZSA9IGNhY2hlZFByb3RvdHlwZUNoYWlu
LT5oZWFkKCk7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBjYWNoZWRTdHJ1Y3R1
cmUgPSBjYWNoZWRQcm90b3R5cGVDaGFpbi0+aGVhZCgpOwogICAgICAgICB3aGlsZSgqY2FjaGVk
U3RydWN0dXJlICYmICFwcm90b3R5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGlmIChhc09i
amVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSAhPSAqY2FjaGVkU3RydWN0dXJlKQorICAgICAg
ICAgICAgaWYgKGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgpICE9IGNhY2hlZFN0cnVj
dHVyZS0+Z2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
KytjYWNoZWRTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBwcm90b3R5cGUgPSBhc09iamVjdChwcm90
b3R5cGUpLT5wcm90b3R5cGUoKTsKQEAgLTQwNywxNyArNDA3LDE3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIAogICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0
ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSk7CiAgICAgfQogICAgIAogICAgIGlubGluZSBK
U0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTQXJy
YXkoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
ZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmUoKSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJy
YXkoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmFycmF5U3RydWN0dXJlKCksIGluaXRpYWxMZW5ndGgsIENyZWF0ZUluaXRpYWxpemVkKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmUoKSwgaW5pdGlhbExlbmd0aCwg
Q3JlYXRlSW5pdGlhbGl6ZWQpOwogICAgIH0KIAogICAgIGlubGluZSBKU0FycmF5KiBjb25zdHJ1
Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2luZ2xlSXRlbVZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCmluZGV4IDc1YmNhMThk
ODA1ZGY3N2IwYzk0MzllNDJiNDQ5MDM3YjFiNDJkYzAuLjRjNjgwNmE1ZjEyNTBlYjIyYzMwNzQy
YzMwNTI0YTk0Zjg3ZmZiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTm90QW5PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05vdEFuT2JqZWN0LmgKQEAgLTM5LDExICszOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU05vdEFuT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1Ymxp
YzoKICAgICAgICAgSlNOb3RBbk9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCi0gICAgICAgICAgICA6
IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLm5vdEFuT2JqZWN0U3RydWN0dXJl
KQorICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+Z2xvYmFsRGF0YSgpLm5vdEFuT2JqZWN0U3RydWN0dXJlLmdldCgpKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmlu
ZGV4IDhmYzdhYzljZmQzNDIyZjdlNTRmMjlmOTc0ZWQ0MDM1MTFiMWJjNTYuLjI3ZmM1NjllYWFm
OWIxZmU4Y2I2OGZiYjQwNDgzMmE0ZjU5NTI4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKik7
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU09OT2JqZWN0OjpKU09OT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQorSlNPTk9iamVjdDo6SlNPTk9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCmluZGV4IGE1MmM1NDM4
ZDA1YzllNjgzOGI5OTgwZWJmYWEzMzg0Mzg4Y2UxZTQuLmM4N2M2NDE5YjljNmU5NjRiZjhiZDc2
NTcxMWRjMDgyYjMzN2E2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmgKQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBK
U09OT2JqZWN0IDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiAgICAgcHVibGlj
OgotICAgICAgICBKU09OT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKTsKKyAgICAgICAgSlNPTk9iamVjdChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCBhYjQ3MmQ0NjkzN2Q4M2YyODM5ODExYWRiYjdhMDkwY2IxYjRm
ZGEyLi45Njc3ZjIzMjFlOWZiZTkxMGQ2NGI5NTUxYjkxYjkzZGU0NDE5YTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0zMjgsMTAgKzMyOCw4IEBA
IHZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAgLy8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhv
dWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1cmUKICAgICAvLyBpZiB3ZSBv
dmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5vbi1zZXR0ZXIuCiAgICAgaWYgKHNs
b3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKLSAgICAgICAgaWYg
KCFtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBtX3N0cnVjdHVyZSk7Ci0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJl
LnJlbGVhc2UoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFtX3N0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpCisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBT
dHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUu
Z2V0KCkpKTsKICAgICB9CiAKICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcyh0cnVlKTsKQEAgLTM1NSwxMCArMzUzLDggQEAgdm9pZCBKU09iamVjdDo6ZGVmaW5l
U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U08KICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0byBj
aGFuZ2Ugb3VyIFN0cnVjdHVyZQogICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5v
bi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJvcGVy
dHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICBpZiAoIW1fc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJ1
Y3R1cmUpOwotICAgICAgICAgICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOwot
ICAgICAgICB9CisgICAgICAgIGlmICghbV9zdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAg
ICAgICAgICAgc2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlOjpnZXR0
ZXJTZXR0ZXJUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJ1Y3R1cmUuZ2V0KCkp
KTsKICAgICB9CiAKICAgICBtX3N0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cyh0cnVlKTsKQEAgLTUxMiwxOCArNTA4LDE4IEBAIEpTT2JqZWN0KiBKU09iamVjdDo6dW53cmFw
cGVkT2JqZWN0KCkKIAogdm9pZCBKU09iamVjdDo6c2VhbChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCiB7Ci0gICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgbV9zdHJ1Y3R1cmUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0
dXJlOjpzZWFsVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZS5nZXQoKSkpOwogfQog
CiB2b2lkIEpTT2JqZWN0OjpmcmVlemUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAg
IHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9z
dHJ1Y3R1cmUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpmcmVl
emVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQg
SlNPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsK
ICAgICBpZiAoaXNFeHRlbnNpYmxlKCkpCi0gICAgICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6
OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwor
ICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5z
aW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9p
ZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpAQCAtNTM2LDggKzUzMiw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwotICAgIHNldFN0cnVj
dHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwg
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1
cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6
Om5vdEZvdW5kKQogICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwog
fQpAQCAtNTc1LDcgKzU3MCw4IEBAIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0
dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgV3JpdGVCYXJyCiAKIFN0cnVjdHVy
ZSogSlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
IHsKLSAgICBtX2luaGVyaXRvcklEID0gY3JlYXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSwgdGhpcyk7CisgICAgbV9pbmhlcml0b3JJRC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgY3Jl
YXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcykpOworICAgIEFTU0VSVCht
X2luaGVyaXRvcklELT5pc0VtcHR5KCkpOwogICAgIHJldHVybiBtX2luaGVyaXRvcklELmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBiNTNh
ZWZjZDAwMzZhY2RiNjU2MDM2NGNkYTA4ZDk2YmU4MjFhNmFhLi44MDczNWY4YzQyMTA4MWEwMDk3
N2Q0ZDNkZjMwNWVkMWU2YzQ4NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTkwLDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAg
Ym9vbCBzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHBy
b3RvdHlwZSk7CiAgICAgICAgIAotICAgICAgICB2b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgdm9pZCBzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIFN0cnVjdHVyZSogaW5oZXJpdG9ySUQoSlNHbG9i
YWxEYXRhJik7CiAKICAgICAgICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwpA
QCAtMTcwLDcgKzE3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGxv
Y2F0aW9uIC0gcHJvcGVydHlTdG9yYWdlKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHRy
YW5zaXRpb25UbyhTdHJ1Y3R1cmUqKTsKKyAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgYm9vbCBo
YXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7IH0K
QEAgLTI0OSw3ICsyNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAtMjYzLDcg
KzI2MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBv
YmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFsT2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8g
VG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxpa2VseSB3YW50IEpTTm9uRmluYWxPYmplY3Qs
IGJlbG93LgotICAgICAgICBKU09iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBQ
cm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CisgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKKyAgICAg
ICAgSlNPYmplY3QoVlB0clN0ZWFsaW5nSGFja1R5cGUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVT
dG9yYWdlKQorICAgICAgICAgICAgOiBKU0NlbGwoVlB0clN0ZWFsaW5nSGFjaykKKyAgICAgICAg
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoaW5saW5lU3RvcmFnZSkKKyAgICAgICAgeworICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFu
eSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBK
U09iamVjdC4KQEAgLTI5OCw3ICszMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ry
dWN0dXJlKiBjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICBQcm9w
ZXJ0eVN0b3JhZ2UgbV9wcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IG1faW5oZXJpdG9ySUQ7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW5oZXJp
dG9ySUQ7CiAgICAgfTsKIAogCkBAIC0zMTksMTQgKzMyNCwxOSBAQCBDT01QSUxFX0FTU0VSVCgo
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNOb25GaW5hbE9iamVjdF9p
bmxpbmVTdAogICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7CiAKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAg
IHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogSlNPYmplY3Qoc3Ry
dWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCisgICAgICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmpl
Y3QoVlB0clN0ZWFsaW5nSGFja1R5cGUpCisgICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJTdGVh
bGluZ0hhY2ssIG1faW5saW5lU3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgCisg
ICAgICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVCghKE9CSkVDVF9PRkZTRVRPRihKU05vbkZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2Up
ICUgc2l6ZW9mKGRvdWJsZSkpKTsKICAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUo
KS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU05vbkZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eSk7CkBAIC0zNDIsMTkgKzM1MiwxOSBAQCBDT01QSUxFX0FTU0VSVCgoSlNG
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNOb25GaW5hbE9iamVjdF9pbmxp
bmVTdAogICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBKU0ZpbmFsT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKKyAgICAgICAgc3RhdGljIEpTRmluYWxP
YmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0ZpbmFsT2JqZWN0KHN0cnVj
dHVyZSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0ZpbmFsT2JqZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9y
YWdlKQorICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkg
JSBzaXplb2YoZG91YmxlKSA9PSAwKTsKICAgICAgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1
cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBKU0ZpbmFsT2JqZWN0X2lubGluZVN0
b3JhZ2VDYXBhY2l0eSk7CkBAIC0zNzEsMTIgKzM4MSwxMiBAQCBpbmxpbmUgc2l6ZV90IEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKQogICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIHJldHVybiBK
U0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlKTsKIH0KIAotaW5saW5lIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQoraW5saW5lIFN0cnVjdHVyZSogY3JlYXRl
RW1wdHlPYmplY3RTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKICAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGds
b2JhbERhdGEsIHByb3RvdHlwZSk7CiB9CkBAIC0zOTIsOCArNDAyLDggQEAgaW5saW5lIEpTT2Jq
ZWN0KiBhc09iamVjdChKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBhc09iamVjdCh2YWx1ZS5h
c0NlbGwoKSk7CiB9CiAKLWlubGluZSBKU09iamVjdDo6SlNPYmplY3QoTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQot
ICAgIDogSlNDZWxsKHN0cnVjdHVyZS5yZWxlYXNlUmVmKCkpIC8vIH5KU09iamVjdCBiYWxhbmNl
cyB0aGlzIHJlZigpCitpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9y
YWdlKQorICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1fcHJvcGVy
dHlTdG9yYWdlKGlubGluZVN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKQEAgLTQwMSwxNCArNDExLDEzIEBAIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFByb3BlcnR5U3RvcmFnCiAgICAgQVNT
RVJUKG1fc3RydWN0dXJlLT5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChwcm90b3R5cGUoKS5pc051
bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAocHJvdG90eXBlKCkpKTsKICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0
PHZvaWQqPih0aGlzICsgMSkpOworICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gT2JqZWN0VHlwZSk7CiB9CiAKIGlubGluZSBKU09iamVjdDo6fkpTT2JqZWN0KCkK
IHsKLSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgIGlmICghaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSkKICAgICAgICAgZGVsZXRlIFtdIG1fcHJvcGVydHlTdG9yYWdlOwotICAgIG1fc3RydWN0
dXJlLT5kZXJlZigpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkg
Y29uc3QKQEAgLTQzMiwyMCArNDQxLDIwIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpzZXRQcm90
b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsCiBpbmxp
bmUgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgQVNTRVJUKHByb3RvdHlwZSk7Ci0gICAgUmVmUHRy
PFN0cnVjdHVyZT4gbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLCBwcm90b3R5cGUpOwotICAgIHNldFN0cnVj
dHVyZShuZXdTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0
YSwgU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3Ry
dWN0dXJlLmdldCgpLCBwcm90b3R5cGUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNl
dFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKK2lubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBtX3N0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICBt
X3N0cnVjdHVyZSA9IHN0cnVjdHVyZS5sZWFrUmVmKCk7IC8vIH5KU09iamVjdCBiYWxhbmNlcyB0
aGlzIHJlZigpCisgICAgbV9zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVy
ZSk7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIEpTT2JqZWN0Ojppbmhlcml0b3JJRChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCiB7Ci0gICAgaWYgKG1faW5oZXJpdG9ySUQpCisgICAgaWYgKG1f
aW5oZXJpdG9ySUQpIHsKKyAgICAgICAgQVNTRVJUKG1faW5oZXJpdG9ySUQtPmlzRW1wdHkoKSk7
CiAgICAgICAgIHJldHVybiBtX2luaGVyaXRvcklELmdldCgpOworICAgIH0KICAgICByZXR1cm4g
Y3JlYXRlSW5oZXJpdG9ySUQoZ2xvYmFsRGF0YSk7CiB9CiAKQEAgLTU5NiwxMiArNjA1LDEyIEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAKICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIHNpemVf
dCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KTsKLSAgICBpZiAoUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKG1fc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsgICAgCisgICAg
aWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKG1fc3RydWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsgICAgCiAgICAgICAgIGlmIChj
dXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQog
ICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBzdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIEFTU0VSVChvZmZz
ZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBzZXRT
dHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7CisgICAgICAgIHNldFN0cnVjdHVyZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
b2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5z
aXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAog
ICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAt
NjMzLDcgKzY0Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNw
ZWNpZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCi0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoU3Ry
dWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEs
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3Ry
dWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGNh
c2UgKDMpIHNldCB0aGUgc2xvdCwgZG8gdGhlIHB1dCwgcmV0dXJuLgpAQCAtNjQ1LDEzICs2NTQs
MTMgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICBpZiAoIWlzRXh0ZW5zaWJsZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKIAogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkg
IT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CiAKICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2Uo
KSk7CisgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgcHV0RGly
ZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogICAgIC8vIFRoaXMgaXMgYSBu
ZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3Vy
cmVudGx5IGNhY2hhYmxlLAogICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFi
bGUgc3RhdGUuCkBAIC03MjIsMTEgKzczMSwxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdAog
ICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0KIAotaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnRyYW5zaXRpb25UbyhTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkK
K2lubGluZSB2b2lkIEpTT2JqZWN0Ojp0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBpZiAobV9zdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0gbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKTsKLSAgICBzZXRTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKTsKKyAgICBzZXRTdHJ1
Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNP
YmplY3Q6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSBwcmVmZXJyZWRUeXBlKSBjb25zdApAQCAtODE1LDEwICs4MjQsMTEgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2sp
CiB7CiAgICAgSlNDZWxsOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAotICAgIG1fc3RydWN0
dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAgICAgUHJvcGVydHlTdG9yYWdlIHN0b3Jh
Z2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBtX3N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMo
c3RvcmFnZSwgc3RvcmFnZVNpemUpOworICAgIGlmIChtX2luaGVyaXRvcklEKQorICAgICAgICBt
YXJrU3RhY2suYXBwZW5kKCZtX2luaGVyaXRvcklEKTsKIH0KIAogLy8gLS0tIEpTVmFsdWUgaW5s
aW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCA5MzcwMTM5ODU3OGNiMzlmMTg5YjIzZWNiYzQyZGE0MWYwYjYxNzljLi5mYTBlNTRhNzkxZWI0
YjgzZWQ0YTliOWRhMWVmNTkzM2I3NDMyNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5jcHAKQEAgLTMw
LDggKzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dDo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5h
bE9iamVjdChzdHJ1Y3R1cmUpCitKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCksIHN0cnVjdHVyZSkKIHsKICAgICBDT01QSUxFX0FTU0VSVChBbm9ueW1vdXNTbG90Q291bnQg
PT0gMSwgQW5vbnltb3VzU2xvdENvdW50X211c3RfYmVfb25lKTsKICAgICBBU1NFUlQoIWdsb2Jh
bE9iamVjdCB8fCBnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOwpAQCAtNDEsNiArNDEs
MTcgQEAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcHV0QW5vbnltb3VzVmFsdWUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIEdsb2JhbE9iamVjdFNsb3QsIGdsb2JhbE9iamVj
dCk7CiB9CiAKK0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6SlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSkKK3sKKyAgICBDT01QSUxFX0FTU0VSVChBbm9ueW1vdXNTbG90Q291bnQg
PT0gMSwgQW5vbnltb3VzU2xvdENvdW50X211c3RfYmVfb25lKTsKKyAgICBBU1NFUlQoIWdsb2Jh
bE9iamVjdCB8fCBnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghZ2xv
YmFsT2JqZWN0KQorICAgICAgICBjbGVhckFub255bW91c1ZhbHVlKEdsb2JhbE9iamVjdFNsb3Qp
OworICAgIGVsc2UKKyAgICAgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsRGF0YSwgR2xvYmFs
T2JqZWN0U2xvdCwgZ2xvYmFsT2JqZWN0KTsKK30KKwogSlNHbG9iYWxPYmplY3QqIEpTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdDo6Z2xvYmFsT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gYXNH
bG9iYWxPYmplY3QoKGdldEFub255bW91c1ZhbHVlKEdsb2JhbE9iamVjdFNsb3QpLmFzQ2VsbCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdp
dGhHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdC5oCmluZGV4IDgzODA1MTRkNTdhY2JmNWU4YjViMGVmNTQwNTNlODJj
ODFjMTc1MzcuLmYwZmQwNDYxZWQxODRiZGUyMDYzNWUxNjc0ZGNkYzE1NmU2OTFiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogCiBj
bGFzcyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKQorICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG8pCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CkBAIC00MiwxMCArNDIsMTEgQEAgcHVibGlj
OgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgotICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChK
U0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCi0gICAgSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorICAgIEpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrVHlwZSkKKyAgICAgICAgOiBKU05vbkZpbmFs
T2JqZWN0KFZQdHJTdGVhbGluZ0hhY2spCiAgICAgewogICAgICAgICAvLyBTaG91bGQgb25seSBi
ZSB1c2VkIGJ5IEpTRnVuY3Rpb24gd2hlbiB3ZSBhcXVpcmUgdGhlIEpTRnVuY3Rpb24gdnB0ci4K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDZmMzFmOTk5ZDcwOTVkY2M1Y2Y2ZDNkMDZjYzMy
ZDI4NjhlYjI4YjcuLmQ1YWYwNDQ2NTY3MTM0MTI0ZDZhZjVlZWJkYTA5YmVjYTcxMTljYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCkBAIC0zNSw5ICszNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKIAorY29uc3Qg
Q2xhc3NJbmZvIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnNfaW5mbyA9IHsgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IiLCAwLCAwLCAwIH07CisKIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90cykK
LSAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1
Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX2NhY2hlZFN0cnVjdHVyZSgwKQorICAgIDogSlNDZWxsKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZUl0ZXJhdG9y
U3RydWN0dXJlLmdldCgpKQogICAgICwgbV9udW1DYWNoZWFibGVTbG90cyhudW1DYWNoZWFibGVT
bG90cykKICAgICAsIG1fanNTdHJpbmdzU2l6ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3Bl
cnR5TmFtZVZlY3RvcigpLnNpemUoKSkKICAgICAsIG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIo
bmV3IFdyaXRlQmFycmllcjxVbmtub3duPlttX2pzU3RyaW5nc1NpemVdKSkKQEAgLTcxLDE0ICs3
MiwxNCBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgIAogICAgIHNpemVfdCBjb3VudCA9
IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIG8pOwogICAgIFN0cnVjdHVyZUNoYWluKiBz
dHJ1Y3R1cmVDaGFpbiA9IG8tPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKTsKLSAg
ICBSZWZQdHI8U3RydWN0dXJlPiogc3RydWN0dXJlID0gc3RydWN0dXJlQ2hhaW4tPmhlYWQoKTsK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogc3RydWN0dXJlID0gc3RydWN0dXJlQ2hhaW4t
PmhlYWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgaWYgKHN0cnVjdHVyZVtpXS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
KCkpCiAgICAgICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKICAgICB9CiAK
ICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbihleGVj
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZUNoYWluKTsKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLT5zZXRDYWNoZWRTdHJ1Y3R1cmUoby0+c3RydWN0dXJlKCkpOworICAgIGpzUHJvcGVydHlO
YW1lSXRlcmF0b3ItPnNldENhY2hlZFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG8tPnN0
cnVjdHVyZSgpKTsKICAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShleGVj
LT5nbG9iYWxEYXRhKCksIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIHJldHVybiBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yOwogfQpAQCAtODYsNyArODcsNyBAQCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdAogSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVudGlmaWVy
ID0gbV9qc1N0cmluZ3NbaV0uZ2V0KCk7Ci0gICAgaWYgKG1fY2FjaGVkU3RydWN0dXJlID09IGJh
c2UtPnN0cnVjdHVyZSgpICYmIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkgPT0gYmFzZS0+
c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgIGlmIChtX2NhY2hlZFN0cnVj
dHVyZS5nZXQoKSA9PSBiYXNlLT5zdHJ1Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWlu
LmdldCgpID09IGJhc2UtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAg
ICAgcmV0dXJuIGlkZW50aWZpZXI7CiAKICAgICBpZiAoIWJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgYXNTdHJpbmcoaWRlbnRpZmllciktPnZhbHVlKGV4ZWMpKSkpCkBA
IC0xMDEsMTIgKzEwMiw0IEBAIHZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluKTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLQotSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKQotewotICAgIEFTU0VS
VCghbV9jYWNoZWRTdHJ1Y3R1cmUgfHwgbV9jYWNoZWRTdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2Fj
aGUoKSAhPSB0aGlzKTsKLX0KLQotI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAppbmRleCBmOThjNDBlZjBmNzdhNjFhM2ZjYTRlMmU3NWYzOTcyZTJmYjcyZDI1Li5iODU3ZGMw
OWQwNmIyODg5OTEzYTUwODViMGJmMDMxZTg0Y2YxYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC00NSw5
ICs0NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAg
ICAgICAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlw
ZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1By
b3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjUsMTEgKzY1
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBK
U09iamVjdCosIHNpemVfdCBpKTsKICAgICAgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX2pz
U3RyaW5nc1NpemU7IH0KIAotICAgICAgICB2b2lkIHNldENhY2hlZFN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgdm9pZCBzZXRDYWNoZWRTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKCFtX2NhY2hlZFN0cnVjdHVyZSk7CiAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKTsKLSAgICAgICAgICAgIG1fY2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlOworICAg
ICAgICAgICAgbV9jYWNoZWRTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHN0cnVjdHVy
ZSk7CiAgICAgICAgIH0KICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2NhY2hlZFN0cnVjdHVyZS5nZXQoKTsgfQogCkBAIC03NywxMyArNzcsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFp
bigpIHsgcmV0dXJuIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7IH0KIAogICAgIHByaXZh
dGU6CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJv
cGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7Ci0gICAgICAgIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgdmlydHVhbCB+SlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcigpOwotI2VuZGlmCiAKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1
Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJl
OwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBl
Q2hhaW47CiAgICAgICAgIHVpbnQzMl90IG1fbnVtQ2FjaGVhYmxlU2xvdHM7CiAgICAgICAgIHVp
bnQzMl90IG1fanNTdHJpbmdzU2l6ZTsKQEAgLTkzLDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgaW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNo
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNEaWN0aW9uYXJ5KCkpOwotICAgICAgICBtX2Vu
dW1lcmF0aW9uQ2FjaGUuc2V0KGdsb2JhbERhdGEsIGVudW1lcmF0aW9uQ2FjaGUpOworICAgICAg
ICBtX2VudW1lcmF0aW9uQ2FjaGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGVudW1lcmF0aW9uQ2Fj
aGUpOwogICAgIH0KIAogICAgIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBTdHJ1Y3R1
cmU6OmVudW1lcmF0aW9uQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCmluZGV4IDNlMTliYmMyMzY2YTljMWQ4ZjRhOTRj
YmY2MGI3YjQzNzkzZWNhNjEuLjhjM2EyNDk1YzY4MDNjMDdkNTUxMDVmNGRmZmYzMzQyNzdkMGQ1
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2Nv
cGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQ3sKICAgICBjbGFzcyBK
U1N0YXRpY1Njb3BlT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVPYmplY3QgewogICAgIHB1Ymxp
YzoKICAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotICAg
ICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5zdGF0aWNTY29w
ZVN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsIHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPigm
bV9yZWdpc3RlclN0b3JlICsgMSkpCisgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuc3RhdGljU2NvcGVTdHJ1Y3R1cmUu
Z2V0KCksICZtX3N5bWJvbFRhYmxlLCByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJm1fcmVn
aXN0ZXJTdG9yZSArIDEpKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3JlZ2lzdGVyU3RvcmUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgc3ltYm9s
VGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KC0xLCBhdHRyaWJ1dGVz
KSk7CkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgICAgICB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFu
b255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykg
eyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsg
fQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJz
aW9uIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggYWY2YTkzMjk3OWYwNzk1NzMxZTVkZTM0N2VkNDc4OWMy
MWU1YjM3MS4uMzQyMmRhZDNkMGMwY2E4YmI5YTNmZTExMGVhYTJjYWMxY2NhNTZiYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xODUsNyArMTg1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICAgICAgQUxXQVlTX0lOTElORSBKU1N0
cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQotICAg
ICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgodmFsdWUubGVuZ3RoKCkpCiAgICAgICAg
ICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQpAQCAt
MTk2LDcgKzE5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGVudW0gSGFzT3RoZXJP
d25lclR5cGUgeyBIYXNPdGhlck93bmVyIH07CiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUsIEhhc090aGVyT3duZXJUeXBlKQot
ICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQor
ICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgodmFsdWUubGVuZ3RoKCkpCiAgICAg
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQpA
QCAtMjA0LDcgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKCFt
X3ZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgfQogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUsIEhhc090aGVyT3du
ZXJUeXBlKQotICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgodmFsdWUtPmxlbmd0
aCgpKQogICAgICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgICAgICAgICAgLCBtX2ZpYmVy
Q291bnQoMCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IEFTU0VSVCghbV92YWx1ZS5pc051bGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNTdHJpbmco
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQotICAg
ICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgocm9wZS0+bGVuZ3RoKCkpCiAgICAgICAg
ICAgICAsIG1fZmliZXJDb3VudCgxKQogICAgICAgICB7CkBAIC0yMjEsNyArMjIxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5l
dyBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyBzMSAmIHMyLgogICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGZpYmVyQ291bnQgPD0gMy4KICAgICAgICAgSlNTdHJpbmco
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBKU1N0cmluZyog
czEsIEpTU3RyaW5nKiBzMikKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHMx
LT5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZp
YmVyQ291bnQpCiAgICAgICAgIHsKQEAgLTIzNCw3ICsyMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBj
b25jYXRlbmF0aW5nIHMxICYgczIuCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIHdpdGggZmliZXJDb3VudCA8PSAzLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIEpTU3RyaW5nKiBzMSwgY29uc3QgVVN0
cmluZyYgdTIpCi0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+bGVuZ3Ro
KCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZpYmVyQ291bnQp
CiAgICAgICAgIHsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ly8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0
aW5nIHMxICYgczIuCiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGgg
ZmliZXJDb3VudCA8PSAzLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIGNvbnN0IFVTdHJpbmcmIHUxLCBKU1N0cmluZyogczIp
Ci0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHMyLT5s
ZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZpYmVyQ291bnQpCiAgICAgICAg
IHsKQEAgLTI2Miw3ICsyNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdmFsdWUg
bXVzdCByZXF1aXJlIGEgZmliZXJDb3VudCBvZiBhdCBsZWFzdCBvbmUgaW1wbGllcyB0aGF0IHRo
ZSBsZW5ndGgKICAgICAgICAgLy8gZm9yIGVhY2ggdmFsdWUgbXVzdCBiZSBleGFjdGx5IDEhCiAg
ICAgICAgIEpTU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Miwg
SlNWYWx1ZSB2MykKLSAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAg
ICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChzX21heEludGVybmFs
Um9wZUxlbmd0aCkKICAgICAgICAgewpAQCAtMjc1LDcgKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcg
YnkgY29uY2F0ZW5hdGluZyB1MSAmIHUyLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1MikKLSAgICAg
ICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKKyAgICAg
ICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgdTIubGVuZ3RoKCkp
CiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgyKQogICAgICAgICB7CkBAIC0yODcsNyArMjg3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25z
dHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5nIHUxLCB1MiAmIHUzLgogICAgICAg
ICBKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBj
b25zdCBVU3RyaW5nJiB1MiwgY29uc3QgVVN0cmluZyYgdTMpCi0gICAgICAgICAgICA6IEpTQ2Vs
bChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2Vs
bCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAg
ICAgICAgLCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHUyLmxlbmd0aCgpICsgdTMubGVuZ3RoKCkp
CiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChzX21heEludGVybmFsUm9wZUxlbmd0aCkKICAg
ICAgICAgewpAQCAtMjk5LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiB2YWx1ZSwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBmaW5hbGl6ZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkK
ICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50
KDApCkBAIC0zNDksMTIgKzM0OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU1Zh
bHVlIHJlcGxhY2VDaGFyYWN0ZXIoRXhlY1N0YXRlKiwgVUNoYXIsIGNvbnN0IFVTdHJpbmcmIHJl
cGxhY2VtZW50KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdU
eXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uKSwg
QW5vbnltb3VzU2xvdENvdW50LCAwKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oU3RyaW5n
VHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgTmVlZHNUaGlzQ29udmVyc2lvbiks
IEFub255bW91c1Nsb3RDb3VudCwgMCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0g
VlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNrIH07CiAgICAgICAgIEpTU3Ry
aW5nKFZQdHJTdGVhbGluZ0hhY2tUeXBlKSAKLSAgICAgICAgICAgIDogSlNDZWxsKDApCisgICAg
ICAgICAgICA6IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrKQogICAgICAgICAgICAgLCBtX2ZpYmVy
Q291bnQoMCkKICAgICAgICAgewogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCmluZGV4IDg4MmIyMTg4ZTk3Yjg4NmViNDg0NDM3ZGM0Y2RlZmMzNWY5YWIxOTIu
LmRiYTAzZjYzZDE0OGE0ZGJhMzVkNjA1YTQzZDU0ZmU0NmRkYWQwMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0zMywxMCArMzMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE51bWJlclR5cGUgICAgICAgID0gMywKICAgICAgICAgTnVsbFR5cGUgICAg
ICAgICAgPSA0LAogICAgICAgICBTdHJpbmdUeXBlICAgICAgICA9IDUsCisgICAgICAgIExlYWZU
eXBlICAgICAgICAgID0gNiwKICAgICAgICAgLy8gVGhlIENvbXBvdW5kVHlwZSB2YWx1ZSBtdXN0
IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBtYXkgaGF2ZSBjaGlsZHJlbgotICAgICAgICBD
b21wb3VuZFR5cGUgICAgICA9IDYsCi0gICAgICAgIE9iamVjdFR5cGUgICAgICAgID0gNywKLSAg
ICAgICAgR2V0dGVyU2V0dGVyVHlwZSAgPSA4CisgICAgICAgIENvbXBvdW5kVHlwZSAgICAgID0g
NywKKyAgICAgICAgT2JqZWN0VHlwZSAgICAgICAgPSA4LAorICAgICAgICBHZXR0ZXJTZXR0ZXJU
eXBlICA9IDkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAyODRkMmIyNjkzMmI1ZmRlYmFlYWJkZDc3
OWI3NWI2NTFkYjJlNzBiLi5hY2RlODFmMTc4ZWUzMzE5MWFlMWQxNjFiNjZlMTI1ZjNiZTkyMzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCkBAIC01NCw2
ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
ZmxhZ3MgPD0gMHgxRkYpOwogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPD0gMHhGRik7CisgICAg
ICAgICAgICBBU1NFUlQodHlwZSA+PSBDb21wb3VuZFR5cGUgfHwgIShmbGFncyAmIE92ZXJyaWRl
c01hcmtDaGlsZHJlbikpOwogICAgICAgICAgICAgLy8gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSBtZWFucyAoSW1wbGVtZW50c0hhc0luc3RhbmNlICYgIU92ZXJyaWRlc0hhc0luc3RhbmNl
KQogICAgICAgICAgICAgaWYgKChtX2ZsYWdzICYgKEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92
ZXJyaWRlc0hhc0luc3RhbmNlKSkgPT0gSW1wbGVtZW50c0hhc0luc3RhbmNlKQogICAgICAgICAg
ICAgICAgIG1fZmxhZ3MgfD0gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAppbmRleCBkOTc0MjczNWI2ODNkZWEwMDNhYjhi
MDYyYWQ1OWZjNzJjMGM4ZGFkLi5hZTlkMDJjY2JhZDkwNGEwMTZiNTAzYmJiN2JlZWQ1M2ViZmNi
ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC00NjYsNiAr
NDY2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBKU1ZhbHVlIGEsIGNvbnN0IEpTQ2VsbCogYikgeyByZXR1cm4gYSAhPSBKU1ZhbHVlKGIpOyB9
CiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFs
dWUgYikgeyByZXR1cm4gSlNWYWx1ZShhKSAhPSBiOyB9CiAKKyAgICBib29sIGlzWm9tYmllKGNv
bnN0IEpTQ2VsbCopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTVmFsdWVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
CmluZGV4IDg5MWFkYThjNDNhMzdhYTdiYzEyNmUzMzA0NzUwNzAyMGMzZTMxYzkuLjg5YmI2YjAy
YjY3ZDk5YWMyZGMzZDQ1Y2Y1MzgzNzlmY2RmY2Y0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBjb25zdCAqIGFk
ZHJlc3NPZlJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuICZtX3JlZ2lzdGVyczsgfQogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KQEAgLTY2LDgg
KzY2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIEpTVmFyaWFibGVPYmplY3Qo
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSwgUmVnaXN0ZXIqIHJlZ2lzdGVycykKLSAgICAgICAgICAgIDogSlNOb25GaW5hbE9i
amVjdChzdHJ1Y3R1cmUpCisgICAgICAgIEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
LCBSZWdpc3RlciogcmVnaXN0ZXJzKQorICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xU
YWJsZSkKICAgICAgICAgICAgICwgbV9yZWdpc3RlcnMocmVpbnRlcnByZXRfY2FzdDxXcml0ZUJh
cnJpZXI8VW5rbm93bj4qPihyZWdpc3RlcnMpKQogICAgICAgICB7CkBAIC03NSw3ICs3NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPikgPT0gc2l6ZW9mKFJlZ2lzdGVyKSwgUmVnaXN0ZXJfc2hvdWxkX2Jl
X3NhbWVfc2l6ZV9hc19Xcml0ZUJhcnJpZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgUGFzc093
bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IGNvcHlSZWdpc3RlckFycmF5KEpTR2xv
YmFsRGF0YSYsIFdyaXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQpOworICAg
ICAgICBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gY29weVJlZ2lzdGVy
QXJyYXkoSlNHbG9iYWxEYXRhJiwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBj
b3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cyk7CiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJz
KFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVC
YXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSk7CiAKICAgICAgICAgYm9vbCBzeW1ib2xU
YWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkBAIC0xMzcsMTAgKzEz
NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgaW5saW5lIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBKU1Zhcmlh
YmxlT2JqZWN0Ojpjb3B5UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFdy
aXRlQmFycmllcjxVbmtub3duPiogc3JjLCBzaXplX3QgY291bnQpCisgICAgaW5saW5lIFBhc3NP
d25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBKU1ZhcmlhYmxlT2JqZWN0Ojpjb3B5
UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFdyaXRlQmFycmllcjxVbmtu
b3duPiogc3JjLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWxsZnJhbWVTdGFydHMpCiAgICAgewog
ICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5
ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W2NvdW50XSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjYWxsZnJhbWVTdGFydHM7IGkrKykKKyAgICAgICAgICAgIHJlZ2lzdGVy
QXJyYXlbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHNyY1tpXS5nZXQoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBjYWxsZnJhbWVTdGFydHMgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhl
YWRlclNpemU7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICAgICAgcmVnaXN0ZXJBcnJheVtpXS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3JjW2ldLmdldCgpKTsKIAogICAgICAgICByZXR1cm4gcmVn
aXN0ZXJBcnJheS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTV3JhcHBlck9iamVjdC5oCmluZGV4IDYzODMzZTlmMzc0ZWM3Yzc5YWE3YWQ4MjBlOGEwNDEy
ZmJkYWQzODAuLmE3ZGJlMGQ5MDJlZmI5MDllZWE2ZTFiNWRkMDA4NWZmMTBmYjI3ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCkBAIC0z
MCwxMyArMzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gTnVtYmVyLCBCb29sZWFuIGFu
ZCBEYXRlIHdoaWNoIGFyZSB3cmFwcGVycyBmb3IgcHJpbWl0aXZlIHR5cGVzLgogICAgIGNsYXNz
IEpTV3JhcHBlck9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+KTsKKyAgICAgICAgZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwogCiAgICAgcHVibGljOgogICAgICAgICBKU1ZhbHVlIGludGVybmFs
VmFsdWUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0
YSYsIEpTVmFsdWUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUp
IAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCiAgICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgICAgIH0KQEAgLTUwLDggKzUwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKIAotICAgIGlu
bGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVy
ZSkKKyAgICBpbmxpbmUgSlNXcmFwcGVyT2JqZWN0OjpKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU05vbkZp
bmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKaW5kZXggMzVlMTMxNTVhNzY5NzYz
ZGY0ZDhjYWFiMzQ3NzUyY2Y5MzdkY2RhYy4uZWZhYmM5M2ZjMWJjMzUxOTYxMDZjZmQ3ZDMwNzUw
OWM1YTM1NThjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNa
b21iaWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNw
cApAQCAtMzUsMTcgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1pvbWJpZTo6c19pbmZvID0geyAiWm9tYmllIiwgMCwgMCwgMCB9OwogCi1TdHJ1Y3R1cmUqIEpT
Wm9tYmllOjpsZWFrZWRab21iaWVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQot
ewotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDA7Ci0gICAgaWYgKCFzdHJ1Y3R1
cmUpIHsKLSAgICAgICAgU3RydWN0dXJlOjpzdGFydElnbm9yaW5nTGVha3MoKTsKLSAgICAgICAg
c3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwganNOdWxsKCksIFR5cGVJ
bmZvKFVuc3BlY2lmaWVkVHlwZSksIDAsICZzX2luZm8pLmxlYWtSZWYoKTsKLSAgICAgICAgU3Ry
dWN0dXJlOjpzdG9wSWdub3JpbmdMZWFrcygpOwotICAgIH0KLSAgICByZXR1cm4gc3RydWN0dXJl
OwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSlNDX1pPTUJJRVMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAppbmRleCBkZmZmMWE3YTY2MzczMThkMDA5OTA0Nzc5
MWJkOGQ3NDBjMjBiMjA3Li4wNTU5Yjk2OTRiODkzMGNkMDFhMzcxNTAxN2JmOTkyYTA4YWQ1OTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKQEAgLTI3LDIxICsy
NywyMSBAQAogI2RlZmluZSBKU1pvbWJpZV9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKIAogI2lmIEVOQUJMRShKU0NfWk9NQklFUykKIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBKU1pvbWJpZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgotICAgIEpT
Wm9tYmllKGNvbnN0IENsYXNzSW5mbyogb2xkSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0g
ICAgICAgIDogSlNDZWxsKHN0cnVjdHVyZSkKKyAgICBKU1pvbWJpZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IENsYXNzSW5mbyogb2xkSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAgICAgLCBtX29s
ZEluZm8ob2xkSW5mbykKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzWm9tYmllKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGxlYWtlZFpvbWJpZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0IHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FQ
SVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIDApLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBl
LCBUeXBlSW5mbyhMZWFmVHlwZSwgMCksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAg
ICAgfQogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDdiODU2YTFiNWI0NjljZjdm
NWZjMmVkZTliZWI1MjYzYjAzMmU0ODguLjUyYmQ3NmFkNGI4YjAzNTZiNmQzY2I4ZTY1ODkyYWVh
NjAyMjUyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0OjpzX2luZm8g
PSB7ICJNYXRoIiwgJkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c19pbmZvCiBAZW5kCiAqLwog
Ci1NYXRoT2JqZWN0OjpNYXRoT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCitN
YXRoT2JqZWN0OjpNYXRoT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaApp
bmRleCAyNmVhYWUwNDQ5OTI4ZGU1MWE1YzRkZTVlZGZmY2JhMmViZGM1NzEzLi43NTc1M2JlMjky
MmU5Yjc5NGJlMmExNDgyMGJkNWFmODE3NWY0OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aE9iamVjdC5oCkBAIC0yNywxNCArMjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBNYXRoT2JqZWN0IDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dCB7CiAgICAgcHVibGljOgotICAgICAgICBNYXRoT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIE1hdGhPYmpl
Y3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcAppbmRleCBkOGZkYTY5YTg0MDdiZDUwYmVkZjNlNGVlN2EwYWUzN2MyNjg1OTY2Li45Y2Q1
ZGNiZjdmMzVkMmQ0YmE4YjE0YTVmZTJjNmEwZGE0OWRlYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApA
QCAtMzIsNyArMzIsNyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwIH07CiAK
LU5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlKQorTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSkKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtNDEsMTMgKzQxLDIzIEBAIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCoKIAogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgbV9lcnJvclN0cnVjdHVyZSA9IEVycm9ySW5z
dGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSk7Cisg
ICAgbV9lcnJvclN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBFcnJvcklu
c3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsK
KyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5cGUpOworfQorCit2b2lkIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAg
ICBJbnRlcm5hbEZ1bmN0aW9uOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBpZiAobV9l
cnJvclN0cnVjdHVyZSkKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lcnJvclN0cnVjdHVy
ZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdp
dGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVl
IG1lc3NhZ2UgPSBleGVjLT5hcmd1bWVudENvdW50KCkgPyBleGVjLT5hcmd1bWVudCgwKSA6IGpz
VW5kZWZpbmVkKCk7CiAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IHN0YXRpY19jYXN0
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSktPmVycm9yU3RydWN0dXJl
KCk7CisgICAgQVNTRVJUKGVycm9yU3RydWN0dXJlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmgKaW5kZXggMjNmNzk4ZTQ3MjliZWJlN2E5OGM2MmQ4NGQzYmQyNmM3
YzFiNzgwNy4uZTk2ZGFmNjQ0ZmE0YTBhOWQ0M2FhOTEwOWY1YjA5OTM1MjgzMDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaApAQCAtMzEsMTEgKzMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
KTsKKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAtNDMs
MTAgKzQzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzTWFya0NoaWxkcmVuIHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAgICAg
ICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEm
KTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCi0gICAgICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclBy
b3RvdHlwZS5jcHAKaW5kZXggNGUxMDI2OGVlYjJmZTBlNmI3NTBlMGFkZDE0NmY3Y2Q3MjZkYmVi
Mi4uZGUyN2Q1OWVlNGUyZWEwNWFmNWEwMGFjNDdkMGZjYjIwM2FjODJhMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChOYXRpdmVFcnJvclByb3RvdHlwZSk7CiAKLU5hdGl2ZUVycm9yUHJvdG90eXBlOjpO
YXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IpCitOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQogewogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJv
dG90eXBlLmgKaW5kZXggMzA2OTBkNWJjN2U3M2Y4OWI2MTE0YTNhYWI0NGUxY2NjZmY0ZWFlOS4u
ZTFiMDVjZWI4MmJjM2Y0MDJmMzFkNzM2NTliMzgyOTI1N2ExMGY2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCkBAIC0y
OCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90
b3R5cGUgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmluZyYsIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqKTsKKyAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJiwgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvciopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCmluZGV4IGFl
ZTE0M2EzZjA3ZDU2MTZhNjBiMWRiZmE3Y2NlYjk4NGQ2ZjdiYmUuLjQxOTNmNzk4MThmOTMxMTBi
NmE0MThjMDI2YjJmNWNhYmZkYmNhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRl
cm5hbEZ1bmN0aW9uOjpzX2kKIEBlbmQKICovCiAKLU51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBOdW1iZXJQcm90b3R5cGUq
IG51bWJlclByb3RvdHlwZSkKK051bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICA6IEludGVy
bmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IElkZW50aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKSkKIHsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKaW5kZXggYWI0NTA3ZTU4M2ViMjViMjdh
ZmYyMzQxOWM0Mjc4ZTFhNzk2MTU4Mi4uNjlhYThhMTMyMGE3MGQ4MDgzNzU0ZGVlYWNkZjAxM2Fj
YjAwMzlhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgTnVtYmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVi
bGljOgotICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIE51bWJlclByb3RvdHlwZSopOworICAg
ICAgICBOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIE51bWJlclByb3RvdHlwZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKKyAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90bykgCiAgICAgICAgIHsgCiAgICAgICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgCiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuY3BwCmluZGV4IDc0
YjVlOTgxZTNhZGY1YTUzMzljMjEzMjcyYzNkOTQ3ZGZiNGIxOTAuLjZlZTEwM2IzODU2Mjk1MWU1
MjJjNTgzNTI5NWE5MGE2MzE1ZjJiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyT2JqZWN0LmNwcApAQCAtMzEsOCArMzEsOCBAQCBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKE51bWJlck9iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJPYmplY3Q6
OnNfaW5mbyA9IHsgIk51bWJlciIsICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMCB9Owog
Ci1OdW1iZXJPYmplY3Q6Ok51bWJlck9iamVjdChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTV3JhcHBlck9iamVjdChzdHJ1Y3R1
cmUpCitOdW1iZXJPYmplY3Q6Ok51bWJlck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNXcmFwcGVyT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAppbmRleCA5MGQwYjI2ZTMw
ODI4NDYyODBlYjE0ZmEwMGQ4YjM4NWM0YjBjOGQ3Li5jYmE2NWRkMGY3MjQ4NDlmOGRhNmFkN2Vl
MzczNzUyNWIzNjNmNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJPYmplY3QuaApAQCAtMjcsMTEgKzI3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgTnVtYmVyT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgot
ICAgICAgICBleHBsaWNpdCBOdW1iZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIGV4cGxpY2l0IE51bWJlck9iamVjdChKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcAppbmRleCA2YzAyN2IzNmNlOWM1NWI0MTA2ZmNiYmFjMDU3MjQ1NjIzNDI0NzgzLi4yNDUz
MmRkNTEyOTI1YmQyMmJmMDhjMDFkZWMxYmExODk4N2EzZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Q
cmVjaXNpb24oRXhlY1N0YXRlKik7CiAKIC8vIEVDTUEgMTUuNy40CiAKLU51bWJlclByb3RvdHlw
ZTo6TnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCitOdW1iZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQogICAgIDogTnVtYmVyT2Jq
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewogICAgIHNldEludGVybmFsVmFs
dWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcigwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4IDE5MWFiNDc4YTNjNzU0OWNl
OTkyYmNlZjE1Nzg4OWUyZGU3MjQ1MzEuLjQ1YmRmZTdiYjJmY2Q4MDYwZWIzYzZjZTViYzIzM2Zl
OGRiZTU3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5oCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
TnVtYmVyUHJvdG90eXBlIDogcHVibGljIE51bWJlck9iamVjdCB7CiAgICAgcHVibGljOgotICAg
ICAgICBOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKKyAg
ICAgICAgTnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggNmJkMmEyODM2ZTVjZmIzODc2MGJhNjAzYjI1YTZiODAzZDJh
ZTIxMC4uYWVkNWUyNDZhNDNkZmU1NmUwYmQzNTNlN2NiNjdjOTlhMTI2Yjk0YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogQGVuZAogKi8KIAotT2Jq
ZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQorT2JqZWN0Q29uc3RydWN0
b3I6Ok9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0
UHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikpCiB7CiAg
ICAgLy8gRUNNQSAxNS4yLjMuMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmgKaW5kZXggYjdiZmMxZDcxN2M3MTc4ZTMzYzI5NmFkN2I0Yjk3
NDAxZWFlNDNkMS4uNmViYWZjZGFkZmFhOGM1Njg0MTRhMjA2ZGZhMDI0MmViMzY0NDFmOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5o
CkBAIC0yOSwxNCArMjksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBPYmplY3RD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgT2JqZWN0UHJvdG90eXBlKik7CisgICAgICAgIE9iamVj
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2Jq
ZWN0UHJvdG90eXBlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwCmluZGV4IDE4NzQ1NmYyMjdmZWQ0ODhiNmEwMmU3MmNhYjU1ODVh
YWVlODA5MjIuLjc0NjkxNzJjODk2ZTcxMTc1MDMxOGYwNzI4N2VkMTE5MDMxMjg0OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApA
QCAtNDAsOCArNDAsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi1PYmplY3RQcm90b3R5cGU6Ok9iamVj
dFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3R1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rp
b25TdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0dWN0dXJlKQorT2JqZWN0UHJv
dG90eXBlOjpPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0dWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3Ry
dWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0dWN0
dXJlKQogICAgICwgbV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXModHJ1ZSkKIHsKICAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNG
dW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVu
dW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
aAppbmRleCA2MWM4ZjU3ZDE0ODhkMzU4NjRhZmUzZDk1YTc4OWFkODNkY2E3NWQxLi45ZmI3ZmFl
NWM2ZTU3NjFjYWZhNDM0ODU5OTAzMWUwYjBiYmJjMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaApAQCAtMjcsNyArMjcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVjdFByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVj
dHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBPYmplY3RQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3Ry
dWN0dXJlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmgKaW5kZXggZWRiZDM1ZjQ4YTI2YzI4ZDY5ZDBlMWM0NzQ2MjhmYWNlNzE4MDFiOC4uZmMxOTVj
ZDg3YzViMzZjZTkzYTE1NTQ5NWU3YjBiZjJhMTIyNjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC0yMiw2ICsy
Miw3IEBACiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKIAogI2luY2x1ZGUgIlVTdHJp
bmcuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFRhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC0yNDQsNyArMjQ1LDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUo
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KQogICAgIEFTU0VSVChpc1Bvd2VyT2YyKG1faW5kZXhT
aXplKSk7CiB9CiAKLWlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFs
RGF0YSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQoraW5saW5lIFByb3Bl
cnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwq
IG93bmVyLCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKICAgICA6IG1faW5kZXhTaXplKG90
aGVyLm1faW5kZXhTaXplKQogICAgICwgbV9pbmRleE1hc2sob3RoZXIubV9pbmRleE1hc2spCiAg
ICAgLCBtX2luZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdE1hbGxvYyhkYXRhU2l6ZSgp
KSkpCkBAIC0yNTYsOCArMjU3LDEwIEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRh
YmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmCiAgICAgbWVt
Y3B5KG1faW5kZXgsIG90aGVyLm1faW5kZXgsIGRhdGFTaXplKCkpOwogCiAgICAgaXRlcmF0b3Ig
ZW5kID0gdGhpcy0+ZW5kKCk7Ci0gICAgZm9yIChpdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKKyAgICBmb3IgKGl0ZXJhdG9yIGl0ZXIgPSBiZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIGl0ZXItPmtleS0+cmVmKCk7CisgICAgICAgIHdy
aXRlQmFycmllcihnbG9iYWxEYXRhLCBvd25lciwgaXRlci0+c3BlY2lmaWNWYWx1ZS5nZXQoKSk7
CisgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCiAgICAg
VmVjdG9yPHVuc2lnbmVkPiogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9m
ZnNldHMuZ2V0KCk7CkBAIC0yNjUsNyArMjY4LDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlBy
b3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlUYWJsZSYK
ICAgICAgICAgbV9kZWxldGVkT2Zmc2V0cy5zZXQobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVy
RGVsZXRlZE9mZnNldHMpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25z
dCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRh
YmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5p
dGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKICAgICA6IG1faW5kZXhT
aXplKHNpemVGb3JDYXBhY2l0eShpbml0aWFsQ2FwYWNpdHkpKQogICAgICwgbV9pbmRleE1hc2so
bV9pbmRleFNpemUgLSAxKQogICAgICwgbV9pbmRleChzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KGZh
c3RaZXJvZWRNYWxsb2MoZGF0YVNpemUoKSkpKQpAQCAtMjgwLDYgKzI4Myw3IEBAIGlubGluZSBQ
cm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCosIHVuc2ln
bmVkIGluaXRpYWxDYXBhCiAgICAgICAgIEFTU0VSVChjYW5JbnNlcnQoKSk7CiAgICAgICAgIHJl
aW5zZXJ0KCppdGVyKTsKICAgICAgICAgaXRlci0+a2V5LT5yZWYoKTsKKyAgICAgICAgd3JpdGVC
YXJyaWVyKGdsb2JhbERhdGEsIG93bmVyLCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsKICAg
ICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRl
eCAxOWI0YjM2MWU2Yzg4NGQ5NDFmMGI3M2RlZTU1ZmY5NTU2ZWQyMGJkLi4zZGEwMTk4MWNiZTg3
M2VlOTc4ZTQyNmZiOTAyMDQyYWJmNzY0ODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGNv
bnN0IENsYXNzSW5mbyBSZWdFeHBDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
SW50ZXJuYWxGdW5jdGlvbjo6c19pCiBAZW5kCiAqLwogCi1SZWdFeHBDb25zdHJ1Y3Rvcjo6UmVn
RXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90
eXBlKiByZWdFeHBQcm90b3R5cGUpCitSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCiAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSkKICAgICAsIGQoYWRvcHRQdHIobmV3IFJl
Z0V4cENvbnN0cnVjdG9yUHJpdmF0ZSkpCiB7CkBAIC0xMDksNyArMTA5LDcgQEAgUmVnRXhwQ29u
c3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamUKIH0KIAogUmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdFeHBNYXRjaGVzQXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGRhdGEpCi0gICAg
OiBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKCksIGRhdGEtPmxhc3ROdW1TdWJQYXR0ZXJucyArIDEsIENyZWF0ZUluaXRpYWxp
emVkKQorICAgIDogSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCksIGRhdGEtPmxhc3ROdW1T
dWJQYXR0ZXJucyArIDEsIENyZWF0ZUluaXRpYWxpemVkKQogewogICAgIFJlZ0V4cENvbnN0cnVj
dG9yUHJpdmF0ZSogZCA9IG5ldyBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGU7CiAgICAgZC0+aW5w
dXQgPSBkYXRhLT5sYXN0SW5wdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuaAppbmRleCA1ZTBiMmI4NTBiMWI4YTZjMmMwMDA4ODc1NjM1
YzJmZmM5OTE1YzA0Li41NDg2NjRlNTg0ZmUxMjY2ZjczODNiN2E0MTkzYmIwZTEwNzRiNmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgKQEAgLTU3LDkgKzU3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgUmVnRXhwUHJvdG90eXBlKik7CisgICAgICAgIFJlZ0V4
cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVn
RXhwUHJvdG90eXBlKik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAKaW5kZXggNGI1MDI4YmQ5NzNjNjJkYTM2ZWFjZTA1ODMzYjY5MTc5ZDI0OTc5My4u
ZDgyNGVjZGIwOGJlMzhjOWNiMGZmNTM4NWY2NDZjMTIxNTQ1YjJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IGNvbnN0IENsYXNzSW5mbyBSZWdFeHBPYmplY3Q6OnNfaW5mbyA9IHsgIlJlZ0V4cCIsICZKU09i
amVjdFdpdGhHbG9iYWxPYmplY3Q6OnNfCiBAZW5kCiAqLwogCi1SZWdFeHBPYmplY3Q6OlJlZ0V4
cE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgTm9uTnVsbFBhc3NSZWZQdHI8UmVnRXhwPiByZWdFeHApCitS
ZWdFeHBPYmplY3Q6OlJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTm9uTnVsbFBhc3NSZWZQdHI8UmVnRXhwPiByZWdFeHApCiAg
ICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAg
ICAgLCBkKGFkb3B0UHRyKG5ldyBSZWdFeHBPYmplY3REYXRhKHJlZ0V4cCkpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAppbmRleCBmYTIwMjRkY2Q3
NWU3YWM1YzI2OGMxODc3ZTA2OTQxMDA0MjE1YjlmLi40Mjc0ZmZmNDE0OTFkMmU1NjY1OTU4MzFl
NTRjNjY1ODBkYmZkY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKLSAgICAg
ICAgUmVnRXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIE5vbk51bGxQYXNzUmVmUHRyPFJlZ0V4cD4pOworICAgICAgICBS
ZWdFeHBPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBOb25OdWxsUGFzc1JlZlB0
cjxSZWdFeHA+KTsKICAgICAgICAgdmlydHVhbCB+UmVnRXhwT2JqZWN0KCk7CiAKICAgICAgICAg
dm9pZCBzZXRSZWdFeHAoUGFzc1JlZlB0cjxSZWdFeHA+IHIpIHsgZC0+cmVnRXhwID0gcjsgfQpA
QCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Ns
b3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDYxNzQ3YjFmYzY1NzFjNmFiMGJk
MTAwNGQ0MTllNzhiMWI1ZTM1M2QuLjViYjhhZDhiYjkzODJkOGM5ZGI0NDgxNjg4MmZkMjg2ZTQ0
ZjIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIAogLy8gRUNNQSAx
NS4xMC41CiAKLVJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCitSZWdFeHBQcm90
b3R5cGU6OlJlZ0V4cFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3Ry
dWN0dXJlKQogICAgIDogUmVnRXhwT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBSZWdF
eHA6OmNyZWF0ZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIiwgTm9GbGFncykpCiB7CiAgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rp
b24oZXhlYywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbXBpbGUsIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUpLCBEb250RW51bSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCmluZGV4
IDcwZDc3ZDljODQ5NjE1MTU3ZTcyZmIwMWEwNTg3MDI2MWExMmE3YTMuLjJjYzU0MDU4NjUwYWMy
M2ZjMjliY2FiMDJhZGI0YmIxOTkxZDQ4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUmVnRXhwUHJvdG90eXBlIDogcHVibGljIFJlZ0V4cE9iamVjdCB7
CiAgICAgcHVibGljOgotICAgICAgICBSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIGZ1bmN0
aW9uU3RydWN0dXJlKTsKKyAgICAgICAgUmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgKaW5kZXggZjBmZjc1Nzg5NTJkMmRkZjFlZDY3ODA4Y2ExMmQxNWZjMDg0
YTk1Ni4uZDBhMjY3MmI2MTgwZjE5YmIxMWY3ZWYyZDk1ZjhlYmYyZTU0ZGI2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZSA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIHB1YmxpYzoKICAgICAgICAgU2NvcGVDaGFpbk5vZGUoU2NvcGVDaGFpbk5vZGUqIG5l
eHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCi0gICAgICAgICAgICA6
IEpTQ2VsbChnbG9iYWxEYXRhLT5zY29wZUNoYWluTm9kZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAg
ICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zY29wZUNoYWluTm9kZVN0
cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAg
ICAgICAgICAgLCBuZXh0KCpnbG9iYWxEYXRhLCB0aGlzLCBuZXh0KQogICAgICAgICAgICAgLCBv
YmplY3QoKmdsb2JhbERhdGEsIHRoaXMsIG9iamVjdCkKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnQoKTsKICNlbmRpZgogICAgICAgICAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJ
bmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZz
X2luZm8pOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzTWFya0NoaWxkcmVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCmluZGV4IDI0YzUwMWU1NzA5
MzVmZGU2NmEzYTEzMmY0OTZmZTlmZDAzNzUxMTIuLmU2NjZkZWUxNTc5MmI3ZmJlODk3ZTYwZDJj
NTAzZDYyM2I3NmZkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24oRXhl
Y1N0YXRlKiBleGVjKQotICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCku
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmljdEV2YWxBY3RpdmF0aW9u
U3RydWN0dXJlLmdldCgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZWQwODhlNGY2ZDA3MzZkOWEwYmRi
ODQ3MjU0NTVkMGQ5M2IyNzA4NS4uNTYwMjAyYTU1OWU2ZDliYjViY2I1OGIxYTliMTRjMTUwODFi
Yzk4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjKQogCiBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKIAotU3RyaW5nQ29uc3RydWN0
b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBl
KQorU3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBl
KQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBzdHJpbmdQcm90b3R5cGUtPmNsYXNzSW5m
bygpLT5jbGFzc05hbWUpKQogewogICAgIC8vIEVDTUEgMTUuNS4zLjEgU3RyaW5nLnByb3RvdHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmgKaW5kZXggM2E0MmM3ZTk1NjEyODdlODY1ODZmMGFkMjczZDdlNjM3N2Y1ZTM4Ni4uMTE3Y2Nl
OGNhOTgwYzNlNzM3MzhlNjVkOTdhYzhlODUwYWIxMWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCkBAIC0yOSw3ICsyOSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpbmdDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSopOworICAg
ICAgICBTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSopOwog
CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVj
dERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5k
ZXggNDdlNTg2MGFkOWY1NDE5MmM3MWZjNDA1MjA5NmZkZDNiYzM3ZjVhNy4uNjdkYzI5MWIwOWVj
ZjdkN2ViYTg4YWFmMjk2ZmE1MzQ4ZWMyMmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yOSwyMiArMjksMjIgQEAgQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdPYmplY3QpOwogCiBjb25zdCBDbGFzc0luZm8gU3RyaW5n
T2JqZWN0OjpzX2luZm8gPSB7ICJTdHJpbmciLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAs
IDAgfTsKIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTV3JhcHBlck9iamVj
dChzdHJ1Y3R1cmUpCitTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAg
ICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzRW1wdHlTdHJpbmcoZXhl
YykpOwogfQogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU1N0cmluZyog
c3RyaW5nKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVjdHVyZSkKK1N0cmluZ09iamVjdDo6
U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgc2V0SW50
ZXJuYWxWYWx1ZShnbG9iYWxEYXRhLCBzdHJpbmcpOwogfQogCi1TdHJpbmdPYmplY3Q6OlN0cmlu
Z09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCi0gICAgOiBKU1dyYXBwZXJPYmplY3Qoc3Ry
dWN0dXJlKQorU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQorICAgIDogSlNXcmFwcGVy
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCks
IGpzU3RyaW5nKGV4ZWMsIHN0cmluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAppbmRleCBhZTMzNzZkMjJhY2U1M2E4MTlhMzA3ZDQ5M2M1MTVhOTI4
NzlkMDY2Li40YzE2MDQ0ZmJhNjk4NTc0Y2VkNzMyYTIyY2NmNmZjNjZkMjQ3YmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtMjgsOCArMjgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBK
U1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNT
dGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwotICAgICAgICBTdHJpbmdPYmpl
Y3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmlu
ZyYpOworICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAg
ICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7
CiAKICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIApAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
YXNTdHJpbmcoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CiAKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1dy
YXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBTdHJpbmdPYmplY3QoSlNHbG9i
YWxEYXRhJiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNTdHJpbmcqKTsKKyAgICAg
ICAgU3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTU3RyaW5nKik7CiAg
ICAgfTsKIAogICAgIFN0cmluZ09iamVjdCogYXNTdHJpbmdPYmplY3QoSlNWYWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAppbmRleCBlNGM3MDYxMjJjZTE3
MTNkNDNlZTk1M2QxYmM4OWY3NTBlOWI0ZTdjLi4zMTMzOTQ0NThmM2QwMTE4NDEyYzY0ODg4MDM0
NDAyNzIzN2NhY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LmgKQEAgLTM3LDEyICszNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
RXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
Y29uc3QgVVN0cmluZyYgc3RyaW5nKQorICAgICAgICBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgICAgICA6IFN0cmluZ09iamVjdChleGVjLCBzdHJ1
Y3R1cmUsIHN0cmluZykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvKSAKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgCiAgICAgICAg
IHsgCiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJv
dG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENv
dW50LCAmc19pbmZvKTsgCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGE2YmY0ZTYyNTJlYmE4YjkxYTI4NTcy
NDQwZGU4NGQ4ZTJhMTdkY2MuLjkxMTEyYTU1Yjg5Njc3ZTZjNzI1YzViNGVkNWE0Nzc4NjVhZWI1
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZTdHJpbmdPYmplY3Q6OnNfaW5mbywgMCwKICovCiAK
IC8vIEVDTUEgMTUuNS40Ci1TdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlKQorU3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICA6IFN0cmluZ09iamVjdChleGVjLCBzdHJ1Y3R1cmUpCiB7CiAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKaW5kZXggNTdkZWYyMjgxYjFkNWM0OGYxMzRhZDVkNDIx
ZTA3N2VlNWEwODdhOC4uNmM0YjQ3NTY0MTNhYzI3MGY5ZjdlYTMyNDgwMTNhODdlOGUxZjJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgK
QEAgLTI5LDEyICsyOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ1By
b3RvdHlwZSA6IHB1YmxpYyBTdHJpbmdPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3Ry
aW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPik7CisgICAgICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggYmQ3ZDlk
ZGE5MDE3MmFlNjI1YzczZjAzYjczYWVmYjIyY2NhMGY3ZS4uZTJkNTRkY2I4Yjk0YWZjMjNhZGUy
ZjM3ZTRlNGQwYzhhMjQ4OGZmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCkBAIC02MSwyMSArNjEsNiBAQCBpbnQgbnVtUmVtb3ZlczsKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLSNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgV1RGOjpSZWZDb3VudGVkTGVha0Nv
dW50ZXIgc3RydWN0dXJlQ291bnRlcigiU3RydWN0dXJlIik7Ci0KLSNpZiBFTkFCTEUoSlNDX01V
TFRJUExFX1RIUkVBRFMpCi1zdGF0aWMgTXV0ZXgmIGlnbm9yZVNldE11dGV4KCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOwotICAgIHJldHVybiBtdXRleDsK
LX0KLSNlbmRpZgotCi1zdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVMZWFrczsKLXN0YXRpYyBIYXNo
U2V0PFN0cnVjdHVyZSo+JiBpZ25vcmVTZXQgPSAqKG5ldyBIYXNoU2V0PFN0cnVjdHVyZSo+KTsK
LSNlbmRpZgotCiAjaWYgRFVNUF9TVFJVQ1RVUkVfSURfU1RBVElTVElDUwogc3RhdGljIEhhc2hT
ZXQ8U3RydWN0dXJlKj4mIGxpdmVTdHJ1Y3R1cmVTZXQgPSAqKG5ldyBIYXNoU2V0PFN0cnVjdHVy
ZSo+KTsKICNlbmRpZgpAQCAtMTA2LDQxICs5MSw0MSBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGU6OnJlbW92ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgLy8g
bWFwIG1vZGUpLgogICAgICAgICAvLyBBcyBzdWNoLCB0aGUgcGFzc2VkIHN0cnVjdHVyZSAqbXVz
dCogYmUgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24uCiAgICAgICAgIEFTU0VSVChzaW5nbGVUcmFu
c2l0aW9uKCkgPT0gc3RydWN0dXJlKTsKLSAgICAgICAgc2V0U2luZ2xlVHJhbnNpdGlvbigwKTsK
KyAgICAgICAgY2xlYXJTaW5nbGVUcmFuc2l0aW9uKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gQ2hlY2sgd2hldGhlciBhIG1hcHBpbmcgZXhpc3RzIGZvciBzdHJ1Y3R1cmUncyBrZXksIGFu
ZCB3aGV0aGVyIHRoZQogICAgICAgICAvLyBlbnRyeSBpcyBzdHJ1Y3R1cmUgKHRoZSBsYXR0ZXIg
Y2hlY2sgbWF5IGZhaWwgaWYgd2UgaW5pdGlhbGx5IGhhZCBhCiAgICAgICAgIC8vIHRyYW5zaXRp
b24gd2l0aCBhIHNwZWNpZmljIHZhbHVlLCBhbmQgdGhpcyBoYXMgYmVlbiBkZXNwZWNpZmllZCku
CiAgICAgICAgIFRyYW5zaXRpb25NYXA6Oml0ZXJhdG9yIGVudHJ5ID0gbWFwKCktPmZpbmQobWFr
ZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cywgc3RydWN0dXJlLT5tX2F0dHJpYnV0
ZXNJblByZXZpb3VzKSk7Ci0gICAgICAgIGlmIChlbnRyeSAhPSBtYXAoKS0+ZW5kKCkgJiYgc3Ry
dWN0dXJlID09IGVudHJ5LT5zZWNvbmQpCisgICAgICAgIGlmIChlbnRyeSAhPSBtYXAoKS0+ZW5k
KCkgJiYgc3RydWN0dXJlID09IGVudHJ5LmdldCgpLnNlY29uZCkKICAgICAgICAgICAgIG1hcCgp
LT5yZW1vdmUoZW50cnkpOwogICAgIH0KIH0KIAotaW5saW5lIHZvaWQgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlOjphZGQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitpbmxpbmUgdm9pZCBTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGU6OmFkZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogICAgIGlmIChpc1VzaW5nU2luZ2xlU2xvdCgpKSB7CiAgICAgICAg
IFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigpOwogCiAg
ICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgZmlyc3QgdHJhbnNpdGlvbiBiZWluZyBhZGRlZC4K
ICAgICAgICAgaWYgKCFleGlzdGluZ1RyYW5zaXRpb24pIHsKLSAgICAgICAgICAgIHNldFNpbmds
ZVRyYW5zaXRpb24oc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHNldFNpbmdsZVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgc2Vjb25kIHRyYW5zaXRpb24gYmVpbmcgYWRk
ZWQKICAgICAgICAgLy8gKG9yIHRoZSBmaXJzdCB0cmFuc2l0aW9uIGJlaW5nIGRlc3BlY2lmaWVk
ISkKICAgICAgICAgc2V0TWFwKG5ldyBUcmFuc2l0aW9uTWFwKCkpOwotICAgICAgICBhZGQoZXhp
c3RpbmdUcmFuc2l0aW9uKTsKKyAgICAgICAgYWRkKGdsb2JhbERhdGEsIGV4aXN0aW5nVHJhbnNp
dGlvbik7CiAgICAgfQogCiAgICAgLy8gQWRkIHRoZSBzdHJ1Y3R1cmUgdG8gdGhlIG1hcC4KLSAg
ICBzdGQ6OnBhaXI8VHJhbnNpdGlvbk1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcCgp
LT5hZGQobWFrZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cywgc3RydWN0dXJlLT5t
X2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKKyAgICBzdGQ6OnBhaXI8VHJhbnNp
dGlvbk1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcCgpLT5hZGQoZ2xvYmFsRGF0YSwg
bWFrZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cywgc3RydWN0dXJlLT5tX2F0dHJp
YnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsK
ICAgICAgICAgLy8gVGhlcmUgYWxyZWFkeSBpcyBhbiBlbnRyeSEgLSB3ZSBzaG91bGQgb25seSBo
aXQgdGhpcyB3aGVuIGRlc3BlY2lmeWluZy4KLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+
c2Vjb25kLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dC5maXJzdC5nZXQoKS5zZWNvbmQtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwogICAgICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7Ci0gICAgICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kID0gc3RydWN0dXJlOworICAgICAgICBtYXAoKS0+c2V0KHJl
c3VsdC5maXJzdCwgc3RydWN0dXJlKTsKICAgICB9CiB9CiAKQEAgLTE4OSwxMCArMTc0LDEwIEBA
IHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCiAjZW5kaWYKIH0KIAotU3RydWN0dXJl
OjpTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywg
dW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykK
LSAgICA6IG1fdHlwZUluZm8odHlwZUluZm8pCi0gICAgLCBtX3Byb3RvdHlwZShwcm90b3R5cGUp
Ci0gICAgLCBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKDApCitTdHJ1Y3R1cmU6OlN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBl
SW5mbyYgdHlwZUluZm8sIHVuc2lnbmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8pCisgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1
Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3R5cGVJbmZvKHR5cGVJbmZvKQorICAgICwg
bV9wcm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFzc0lu
Zm8oY2xhc3NJbmZvKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSh0eXBlSW5mby5p
c0ZpbmFsKCkgPyBKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA6IEpTTm9uRmlu
YWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5KQogICAgICwgbV9vZmZzZXQobm9PZmZzZXQp
CkBAIC0yMDYsMjcgKzE5MSwzNiBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU1ZhbHVlIHByb3Rv
dHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueQogICAgICwgbV9w
cmV2ZW50RXh0ZW5zaW9ucyhmYWxzZSkKIHsKICAgICBBU1NFUlQobV9wcm90b3R5cGUpOwotICAg
IEFTU0VSVChtX3Byb3RvdHlwZS0+aXNPYmplY3QoKSB8fCBtX3Byb3RvdHlwZS0+aXNOdWxsKCkp
OworICAgIEFTU0VSVChtX3Byb3RvdHlwZS5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLmlzTnVs
bCgpKTsKK30KIAotI2lmbmRlZiBOREVCVUcKLSNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVB
RFMpCi0gICAgTXV0ZXhMb2NrZXIgcHJvdGVjdChpZ25vcmVTZXRNdXRleCgpKTsKLSNlbmRpZgot
ICAgIGlmIChzaG91bGRJZ25vcmVMZWFrcykKLSAgICAgICAgaWdub3JlU2V0LmFkZCh0aGlzKTsK
LSAgICBlbHNlCi0gICAgICAgIHN0cnVjdHVyZUNvdW50ZXIuaW5jcmVtZW50KCk7Ci0jZW5kaWYK
K2NvbnN0IENsYXNzSW5mbyBTdHJ1Y3R1cmU6OnNfaW5mbyA9IHsgIlN0cnVjdHVyZSIsIDAsIDAs
IDAgfTsKIAotI2lmIERVTVBfU1RSVUNUVVJFX0lEX1NUQVRJU1RJQ1MKLSAgICBsaXZlU3RydWN0
dXJlU2V0LmFkZCh0aGlzKTsKLSNlbmRpZgorU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQorICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHRoaXMpCisgICAgLCBt
X3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKQorICAgICwgbV9w
cm90b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywganNOdWxsKCkpCisgICAgLCBtX2NsYXNzSW5mbygm
c19pbmZvKQorICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgwKQorICAgICwgbV9vZmZz
ZXQobm9PZmZzZXQpCisgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkK
KyAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQorICAgICwgbV9oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQorICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGll
cyhmYWxzZSkKKyAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKKyAgICAsIG1fc3BlY2lm
aWNGdW5jdGlvblRocmFzaENvdW50KDApCisgICAgLCBtX2Fub255bW91c1Nsb3RDb3VudCgwKQor
ICAgICwgbV9wcmV2ZW50RXh0ZW5zaW9ucyhmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9wcm90b3R5
cGUpOworICAgIEFTU0VSVChtX3Byb3RvdHlwZS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFnbG9i
YWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CiB9CiAKLVN0cnVjdHVyZTo6U3RydWN0dXJlKGNv
bnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCi0gICAgOiBtX3R5cGVJbmZvKHByZXZpb3VzLT50eXBl
SW5mbygpKQotICAgICwgbV9wcm90b3R5cGUocHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQot
ICAgICwgbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cygwKQorU3RydWN0dXJlOjpTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQorICAg
IDogSlNDZWxsKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlLmdldCgp
KQorICAgICwgbV90eXBlSW5mbyhwcmV2aW91cy0+dHlwZUluZm8oKSkKKyAgICAsIG1fcHJvdG90
eXBlKGdsb2JhbERhdGEsIHRoaXMsIHByZXZpb3VzLT5zdG9yZWRQcm90b3R5cGUoKSkKICAgICAs
IG1fY2xhc3NJbmZvKHByZXZpb3VzLT5tX2NsYXNzSW5mbykKICAgICAsIG1fcHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkocHJldmlvdXMtPm1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkpCiAgICAgLCBt
X29mZnNldChub09mZnNldCkKQEAgLTI0MCw1OCArMjM0LDExIEBAIFN0cnVjdHVyZTo6U3RydWN0
dXJlKGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25z
KHByZXZpb3VzLT5tX3ByZXZlbnRFeHRlbnNpb25zKQogewogICAgIEFTU0VSVChtX3Byb3RvdHlw
ZSk7Ci0gICAgQVNTRVJUKG1fcHJvdG90eXBlLT5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLT5p
c051bGwoKSk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0jaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJF
QURTKQotICAgIE11dGV4TG9ja2VyIHByb3RlY3QoaWdub3JlU2V0TXV0ZXgoKSk7Ci0jZW5kaWYK
LSAgICBpZiAoc2hvdWxkSWdub3JlTGVha3MpCi0gICAgICAgIGlnbm9yZVNldC5hZGQodGhpcyk7
Ci0gICAgZWxzZQotICAgICAgICBzdHJ1Y3R1cmVDb3VudGVyLmluY3JlbWVudCgpOwotI2VuZGlm
Ci0KLSNpZiBEVU1QX1NUUlVDVFVSRV9JRF9TVEFUSVNUSUNTCi0gICAgbGl2ZVN0cnVjdHVyZVNl
dC5hZGQodGhpcyk7Ci0jZW5kaWYKKyAgICBBU1NFUlQobV9wcm90b3R5cGUuaXNPYmplY3QoKSB8
fCBtX3Byb3RvdHlwZS5pc051bGwoKSk7CiB9CiAKIFN0cnVjdHVyZTo6flN0cnVjdHVyZSgpCiB7
Ci0gICAgaWYgKG1fcHJldmlvdXMpIHsKLSAgICAgICAgQVNTRVJUKG1fbmFtZUluUHJldmlvdXMp
OwotICAgICAgICBtX3ByZXZpb3VzLT5tX3RyYW5zaXRpb25UYWJsZS5yZW1vdmUodGhpcyk7Ci0g
ICAgfQotCi0jaWZuZGVmIE5ERUJVRwotI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykK
LSAgICBNdXRleExvY2tlciBwcm90ZWN0KGlnbm9yZVNldE11dGV4KCkpOwotI2VuZGlmCi0gICAg
SGFzaFNldDxTdHJ1Y3R1cmUqPjo6aXRlcmF0b3IgaXQgPSBpZ25vcmVTZXQuZmluZCh0aGlzKTsK
LSAgICBpZiAoaXQgIT0gaWdub3JlU2V0LmVuZCgpKQotICAgICAgICBpZ25vcmVTZXQucmVtb3Zl
KGl0KTsKLSAgICBlbHNlCi0gICAgICAgIHN0cnVjdHVyZUNvdW50ZXIuZGVjcmVtZW50KCk7Ci0j
ZW5kaWYKLQotI2lmIERVTVBfU1RSVUNUVVJFX0lEX1NUQVRJU1RJQ1MKLSAgICBsaXZlU3RydWN0
dXJlU2V0LnJlbW92ZSh0aGlzKTsKLSNlbmRpZgotfQotCi12b2lkIFN0cnVjdHVyZTo6c3RhcnRJ
Z25vcmluZ0xlYWtzKCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgc2hvdWxkSWdub3JlTGVha3Mg
PSB0cnVlOwotI2VuZGlmCi19Ci0KLXZvaWQgU3RydWN0dXJlOjpzdG9wSWdub3JpbmdMZWFrcygp
Ci17Ci0jaWZuZGVmIE5ERUJVRwotICAgIHNob3VsZElnbm9yZUxlYWtzID0gZmFsc2U7Ci0jZW5k
aWYKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQpAQCAtMzIxLDcgKzI2OCw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIAogICAgIGZvciAo
cHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CiAgICAg
ICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07Ci0gICAgICAgIFByb3BlcnR5TWFwRW50cnkg
ZW50cnkoZ2xvYmFsRGF0YSwgMCwgc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgpLCBt
X2Fub255bW91c1Nsb3RDb3VudCArIHN0cnVjdHVyZS0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV9h
dHRyaWJ1dGVzSW5QcmV2aW91cywgc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
KTsKKyAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIG1fYW5vbnltb3VzU2xvdENvdW50ICsgc3Ry
dWN0dXJlLT5tX29mZnNldCwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzLCBzdHJ1
Y3R1cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCkpOwogICAgICAgICBtX3Byb3Bl
cnR5VGFibGUtPmFkZChlbnRyeSk7CiAgICAgfQogfQpAQCAtMzQ4LDEzICsyOTUsMTMgQEAgdm9p
ZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW4KICAgICBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5jbGVhcigpOwog
fQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gT2JqZWN0VHlwZSk7CiAKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24g
PSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBh
dHRyaWJ1dGVzKSkgewotICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWVJblByZXZpb3VzID0g
ZXhpc3RpbmdUcmFuc2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzOworICAgICAgICBK
U0NlbGwqIHNwZWNpZmljVmFsdWVJblByZXZpb3VzID0gZXhpc3RpbmdUcmFuc2l0aW9uLT5tX3Nw
ZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgpOwogICAgICAgICBpZiAoc3BlY2lmaWNWYWx1ZUlu
UHJldmlvdXMgJiYgc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgIT0gc3BlY2lmaWNWYWx1ZSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uLT5t
X29mZnNldCAhPSBub09mZnNldCk7CkBAIC0zNjcsNyArMzE0LDcgQEAgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3QKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKK1N0
cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVf
dCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUgYSBzcGVjaWZpYyBmdW5jdGlvbiwgd2Ug
bWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhlcmUgaXMKICAgICAvLyBhbHJlYWR5IGEg
dHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3BlcnR5IG5hbWUgYW5kIGF0dHJpYnV0ZXMs
IGJ1dApAQCAtMzg3LDIzICszMzQsMjMgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwKICAgICAg
ICAgc3BlY2lmaWNWYWx1ZSA9IDA7CiAKICAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9uQ291
bnQoKSA+IHNfbWF4VHJhbnNpdGlvbkxlbmd0aCkgewotICAgICAgICBSZWZQdHI8U3RydWN0dXJl
PiB0cmFuc2l0aW9uID0gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpOworICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSB0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CiAgICAgICAgIG9mZnNldCA9IHRyYW5zaXRp
b24tPnB1dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOwogICAgICAgICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90
Q291bnQpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudCA9
PSB0cmFuc2l0aW9uLT5tX2Fub255bW91c1Nsb3RDb3VudCk7CiAgICAgICAgIGlmICh0cmFuc2l0
aW9uLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCk7Ci0gICAgICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKKyAgICAgICAg
cmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNp
dGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNy
ZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCi0gICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQ
cm90b3R5cGVDaGFpbi5zZXQoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlw
ZUNoYWluLmdldCgpLCAwKTsKLSAgICB0cmFuc2l0aW9uLT5tX3ByZXZpb3VzID0gc3RydWN0dXJl
OworICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0KGdsb2JhbERhdGEs
IHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7Cisg
ICAgdHJhbnNpdGlvbi0+bV9wcmV2aW91cy5zZXQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3Ry
dWN0dXJlKTsKICAgICB0cmFuc2l0aW9uLT5tX25hbWVJblByZXZpb3VzID0gcHJvcGVydHlOYW1l
LmltcGwoKTsKICAgICB0cmFuc2l0aW9uLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzID0gYXR0cmli
dXRlczsKLSAgICB0cmFuc2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzID0gc3BlY2lm
aWNWYWx1ZTsKKyAgICB0cmFuc2l0aW9uLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLnNldChn
bG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzcGVjaWZpY1ZhbHVlKTsKIAogICAgIGlmIChzdHJ1Y3R1
cmUtPm1fcHJvcGVydHlUYWJsZSkgewogICAgICAgICBpZiAoc3RydWN0dXJlLT5tX2lzUGlubmVk
UHJvcGVydHlUYWJsZSkKQEAgLTQyNSw1MCArMzcyLDUwIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsCiAKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNldCAtIHN0cnVjdHVyZS0+bV9h
bm9ueW1vdXNTbG90Q291bnQ7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+YW5vbnltb3VzU2xvdENv
dW50KCkgPT0gdHJhbnNpdGlvbi0+YW5vbnltb3VzU2xvdENvdW50KCkpOwotICAgIHN0cnVjdHVy
ZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKHRyYW5zaXRpb24uZ2V0KCkpOwotICAgIHJldHVybiB0
cmFuc2l0aW9uLnJlbGVhc2UoKTsKKyAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFk
ZChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAot
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpCitTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6
ZV90JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgIFN0
cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cmVtb3Zl
KHByb3BlcnR5TmFtZSk7CiAgICAgQVNTRVJUKG9mZnNldCA+PSBzdHJ1Y3R1cmUtPm1fYW5vbnlt
b3VzU2xvdENvdW50KTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3Vu
dCA9PSB0cmFuc2l0aW9uLT5tX2Fub255bW91c1Nsb3RDb3VudCk7CiAKLSAgICByZXR1cm4gdHJh
bnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBwcm90b3R5
cGUpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVj
dHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSk7CiAKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAg
ICB0cmFuc2l0aW9uLT5tX3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgcHJv
dG90eXBlKTsKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJh
bnNpdGlvbiB0byB0aGlzLgogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFw
SWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxl
ID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0
aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2Jh
bERhdGEsIHRyYW5zaXRpb24pOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRh
YmxlID0gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291
bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7Ci0gICAgcmV0dXJuIHRy
YW5zaXRpb24ucmVsZWFzZSgpOworICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1QYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgcmVwbGFjZUZ1bmN0aW9uKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1
bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPCBtYXhTcGVjaWZpY0Z1
bmN0aW9uVGhyYXNoQ291bnQpOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBj
cmVhdGUoc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgICsrdHJhbnNpdGlvbi0+bV9zcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQ7CiAKICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9uZSBjYW4g
bm90IHRyYW5zaXRpb24gdG8gdGhpcy4KIAogICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9w
ZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwotICAgIHRyYW5zaXRpb24tPm1fcHJvcGVy
dHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CisgICAg
dHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJs
ZShnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlubmVkUHJv
cGVydHlUYWJsZSA9IHRydWU7CiAKICAgICBpZiAodHJhbnNpdGlvbi0+bV9zcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQgPT0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KQpAQCAtNDc5
LDUyICs0MjYsNTIgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5
RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmEKICAgICB9CiAgICAgCiAgICAg
QVNTRVJUKHN0cnVjdHVyZS0+YW5vbnltb3VzU2xvdENvdW50KCkgPT0gdHJhbnNpdGlvbi0+YW5v
bnltb3VzU2xvdENvdW50KCkpOwotICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVy
ZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
LSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7Cisg
ICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CiAKICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9uZSBjYW4gbm90IHRyYW5zaXRpb24g
dG8gdGhpcy4KIAogICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KGdsb2JhbERhdGEpOwotICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVj
dHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CisgICAgdHJhbnNpdGlvbi0+bV9w
cm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCB0
cmFuc2l0aW9uKTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSA9IHRy
dWU7CiAgICAgCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+YW5vbnltb3VzU2xvdENvdW50KCkgPT0g
dHJhbnNpdGlvbi0+YW5vbnltb3VzU2xvdENvdW50KCkpOwotICAgIHJldHVybiB0cmFuc2l0aW9u
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBEaWN0aW9uYXJ5S2luZCBraW5kKQorU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGljdGlvbmFyeUtpbmQga2luZCkKIHsK
ICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAg
Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwor
ICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xv
YmFsRGF0YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5j
b3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIHRyYW5zaXRp
b24pOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAg
ICB0cmFuc2l0aW9uLT5tX2RpY3Rpb25hcnlLaW5kID0ga2luZDsKICAgICAKICAgICBBU1NFUlQo
c3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNT
bG90Q291bnQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHJldHVy
biB0cmFuc2l0aW9uOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b0Nh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0
aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogICAgIHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEs
IHN0cnVjdHVyZSwgQ2FjaGVkRGljdGlvbmFyeUtpbmQpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVj
dHVyZT4gU3RydWN0dXJlOjp0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1N0cnVjdHVyZSogU3Ry
dWN0dXJlOjp0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICByZXR1cm4gdG9EaWN0aW9u
YXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIFVuY2FjaGVkRGljdGlvbmFyeUtp
bmQpOwogfQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyB0cmFuc2l0
aW9uLgotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1N0cnVjdHVyZSog
U3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBw
cmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICBT
dHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKTsKIAogICAgIGlmICh0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUp
IHsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNpdGlvbi0+bV9w
cm9wZXJ0eVRhYmxlLT5lbmQoKTsKQEAgLTUzMiwxMyArNDc5LDEzIEBAIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0CiAgICAgICAgICAgICBpdGVyLT5hdHRyaWJ1dGVzIHw9IERvbnREZWxldGU7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHJldHVybiB0cmFu
c2l0aW9uOwogfQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyB0cmFu
c2l0aW9uLgotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0
aW9uID0gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBpZiAodHJhbnNpdGlvbi0+bV9wcm9wZXJ0
eVRhYmxlKSB7CiAgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRyYW5zaXRp
b24tPm1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CkBAIC01NDYsMjMgKzQ5MywyMyBAQCBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydQogICAgICAgICAgICAgaXRlci0+YXR0cmlidXRlcyB8PSAoRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKICAgICB9CiAKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2Fu
dCB0byBjYWNoZSB0aGlzIHRyYW5zaXRpb24uCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0
dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpwcmV2ZW50RXh0
ZW5zaW9uc1RyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0
cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEs
IHN0cnVjdHVyZSk7CiAKICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9uZSBjYW4gbm90
IHRyYW5zaXRpb24gdG8gdGhpcy4KIAogICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwotICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlU
YWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CisgICAgdHJh
bnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShn
bG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlubmVkUHJvcGVy
dHlUYWJsZSA9IHRydWU7CiAgICAgdHJhbnNpdGlvbi0+bV9wcmV2ZW50RXh0ZW5zaW9ucyA9IHRy
dWU7CiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFu
c2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVs
ZWFzZSgpOworICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5
IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eS4KQEAgLTYwMSw3ICs1NDgsNyBAQCBib29sIFN0
cnVjdHVyZTo6aXNGcm96ZW4oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmbGF0dGVuRGljdGlv
bmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3Qp
CitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChpc0Rp
Y3Rpb25hcnkoKSk7CiAgICAgaWYgKGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKQEAgLTY4
OCw5ICs2MzUsOSBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OmNoZWNrQ29uc2lzdGVuY3koKQog
CiAjZW5kaWYKIAotUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCitQcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OmNvcHlQ
cm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBvd25lcikK
IHsKLSAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFs
RGF0YSwgMCwgKm1fcHJvcGVydHlUYWJsZSkgOiAwOworICAgIHJldHVybiBtX3Byb3BlcnR5VGFi
bGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKm1fcHJvcGVydHlUYWJs
ZSkgOiAwOwogfQogCiBzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0Nl
bGwqJiBzcGVjaWZpY1ZhbHVlKQpAQCAtNzU4LDcgKzcwNSw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6
OnB1dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwKICAgICAgICAgbmV3T2Zmc2V0ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgKyBtX2Fu
b255bW91c1Nsb3RDb3VudDsKICAgICBBU1NFUlQobmV3T2Zmc2V0ID49IG1fYW5vbnltb3VzU2xv
dENvdW50KTsKIAotICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xv
YmFsRGF0YSwgMCwgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsK
KyAgICBtX3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0eU1hcEVudHJ5KGdsb2JhbERhdGEsIHRo
aXMsIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSk7CiAKICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiAgICAgcmV0dXJuIG5ld09mZnNldDsKQEAgLTgxOCwxMSArNzY1
LDI2IEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkmIHByCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVy
ZTo6aW5pdGlhbGl6ZVRocmVhZGluZygpCi17Ci0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBFTkFC
TEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCi0gICAgaWdub3JlU2V0TXV0ZXgoKTsKLSNlbmRpZgor
dm9pZCBTdHJ1Y3R1cmU6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAg
ICBKU0NlbGw6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIGlmIChtX3Byb3RvdHlwZSkK
KyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9wcm90b3R5cGUpOworICAgIGlmIChtX2NhY2hl
ZFByb3RvdHlwZUNoYWluKQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2NhY2hlZFByb3Rv
dHlwZUNoYWluKTsKKyAgICBpZiAobV9wcmV2aW91cykKKyAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZCgmbV9wcmV2aW91cyk7CisgICAgaWYgKG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpCisgICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgIGlm
IChtX2VudW1lcmF0aW9uQ2FjaGUpCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fZW51bWVy
YXRpb25DYWNoZSk7CisgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkgeworICAgICAgICBQcm9wZXJ0
eVRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOworICAgICAgICBm
b3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIHB0ciA9IG1fcHJvcGVydHlUYWJsZS0+YmVnaW4o
KTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgIGlmIChwdHItPnNwZWNpZmljVmFs
dWUpCisgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmcHRyLT5zcGVjaWZpY1ZhbHVl
KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogI2lmIERPX1BST1BFUlRZTUFQX0NPTlNURU5DWV9D
SEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA5NGEw
NmIyZjk2OWYyZWQzZmY3ZGRlMGJlNmYxMWNiODQ4ZGNiODEwLi4wMTBmZGZkMmVjODY4ZTU5MmJh
NTA5ZTNmM2Y5OGFiMDg3YWUyMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaApAQCAtNTUsNDkgKzU1LDQxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzCiAgICAgfTsKIAotICAgIGNsYXNzIFN0cnVjdHVyZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZT4geworICAgIGNsYXNzIFN0cnVjdHVyZSA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0
eXBlSW5mbywgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbykKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywg
dW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1cmUocHJv
dG90eXBlLCB0eXBlSW5mbywgYW5vbnltb3VzU2xvdENvdW50LCBjbGFzc0luZm8pKTsKKyAgICAg
ICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgICAgICAg
ICByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0YSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHByb3RvdHlw
ZSwgdHlwZUluZm8sIGFub255bW91c1Nsb3RDb3VudCwgY2xhc3NJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNrIH07
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlKFZQdHJTdGVhbGlu
Z0hhY2tUeXBlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1cmUoanNOdWxsKCksIFR5cGVJbmZvKFVu
c3BlY2lmaWVkVHlwZSksIDAsIGNsYXNzSW5mbykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3Rh
dGljIHZvaWQgc3RhcnRJZ25vcmluZ0xlYWtzKCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHN0b3BJ
Z25vcmluZ0xlYWtzKCk7Ci0KICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90
JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3Bl
cnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9VbmNhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHNlYWxUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZyZWV6
ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
SlNWYWx1ZSBwcm90b3R5cGUpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlG
dW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRp
ZmllciYpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0
b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHNlYWxUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBmcmVlemVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSopOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgYm9vbCBpc1NlYWxlZChK
U0dsb2JhbERhdGEmKTsKICAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmKTsKICAg
ICAgICAgYm9vbCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50RXh0ZW5z
aW9uczsgfQogCi0gICAgICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFy
eVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOworICAgICAgICBTdHJ1Y3R1cmUq
IGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CiAK
ICAgICAgICAgflN0cnVjdHVyZSgpOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2Vk
IHdpdGggY2F1dGlvbi4gIAogICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24oSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUgPSBwcm90b3R5cGU7IH0K
KyAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxE
YXRhLCB0aGlzLCBwcm90b3R5cGUpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGljdGlv
bmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gTm9uZURpY3Rpb25hcnlL
aW5kOyB9CiAgICAgICAgIGJvb2wgaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSBjb25zdCB7IHJl
dHVybiBtX2RpY3Rpb25hcnlLaW5kID09IFVuY2FjaGVkRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTEw
NywxMSArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBzdG9yZWRQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQogICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZUZvckxvb2t1cChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgU3RydWN0
dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2b2lk
IG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChtX3Byb3RvdHlwZSkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZt
X3Byb3RvdHlwZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0
YWNrJik7CiAKICAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyByZXR1cm4g
bV9wcmV2aW91cy5nZXQoKTsgfQogCkBAIC0xNDcsOCArMTM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzSW5mbzsgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKLQogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlwZU9mZnNldCgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3Byb3Rv
dHlwZSk7CkBAIC0xNjQsMjEgKzE1MCwzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvKSArIFR5cGVJbmZv
Ojp0eXBlT2Zmc2V0KCk7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgKCZnbG9iYWxEYXRhKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSk7CisgICAg
ICAgIH0KKwogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlw
ZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENs
YXNzSW5mbyopOwotICAgICAgICBTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJlKik7CisgICAgICAg
IFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyopOworICAg
ICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIFN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNyZWF0ZShjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgQVNTRVJUKGdsb2JhbERh
dGEuc3RydWN0dXJlU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKCZnbG9iYWxE
YXRhKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgfQotICAgICAg
ICAKKworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKwogICAgICAgICB0
eXBlZGVmIGVudW0geyAKICAgICAgICAgICAgIE5vbmVEaWN0aW9uYXJ5S2luZCA9IDAsCiAgICAg
ICAgICAgICBDYWNoZWREaWN0aW9uYXJ5S2luZCA9IDEsCiAgICAgICAgICAgICBVbmNhY2hlZERp
Y3Rpb25hcnlLaW5kID0gMgogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOworICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERp
Y3Rpb25hcnlLaW5kKTsKIAogICAgICAgICBzaXplX3QgcHV0KEpTR2xvYmFsRGF0YSYsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZShjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpOwpAQCAtMTg5LDcgKzE4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBib29sIGRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXIm
KTsKICAgICAgICAgdm9pZCBkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlNHbG9iYWxEYXRhJik7CiAK
LSAgICAgICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJik7
CisgICAgICAgIFByb3BlcnR5VGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSogb3duZXIpOwogICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAo
SlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVj
ZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewpAQCAtMjEzLDE4ICsy
MDksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVHlwZUluZm8gbV90eXBlSW5mbzsK
IAotICAgICAgICBEZXByZWNhdGVkUHRyPFVua25vd24+IG1fcHJvdG90eXBlOwotICAgICAgICBt
dXRhYmxlIFdlYWs8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CisgICAg
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3Byb3RvdHlwZTsKKyAgICAgICAgbXV0YWJsZSBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CiAKLSAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9wcmV2aW91czsKKyAgICAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9wcmV2aW91czsKICAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1fbmFt
ZUluUHJldmlvdXM7Ci0gICAgICAgIEpTQ2VsbCogbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91czsK
KyAgICAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91czsK
IAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogCiAgICAgICAgIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZSBtX3RyYW5zaXRpb25UYWJsZTsKIAotICAgICAgICBXZWFrPEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I+IG1fZW51bWVyYXRpb25DYWNoZTsKKyAgICAgICAgV3JpdGVC
YXJyaWVyPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+IG1fZW51bWVyYXRpb25DYWNoZTsKIAogICAg
ICAgICBPd25QdHI8UHJvcGVydHlUYWJsZT4gbV9wcm9wZXJ0eVRhYmxlOwogCkBAIC0yNzcsNyAr
MjczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+Y2xh
c3NJbmZvKCk7CiAgICAgfQogCi0gICAgaW5saW5lIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBKU0Nl
bGw6OmNyZWF0ZUR1bW15U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICBp
bmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OmNyZWF0ZUR1bW15U3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBqc051bGwoKSwgVHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAwKTsKICAgICB9CkBAIC0yOTksNiArMjk1LDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgbV92YWx1ZXMuYXBwZW5kKGNlbGwpOwogICAgIH0KIAorICAgIGlubGlu
ZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleSBTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OldlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrOjprZXlGb3JGaW5hbGl6ZXIodm9pZCos
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEhhc2g6OktleShz
dHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIHN0cnVjdHVyZS0+bV9hdHRyaWJ1dGVz
SW5QcmV2aW91cyk7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0
cnVjdHVyZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5jcHAKaW5kZXggYWI1MWMwMjRkY2I0M2MwZDg4MDYxNGUzMjYyODc0N2IwOTA2NTNiNy4u
YWQ2YWJmZjgxNjAzOTRkNjQwYzQ4YmUyNTEyMzMxYjViZWQzODkyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcApAQCAtMzQsMTkgKzM0
LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogQ2xhc3NJbmZvIFN0cnVjdHVyZUNoYWluOjpz
X2luZm8gPSB7ICJTdHJ1Y3R1cmVDaGFpbiIsIDAsIDAsIDAgfTsKIAotU3RydWN0dXJlQ2hhaW46
OlN0cnVjdHVyZUNoYWluKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIGhlYWQpCi0gICAgOiBKU0NlbGwoc3RydWN0dXJlLnJlbGVhc2VSZWYoKSkKK1N0
cnVjdHVyZUNoYWluOjpTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgOiBKU0NlbGwoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKQogewogICAgIHNpemVfdCBzaXplID0gMDsKICAgICBmb3IgKFN0cnVj
dHVyZSogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9yZWRQ
cm90b3R5cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90b3R5
cGUoKSktPnN0cnVjdHVyZSgpKQogICAgICAgICArK3NpemU7CiAgICAgCi0gICAgbV92ZWN0b3Ig
PSBhZG9wdEFycmF5UHRyKG5ldyBSZWZQdHI8U3RydWN0dXJlPltzaXplICsgMV0pOworICAgIG1f
dmVjdG9yID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT5bc2l6ZSAr
IDFdKTsKIAogICAgIHNpemVfdCBpID0gMDsKICAgICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9
IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKS5pc051
bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKSktPnN0cnVjdHVy
ZSgpKQotICAgICAgICBtX3ZlY3RvcltpKytdID0gY3VycmVudDsKLSAgICBtX3ZlY3RvcltpXSA9
IDA7CisgICAgICAgIG1fdmVjdG9yW2krK10uc2V0KGdsb2JhbERhdGEsIHRoaXMsIGN1cnJlbnQp
OworICAgIG1fdmVjdG9yW2ldLmNsZWFyKCk7CiB9CiAKIFN0cnVjdHVyZUNoYWluOjp+U3RydWN0
dXJlQ2hhaW4oKQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFN0cnVjdHVyZUNoYWluOjptYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgc2l6ZV90IGkgPSAwOwogICAgIHdo
aWxlIChtX3ZlY3RvcltpXSkKLSAgICAgICAgbV92ZWN0b3JbaSsrXS0+bWFya0FnZ3JlZ2F0ZSht
YXJrU3RhY2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3ZlY3RvcltpKytdKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uaAppbmRleCA4MzQ5NjlmYzdiMDlhOGJhYTFlMTZhODVkMGVhOTdhYzQw
YWU5NTIyLi5iOTg0YmU2YTZkYzhhNjdiYjgwMTdhNjE0MTBmYjk1NDg1ZGU0NzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTQyLDE2
ICs0MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIHsgcmV0dXJuIG5ldyAoJmdsb2Jh
bERhdGEpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUs
IGhlYWQpOyB9Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92
ZWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIHsgcmV0dXJuIG5ldyAoJmds
b2JhbERhdGEpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJl
Q2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQpOyB9CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KICAgICAgICAgdm9pZCBt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc01hcmtDaGlsZHJlbiksIDAsICZz
X2luZm8pOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwg
T3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgMCwgJnNfaW5mbyk7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFN0cnVjdHVyZUNoYWluKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVj
dHVyZSogaGVhZCk7CisgICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIFN0cnVjdHVyZSogaGVhZCk7CiAgICAgICAgIH5TdHJ1Y3R1cmVDaGFpbigpOwotICAg
ICAgICBPd25BcnJheVB0cjxSZWZQdHI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOworICAgICAgICBP
d25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwogICAgICAgICBz
dGF0aWMgQ2xhc3NJbmZvIHNfaW5mbzsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCmluZGV4IGRh
NzhlMWI5OTY4MzI2ZWRhMzY2NDE2ZGNmMWViNDE5Njg2MDE0YTYuLjVmNmU1ZmE0ZWYyNGJlMGJl
YWMzZGFlZTkwODViYTc4Yjg3N2ZhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCkBAIC0yNyw4ICsyNyw4
IEBACiAjZGVmaW5lIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZV9oCiAKICNpbmNsdWRlICJVU3Ry
aW5nLmgiCisjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlv
bnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTY5LDcgKzY5LDE2IEBAIGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSB7CiAgICAgICAg
IHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFRyYWl0VHlwZSYgdmFsdWUpIHsgcmV0
dXJuIEZpcnN0VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5maXJzdCk7IH0KICAgICB9Owog
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEhhc2g6OktleSwgU3RydWN0dXJlKiwgSGFzaCwgSGFzaFRy
YWl0cz4gVHJhbnNpdGlvbk1hcDsKKyAgICBzdHJ1Y3QgV2Vha0dDTWFwRmluYWxpemVyQ2FsbGJh
Y2sgeworICAgICAgICBzdGF0aWMgdm9pZCogZmluYWxpemVyQ29udGV4dEZvcihIYXNoOjpLZXkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzdGF0aWMgSGFzaDo6S2V5IGtleUZvckZpbmFsaXplcih2b2lkKiBjb250ZXh0LCBT
dHJ1Y3R1cmUqKTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXZWFrR0NNYXA8SGFzaDo6S2V5LCBT
dHJ1Y3R1cmUsIFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrLCBIYXNoLCBIYXNoVHJhaXRzPiBU
cmFuc2l0aW9uTWFwOwogCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKCkK
QEAgLTgxLDkgKzkwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghaXNVc2luZ1Np
bmdsZVNsb3QoKSkKICAgICAgICAgICAgIGRlbGV0ZSBtYXAoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY2xlYXJTaW5nbGVUcmFuc2l0aW9uKCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZv
aWQgYWRkKFN0cnVjdHVyZSopOworICAgIGlubGluZSB2b2lkIGFkZChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqKTsKICAgICBpbmxpbmUgdm9pZCByZW1vdmUoU3RydWN0dXJlKik7CiAgICAgaW5s
aW5lIGJvb2wgY29udGFpbnMoU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKSBj
b25zdDsKICAgICBpbmxpbmUgU3RydWN0dXJlKiBnZXQoU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKSBjb25zdDsKQEAgLTEwMCw5ICsxMTEsMTggQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VHJhbnNpdGlvbk1hcCo+KG1fZGF0YSk7CiAgICAg
fQogCisgICAgSGFuZGxlU2xvdCBzbG90KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChp
c1VzaW5nU2luZ2xlU2xvdCgpKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFu
ZGxlU2xvdD4obV9kYXRhICYgflVzaW5nU2luZ2xlU2xvdEZsYWcpOworICAgIH0KKwogICAgIHZv
aWQgc2V0TWFwKFRyYW5zaXRpb25NYXAqIG1hcCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1Vz
aW5nU2luZ2xlU2xvdCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChIYW5kbGVTbG90IHNsb3Qg
PSB0aGlzLT5zbG90KCkpCisgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5k
ZWFsbG9jYXRlKHNsb3QpOwogCiAgICAgICAgIC8vIFRoaXMgaW1wbGljaXRseSBjbGVhcnMgdGhl
IGZsYWcgdGhhdCBpbmRpY2F0ZXMgd2UncmUgdXNpbmcgYSBzaW5nbGUgdHJhbnNpdGlvbgogICAg
ICAgICBtX2RhdGEgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihtYXApOwpAQCAtMTEzLDEz
ICsxMzMsMjkgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIHNpbmdsZVRyYW5zaXRpb24oKSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPihtX2RhdGEgJiB+VXNpbmdTaW5n
bGVTbG90RmxhZyk7CisgICAgICAgIGlmIChIYW5kbGVTbG90IHNsb3QgPSB0aGlzLT5zbG90KCkp
CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPihzbG90LT5h
c0NlbGwoKSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIHZvaWQgc2V0U2luZ2xl
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAKKyAgICB2b2lkIGNsZWFyU2lu
Z2xlVHJhbnNpdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNVc2luZ1NpbmdsZVNsb3Qo
KSk7CisgICAgICAgIGlmIChIYW5kbGVTbG90IHNsb3QgPSB0aGlzLT5zbG90KCkpCisgICAgICAg
ICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRlKHNsb3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHNldFNpbmdsZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1VzaW5n
U2luZ2xlU2xvdCgpKTsKLSAgICAgICAgbV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oc3RydWN0dXJlKSB8IFVzaW5nU2luZ2xlU2xvdEZsYWc7CisgICAgICAgIEhhbmRsZVNsb3Qg
c2xvdCA9IHRoaXMtPnNsb3QoKTsKKyAgICAgICAgaWYgKCFzbG90KSB7CisgICAgICAgICAgICBz
bG90ID0gZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpOworICAgICAgICAgICAgSGFu
ZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+bWFrZVdlYWsoc2xvdCwgMCwgMCk7CisgICAgICAgICAg
ICBtX2RhdGEgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihzbG90KSB8IFVzaW5nU2luZ2xl
U2xvdEZsYWc7CisgICAgICAgIH0KKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+
d3JpdGVCYXJyaWVyKHNsb3QsIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oc3RydWN0dXJlKSk7
CisgICAgICAgICpzbG90ID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihzdHJ1Y3R1cmUpOwog
ICAgIH0KIAogICAgIGludHB0cl90IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha0dDTWFwLmgKaW5kZXggMmFmZjA5YTEyY2JiZDM0NTczZWU2YWQwNTcxYjExZjY3NWU3
NzZmMS4uNWFkMWM2MmEzZTk3Mjk4ZDI0MDQ3ZjY0OTg3OGQxOTcyNTllMjJmNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTM0LDE3ICszNCwzMSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogLy8gQSBIYXNoTWFwIGZvciBHQydkIHZhbHVlcyB0aGF0IHJlbW92
ZXMgZW50cmllcyB3aGVuIHRoZSBhc3NvY2lhdGVkIHZhbHVlCiAvLyBkaWVzLgotdGVtcGxhdGU8
dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gY2xhc3MgV2Vha0dDTWFwIDog
cHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewordGVtcGxhdGUgPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBEZWZhdWx0V2Vha0dDTWFwRmluYWxpemVyQ2FsbGJh
Y2sgeworICAgIHN0YXRpYyB2b2lkKiBmaW5hbGl6ZXJDb250ZXh0Rm9yKEtleVR5cGUga2V5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGtleSk7CisgICAg
fQorCisgICAgc3RhdGljIEtleVR5cGUga2V5Rm9yRmluYWxpemVyKHZvaWQqIGNvbnRleHQsIHR5
cGVuYW1lIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpFeHRlcm5hbFR5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxLZXlUeXBlPihjb250ZXh0KTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlLCB0eXBl
bmFtZSBGaW5hbGl6ZXJDYWxsYmFjayA9IERlZmF1bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFj
azxLZXlUeXBlLCBNYXBwZWRUeXBlPiwgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPEtleVR5cGU+OjpIYXNoLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcgPSBIYXNoVHJhaXRz
PEtleVR5cGU+ID4KK2NsYXNzIFdlYWtHQ01hcCA6IHByaXZhdGUgV2Vha0hhbmRsZU93bmVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
ZWFrR0NNYXApOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPEtleVR5cGUsIEhhbmRsZVNsb3Q+IE1h
cFR5cGU7CisgICAgdHlwZWRlZiBIYXNoTWFwPEtleVR5cGUsIEhhbmRsZVNsb3QsIEhhc2hBcmcs
IEtleVRyYWl0c0FyZz4gTWFwVHlwZTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZVR5cGVz
PE1hcHBlZFR5cGU+OjpFeHRlcm5hbFR5cGUgRXh0ZXJuYWxUeXBlOwogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgbWFwX2l0ZXJhdG9yOwogCiBwdWJsaWM6CiAKICAgICBz
dHJ1Y3QgaXRlcmF0b3IgeworICAgICAgICBmcmllbmQgY2xhc3MgV2Vha0dDTWFwOwogICAgICAg
ICBpdGVyYXRvcihtYXBfaXRlcmF0b3IgaXRlcikKICAgICAgICAgICAgIDogbV9pdGVyYXRvcihp
dGVyKQogICAgICAgICB7CkBAIC02Miw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRv
ciAhPSBvdGhlci5tX2l0ZXJhdG9yOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
ICAgICBtYXBfaXRlcmF0b3IgbV9pdGVyYXRvcjsKKyAgICAgICAgbWFwX2l0ZXJhdG9yIG1faXRl
cmF0b3I7CiAgICAgfTsKIAogICAgIFdlYWtHQ01hcCgpCkBAIC03OCw2ICs5MiwyNSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fbWFwLmNsZWFyKCk7CiAgICAgfQogCisgICAgYm9vbCBjb250YWlucyhj
b25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tYXAuY29u
dGFpbnMoa2V5KTsKKyAgICB9CisKKyAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtl
eSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hcC5maW5kKGtleSk7CisgICAgfQorCisgICAg
dm9pZCByZW1vdmUoaXRlcmF0b3IgaXRlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChpdGVyLm1f
aXRlcmF0b3IgIT0gbV9tYXAuZW5kKCkpOworICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBpdGVy
Lm1faXRlcmF0b3ItPnNlY29uZDsKKyAgICAgICAgQVNTRVJUKHNsb3QpOworICAgICAgICBIYW5k
bGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRlKHNsb3QpOworICAgICAgICBtX21hcC5y
ZW1vdmUoaXRlci5tX2l0ZXJhdG9yKTsKKyAgICB9CisKICAgICBFeHRlcm5hbFR5cGUgZ2V0KGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBIYW5kbGVUeXBl
czxNYXBwZWRUeXBlPjo6Z2V0RnJvbVNsb3QobV9tYXAuZ2V0KGtleSkpOwpAQCAtODgsNiArMTIx
LDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWFwLmdldChrZXkpOwogICAgIH0KIAor
ICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcGFp
cjx0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fbWFwLmFkZChrZXks
IDApOworICAgICAgICBpZiAoaXRlci5zZWNvbmQpIHsKKyAgICAgICAgICAgIEhhbmRsZVNsb3Qg
c2xvdCA9IGdsb2JhbERhdGEuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKTsKKyAgICAgICAgICAgIGl0
ZXIuZmlyc3QtPnNlY29uZCA9IHNsb3Q7CisgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9y
KHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBGaW5hbGl6ZXJDYWxsYmFjazo6ZmluYWxpemVy
Q29udGV4dEZvcihrZXkpKTsKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCkt
PndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CisgICAgICAgICAgICAqc2xvdCA9IHZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBpdGVyOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNl
dChpdGVyYXRvciBpdGVyLCBFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgeworICAgICAgICBIYW5k
bGVTbG90IHNsb3QgPSBpdGVyLm1faXRlcmF0b3ItPnNlY29uZDsKKyAgICAgICAgQVNTRVJUKHNs
b3QpOworICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xv
dCwgdmFsdWUpOworICAgICAgICAqc2xvdCA9IHZhbHVlOworICAgIH0KKwogICAgIHZvaWQgc2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5
cGUgdmFsdWUpCiAgICAgewogICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9y
LCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7CkBAIC0xMjIsOSArMTc2LDkgQEAgcHVi
bGljOgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhh
bmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUo
SGFuZGxlPFVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEhh
bmRsZVNsb3Qgc2xvdCA9IG1fbWFwLnRha2Uoc3RhdGljX2Nhc3Q8S2V5VHlwZT4oY29udGV4dCkp
OworICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBtX21hcC50YWtlKEZpbmFsaXplckNhbGxiYWNr
OjprZXlGb3JGaW5hbGl6ZXIoY29udGV4dCwgSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OmdldEZy
b21TbG90KGhhbmRsZS5zbG90KCkpKSk7CiAgICAgICAgIEFTU0VSVChzbG90KTsKICAgICAgICAg
SGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+ZGVhbGxvY2F0ZShzbG90KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCmluZGV4IDM0ZGViYTJh
NjA0ODgyNTBhYjFmNWIwZjI1OWU3YTlmNDlhZmNkOTEuLmY5M2MyNTAzOWU0MTRkNWY1Yzg2Yjk5
ODdlNmIyY2ZkNTRiNDAzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dyaXRlQmFycmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dy
aXRlQmFycmllci5oCkBAIC0zMiw2ICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpT
Q2VsbDsKIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAoraW5saW5lIHZvaWQgd3JpdGVCYXJyaWVyKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCosIEpTVmFsdWUpCit7Cit9CisKK2lubGluZSB2b2lk
IHdyaXRlQmFycmllcihKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqLCBKU0NlbGwqKQorewor
fQorCiB0eXBlZGVmIGVudW0geyB9IFVua25vd247CiB0eXBlZGVmIEpTVmFsdWUqIEhhbmRsZVNs
b3Q7CiAKQEAgLTkyLDcgKzEwMCwxNiBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSlNWYWx1ZUNoZWNr
ZXI8SlNWYWx1ZT4gewogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmllckJh
c2UgewogcHVibGljOgogICAgIENPTVBJTEVfQVNTRVJUKCFKU1ZhbHVlQ2hlY2tlcjxUPjo6SXNK
U1ZhbHVlLCBXcml0ZUJhcnJpZXJfSlNWYWx1ZV9pc19pbnZhbGlkX191c2VfdW5rbm93bik7Ci0g
ICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwgVCogdmFsdWUpIHsgdGhp
cy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7IH0KKyAgICB2b2lk
IHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZh
bHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChvd25lciwgb3duZXIpOworICAgICAg
ICB0aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsKKyAgICAg
ICAgd3JpdGVCYXJyaWVyKGdsb2JhbERhdGEsIG93bmVyLCB0aGlzLT5tX2NlbGwpOworI2lmIEVO
QUJMRShKU0NfWk9NQklFUykKKyAgICAgICAgQVNTRVJUKCFpc1pvbWJpZShvd25lcikpOworICAg
ICAgICBBU1NFUlQoIWlzWm9tYmllKG1fY2VsbCkpOworI2VuZGlmCisgICAgfQogICAgIAogICAg
IFQqIGdldCgpIGNvbnN0CiAgICAgewpAQCAtMTAxLDExICsxMTgsMTYgQEAgcHVibGljOgogCiAg
ICAgVCogb3BlcmF0b3IqKCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX2NlbGwpOwor
I2lmIEVOQUJMRShKU0NfWk9NQklFUykKKyAgICAgICAgQVNTRVJUKCFpc1pvbWJpZShtX2NlbGwp
KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7CiAgICAg
fQogCiAgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0CiAgICAgeworICAgICAgICBBU1NFUlQobV9j
ZWxsKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2NlbGwpOwogICAgIH0KIApA
QCAtMTE4LDcgKzE0MCwxMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV9jZWxsOyB9CiAKLSAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJp
ZXIoVCogdmFsdWUpIHsgdGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2
YWx1ZSk7IH0KKyAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoVCogdmFsdWUpCisgICAg
eworICAgICAgICB0aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVl
KTsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFTU0VSVCghbV9jZWxsIHx8ICFp
c1pvbWJpZShtX2NlbGwpKTsKKyNlbmRpZgorICAgIH0KIAogcHJpdmF0ZToKICAgICBKU0NlbGwq
IG1fY2VsbDsKQEAgLTEyNiwxOCArMTU0LDMzIEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDw+IGNs
YXNzIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gewogcHVibGljOgotICAgIHZvaWQgc2V0KEpT
R2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCosIEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIo
SlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQotICAg
IEpTVmFsdWUgZ2V0KCkgY29uc3QKKyAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKG93bmVyLCBvd25lcik7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAg
ICAgICBBU1NFUlQoIWlzWm9tYmllKG93bmVyKSk7CisgICAgICAgIEFTU0VSVCghdmFsdWUuaXNa
b21iaWUoKSk7CisjZW5kaWYKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7CisgICAgICAgIHdyaXRlQmFycmllcihnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOworICAg
IH0KKyAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29k
ZShtX3ZhbHVlKSB8fCAhSlNWYWx1ZTo6ZGVjb2RlKG1fdmFsdWUpLmlzWm9tYmllKCkpOworICAg
ICAgICBBU1NFUlQoIXZhbHVlLmlzWm9tYmllKCkpOwogI2VuZGlmCisgICAgICAgIG1fdmFsdWUg
PSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgIH0KKworICAgIEpTVmFsdWUgZ2V0KCkgY29u
c3QKKyAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV92YWx1ZSk7CiAgICAg
fQogICAgIHZvaWQgY2xlYXIoKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsgfQogICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOyB9CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpLmlzTnVtYmVyKCk7IH0KKyAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCkuaXNPYmplY3QoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZ2V0KCku
aXNOdWxsKCk7IH0KICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gZ2V0
KCkuaXNHZXR0ZXJTZXR0ZXIoKTsgfQogICAgIAogICAgIEpTVmFsdWUqIHNsb3QoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cKaW5kZXggOWUzY2Q3OTMxMTU3NTA0NWNkNTBlZTg1M2UxNDAwMDUwY2Y1
ZmE0My4uZTg3NDE1MjIyOTA0OGFiNTkwNmM0OTEwYjJiNzgzMzM4ZWVmN2UxNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDQtMTMgIE9saXZlciBIdW50
ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBHQyBhbGxvY2F0ZSBTdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NDgzCisKKyAgICAgICAgRml4IHVwIEpTRyB0
byBjb3JyZWN0bHkgbWFyayBTdHJ1Y3R1cmUsIGV0IGFsLgorCisgICAgICAgICogSlNSdW4uY3Bw
OgorICAgICAgICAoSlNHbHVlR2xvYmFsT2JqZWN0OjpKU0dsdWVHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIEpTUnVuLmg6CisgICAgICAgICogSlNVdGlscy5jcHA6CisgICAgICAgIChKU09iamVj
dEtKU1ZhbHVlKToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKKyAgICAgICAgKFVzZXJP
YmplY3RJbXA6OlVzZXJPYmplY3RJbXApOgorICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDoKKyAg
ICAgICAgKFVzZXJPYmplY3RJbXA6OmNyZWF0ZVN0cnVjdHVyZSk6CisKIDIwMTEtMDQtMDggIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBP
bGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uY3BwCmluZGV4IGE4MDk2YWE0YmFjNzM1ZTVi
NzY0NmQ5NTM5MmJhMWRlYjA5OGEyMWEuLjNiOWQyNDVlYTM4NDJkODc4NTk5NDY3OGEzODE1M2U5
NWM5ZmRlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcApAQCAtMzMsMTAgKzMzLDEwIEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NvdXJjZUNvZGUuaD4KIAotSlNHbHVlR2xvYmFsT2JqZWN0OjpKU0dsdWVHbG9iYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlLCBKU0ZsYWdzIGZsYWdzKQotICAgIDogSlNHbG9iYWxPYmplY3Qoc3RydWN0dXJlKQor
SlNHbHVlR2xvYmFsT2JqZWN0OjpKU0dsdWVHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNGbGFncyBmbGFncykKKyAgICA6IEpTR2xv
YmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0g
ICAgLCBtX3VzZXJPYmplY3RTdHJ1Y3R1cmUoVXNlck9iamVjdEltcDo6Y3JlYXRlU3RydWN0dXJl
KGdsb2JhbERhdGEsIGpzTnVsbCgpKSkKKyAgICAsIG1fdXNlck9iamVjdFN0cnVjdHVyZShnbG9i
YWxEYXRhLCBVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwganNOdWxs
KCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCmluZGV4IDFmNTBmMzc2OTZmMzcxODhhMmI2
M2QxZmQ1NmM3YzlhODM0OThjZjguLjlmZTc3Njc5ZTRjOTM1ZDE2ODhiZWM2YTMxNWI1ZDI1NWVl
ZDY0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCkBAIC0zNSwxNCArMzUsMTQgQEAKIAogY2xhc3Mg
SlNHbHVlR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEpTR2x1ZUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIEpTRmxhZ3MgPSBrSlNGbGFnTm9uZSk7CisgICAgICAgIEpTR2x1ZUdsb2JhbE9i
amVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU0ZsYWdzID0ga0pTRmxhZ05vbmUpOwog
CiAgICAgICAgIEpTRmxhZ3MgRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAg
ICAgIFN0cnVjdHVyZSogdXNlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
ck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNGbGFn
cyBtX2ZsYWdzOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3VzZXJPYmplY3RTdHJ1Y3R1
cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1fdXNlck9iamVjdFN0cnVjdHVyZTsKIH07
CiAKIGNsYXNzIEpTUnVuIDogcHVibGljIEpTQmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5j
cHAKaW5kZXggYjYyZTdiZmI2ZTg5OGM4ZjJkYTYyMjc5ZWM4YTFjOTlhNGViYzFhNS4uN2RiNjUw
ZjE2NzdkYjg2Y2IwMmQwNTBjMzJmZDZlYzQyY2I2NWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRHbHVlL0pTVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1V0
aWxzLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIEpTVmFsdWUgSlNPYmplY3RLSlNWYWx1ZShKU1Vz
ZXJPYmplY3QqIHB0cikKICAgICAgICAgaWYgKCFoYW5kbGVkKQogICAgICAgICB7CiAgICAgICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUoKTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IG5ldyAoZXhlYykgVXNlck9iamVjdEltcChnZXRUaHJlYWRHbG9iYWxP
YmplY3QoKS0+dXNlck9iamVjdFN0cnVjdHVyZSgpLCBwdHIpOworICAgICAgICAgICAgcmVzdWx0
ID0gbmV3IChleGVjKSBVc2VyT2JqZWN0SW1wKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0VGhyZWFk
R2xvYmFsT2JqZWN0KCktPnVzZXJPYmplY3RTdHJ1Y3R1cmUoKSwgcHRyKTsKICAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJ
bXAuY3BwCmluZGV4IGEwNGY1OGU0NjQwZGExNDQxOGQ2ODU4ZjEyYmRiNDkyNWU5MWI5ZmEuLmM5
Mzc0OGYwMDEwYTdmYzZlZWZiMDMzNjUxMmIzYTNjNTc0YThhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvVXNlck9iamVjdEltcC5jcHAKQEAgLTM0LDggKzM0LDggQEAKIAogY29uc3QgQ2xhc3NJ
bmZvIFVzZXJPYmplY3RJbXA6OnNfaW5mbyA9IHsgIlVzZXJPYmplY3QiLCAmSlNOb25GaW5hbE9i
amVjdDo6c19pbmZvLCAwLCAwIH07CiAKLVVzZXJPYmplY3RJbXA6OlVzZXJPYmplY3RJbXAoUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNVc2VyT2JqZWN0KiB1c2VyT2JqZWN0KQot
ICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitVc2VyT2JqZWN0SW1wOjpVc2VyT2Jq
ZWN0SW1wKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
VXNlck9iamVjdCogdXNlck9iamVjdCkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogICAgICwgZkpTVXNlck9iamVjdCgoSlNVc2VyT2JqZWN0Kil1c2VyT2Jq
ZWN0LT5SZXRhaW4oKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9V
c2VyT2JqZWN0SW1wLmggYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCmlu
ZGV4IGM2YjhkODZmNWQ5YWI2OWMxZTFlNTY5ZWM4MmM2YmUyNTEyZDg1NTEuLjliZDZmMGZlMDY0
ZjE2MjQ2OGIwMjMxODdlODkxZDU2Y2VlZjZlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJP
YmplY3RJbXAuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBVc2VyT2JqZWN0SW1wIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgotICAgIFVzZXJPYmplY3RJbXAoUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCBKU1VzZXJPYmplY3QqKTsKKyAgICBVc2VyT2JqZWN0SW1wKEpTR2xv
YmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVXNlck9iamVjdCopOwogICAgIHZpcnR1YWwgflVzZXJP
YmplY3RJbXAoKTsKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtNTgs
NyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBKU1VzZXJPYmplY3QgKkdldEpTVXNlck9iamVjdCgp
IGNvbnN0OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwYzE4OTBmOTExMGY2ZWQ2OTk5ZDEwNTdjMDUzZDkzODAzODc5NTQ3Li5iNmI3MDEw
ODZhYWVlZWM4YjdiNmM2MDg5ZTc4YmYyYmFiOWM3M2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
ODQgQEAKKzIwMTEtMDQtMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHQyBhbGxvY2F0ZSBT
dHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU4NDgzCisKKyAgICAgICAgVXBkYXRlIFdlYkNvcmUgZm9yIFN0cnVjdHVyZSBiZWluZyBhIEdD
IGFsbG9jYXRlZCBvYmplY3QKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNB
dWRpb0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTVN0cnVjdHVyZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3Jl
OjpET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyOjpET01PYmplY3RXaXRoR2xvYmFs
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpET01Db25zdHJ1Y3Rvck9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpET01D
b25zdHJ1Y3Rvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpET01Db25zdHJ1Y3RvcldpdGhE
b2N1bWVudDo6RE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFs
T2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2Jh
bE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6
OkpTRE9NV2luZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6
c2V0V2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6RE9N
T2JqZWN0OjpET01PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNPcHRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyQ29udGV4dEJhc2U6OkpTV29ya2VyQ29udGV4dEJhc2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTV29ya2VyQ29udGV4dEJhc2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
Ojppbml0U2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5oOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Q1J1bnRpbWVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
YnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGlt
ZU1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZh
SW5zdGFuY2VKU0MuY3BwOgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFSdW50aW1lT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqQ1J1bnRpbWVN
ZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAg
ICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OlJ1bnRpbWVBcnJheSk6CisgICAgICAgICogYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVNZXRob2Q6OlJ1bnRpbWVNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX21ldGhvZC5oOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5oOgor
CiAyMDExLTA0LTEzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IGMxMDU0OWY5YmJjMzg5N2RjMTlkN2JlNjZkZDlkNDI0NzIxZmJhNTIuLmU1NTliM2M1
ZjU5NWU4NWY5NzFkMmIzNWYxYTk4NjhhYzFhN2M5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0xNTg0LDcgKzE1ODQsNyBAQCBfX05QTl9TZXRQcm9wZXJ0eQogX19OUE5fVVRGOEZyb21JZGVu
dGlmaWVyCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyMHdpbmRvd1NjcmlwdE5QT2Jq
ZWN0RXYKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjI5Y2xlYW51cFNjcmlwdE9iamVj
dHNGb3JQbHVnaW5FUHYKLV9fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhl
Y1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQTjNXVEYxMFN0cmluZ0ltcGxFTlMwXzhKU1N0cmluZ0VF
RVM2XworX19aTjdXZWJDb3JlMTZqc1N0cmluZ1Nsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk5T
MF85V2Vha0dDTWFwSVBOM1dURjEwU3RyaW5nSW1wbEVOUzBfOEpTU3RyaW5nRU5TMF8zM0RlZmF1
bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFja0lTNl9TN19FRU5TNF8xMFN0cmluZ0hhc2hFTlM0
XzEwSGFzaFRyYWl0c0lTNl9FRUVFUzZfCiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50
MTFnZXROUE9iamVjdEV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjljYW5BY2Nlc3NF
UEtTMF8KIF9fWk5LN1dlYkNvcmU0S1VSTDEwcHJvdG9jb2xJc0VQS2MKQEAgLTE2MDEsNyArMTYw
MSw3IEBAIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTFnZXRDYWxsRGF0YUVSTlNfOENhbGxEYXRh
RQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEzUnVu
dGltZU1ldGhvZDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTNSdW50aW1l
TWV0aG9kNnNfaW5mb0UKLV9fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzlFeGVjU3RhdGVF
UE5TXzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1
cmVFRUVSS05TXzEwSWRlbnRpZmllckVSTlM1XzZWZWN0b3JJUE5TXzhCaW5kaW5nczZNZXRob2RF
TG0wRUVFCitfX1pOM0pTQzEzUnVudGltZU1ldGhvZEMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpT
R2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRVJLTlNfMTBJZGVudGlmaWVyRVJOM1dURjZWZWN0
b3JJUE5TXzhCaW5kaW5nczZNZXRob2RFTG0wRUVFCiBfX1pOM0pTQzhCaW5kaW5nczEwUm9vdE9i
amVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVS
TlNfOENhbGxEYXRhRQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxNGRlbGV0ZVBy
b3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQpAQCAtMTYxMSwxNCArMTYx
MSwxNCBAQCBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE5Z2V0T3duUHJvcGVydHlO
YW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRp
bWVPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzhCaW5kaW5nczEz
UnVudGltZU9iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pT
VmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVP
YmplY3Q2c19pbmZvRQotX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3RDMkVQTlNfOUV4
ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNf
OVN0cnVjdHVyZUVFRU5TNl8xMFBhc3NSZWZQdHJJTlMwXzhJbnN0YW5jZUVFRQorX19aTjNKU0M4
QmluZGluZ3MxM1J1bnRpbWVPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9i
amVjdEVQTlNfOVN0cnVjdHVyZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCiBf
X1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdEQyRXYKIF9fWk4zSlNDOEJpbmRpbmdzOElu
c3RhbmNlMTljcmVhdGVSdW50aW1lT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M4Qmlu
ZGluZ3M4SW5zdGFuY2VDMkVOM1dURjEwUGFzc1JlZlB0cklOUzBfMTBSb290T2JqZWN0RUVFCiBf
X1pOM0pTQzhCaW5kaW5nczhJbnN0YW5jZUQyRXYKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJl
cDdpc1ZhbGlkRVBTMF8KIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE2Y3JlYXRlUm9v
dE9iamVjdEVQdgotX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTjNKU0M5U3RydWN0dXJlRUVFUEtO
UzRfOUNsYXNzSW5mb0UKK19fWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNE
T01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdX
ZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtO
M0pTQzlDbGFzc0luZm9FCiBfX1pOSzNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1
bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCiBfX1pU
Vk4zSlNDMTNSdW50aW1lTWV0aG9kRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29uc3RydWN0b3IuaAppbmRleCBiZTBiODAwMDA1YmYyMjFhYmVkN2E5ODQ2ZDhhMTNh
ZWMzNWI0NDMxLi4xNDQwMzU1YTgwMDhjN2U1ZjQ1ZDZjNzljMjUyNDljMWJlOWJhZTIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBK
U0F1ZGlvQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDY5YzBkYjU5MTFlYmQ2NGNhMTZm
MGNmMDBiYzE5OWI2MDU0MzgwNzcuLjkzMmFkMGI3MjQxMjkzNDViNWJlY2MwYjkyYWM0ODZjYjM0
ODZkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApA
QCAtNjU2LDExICs2NTYsMTEgQEAgU3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQ2xhc3NJbmYKICAgICByZXR1cm4g
c3RydWN0dXJlcy5nZXQoY2xhc3NJbmZvKS5nZXQoKTsKIH0KIAotU3RydWN0dXJlKiBjYWNoZURP
TVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCitT
dHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKIHsK
ICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlcygpOwogICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsKLSAg
ICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBzdHJ1Y3R1cmUpLmZpcnN0LT5zZWNv
bmQuZ2V0KCk7CisgICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKSkuZmlyc3QtPnNlY29uZC5nZXQoKTsKIH0KIAogSlNDOjpKU09iamVjdCogdG9K
U1NlcXVlbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggOTM0ZDli
MzFhNDYxYjIxNzlkYmQ0MTlmZGVlMDAyYTgwZTMyODNjNS4uZWU0MTUwMTdmZmZmY2Q4ZjJlMDgy
OWUxMjZiZGVmYjhlOGJmODFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgKQEAgLTY0LDEzICs2NCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAg
IHByb3RlY3RlZDoKLSAgICAgICAgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoTm9uTnVsbFBh
c3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKKyAgICAgICAgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAg
ICAgICAgIDogRE9NT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBBU1NFUlQgaXMgdmFsaWQsIGJ1dCBmaXJlcyBpbiBm
YXN0L2RvbS9nYy02Lmh0bWwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCkBAIC04MywxNCArODMsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCBjb25zdHJ1
Y3RvciBvYmplY3RzIGluIHRoZSBKU0MgYmluZGluZ3MuCiAgICAgY2xhc3MgRE9NQ29uc3RydWN0
b3JPYmplY3QgOiBwdWJsaWMgRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6
OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTQzo6T3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgRE9N
T2JqZWN0V2l0aEdsb2JhbFBvaW50ZXI6OlN0cnVjdHVyZUZsYWdzOwotICAgICAgICBET01Db25z
dHJ1Y3Rvck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgICAgICBET01Db25zdHJ1Y3Rv
ck9iamVjdChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgICAgICAgICAgOiBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKICAgICAgICAgewogICAgICAgICB9CkBAIC0xMDYsNyArMTA2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgICAgIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICA6IERPTUNv
bnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
RG9jdW1lbnQoKSk7CkBAIC0xMjksNyArMTI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGJvb2wgaGFzQ2FjaGVkRE9NTm9kZVdyYXBwZXJVbmNoZWNrZWQoRG9jdW1lbnQqLCBOb2RlKik7
CiAKICAgICBKU0M6OlN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFs
T2JqZWN0KiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKLSAgICBKU0M6OlN0cnVjdHVyZSogY2Fj
aGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6
OlN0cnVjdHVyZT4sIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CisgICAgSlNDOjpTdHJ1Y3R1cmUq
IGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBj
b25zdCBKU0M6OkNsYXNzSW5mbyopOwogCiAgICAgaW5saW5lIEpTRE9NR2xvYmFsT2JqZWN0KiBk
ZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCAyY2VmOTkwNmU5MDc0YTljOTFhOTFmMTMwYTNkNmRjMGJlMjUzYWQ4Li4zZTNk
MDM3NzJiODhhMWQxMDViMDIzODI4ZWE0OGE2Y2QxNjUyZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00Miw4ICs0Miw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NR2xvYmFsT2JqZWN0
OjpzX2luZm8gPSB7ICJET01HbG9iYWxPYmplY3QiLCAmSlNHbG9iYWxPYmplY3Q6OnNfaW5mbywg
MCwgMCB9OwogCi1KU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QoTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxk
PiB3b3JsZCwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKLSAgICA6IEpTR2xvYmFsT2JqZWN0KHN0cnVj
dHVyZSwgdGhpc1ZhbHVlKQorSlNET01HbG9iYWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiB3b3JsZCwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKKyAgICA6IEpTR2xv
YmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgdGhpc1ZhbHVlKQogICAgICwgbV9jdXJy
ZW50RXZlbnQoMCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7CkBAIC01Niw3ICs1Niw3IEBAIHZv
aWQgSlNET01HbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykK
IAogICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5k
KCk7CiAgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVz
KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+c2Vjb25kLT5tYXJrQWdn
cmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJml0LT5zZWNvbmQp
OwogCiAgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IGNvbnN0cnVjdG9y
cygpLmVuZCgpOwogICAgIGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0g
Y29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggMWU5OTJjNWI3MWZk
YzYyOGU2NTFkY2IyZjcyYzE1MTY0ZWZiMjQwNC4uOTE5MGUwMWIzNjRkM2M1MzkyMjNiNDQxMjMy
MDhjYWZjNmZkZGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBKU0V2ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBKU0M6OkNsYXNzSW5mbyosIFJlZlB0cjxKU0M6
OlN0cnVjdHVyZT4gPiBKU0RPTVN0cnVjdHVyZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29u
c3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OldyaXRlQmFycmllcjxKU0M6OlN0cnVjdHVyZT4gPiBK
U0RPTVN0cnVjdHVyZU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0lu
Zm8qLCBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiA+IEpTRE9NQ29uc3RydWN0b3JN
YXA7CiAKICAgICBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTR2xvYmFs
T2JqZWN0IHsKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgc3RydWN0IEpTRE9NR2xvYmFsT2JqZWN0RGF0YTsKIAotICAgICAgICBK
U0RPTUdsb2JhbE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIFBhc3NS
ZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpKU09iamVjdCogdGhpc1ZhbHVlKTsKKyAgICAg
ICAgSlNET01HbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSos
IFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpKU09iamVjdCogdGhpc1ZhbHVlKTsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMoKSB7
IHJldHVybiBtX3N0cnVjdHVyZXM7IH0KQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5v
bnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggNTg0ZjYxMGNjZTkxMTNhNzlj
OGU3ZTYyNDI0MGRiM2M5OWMwZTk2YS4uMTBmN2NkOTk3ZThlZjJlMThiMTVmZDM2OGI3YWU3NDMx
YjJhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCkBAIC00NSw4ICs0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xh
c3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFs
T2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jh
c2UoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9N
V2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQotICAgIDogSlNET01HbG9i
YWxPYmplY3Qoc3RydWN0dXJlLCBzaGVsbC0+d29ybGQoKSwgc2hlbGwpCitKU0RPTVdpbmRvd0Jh
c2U6OkpTRE9NV2luZG93QmFzZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxs
KiBzaGVsbCkKKyAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwg
c2hlbGwtPndvcmxkKCksIHNoZWxsKQogICAgICwgbV9pbXBsKHdpbmRvdykKICAgICAsIG1fc2hl
bGwoc2hlbGwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oCmluZGV4IGQxOTI2NTAxODdmOGM4NGFhOGNiMWEyYWE3ODU3YzBmZmQyZDU0MDUuLjk0NmY5
NWM3ZDQzMjAzOTU4YzM4YTMyYjAyZTY2NjI5MWI5OGI4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBKU0RPTVdpbmRvd0Jhc2UgOiBwdWJsaWMgSlNET01HbG9i
YWxPYmplY3QgewogICAgICAgICB0eXBlZGVmIEpTRE9NR2xvYmFsT2JqZWN0IEJhc2U7CiAgICAg
cHJvdGVjdGVkOgotICAgICAgICBKU0RPTVdpbmRvd0Jhc2UoTm9uTnVsbFBhc3NSZWZQdHI8SlND
OjpTdHJ1Y3R1cmU+LCBQYXNzUmVmUHRyPERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsK
KyAgICAgICAgSlNET01XaW5kb3dCYXNlKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1
cmUqLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4sIEpTRE9NV2luZG93U2hlbGwqKTsKIAogICAgIHB1
YmxpYzoKICAgICAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwpAQCAtNTcsNyArNTcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGJh
NWIwY2NiNDVkOTUwMTUxOWY5Yzg2ZmU4NzU0MTdlN2Y4NDRjYTUuLjBhZWM5Njg4NGQ2ZWJjNWE0
NTlkNTc5ODA2MGM1OGEzN2ZjMWVkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoSlNET01XaW5kb3dTaGVsbCk7CiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5k
b3dTaGVsbDo6c19pbmZvID0geyAiSlNET01XaW5kb3dTaGVsbCIsICZCYXNlOjpzX2luZm8sIDAs
IDAgfTsKIAogSlNET01XaW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbChQYXNzUmVmUHRyPERP
TVdpbmRvdz4gd2luZG93LCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQotICAgIDogQmFzZShKU0RP
TVdpbmRvd1NoZWxsOjpjcmVhdGVTdHJ1Y3R1cmUoKndvcmxkLT5nbG9iYWxEYXRhKCksIGpzTnVs
bCgpKSkKKyAgICA6IEJhc2UoKndvcmxkLT5nbG9iYWxEYXRhKCksIEpTRE9NV2luZG93U2hlbGw6
OmNyZWF0ZVN0cnVjdHVyZSgqd29ybGQtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpKQogICAgICwg
bV93b3JsZCh3b3JsZCkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtNjAs
MTEgKzYwLDExIEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8
RE9NV2luZG93PiBkb21XaW5kb3cpCiAgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0IHRoZSBnbG9i
YWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAogICAgIC8vIHdoZW4g
d2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlz
IGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBl
LikKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RPTVdpbmRv
d1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCksIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3Rv
dHlwZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBuZXcgSlNET01XaW5kb3dQ
cm90b3R5cGUoMCwgcHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOworICAgIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlID0gSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBqc051bGwoKSk7CisgICAg
U3Ryb25nPEpTRE9NV2luZG93UHJvdG90eXBlPiBwcm90b3R5cGUoKkpTRE9NV2luZG93Ojpjb21t
b25KU0dsb2JhbERhdGEoKSwgbmV3IEpTRE9NV2luZG93UHJvdG90eXBlKCpKU0RPTVdpbmRvdzo6
Y29tbW9uSlNHbG9iYWxEYXRhKCksIDAsIHByb3RvdHlwZVN0cnVjdHVyZSkpOwogCi0gICAgUmVm
UHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSgq
SlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkpOwotICAg
IEpTRE9NV2luZG93KiBqc0RPTVdpbmRvdyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xv
YmFsRGF0YSgpKSBKU0RPTVdpbmRvdyhzdHJ1Y3R1cmUucmVsZWFzZSgpLCBkb21XaW5kb3csIHRo
aXMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVj
dHVyZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuZ2V0KCkp
OworICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRvdyA9IG5ldyAoSlNET01XaW5kb3c6OmNvbW1v
bkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdygqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFs
RGF0YSgpLCBzdHJ1Y3R1cmUsIGRvbVdpbmRvdywgdGhpcyk7CiAgICAgcHJvdG90eXBlLT5wdXRB
bm9ueW1vdXNWYWx1ZSgqSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCAwLCBqc0RP
TVdpbmRvdyk7CiAgICAgc2V0V2luZG93KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRh
KCksIGpzRE9NV2luZG93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaAppbmRleCA1NzViMjk2YzQ5Y2VjYjM1OGUxODQ4MmNkNmI1OGRjMGZmY2Nk
YmI1Li5jMmM1MzM2YWVkYTZhNmJlMTdlNWExZjE3YzAyYjRiNzc0NWJkM2JhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC01OCw3ICs1OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRl
U3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKSAKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpIAog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IAogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IDBmODAzMWMwZmE5YmY0
ZDM1ZDZjZmYxZTM1OWYxZTQ1ZDYyZWU4NWEuLjhkZjU4MDExZTM5ZjIyYmY5N2IwNTY2YTc4YjU1
ODU0OGM3MzY2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5o
CkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBSZW5hbWUg
dG8gSlNET01XcmFwcGVyLgogY2xhc3MgRE9NT2JqZWN0IDogcHVibGljIEpTQzo6SlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0IHsKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBET01PYmplY3QoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0
cnVjdHVyZT4gc3RydWN0dXJlKSAKKyAgICBleHBsaWNpdCBET01PYmplY3QoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSAKICAgICAg
ICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAg
ICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCmluZGV4IGU0NDRkODg4NDAwYzg3YjlkN2M3ZGE5OGFjMzZhODJiMGEwMzk4MzUuLjhk
YzBlMWZiNzI3YjlhMmZiMTIzYzUwM2UzOTk3OWI2ODQ2YWFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMzgsNyArMzgsMTEgQEAg
SlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09i
amVjdCogd3JhcHBlciwgYm9vbCBpc0EKICAgICAsIG1faXNBdHRyaWJ1dGUoaXNBdHRyaWJ1dGUp
CiAgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKIHsKLSAgICBtX2pzRnVuY3Rp
b24uc2V0KCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24p
OworICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2pzRnVuY3Rpb24uc2V0KCptX2lzb2xhdGVk
V29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUKCFmdW5jdGlvbik7CisKIH0KIAogSlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExp
c3RlbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVj
dG9yLmgKaW5kZXggNjU0ZTIyM2ZhOGRiNWJmYWFhYWNlZGZlZDM1Y2Y3MDJhNzk5M2ExMy4uNGVm
NDA1ZGRjZWVhZGM1NzFhMmI1ZjlmZDdkMGFmYTViOTJjY2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNJbWFnZUNvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggYTkyZWQ0NzBjNDkyOWE3MDNkMTE4Y2Zh
MmE3Y2EwYjljMWY5NDE3YS4uNWI0NDllNjlmZmM1YWE5ODcwMGNlYmI1NTMyZTNjZjEzNDZkNTc3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9t
LmNwcApAQCAtNDgsOCArNDgsOCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW1hZ2VE
YXRhLCBpbWFnZURhdGEpOwogICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRhdGEiKTsK
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGNwYUNsYXNzSW5mbyA9IHsgIkNhbnZhc1BpeGVs
QXJyYXkiLCAmSlNCeXRlQXJyYXk6OkJhc2U6OnNfaW5mbywgMCwgMCB9OwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUmVmUHRyPFN0cnVjdHVyZT4sIGNwYVN0cnVjdHVyZSwgKEpTQnl0ZUFycmF5
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSwgJmNwYUNsYXNz
SW5mbykpKTsKLSAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRh
TmFtZSwgbmV3IChleGVjKSBKU0J5dGVBcnJheShleGVjLCBjcGFTdHJ1Y3R1cmUsIGltYWdlRGF0
YS0+ZGF0YSgpLT5kYXRhKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3Ryb25nPFN0cnVjdHVyZT4sIGNwYVN0cnVjdHVyZSwgKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCks
IGpzTnVsbCgpLCAmY3BhQ2xhc3NJbmZvKSkpOworICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGRhdGFOYW1lLCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5KGV4ZWMsIGNw
YVN0cnVjdHVyZS5nZXQoKSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSksIERvbnREZWxldGUg
fCBSZWFkT25seSk7CiAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1h
Z2VEYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAppbmRl
eCA4YTE4MDA3MWNhZjA1NmNjYjJhMmZjOTBiY2UxZTgxMGJkZDQ1Yjk0Li4zMzE3OTc4NTQ4NWNm
ZDE4MmE4NzJmYjJhZTQ3MzU5YjIwYzMyMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEpTT3B0aW9uQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKaW5kZXggMWM5MDRiMDhhMGZkNTE3ODUxZTk2Yzg0Y2Zk
YWE1ZTdkYWJjNjNjNS4uY2JmMDFiN2NhZmQ3YjViYTlhMjI1ZTJmNzFkOWY4YTUzMTJmZjEzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFz
ZS5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dvcmtl
ckNvbnRleHRCYXNlKTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTV29ya2VyQ29udGV4dEJhc2U6OnNf
aW5mbyA9IHsgIldvcmtlckNvbnRleHQiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwg
MCB9OwogCi1KU1dvcmtlckNvbnRleHRCYXNlOjpKU1dvcmtlckNvbnRleHRCYXNlKE5vbk51bGxQ
YXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyQ29u
dGV4dD4gaW1wbCkKLSAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHN0cnVjdHVyZSwgbm9ybWFsV29y
bGQoKmltcGwtPnNjcmlwdCgpLT5nbG9iYWxEYXRhKCkpLCB0aGlzKQorSlNXb3JrZXJDb250ZXh0
QmFzZTo6SlNXb3JrZXJDb250ZXh0QmFzZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBpbXBs
KQorICAgIDogSlNET01HbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBub3JtYWxX
b3JsZChnbG9iYWxEYXRhKSwgdGhpcykKICAgICAsIG1faW1wbChpbXBsKQogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnRleHRCYXNlLmgKaW5kZXggYjljMjM0YTJiZmJiZDgyYTA1ZjU4MjE0MWRhYzEx
MjBhYTAyNzI0OC4uYWY2OGI1ODExMTBmN2M0YjJhYmRkYmM3ZjlkNjY4YmM3NDY2MThmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaApA
QCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSlNXb3JrZXJD
b250ZXh0QmFzZSA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVjdCB7CiAgICAgICAgIHR5cGVkZWYg
SlNET01HbG9iYWxPYmplY3QgQmFzZTsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTV29ya2VyQ29u
dGV4dEJhc2UoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+LCBQYXNzUmVmUHRyPFdv
cmtlckNvbnRleHQ+KTsKKyAgICAgICAgSlNXb3JrZXJDb250ZXh0QmFzZShKU0M6OkpTR2xvYmFs
RGF0YSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0Pik7CiAgICAg
ICAgIHZpcnR1YWwgfkpTV29ya2VyQ29udGV4dEJhc2UoKTsKIAogICAgICAgICBzdGF0aWMgY29u
c3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFdvcmtlckNvbnRleHQqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2lt
cGwuZ2V0KCk7IH0KICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
YWNoZWRGcmFtZURhdGEuaAppbmRleCBlZTk4MWEyNTFiNjQ5ODNkNTM4Y2I5OWMzOTA1Y2EwNDJi
ODViN2RlLi5hODVlMTZmOTc3NTk5NTM3MWVjNzZlM2YyYzMyYzg0MmE5OGVmOWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaApA
QCAtMzMsNiArMzMsNyBAQAogI2RlZmluZSBTY3JpcHRDYWNoZWRGcmFtZURhdGFfaAogCiAjaW5j
bHVkZSA8aGVhcC9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDBhMGViOTEwOTNmODE5ZTdj
OGMxMGJlYzFiMWVlOGZlZDFkYmQyYjQuLjBlN2ZlZDAwNTJkNDllZmM3NzcxMWYxNjcyOWI5OWEz
ZDA4NzM0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWQ2MWE4NDUwZTIwYjMyZTVm
OGZhMmNkNjUzZTA4YTNkY2UzOTY2Ni4uNDg0Nzg4MWM3NjNmNTA0MzQ3YzE5NDY1MzUyNDkxNjZk
NzE0M2U2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0
KQogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQogewog
ICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuY2xlYXIoKTsgLy8gVW5wcm90ZWN0IHRoZSBnbG9i
YWwgb2JqZWN0LgorICAgIG1fZ2xvYmFsRGF0YS0+Y2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwog
ICAgIG1fZ2xvYmFsRGF0YS0+aGVhcC5kZXN0cm95KCk7CiB9CiAKQEAgLTczLDI1ICs3NCwyNSBA
QCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgIC8vIEV4cGxp
Y2l0bHkgcHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBpdCBpc24ndCBj
b2xsZWN0ZWQKICAgICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25j
ZSB0aGUgZ2xvYmFsIG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4g
bWFyayBpdHMgb3duIHByb3RvdHlwZS4pCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gd29ya2VyQ29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKCptX2dsb2JhbERhdGEsIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNXb3JrZXJD
b250ZXh0UHJvdG90eXBlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5l
dyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgd29ya2Vy
Q29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS5yZWxlYXNlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIHdv
cmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBqc051bGwoKSk7CisgICAgU3Ryb25nPEpT
V29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2VyQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxE
YXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKCpt
X2dsb2JhbERhdGEsIDAsIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKIAogICAg
IGlmIChtX3dvcmtlckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSB7Ci0gICAg
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9n
bG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKLSAgICAgICAgU3Ryb25n
PEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3Rv
dHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUucmVsZWFzZSgpKSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIGRlZGlj
YXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJv
dG90eXBlLmdldCgpKTsKKyAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFBy
b3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1f
Z2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2ds
b2JhbERhdGEsIDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0
ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLmdldCgp
KTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBu
ZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVy
ZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkp
KTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgbmV3
IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCgqbV9nbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUo
Km1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAg
IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnB1dEFub255bW91c1ZhbHVlKCptX2dsb2JhbERh
dGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV93b3JrZXJDb250ZXh0LT5p
c1NoYXJlZFdvcmtlckNvbnRleHQoKSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHNoYXJl
ZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJvdG90eXBl
LmdldCgpKTsKLSAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4g
c2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5n
ZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKDAsIHNoYXJlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKSk7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2Jh
bERhdGEsIHNoYXJlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOworICAgICAgICBTdHJ1Y3R1cmUq
IHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCB3b3JrZXJDb250ZXh0UHJv
dG90eXBlLmdldCgpKTsKKyAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3Rv
dHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFs
RGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEs
IDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZSgqbV9n
bG9iYWxEYXRhLCBzaGFyZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsKIAotICAgICAgICBtX3dv
cmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5n
ZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2Vy
Q29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgbV93b3JrZXJDb250
ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpT
U2hhcmVkV29ya2VyQ29udGV4dCgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29ya2VyQ29u
dGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFBy
b3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250
ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIHNoYXJlZENvbnRleHRQcm90b3R5cGUtPnB1dEFu
b255bW91c1ZhbHVlKCptX2dsb2JhbERhdGEsIDAsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0
KCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IDMxNDEyZDI3MTllOTMzMDVkM2ZjZTgwMzgyNTU1NTVkMzlk
Mjk5MDguLmU4NGU0YjBiN2RiM2JiZWNkMjgxYWRiNWYyMDUwM2NmZmEyMTRhMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC02ODIsMTEgKzY4MiwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ29uc3RydWN0
b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6
U3RydWN0dXJlPiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+LCBKU0RPTVdpbmRvd1NoZWxsKik7XG4i
KTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6SlNH
bG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4sIEpTRE9N
V2luZG93U2hlbGwqKTtcbiIpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgJGNsYXNzTmFtZShOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIFBh
c3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAkY2xhc3NOYW1lKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNz
UmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0
dXJlPiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIpOwogICAg
IH0KIAogICAgICMgUHJvdG90eXBlCkBAIC03NDYsNyArNzQ2LDcgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpOZWVkc1RoaXNDb252ZXJzaW9uIn0g
PSAxOwogICAgIH0KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LAotICAgICAgICAiICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iIC4KKyAgICAgICAg
IiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgogICAgICAgICAi
ICAgIHtcbiIgLgogICAgICAgICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7XG4iIC4KICAgICAg
ICAgIiAgICB9XG5cbiIpOwpAQCAtOTU4LDcgKzk1OCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzTWFya0NoaWxkcmVuIn0gPSAx
OwogICAgIH0KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LAotICAgICAgICAiICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iIC4KKyAgICAgICAgIiAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgogICAgICAgICAiICAg
IHtcbiIgLgogICAgICAgICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7XG4iIC4KICAgICAgICAg
IiAgICB9XG4iKTsKQEAgLTk3MCw3ICs5NzAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAj
IEN1c3RvbSBkZWZpbmVHZXR0ZXIgZnVuY3Rpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24s
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tUHJvdG90eXBlRGVmaW5lR2V0dGVyIn07CiAKLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
IDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
IHsgfVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90
b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgeyB9
XG4iKTsKIAogICAgICMgc3RydWN0dXJlIGZsYWdzCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
InByb3RlY3RlZDpcbiIpOwpAQCAtMTQwNywxNCArMTQwNywxNCBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCJKU0RPTVdpbmRvd1No
ZWxsIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NO
YW1lKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRp
bXBsVHlwZT4gaW1wbCwgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpXG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHN0cnVjdHVyZSwgaW1wbCwg
c2hlbGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRj
bGFzc05hbWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwsIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKVxuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHNoZWxsKVxuIik7CiAgICAgfSBlbHNpZiAoJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAgICAg
QWRkSW5jbHVkZXNGb3JUeXBlKCRpbnRlcmZhY2VOYW1lKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGlt
cGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFz
c05hbWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFz
c1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbClcbiIp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9
OjokY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFt
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAgaWYgKCRoYXNQYXJlbnQp
IHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFt
ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbClcbiIpOwogICAgICAgICB9IGVsc2UgewpA
QCAtMTQ0Miw5ICsxNDQyLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9OjpjcmVhdGVQcm90b3R5
cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIGlmICgkaGFzUGFyZW50
ICYmICRwYXJlbnRDbGFzc05hbWUgbmUgIkpTQzo6RE9NTm9kZUZpbHRlciIpIHsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1l
fVByb3RvdHlwZShnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgJHtwYXJlbnRDbGFzc05hbWV9UHJvdG90eXBlOjpz
ZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIG5ldyAoZXhlYykgJHtjbGFzc05hbWV9UHJvdG90eXBlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksICR7cGFyZW50Q2xhc3NOYW1lfVByb3RvdHlw
ZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xh
c3NOYW1lfVByb3RvdHlwZShnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBuZXcgKGV4ZWMpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKICAgICB9CkBAIC0yODcyLDcgKzI4NzIsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpO1xuIik7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKIAot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVj
dHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291
bnQsICZzX2luZm8pO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgKaW5kZXggODU4MTVmYmQ0Njk4
NDVhZmU2NTA0ZGY2ZjZiOTliZTc0YjcyZjY3MC4uYzk2ODg3YTMzODNhMWIzOTE3Mzg5Y2E2Nzli
OGE2YTk0YjBhMDRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRp
bWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5o
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfaW5zdGFuY2UuY3BwCmluZGV4IGVmMGViMDI0MWQ5NzdhNmZkYzYwNjEyZTM4Y2M1
MTYyMjY5YmJjOGUuLmQwZmEzY2YzZTc5MDc4MDc2MjcwMDc5OGRhNTcwYjRkMjJhMDIzNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIH0KIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAKaW5kZXggODA2ZWZhNjAxMGU3NzczNDM4N2I4
OWNkNTg0NDVkNDdiZDhiNTI5Ni4uYWI2NDEzMjBhYTQ1MDExYWFjMTQ2ZTZiZGNhZGI4ZmQ5Mzcw
NWRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3Rh
bmNlSlNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFu
Y2VKU0MuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0
LmgKaW5kZXggMDNmMTE2ZmFkZjVkYTQwZThkODhmNzY4ZDMyMGQxNjYzYjQyZDIwYi4uOGEzNjEy
ZjViNmVhYzhhODI0ZjIxZmE4ZDQzODM1Mzg5NDAyYzIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
T2JqQ1J1bnRpbWVPYmplY3QuaAppbmRleCBiMjlhMzMzOTk5NWJiOTU5Y2JlYWVhMzQ5ZTNmYzJk
OWI3MWY5YTlmLi5mOGVhZGE3Y2NhYjVjYWM4ODRiOGRkYjZmYzliNDQxNTA0NzcyOGI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCmluZGV4IDRmOTNjZmE2YWY5NzE2ZGRkYjRmZDFkZWUz
YzFjODQ5ZjU1M2Y5ZTYuLjYxYzY3Y2I5MDliNDQzNmZkNjdkMzY4Nzg1YjBlMmUxYTUxYTQ2NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtMTg0
LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggNGVmMGFmZDU3Mzk3ZWE1Zjc1ZmQ1ODM2
YTM2NzQ2MDQ1YmEzNzI4MS4uZWRlZDJmZWE0NTA2NjdlMTE5OTdmYWRlMmVhYmQwNjU5ZWM0NTgx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTEwMyw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKaW5kZXggOTFhZTQwZjFkMGIwMzE5
MDAyNDViNDQ4OTFjMmMxZDgzMTZiMTljNC4uMzdlMDFmNDIwYTZmMGNhM2YyOWVlOTlmOWFkMzll
YTA1M2EzNWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3Rh
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluc3RhbmNlLT5tYXJrQWdncmVn
YXRlKG1hcmtTdGFjayk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsICBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCmluZGV4
IGRhM2UzODMxMmQzYzg5NTBlOTA1MjNhMDE3YzdmMmRhZjhiN2ZmOTQuLmM0OTg2Mzc5MzAxOWIw
Mjc1MmY3ZmIwM2Q1M2U2YzZkNTBkNGRmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcGl4bWFwcnVudGltZS5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCAgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2lu
Zm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCmluZGV4IDM2MDZh
MDIyYjFkNWZkNzM2OTFhM2VmZWY5NjI0MTkyNTNmMzVjMTcuLmZhNWNlNjJkY2QxMDdhYzI4MGU5
ZDVmNDU5ZjUyYmM3MGM5NmYxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUu
aApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25Qcm90b3R5cGUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggYTEz
ODY2MGI3Mjc4MDEyODM5OGUzNDE5ZjhiYzM0MzUxMTNhYWFjMy4uZTNjOGY1NzM3ZTMyYjkyMjAz
ZGU5NTgwZDVlZmI5Y2Y1YmI4M2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcApAQCAtNDAsNyArNDAsNyBAQCBjb25zdCBDbGFzc0luZm8gUnVudGltZUFycmF5Ojpz
X2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCAwCiBSdW50aW1l
QXJyYXk6OlJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEJpbmRpbmdzOjpBcnJheSogYXJy
YXkpCiAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJv
dG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgIC8vIFdlIG5lZWQgdG8g
cGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImFycmF5Ii4KLSAgICA6IEpTQXJy
YXkoZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lQXJyYXk+KGV4ZWMpKQorICAgIDog
SlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVu
dGltZUFycmF5PihleGVjKSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAg
IHNldFN1YmNsYXNzRGF0YShhcnJheSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
aAppbmRleCA5NTU1NTQ1MmRlZjk2YWYwNmNhNjk1ZGY1ZGIwOGQwN2E4YTZjMDU4Li44ZmQzMDUy
OTJjMWFiNjViNDA4ZjJjODI1ZTA2MzcyMzMzYWMzZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAK
aW5kZXggNGI1ZWNmZmNjYTQzMjg4MzdlOTk0Y2IzNGM4MTE4YWI2ZDJiNmQ2Yi4uMjk3ZmI2YmQ1
ZjIwZmMzMjEwZDg5YzgxZmNiMzJkYTBmZjIxMGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoUnVudGltZU1ldGhvZCk7CiAKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lTWV0aG9kOjpz
X2luZm8gPSB7ICJSdW50aW1lTWV0aG9kIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwg
MCB9OwogCi1SdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBCaW5kaW5nczo6TWV0aG9kTGlzdCYg
bSkKK1J1bnRpbWVNZXRob2Q6OlJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBtKQogICAgIC8vIENhbGxlcnMgd2ls
bCBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgY29ycmVzcG9uZGluZyB0
byB0aGlzIG5hdGl2ZSBvYmplY3QgIm0iLgogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQpCiAgICAgLCBfbWV0
aG9kTGlzdChuZXcgTWV0aG9kTGlzdChtKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmgKaW5kZXggOWRmNzk2ZWIwNzE1YmYzMmIzNGQyMjNmYjUyYjNjODI2MmJjNmJlMy4uNzEy
YTMwNTk2NzNiNDJlNWRhNDk2M2M0MTg5NThiNWNkMmM4OWIzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIFJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6
Ci0gICAgUnVudGltZU1ldGhvZChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpN
ZXRob2RMaXN0Jik7CisgICAgUnVudGltZU1ldGhvZChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RM
aXN0Jik7CiAgICAgQmluZGluZ3M6Ok1ldGhvZExpc3QqIG1ldGhvZHMoKSBjb25zdCB7IHJldHVy
biBfbWV0aG9kTGlzdC5nZXQoKTsgfQogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25Qcm90b3R5cGUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGRl
MTk2NGE0NGFmMmU0ODhjMDIzYzI3YzRjMDc1ZDdjY2I3OGNkZmEuLjc5YmNiY2U2MTJiMjk5NGQ2
ODEzMjIwYjhiNzllN2E2NDNkZjg5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjb25z
dCBDbGFzc0luZm8gUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsICZK
U09iamVjdFdpdGhHbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1SdW50aW1lT2JqZWN0
OjpSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3Rh
bmNlPiBpbnN0YW5jZSkKK1J1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NS
ZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggYmI2ZDA1MTBmMjhkNDNk
YjU3NTE4NTA5ZTEwYmQxMmE0M2QzNGFiNC4uODk5ODEwMmU4OThlYjAzMzBmNzRhMDZkNTIwMjU3
ODY0NTRiMTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogY2xhc3MgUnVudGltZU9iamVjdCA6
IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewogcHVibGljOgotICAgIFJ1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBQYXNzUmVmUHRyPEluc3RhbmNlPik7CisgICAgUnVudGltZU9iamVjdChFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsK
ICAgICB2aXJ0dWFsIH5SdW50aW1lT2JqZWN0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hp
c3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKaW5kZXgg
YjljOTk4M2UzMjhiM2VlYjMzZTFiZDJmMGYyYWViYzdiYjM2MjRmNS4uZjk2NDY5ZjRjOWI2NGVi
ZjdmMTA1ZmI5OGUwMzNlNmZlMjMwZmNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0
ZW0uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMGU5ZjJiYzQwOTlhN2Q3
YjRhZmIwZWY3YWUxZmRmYTgzYTFkM2VmOC4uODA5ZmU1MmZkYmFmMzc0YTVlMTI1YmJiNzBiY2Mx
NzJhZDE5ZGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA0LTEz
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR0MgYWxsb2NhdGUgU3RydWN0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQ4MworCisgICAgICAg
IFVwZGF0ZSBXZWJLaXQgZm9yIHRoZSB3b3JsZCBvZiBHQyBhbGxvY2F0ZWQgU3RydWN0dXJlCisK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaDoK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3h5
UnVudGltZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKwogMjAxMS0wNC0xMyAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xv
dWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAppbmRleCA1N2Q1ODc3NGE2Nzg2Y2RlMzJj
YjVlMzNkM2ZkZmVjNmM2ZjkyNzJjLi5iZjM2ZmJkNWYzZDZlMmEwMDRjMTMxOGI4MmY1MjJmOGUz
MDk5NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmbmRlZiBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHlfaAogI2RlZmluZSBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHlfaAogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxE
YXRhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYktpdC9ucGFwaS5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggZjI2Yjg1ZGNl
YTJhMzlmYTUzOWYwODg2MzQ1ZjVhNTE4MjAyNDMzNi4uMWY5NmM1M2RiOGIyNzM3NWE1OWVhNjI1
Zjk0YjVkOWYxY2Q5YjlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAppbmRleCBhMDdjODZjODg4ZTc3YmEzYmMxNjRjNGRhYzA3
N2U4MmYyMDdmM2I0Li5kYTZkZTg4YTA2ZDA1NzIyNjRiNjI2M2JmNzI2ODJjMTdmMDM1MzQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRp
bWVPYmplY3QuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBQcm94eUluc3RhbmNl
KiBnZXRJbnRlcm5hbFByb3h5SW5zdGFuY2UoKSBjb25zdDsKIAotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGYyM2M4Y2ZiMjk5NjA2Y2E3OWM3MmMyNjAyNGZjYjcyY2Q5MWNkYjIu
LjBjMjA4MTk0NTM5ZDIwMWJjOTcyMzBhOTMzMzg0YjkxYjM0MjY2N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdDIGFs
bG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBVcGRhdGUgV0syIGZvciB0aGUgd29ybGQgb2YgR0Mg
YWxsb2NhdGVkIFN0cnVjdHVyZQorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorCiAy
MDExLTA0LTEzICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCmluZGV4IGYwYzI0MjRhZGJm
YjFhYmEzNzc0YjI5YmZjYWE0NjE5M2FiODM0ZTkuLjBmZDAxZWFlMmMzNTNmNGJhMmRkZjU3ODQ3
ZjM1YmE1MmEwMmJlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbnBJZGVu
dGlmaWVyOyB9CiAKIHByaXZhdGU6ICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgKaW5kZXggZThhMDhkYWQ0ODdlMDA3YzhmNDY4NmNhZWI1NGE3NDE5MDJjYzMwYy4uZWQxMjRi
OThjN2Q2OWNmOTJhN2U1MTk2YjlkMzI3ZjU4M2NjYWYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAg
ICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89510</attachid>
            <date>2011-04-13 18:15:46 -0700</date>
            <delta_ts>2011-04-13 20:29:44 -0700</delta_ts>
            <desc>windows fixes</desc>
            <filename>bug-58483-20110413181545.patch</filename>
            <type>text/plain</type>
            <size>386544</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3ODMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2djLTEwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMC5odG1sCmluZGV4IGFh
MWRkNDViMmFlNjA1OGE5ZTkzMjA1OGVjYjc0ZmJmODUyYWRkOGEuLmE5NTcxYThiYmZkMTAzM2Nk
MWI1MmJmYzU5NmM1Y2FiNWVhMmQ5YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2djLTEwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAuaHRtbApAQCAtMjAs
NiArMjAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
ICAgICB7CiAgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgIHdpbmRvdy5m
cmFtZXMubXlmcmFtZS5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7CiAgICAgICAgIGJlZm9yZSA9IEdD
Q29udHJvbGxlci5nZXRKU09iamVjdENvdW50KCk7CiAgICAgICAgIAogICAgICAgICB3aW5kb3cu
ZnJhbWVzLm15ZnJhbWUubG9jYXRpb24ucmVsb2FkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCmluZGV4IGU4YWUyNzQ5
Yjc0N2I0MmE2MzdjNmJlNjJlZjlhZjI2NmIxZGNjZDkuLmZhOWQyMTZkZDExMjUwMTI3ZWU2ODVm
ZTFlYzhkNTlmZjI2OGM5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkNhbGxiYWNrQ29uc3RydWN0b3IiLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8s
IDAsIDAgfTsKIAotSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rv
ckNhbGxiYWNrIGNhbGxiYWNrKQorSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNr
IGNhbGxiYWNrKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKQogICAgICwgbV9jbGFzcyhqc0NsYXNzKQogICAgICwgbV9jYWxsYmFjayhjYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oCmluZGV4IDAwMWM0MTYxNmRmMDg3NjA0ZTc4NjhkMDMwZTUxMzFkM2RiYjM2N2IuLjY0
YjIzN2RmZDNkOGJhYWNjOGE5OTM4OTM4MGYwNWVkZWE2OTIxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtMzMsMTMgKzMz
LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3IgOiBw
dWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBKU0NhbGxiYWNr
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBKU0NsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIEpT
Q2FsbGJhY2tDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTQ2xhc3NS
ZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdmlydHVhbCB+SlND
YWxsYmFja0NvbnN0cnVjdG9yKCk7CiAgICAgSlNDbGFzc1JlZiBjbGFzc1JlZigpIGNvbnN0IHsg
cmV0dXJuIG1fY2xhc3M7IH0KICAgICBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sg
Y2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrOyB9CiAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggMTFmYjk1YzVjMTBm
MjM4YzY4NzEyMDdkZjc4ZjIxMzkyOGNjMWJkZi4uNTVjOWVkNGFlODdjMjI5MGVmYjQ4MDQ0NmU5
ODA2NWQ5YzE4NDllZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tGdW5jdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBJbnRl
cm5hbEZ1bmN0aW9uIG1pc2gtbWFzaGVzIGNvbnN0cnVjdG9yIGFuZCBmdW5jdGlvbiBiZWhhdmlv
ciAtLSB3ZSBzaG91bGQgCiAgICAgLy8gcmVmYWN0b3IgdGhlIGNvZGUgc28gdGhpcyBvdmVycmlk
ZSBpc24ndCBuZWNlc3NhcnkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAorICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsgCiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDYwZmQ4Y2QzYTZmM2M5NzRl
NWZjMjBjOWVhMTVmYjQ4N2EyNDFiMjYuLmQyZTBkY2I3YTNhNDg5Yjg1OWY4YmJkYjU2ODI1YzRh
YjI2MWY2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCkBAIC0xMTcsOCArMTE3LDggQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIDogV2Vh
a0hhbmRsZU93bmVyIHsKIHRlbXBsYXRlIDxjbGFzcyBCYXNlPgogY2xhc3MgSlNDYWxsYmFja09i
amVjdCA6IHB1YmxpYyBCYXNlIHsKIHB1YmxpYzoKLSAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlND
bGFzc1JlZiwgdm9pZCogZGF0YSk7Ci0gICAgSlNDYWxsYmFja09iamVjdChKU0NsYXNzUmVmLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgdm9pZCogZGF0
YSk7CisgICAgSlNDYWxsYmFja09iamVjdChKU0dsb2JhbERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1
Y3R1cmUqKTsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZSh2b2lkKiBkYXRhKTsKICAgICB2b2lkKiBn
ZXRQcml2YXRlKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIEpTQ2xhc3NSZWYg
Y2xhc3NSZWYoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0RGF0YS0+anNDbGFzczsg
fQogICAgIGJvb2wgaW5oZXJpdHMoSlNDbGFzc1JlZikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG8pIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAogICAgIHsgCiAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBCYXNlOjpBbm9ueW1vdXNTbG90Q291bnQsICZz
X2luZm8pOyAKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDUwYjg0Yzc2ZjJhNjA4OTU5ZDJjYjA3MTM4
OWNiNmQwMzNlYjk1MGIuLjg2MzllMWFlZjk5OTVmMmNmMWU4OTM0ZDZjMWM5ZDZiYmY1ZTM3MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PEJh
c2U+KiBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojphc0NhbGxiYWNrT2JqZWN0KEpTVmFsdWUKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1KU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxi
YWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFz
cywgdm9pZCogZGF0YSkKK0pTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogQmFzZShn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKGFkb3B0
UHRyKG5ldyBKU0NhbGxiYWNrT2JqZWN0RGF0YShkYXRhLCBqc0NsYXNzKSkpCiB7CkBAIC02MSw4
ICs2MSw4IEBAIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAvLyBHbG9iYWwgb2JqZWN0IGNvbnN0
cnVjdG9yLgogLy8gRklYTUU6IE1vdmUgdGhpcyBpbnRvIGEgc2VwYXJhdGUgSlNHbG9iYWxDYWxs
YmFja09iamVjdCBjbGFzcyBkZXJpdmVkIGZyb20gdGhpcyBvbmUuCiB0ZW1wbGF0ZSA8Y2xhc3Mg
QmFzZT4KLUpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoSlNDbGFzc1Jl
ZiBqc0NsYXNzLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6
IEJhc2Uoc3RydWN0dXJlKQorSlNDYWxsYmFja09iamVjdDxCYXNlPjo6SlNDYWxsYmFja09iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2xhc3NSZWYganNDbGFzcywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1f
Y2FsbGJhY2tPYmplY3REYXRhKGFkb3B0UHRyKG5ldyBKU0NhbGxiYWNrT2JqZWN0RGF0YSgwLCBq
c0NsYXNzKSkpCiB7CiAgICAgQVNTRVJUKEJhc2U6OmluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAxNThiMjU2MjZkMmEx
NDYyNjRhNTNiOWMzZGIwMDc5NzM3Y2EyYzI1Li4wM2QwNjIyNGM4YTYwOTQ1Yzc0NTE0MjM0M2Fj
ODQ5ZTE0MWYyMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRD
cmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU0NsYXNzCiAgICAgICAgIHJl
dHVybiBKU0dsb2JhbENvbnRleHRSZXRhaW4odG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpKTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bmV3IChnbG9iYWxEYXRhLmdldCgpKSBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pihn
bG9iYWxPYmplY3RDbGFzcywgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0
ZVN0cnVjdHVyZSgqZ2xvYmFsRGF0YSwganNOdWxsKCkpKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbmV3IChnbG9iYWxEYXRhLmdldCgpKSBKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0PigqZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0Q2xhc3MsIEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVs
bCgpKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFzcy0+cHJvdG90eXBlKGV4
ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQpAQCAtMTQxLDkgKzE0MSwxMCBAQCB2b2lkIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKICAgICAvLyAgIGl0IG1h
eSAgcmVsZWFzZSBhIGxvdCBvZiBHQyBtZW1vcnkgLSBydW4gdGhlIGdhcmJhZ2UgY29sbGVjdG9y
IG5vdy4KICAgICAvLyAqIElmIHRoZXJlIGFyZSBtb3JlIHJlZmVyZW5jZXMgcmVtYWluaW5nIHRo
ZSB0aGUgZ2xvYmFsIG9iamVjdCwgdGhlbiBkbyBub3RoaW5nCiAgICAgLy8gICAoc3BlY2lmaWNh
bGx5IHRoYXQgaXMgbW9yZSBwcm90ZWN0cywgd2hpY2ggd2UgYXNzdW1lIGNvbWUgZnJvbSBvdGhl
ciBKU0dsb2JhbENvbnRleHRSZWZzKS4KLSAgICBpZiAocmVsZWFzaW5nQ29udGV4dEdyb3VwKQor
ICAgIGlmIChyZWxlYXNpbmdDb250ZXh0R3JvdXApIHsKKyAgICAgICAgZ2xvYmFsRGF0YS5jbGVh
ckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAgICAgICAgIGdsb2JhbERhdGEuaGVhcC5kZXN0cm95KCk7
Ci0gICAgZWxzZSBpZiAocmVsZWFzaW5nR2xvYmFsT2JqZWN0KQorICAgIH0gZWxzZSBpZiAocmVs
ZWFzaW5nR2xvYmFsT2JqZWN0KQogICAgICAgICBnbG9iYWxEYXRhLmhlYXAuY29sbGVjdEFsbEdh
cmJhZ2UoKTsKIAogICAgIGdsb2JhbERhdGEuZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CmluZGV4IGE2NDVkMTdlNGVmZWYxNjY2ZjAxMDVhMWJjZDZmMWU0ZTgyMGZkZmUuLjg5NDczOTY0
YTM5MGQ3ZDQxOTM4YmUxM2QxZWEyZmEwNzQyOWY3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQxMCBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBUdXJuIFN0cnVjdHVyZSBpbnRvIGEgR0Mg
YWxsb2NhdGVkIG9iamVjdC4gIE1vc3Qgb2YgdGhpcyBwYXRjaAorICAgICAgICBpcyB0aGUgbWVj
aGFuaWNhbCBjaGFuZ2Ugb2YgcmVwbGFjaW5nIHZhcmlhdGlvbnMgb24gUmVmUHRyPFN0cnVjdHVy
ZT4KKyAgICAgICAgd2l0aCBlaXRoZXIgU3RydWN0dXJlKiAoZm9yIGFyZ3VtZW50cyBhbmQgbG9j
YWxzKSwgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4KKyAgICAgICAgZm9yIHRoZSBmZXcgY2FzZXMg
d2hlcmUgU3RydWN0dXJlcyBhcmUgaGVsZCBieSBHQyBhbGxvY2F0ZWQgb2JqZWN0cworICAgICAg
ICBhbmQgU3Ryb25nPFN0cnVjdHVyZT4gZm9yIHRoZSByb290IHN0cnVjdHVyZSBvYmplY3RzIGlu
IEdsb2JhbERhdGEuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29uc3RydWN0
b3IpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6OjpKU0Nh
bGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptYXJrU3RydWN0dXJl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6
c2V0U2Vlbik6CisgICAgICAgIChKU0M6Okdsb2JhbFJlc29sdmVJbmZvOjpHbG9iYWxSZXNvbHZl
SW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY1N0dWJJbmZvOjpzZXQp
OgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OlBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdDo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9u
OjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTdHViSW5mbzo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Omlu
aXRHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0
QnlJZFByb3RvKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlk
Q2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkUmVw
bGFjZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24pOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
ckFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogaGVhcC9IYW5kbGUuaDoK
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjpkcmFpbik6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJr
ZWRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzd2VlcCk6CisgICAgICAgICog
aGVhcC9TdHJvbmcuaDoKKyAgICAgICAgKEpTQzo6U3Ryb25nOjpTdHJvbmcpOgorICAgICAgICAo
SlNDOjpTdHJvbmc6OnNldCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dW5jYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRC
eUlEKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVuY2FjaGVHZXRCeUlEKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
OjpwYXRjaE1ldGhvZENhbGxQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90
b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpw
YXRjaE1ldGhvZENhbGxQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNl
bGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xp
c3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6dHJ5Q2FjaGVQ
dXRCeUlEKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0M6OmdldFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3QpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFj
ZUpJVC5oOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6c3RvcmVQdHJXaXRoV3JpdGVC
YXJyaWVyKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY2xlYW51cEdsb2JhbERhdGEp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmNvcHlSZWdpc3RlcnMpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3Ry
dWN0b3I6OkFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBy
b3RvdHlwZTo6QXJyYXlQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1Nw
bGljZSk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Jh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmg6CisgICAgICAgIChKU0M6OkJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyOjpCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcik6CisgICAgICAgICogcnVu
dGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3Ry
dWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpCb29sZWFuT2JqZWN0OjpCb29sZWFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpCb29sZWFuUHJvdG90eXBlOjpCb29sZWFuUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkRhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjpEYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6
OkRhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpEYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RGF0
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OkVycm9ySW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkVycm9yKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlv
bkVycm9yOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVCYXNlOjpFeGVjdXRhYmxlQmFzZSk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpO
YXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0
RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpHZXR0ZXJT
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
aW5pdGlhbGl6ZVRocmVhZGluZ09uY2UpOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAoSlND
OjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpKU0FQSVZh
bHVlV3JhcHBlcik6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OkpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJy
YXkuY3BwOgorICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkpOgorICAgICAg
ICAoSlNDOjpKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheSk6
CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjppc1pvbWJpZSk6
CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0Nl
bGw6OkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjphZGRyZXNzT2ZTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6Om1hcmtDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6SlNWYWx1ZTo6aXNab21iaWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmNsZWFyQnVpbHRp
blN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6YWxsb2Nh
dGVHbG9iYWxIYW5kbGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmNvcHlHbG9iYWxzRnJvbSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpwcm90b3R5cGVDaGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxp
ZCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5QXJyYXkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0OjpKU05vdEFu
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09OT2Jq
ZWN0OjpKU09OT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZUdldHRlcik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6c2VhbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmcmVlemUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaGVyaXRv
cklEKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3Qp
OgorICAgICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpKU05vbkZpbmFsT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5h
bE9iamVjdCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KToKKyAgICAgICAg
KEpTQzo6Y3JlYXRlRW1wdHlPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6fkpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aW5oZXJpdG9ySUQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJhbnNpdGlvblRvKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdFdpdGhH
bG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdFdp
dGhHbG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmdldCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnNldENhY2hlZFN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0RW51bWVyYXRpb25DYWNoZSk6
CisgICAgICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTU3RhdGljU2NvcGVPYmplY3Q6OkpTU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAoSlND
OjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OkpTU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAg
KEpTQzo6VHlwZUluZm86OlR5cGVJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNW
YXJpYWJsZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJs
ZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmpl
Y3Q6OmNvcHlSZWdpc3RlckFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVyT2JqZWN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTWm9tYmllLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTWm9tYmllLmg6Cisg
ICAgICAgIChKU0M6OkpTWm9tYmllOjpKU1pvbWJpZSk6CisgICAgICAgIChKU0M6OkpTWm9tYmll
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6Ok1hdGhPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
TWF0aE9iamVjdC5oOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjptYXJrQ2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvclBy
b3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZl
RXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok51
bWJlckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVt
YmVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0OjpOdW1iZXJPYmplY3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJl
ck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rv
cjo6T2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25z
dHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVz
QXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlJlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdF
eHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGVDaGFpbk5vZGU6OlNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKEpTQzo6U2NvcGVD
aGFpbk5vZGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJp
Y3RFdmFsQWN0aXZhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpTdHJpbmdP
YmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmg6CisgICAgICAgIChKU0M6OlN0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQ
cm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZTo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRk
UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlw
ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9u
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNp
dGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6Y29weVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1dCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGU6OldlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrOjprZXlGb3JGaW5hbGl6ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
aGFpbjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6aGVhZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6V2Vha0dDTWFwRmlu
YWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRGb3IpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6On5TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNsb3QpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNldE1hcCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTo6c2luZ2xlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6Y2xlYXJTaW5nbGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpzZXRTaW5nbGVUcmFuc2l0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1dlYWtHQ01hcC5oOgorICAgICAgICAoSlNDOjpEZWZhdWx0V2Vha0dDTWFw
RmluYWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRGb3IpOgorICAgICAgICAoSlNDOjpE
ZWZhdWx0V2Vha0dDTWFwRmluYWxpemVyQ2FsbGJhY2s6OmtleUZvckZpbmFsaXplcik6CisgICAg
ICAgIChKU0M6OldlYWtHQ01hcDo6Y29udGFpbnMpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6
OmZpbmQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OnJlbW92ZSk6CisgICAgICAgIChKU0M6
OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAg
ICAoSlNDOjpXZWFrR0NNYXA6OmZpbmFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFy
cmllci5oOgorICAgICAgICAoSlNDOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpXcml0
ZUJhcnJpZXJCYXNlOjpzZXQpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVy
YXRvciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0aG91dFdyaXRlQmFycmllcik6CisK
IDIwMTEtMDQtMTMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cAppbmRleCAyZjExNjZj
MWVlZTg3OWNjYjdhYWQ3ZTdiMDBkODRkMWRmZjE1ODUwLi5mOWVlZTg1ZmNjN2Q0M2RmZGZjNDBj
M2ZhODdlOWEzODU2OWNkYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuSlNWQUxVRTMyXzY0b25seS5leHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHkuZXhwCkBAIC0xICsxIEBACi1fX1pO
M0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4z
V1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJLTlNfMTBJZGVudGlmaWVy
RVBGeFMyX0UKK19fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNH
bG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVudGlmaWVyRVBGeFMyX0UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRv
bmx5LmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRv
bmx5LmV4cAppbmRleCBjNjkzMzIyNTZmODkyNGVlNDc3YjYxZWZiOThmMDZiZTU4NjU2OGZiLi5l
YWE5ZjUxMzlmMjJlMDNjODBlZDdjZjQ3OTJlNDhkYWY5MTZhNjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhwCkBA
IC0xICsxIEBACi1fX1pOM0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpT
R2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFaVJL
TlNfMTBJZGVudGlmaWVyRVBGUHZTMl9FCitfX1pOM0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhl
Y1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRp
ZmllckVQRlB2UzJfRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5k
ZXggNWVjMzNmNjIyMThkNWNhNjc2YzJkMzM1OTA2MzAyMDVkYjdlZTdlOC4uZTIwOTI4OTBlMWMx
NzMzZGExMjllMmU1Zjk0YmRkY2NmMjU0MWU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBfX1pOM0pTQzEwdGhyb3dFcnJv
ckVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185
RXhlY1N0YXRlRVBOU184SlNPYmplY3RFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxM3NfZGVmYXVs
dEluZm9FCiBfX1pOM0pTQzExSlNCeXRlQXJyYXkxNWNyZWF0ZVN0cnVjdHVyZUVSTlNfMTJKU0ds
b2JhbERhdGFFTlNfN0pTVmFsdWVFUEtOU185Q2xhc3NJbmZvRQotX19aTjNKU0MxMUpTQnl0ZUFy
cmF5QzFFUE5TXzlFeGVjU3RhdGVFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1
cmVFRUVQTlMzXzlCeXRlQXJyYXlFCitfX1pOM0pTQzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNT
dGF0ZUVQTlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQogX19aTjNKU0MxMU1hcmtlZFNw
YWNlMjFhbGxvY2F0ZUZyb21TaXplQ2xhc3NFUk5TMF85U2l6ZUNsYXNzRQogX19aTjNKU0MxMVBh
cnNlckFyZW5hNXJlc2V0RXYKIF9fWk4zSlNDMTFjaGVja1N5bnRheEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwU291cmNlQ29kZUUKIF9fWk4zSlNDMTFjcmVhdGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzdVU3RyaW5nRQogX19aTjNKU0MxMXJlZ0V4cEZsYWdzRVJLTlNfN1VTdHJpbmdFCiBfX1pO
M0pTQzEyRGF0ZUluc3RhbmNlNnNfaW5mb0UKLV9fWk4zSlNDMTJEYXRlSW5zdGFuY2VDMUVQTlNf
OUV4ZWNTdGF0ZUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRWQKK19f
Wk4zSlNDMTJEYXRlSW5zdGFuY2VDMUVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVkCiBf
X1pOM0pTQzEySlNHbG9iYWxEYXRhMTBDbGllbnREYXRhRDJFdgogX19aTjNKU0MxMkpTR2xvYmFs
RGF0YTExanNBcnJheVZQdHJFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJjcmVhdGVMZWFrZWRF
TlNfMTVUaHJlYWRTdGFja1R5cGVFCkBAIC0xMzIsMTAgKzEzMiwxMSBAQCBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMTRkdW1wU2FtcGxlRGF0YUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTJKU0ds
b2JhbERhdGExNHJlc2V0RGF0ZUNhY2hlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExNHNoYXJl
ZEluc3RhbmNlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExNWR1bXBSZWdFeHBUcmFjZUV2Citf
X1pOM0pTQzEySlNHbG9iYWxEYXRhMjJjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzRXYKIF9fWk4zSlND
MTJKU0dsb2JhbERhdGE2Y3JlYXRlRU5TXzE1VGhyZWFkU3RhY2tUeXBlRQogX19aTjNKU0MxMkpT
R2xvYmFsRGF0YUQxRXYKIF9fWk4zSlNDMTJSZWdFeHBPYmplY3Q2c19pbmZvRQotX19aTjNKU0Mx
MlJlZ0V4cE9iamVjdEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1Jl
ZlB0cklOU185U3RydWN0dXJlRUVFTlM0X0lOU182UmVnRXhwRUVFCitfX1pOM0pTQzEyUmVnRXhw
T2JqZWN0QzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFTjNXVEYxN05vbk51
bGxQYXNzUmVmUHRySU5TXzZSZWdFeHBFRUUKIF9fWk4zSlNDMTJTYW1wbGluZ1Rvb2w1c2V0dXBF
dgogX19aTjNKU0MxMlNtYWxsU3RyaW5nczE3Y3JlYXRlRW1wdHlTdHJpbmdFUE5TXzEySlNHbG9i
YWxEYXRhRQogX19aTjNKU0MxMlNtYWxsU3RyaW5nczI3Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nRVBOU18xMkpTR2xvYmFsRGF0YUVoCkBAIC0xNDYsNyArMTQ3LDcgQEAgX19aTjNKU0MxMlN0
cmluZ09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9w
ZXJ0eU5hbWVBcnIKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2Ny
aXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEy
U3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNfOUV4ZWNT
dGF0ZUVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVjdHVyZUVFRVJLTlNfN1VTdHJp
bmdFCitfX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1
cmVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDMTJub25JbmxpbmVOYU5FdgogX19aTjNKU0MxM1Nh
bXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczVzdGFydEV2CkBAIC0x
NzQsNyArMTc1LDcgQEAgX19aTjNKU0MxNWNyZWF0ZVR5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzdVU3RyaW5nRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb24xMnZ0YWJsZUFuY2hvckV2
CiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRlRQogX19aTjNK
U0MxNkludGVybmFsRnVuY3Rpb242c19pbmZvRQotX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25D
MkVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQ
YXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zSlNDMTZJ
bnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0
RVBOU185U3RydWN0dXJlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVP
YmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQog
X19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5bWJvbFRhYmxlR2V0RVJLTlNfMTBJZGVudGlm
aWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0
MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQpAQCAtMjA1LDcgKzIwNiw4IEBAIF9fWk4zSlNDMjNB
YnN0cmFjdFNhbXBsaW5nQ291bnRlcjRkdW1wRXYKIF9fWk4zSlNDMjNvYmplY3RQcm90b0Z1bmNU
b1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMjNzZXRVcFN0YXRpY0Z1bmN0aW9uU2xv
dEVQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNoRW50cnlFUE5TXzhKU09iamVjdEVSS05TXzEwSWRl
bnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzI0RHluYW1pY0dsb2JhbE9iamVj
dFNjb3BlQzFFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RQotX19aTjNK
U0MyNEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdEMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RG
MTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFCitfX1pOM0pTQzI0SlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0QzJFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFCitf
X1pOM0pTQzI0SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QzJFUk5TXzEySlNHbG9iYWxEYXRhRVBO
U18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRQogX19aTjNKU0MyNGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMjVldmFsdWF0ZUluR2xvYmFs
Q2FsbEZyYW1lRVJLTlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVlRVBOU18xNEpTR2xvYmFsT2JqZWN0
RQogX19aTjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpT
R2xvYmFsRGF0YUUKQEAgLTI1NCw5ICsyNTYsOSBAQCBfX1pOM0pTQzdKU0FycmF5MTVzZXRTdWJj
bGFzc0RhdGFFUHYKIF9fWk4zSlNDN0pTQXJyYXkxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4
ZWNTdGF0ZUVqUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M3SlNBcnJheTZzX2luZm9FCiBf
X1pOM0pTQzdKU0FycmF5OXNldExlbmd0aEVqCi1fX1pOM0pTQzdKU0FycmF5QzFFTjNXVEYxN05v
bk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUUKLV9fWk4zSlNDN0pTQXJyYXlDMUVSTlNf
MTJKU0dsb2JhbERhdGFFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVFRUVS
S05TXzdBcmdMaXN0RQotX19aTjNKU0M3SlNBcnJheUMyRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0
cklOU185U3RydWN0dXJlRUVFCitfX1pOM0pTQzdKU0FycmF5QzFFUk5TXzEySlNHbG9iYWxEYXRh
RVBOU185U3RydWN0dXJlRQorX19aTjNKU0M3SlNBcnJheUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQ
TlNfOVN0cnVjdHVyZUVSS05TXzdBcmdMaXN0RQorX19aTjNKU0M3SlNBcnJheUMyRVJOU18xMkpT
R2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUUKIF9fWk4zSlNDN0pTQXJyYXlEMkV2CiBfX1pOM0pT
QzdKU1ZhbHVlMTNpc1ZhbGlkQ2FsbGVlRXYKIF9fWk4zSlNDN1Byb2ZpbGUxMHJlc3RvcmVBbGxF
dgpAQCAtMzA5LDEyICszMTEsMTEgQEAgX19aTjNKU0M4UHJvZmlsZXIxM3N0b3BQcm9maWxpbmdF
UE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDOFByb2ZpbGVyMTRzdGFydFBy
b2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmlsZXI4
cHJvZmlsZXJFdgogX19aTjNKU0M4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUE5TXzE0U2NvcGVD
aGFpbk5vZGVFUktOU18xMFNvdXJjZUNvZGVFTlNfN0pTVmFsdWVFCitfX1pOM0pTQzhpc1pvbWJp
ZUVQS05TXzZKU0NlbGxFCiBfX1pOM0pTQzlDb2RlQmxvY2tEMUV2CiBfX1pOM0pTQzlDb2RlQmxv
Y2tEMkV2CiBfX1pOM0pTQzlNYXJrU3RhY2sxMHNfcGFnZVNpemVFCiBfX1pOM0pTQzlNYXJrU3Rh
Y2sxOGluaXRpYWxpemVQYWdlc2l6ZUV2Ci1fX1pOM0pTQzlTdHJ1Y3R1cmUxN3N0b3BJZ25vcmlu
Z0xlYWtzRXYKLV9fWk4zSlNDOVN0cnVjdHVyZTE4c3RhcnRJZ25vcmluZ0xlYWtzRXYKIF9fWk4z
SlNDOVN0cnVjdHVyZTIxYWRkUHJvcGVydHlUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVQ
UzBfUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRVJtCiBfX1pOM0pTQzlTdHJ1Y3R1cmUy
Mm1hdGVyaWFsaXplUHJvcGVydHlNYXBFUk5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M5U3Ry
dWN0dXJlMjVjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVQUzBf
TlNfN0pTVmFsdWVFCkBAIC0zMjMsNyArMzI0LDcgQEAgX19aTjNKU0M5U3RydWN0dXJlMjdkZXNw
ZWNpZnlGdW5jdGlvblRyYW5zaXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVBTMF9SS05TXzEwSWQK
IF9fWk4zSlNDOVN0cnVjdHVyZTI4YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbkVSTlNfMTJK
U0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRQogX19aTjNKU0M5U3Ry
dWN0dXJlM2dldEVSTlNfMTJKU0dsb2JhbERhdGFFUE4zV1RGMTBTdHJpbmdJbXBsRVJqUlBOU182
SlNDZWxsRQogX19aTjNKU0M5U3RydWN0dXJlNDBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlRVBTMF9SS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFUm0KLV9fWk4z
SlNDOVN0cnVjdHVyZUMxRU5TXzdKU1ZhbHVlRVJLTlNfOFR5cGVJbmZvRWpQS05TXzlDbGFzc0lu
Zm9FCitfX1pOM0pTQzlTdHJ1Y3R1cmVDMUVSTlNfMTJKU0dsb2JhbERhdGFFTlNfN0pTVmFsdWVF
UktOU184VHlwZUluZm9FalBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUQxRXYK
IF9fWk4zSlNDOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVOU18xM0NvbnN0
cnVjdFR5cGVFUktOU18xM0NvbnN0cnVjdERhdGFFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDZXFF
UktOU183VVN0cmluZ0VQS2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggNDZmYmI5Nzk1OTQyYjJlMzY3ZTM0YjYwYmE5MTNmNmQw
Yzc4NjZkMS4uMGZhNzNmMTk5ZmNiNzMwZDRjOTEyMjI2MDA4MGIxOGIxNmM4NWVlZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAg
LTMsMjQgKzMsMjUgQEAgRVhQT1JUUwogICAgID8/MENTdHJpbmdAV1RGQEBRQUVAUEJEQFoKICAg
ICA/PzBDU3RyaW5nQFdURkBAUUFFQFBCRElAWgogICAgID8/MENvbGxhdG9yQFdURkBAUUFFQFBC
REBaCi0gICAgPz8wRGF0ZUluc3RhbmNlQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFY/JE5vbk51
bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBOQFoKKyAgICA/PzBEYXRlSW5zdGFu
Y2VASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAUEFWU3RydWN0dXJlQDFATkBaCiAgICAgPz8wRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFja0BKU0NAQFFBRUBQQVZIZWFwQDFAQFoKICAgICA/PzBEcm9w
QWxsTG9ja3NASlNMb2NrQEpTQ0BAUUFFQFc0SlNMb2NrQmVoYXZpb3JAMkBAWgotICAgID8/MER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZUBKU0NAQFFBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZKU0ds
b2JhbE9iamVjdEAxQEBaCi0gICAgPz8wSW50ZXJuYWxGdW5jdGlvbkBKU0NAQElBRUBQQVZKU0ds
b2JhbERhdGFAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1
Y3R1cmVASlNDQEBAV1RGQEBBQlZJZGVudGlmaWVyQDFAQFoKLSAgICA/PzBKU0FycmF5QEpTQ0BA
UUFFQEFBVkpTR2xvYmFsRGF0YUAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlND
QEBAV1RGQEBBQlZBcmdMaXN0QDFAQFogIAotICAgID8/MEpTQXJyYXlASlNDQEBRQUVAVj8kTm9u
TnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEBaCi0gICAgPz8wSlNCeXRlQXJy
YXlASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVy
ZUBKU0NAQEBXVEZAQFBBVkJ5dGVBcnJheUA0QEBaCi0gICAgPz8wSlNGdW5jdGlvbkBKU0NAQFFB
RUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNzUmVmUHRy
QFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBIQUJWSWRlbnRpZmllckAxQFA2SV9KMEBaQFoKKyAgICA/
PzBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGVASlNDQEBRQUVAQUFWSlNHbG9iYWxEYXRhQDFAUEFW
SlNHbG9iYWxPYmplY3RAMUBAWiAgCisgICAgPz8wSW50ZXJuYWxGdW5jdGlvbkBKU0NAQElBRUBQ
QVZKU0dsb2JhbERhdGFAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFBBVlN0cnVjdHVyZUAxQEFCVklk
ZW50aWZpZXJAMUBAWgorICAgID8/MEpTQXJyYXlASlNDQEBRQUVAQUFWSlNHbG9iYWxEYXRhQDFA
UEFWU3RydWN0dXJlQDFAQFoKKyAgICA/PzBKU0FycmF5QEpTQ0BAUUFFQEFBVkpTR2xvYmFsRGF0
YUAxQFBBVlN0cnVjdHVyZUAxQEFCVkFyZ0xpc3RAMUBAWgorICAgID8/MEpTQnl0ZUFycmF5QEpT
Q0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVlN0cnVjdHVyZUAxQFBBVkJ5dGVBcnJheUBXVEZAQEBa
CisgICAgPz8wSlNGdW5jdGlvbkBKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2JhbE9i
amVjdEAxQFBBVlN0cnVjdHVyZUAxQEhBQlZJZGVudGlmaWVyQDFAUDZJX0owQFpAWgogICAgID8/
MEpTTG9ja0BKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBAWgotICAgID8/MEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdEBKU0NAQElBRUBQQVZKU0dsb2JhbE9iamVjdEAxQFY/JE5vbk51bGxQYXNzUmVm
UHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBAWgorICAgID8/MEpTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdEBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFBBVlN0
cnVjdHVyZUAxQEBaCisgICAgPz8wSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BASUFFQFBB
VkpTR2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBNRDVAV1RGQEBRQUVA
WFoKICAgICA/PzBNdXRleEBXVEZAQFFBRUBYWgogICAgID8/MFJlZkNvdW50ZWRMZWFrQ291bnRl
ckBXVEZAQFFBRUBQQkRAWgotICAgID8/MFJlZ0V4cE9iamVjdEBKU0NAQFFBRUBQQVZKU0dsb2Jh
bE9iamVjdEAxQFY/JE5vbk51bGxQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBWPyRO
b25OdWxsUGFzc1JlZlB0ckBWUmVnRXhwQEpTQ0BAQDRAQFoKKyAgICA/PzBSZWdFeHBPYmplY3RA
SlNDQEBRQUVAUEFWSlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBWPyROb25OdWxsUGFz
c1JlZlB0ckBWUmVnRXhwQEpTQ0BAQFdURkBAQFoKICAgICA/PzBTSEExQFdURkBAUUFFQFhaCi0g
ICAgPz8wU3RyaW5nT2JqZWN0QEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQFY/JE5vbk51bGxQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQlZVU3RyaW5nQDFAQFoKLSAgICA/PzBTdHJ1
Y3R1cmVASlNDQEBBQUVAVkpTVmFsdWVAMUBBQlZUeXBlSW5mb0AxQElQQlVDbGFzc0luZm9AMUBA
WgorICAgID8/MFN0cmluZ09iamVjdEBKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBQQVZTdHJ1Y3R1
cmVAMUBBQlZVU3RyaW5nQDFAQFoKKyAgICA/PzBTdHJ1Y3R1cmVASlNDQEBBQUVAQUFWSlNHbG9i
YWxEYXRhQDFAVkpTVmFsdWVAMUBBQlZUeXBlSW5mb0AxQElQQlVDbGFzc0luZm9AMUBAWgogICAg
ID8/MFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgogICAgID8/MFVTdHJpbmdASlNDQEBRQUVA
UEJEQFoKICAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCRElAWgpAQCAtMzcsNyArMzgsNiBAQCBF
WFBPUlRTCiAgICAgPz8xUmVmQ291bnRlZExlYWtDb3VudGVyQFdURkBAUUFFQFhaCiAgICAgPz8x
UmVnRXhwQEpTQ0BAUUFFQFhaCiAgICAgPz8xU291cmNlUHJvdmlkZXJDYWNoZUBKU0NAQFFBRUBY
WgotICAgID8/MVN0cnVjdHVyZUBKU0NAQFFBRUBYWgogICAgID8/MVRocmVhZENvbmRpdGlvbkBX
VEZAQFFBRUBYWgogICAgID8/MVdURlRocmVhZERhdGFAV1RGQEBRQUVAWFoKICAgICA/PzFXZWFr
SGFuZGxlT3duZXJASlNDQEBVQUVAWFoKQEAgLTUyLDggKzUyLDggQEAgRVhQT1JUUwogICAgID9h
ZGRCeXRlc0BNRDVAV1RGQEBRQUVYUEJFSUBaCiAgICAgP2FkZEJ5dGVzQFNIQTFAV1RGQEBRQUVY
UEJFSUBaCiAgICAgP2FkZEN1cnJlbnRUaHJlYWRATWFjaGluZVRocmVhZHNASlNDQEBRQUVYWFoK
LSAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVm
UHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVu
dGlmaWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0gICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVj
dHVyZUBKU0NAQEBXVEZAQFBBVjEyQEFCVklkZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQUFJQFoK
KyAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBUEFWMTJAQUFWSlNH
bG9iYWxEYXRhQDJAUEFWMTJAQUJWSWRlbnRpZmllckAyQElQQVZKU0NlbGxAMkBBQUlAWgorICAg
ID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0cnVjdHVyZUBKU0NA
QFNBUEFWMTJAUEFWMTJAQUJWSWRlbnRpZmllckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9h
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0dsb2Jh
bERhdGFAMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAgP2FkZFNsb3dDYXNl
QElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZA
QFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hbGxvY2F0ZUBIZWFwQEpT
Q0BAUUFFUEFYSUBaCkBAIC03OCwxMyArNzgsMTQgQEAgRVhQT1JUUwogICAgID9jYWxsT25NYWlu
VGhyZWFkQW5kV2FpdEBXVEZAQFlBWFA2QVhQQVhAWjBAWgogICAgID9jYW5jZWxDYWxsT25NYWlu
VGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgP2NhcGFjaXR5QEhlYXBASlNDQEBRQkVJ
WFoKLSAgICA/Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8k
UGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJA
VkpTVmFsdWVAMkBAWgorICAgID9jaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uQFN0cnVjdHVyZUBK
U0NAQFNBUEFWMTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9j
aGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGVASWRlbnRpZmllckBKU0NAQENBWFBBVkV4ZWNTdGF0
ZUAyQEBaCiAgICAgP2NoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZUBJZGVudGlmaWVyQEpTQ0BA
Q0FYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y2hlY2tTeW50YXhASlNDQEBZQT9BVkNvbXBs
ZXRpb25AMUBQQVZFeGVjU3RhdGVAMUBBQlZTb3VyY2VDb2RlQDFAQFoKICAgICA/Y2hlY2tzdW1A
TUQ1QFdURkBAUUFFWEFBVj8kVmVjdG9yQEUkMEJBQEAyQEBaCiAgICAgP2NsYXNzTmFtZUBKU09i
amVjdEBKU0NAQFVCRT9BVlVTdHJpbmdAMkBYWgogICAgID9jbGVhckBTb3VyY2VQcm92aWRlckNh
Y2hlQEpTQ0BAUUFFWFhaCisgICAgP2NsZWFyQnVpbHRpblN0cnVjdHVyZXNASlNHbG9iYWxEYXRh
QEpTQ0BAUUFFWFhaCiAgICAgP2NvbGxhdGVAQ29sbGF0b3JAV1RGQEBRQkU/QVc0UmVzdWx0QDEy
QFBCX1dJMElAWgogICAgID9jb2xsZWN0QWxsR2FyYmFnZUBIZWFwQEpTQ0BAUUFFWFhaCiAgICAg
P2NvbXB1dGVIYXNoQFNIQTFAV1RGQEBRQUVYQUFWPyRWZWN0b3JARSQwQkVAQDJAQFoKQEAgLTEw
OCw3ICsxMDksNyBAQCBFWFBPUlRTCiAgICAgP2NyZWF0ZVJlZmVyZW5jZUVycm9yQEpTQ0BAWUFQ
QVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgogICAgID9jcmVhdGVT
aW5nbGVDaGFyYWN0ZXJTdHJpbmdAU21hbGxTdHJpbmdzQEpTQ0BAQUFFWFBBVkpTR2xvYmFsRGF0
YUAyQEVAWgogICAgID9jcmVhdGVTdGFja092ZXJmbG93RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0
QDFAUEFWRXhlY1N0YXRlQDFAQFoKLSAgICA/Y3JlYXRlU3RydWN0dXJlQEpTQnl0ZUFycmF5QEpT
Q0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQEFBVkpTR2xvYmFsRGF0
YUAyQFZKU1ZhbHVlQDJAUEJVQ2xhc3NJbmZvQDJAQFoKKyAgICA/Y3JlYXRlU3RydWN0dXJlQEpT
Qnl0ZUFycmF5QEpTQ0BAU0FQQVZTdHJ1Y3R1cmVAMkBBQVZKU0dsb2JhbERhdGFAMkBWSlNWYWx1
ZUAyQFBCVUNsYXNzSW5mb0AyQEBaCiAgICAgP2NyZWF0ZVN5bnRheEVycm9yQEpTQ0BAWUFQQVZK
U09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgogICAgID9jcmVhdGVUYWJs
ZUBIYXNoVGFibGVASlNDQEBBQkVYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y3JlYXRlVGhy
ZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKQEAgLTE0NCw3ICsxNDUsNyBAQCBFWFBPUlRTCiAg
ICAgP2RlbGV0ZVByb3BlcnR5QFN0cmluZ09iamVjdEBKU0NAQFVBRV9OUEFWRXhlY1N0YXRlQDJA
QUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2RlbGV0ZVRhYmxlQEhhc2hUYWJsZUBKU0NAQFFCRVhY
WgogICAgID9kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25AU3RydWN0dXJlQEpTQ0BAUUFFWEFB
VkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBAWgotICAgID9kZXNwZWNpZnlGdW5jdGlv
blRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBK
U0NAQEBXVEZAQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQEFCVklkZW50aWZpZXJAMkBAWgorICAg
ID9kZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0FQQVYxMkBBQVZK
U0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/ZGVzdHJveUBIZWFw
QEpTQ0BAUUFFWFhaCiAgICAgP2RldGFjaEBEZWJ1Z2dlckBKU0NAQFVBRVhQQVZKU0dsb2JhbE9i
amVjdEAyQEBaCiAgICAgP2RldGFjaFRocmVhZEBXVEZAQFlBWElAWgpAQCAtMzEzLDEwICszMTQs
OCBAQCBFWFBPUlRTCiAgICAgP3NpZ25hbEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAg
ICA/c2l6ZUBIZWFwQEpTQ0BAUUJFSVhaCiAgICAgP3Nsb3dBcHBlbmRATWFya2VkQXJndW1lbnRC
dWZmZXJASlNDQEBBQUVYVkpTVmFsdWVAMkBAWgotICAgID9zdGFydElnbm9yaW5nTGVha3NAU3Ry
dWN0dXJlQEpTQ0BAU0FYWFoKICAgICA/c3RhcnRQcm9maWxpbmdAUHJvZmlsZXJASlNDQEBRQUVY
UEFWRXhlY1N0YXRlQDJAQUJWVVN0cmluZ0AyQEBaCiAgICAgP3N0YXJ0U2FtcGxpbmdASlNHbG9i
YWxEYXRhQEpTQ0BAUUFFWFhaCi0gICAgP3N0b3BJZ25vcmluZ0xlYWtzQFN0cnVjdHVyZUBKU0NA
QFNBWFhaCiAgICAgP3N0b3BQcm9maWxpbmdAUHJvZmlsZXJASlNDQEBRQUU/QVY/JFBhc3NSZWZQ
dHJAVlByb2ZpbGVASlNDQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBBQlZVU3RyaW5nQDJAQFoKICAg
ICA/c3RvcFNhbXBsaW5nQEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhYWgogICAgID9zdHJ0b2RAV1RG
QEBZQU5QQkRQQVBBREBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IGIyMGNhNDRkNTkwMDBlOWE1NTgzNmQ1YjRkMGFhYjBhNWIzZWEwNTYuLjBl
NjQ4YmE4MDNkODA5Y2NlMzdjZTdiNTUyZDFlZTkzZGFmYTkyMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzkwLDMxICsxMzkwLDkgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBD
b2RlVHlwZSBjb2RlVHlwZSwgSlNHbG8KIAogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBk
ZXJlZlN0cnVjdHVyZXMoJm1faW5zdHJ1Y3Rpb25zW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
c1tpXV0pOwotCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgZGVyZWZTdHJ1Y3R1
cmVzKCZtX2luc3RydWN0aW9uc1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0j
ZW5kaWYKICNpZiBFTkFCTEUoSklUKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJl
c29sdmVJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmICht
X2dsb2JhbFJlc29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBtX2dsb2JhbFJl
c29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgfQotCiAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCiAgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLmRlcmVmKCk7Ci0KLSAgICBmb3Ig
KHNpemVfdCBzaXplID0gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLmNhY2hlZFN0cnVjdHVyZSkgewotICAgICAgICAgICAgc3RydWN0dXJl
LT5kZXJlZigpOwotICAgICAgICAgICAgLy8gQm90aCBtZW1iZXJzIG11c3QgYmUgZmlsbGVkIGF0
IHRoZSBzYW1lIHRpbWUKLSAgICAgICAgICAgIEFTU0VSVCghIW1fbWV0aG9kQ2FsbExpbmtJbmZv
c1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9tZXRob2RDYWxs
TGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAg
fQotICAgIH0KLQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNpZiBEVU1QX0NPREVfQkxPQ0tf
U1RBVElTVElDUwpAQCAtMTQyMiwzNSArMTQwMCwzNyBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2so
KQogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkZXJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rp
b24qIHZQQykgY29uc3QKK3ZvaWQgQ29kZUJsb2NrOjptYXJrU3RydWN0dXJlcyhNYXJrU3RhY2sm
IG1hcmtTdGFjaywgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKIHsKICAgICBJbnRlcnByZXRlciog
aW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOwogCiAgICAgaWYgKHZQQ1sw
XS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9zZWxmKSB8
fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRf
Z2V0dGVyX3NlbGYpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX2dldF9ieV9pZF9jdXN0b21fc2VsZikpIHsKLSAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJl
LT5kZXJlZigpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG8pIHx8IHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG8pIHx8
IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9j
dXN0b21fcHJvdG8pKSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAg
ICAgICAgdlBDWzVdLnUuc3RydWN0dXJlLT5kZXJlZigpOworICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUpOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENb
NV0udS5zdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8
IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9n
ZXR0ZXJfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX2dldF9ieV9pZF9jdXN0b21fY2hhaW4pKSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0cnVjdHVy
ZS0+ZGVyZWYoKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJl
KTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpIHsKLSAgICAgICAgdlBD
WzRdLnUuc3RydWN0dXJlLT5kZXJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUtPmRl
cmVmKCk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51LnN0cnVjdHVyZSk7Cisg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1XS51LnN0cnVjdHVyZSk7CisgICAgICAgIG1h
cmtTdGFjay5hcHBlbmQoJnZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+
ZGVyZWYoKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfcmVzb2x2ZV9nbG9iYWwpIHx8IHZQQ1swXS51Lm9wY29kZSA9
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpKSB7CiAg
ICAgICAgIGlmICh2UENbM10udS5zdHJ1Y3R1cmUpCi0gICAgICAgICAgICB2UENbM10udS5zdHJ1
Y3R1cmUtPmRlcmVmKCk7CisgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbM10udS5z
dHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICgodlBDWzBdLnUub3Bj
b2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpKQpA
QCAtMTQ2MCw3ICsxNDQwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJlcyhJbnN0
cnVjdGlvbiogdlBDKSBjb25zdAogICAgICAgICB8fCAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90b19saXN0KSkKICAgICAg
ICAgfHwgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9jdXN0b21fc2VsZl9saXN0KSkpIHsKICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMgPSB2UENbNF0udS5wb2x5bW9ycGhpY1N0
cnVjdHVyZXM7Ci0gICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlcy0+ZGVyZWZTdHJ1Y3R1cmVz
KHZQQ1s1XS51Lm9wZXJhbmQpOworICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPm1hcmtB
Z2dyZWdhdGUobWFya1N0YWNrLCB2UENbNV0udS5vcGVyYW5kKTsKICAgICAgICAgZGVsZXRlIHBv
bHltb3JwaGljU3RydWN0dXJlczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NjksMzcg
KzE0NDksNiBAQCB2b2lkIENvZGVCbG9jazo6ZGVyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2
UEMpIGNvbnN0CiAgICAgQVNTRVJUKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX2dldF9ieV9pZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5n
ZXRPcGNvZGUob3BfcHV0X2J5X2lkKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9hcnJheV9sZW5ndGgpIHx8IHZQ
Q1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9zdHJpbmdfbGVu
Z3RoKSk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2
UEMpIGNvbnN0Ci17Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRh
LT5pbnRlcnByZXRlcjsKLQotICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9nZXRfYnlfaWRfc2VsZikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmKSB8fCB2UENbMF0udS5v
cGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGYp
KSB7Ci0gICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX2dldF9ieV9pZF9wcm90bykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5n
ZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bykgfHwgdlBDWzBdLnUub3Bjb2RlID09
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bykpIHsKLSAg
ICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAgICAgdlBDWzVdLnUuc3RydWN0
dXJlLT5yZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodlBDWzBdLnUub3Bj
b2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSB8fCB2UENb
MF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVy
X2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9n
ZXRfYnlfaWRfY3VzdG9tX2NoYWluKSkgewotICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPnJl
ZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpIHsKLSAgICAg
ICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAgICAgdlBDWzVdLnUuc3RydWN0dXJl
LT5yZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodlBDWzBdLnUub3Bjb2Rl
ID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7Ci0gICAg
ICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IHJlZiB0aGVpciBTdHJ1Y3R1cmVz
LgotICAgIEFTU0VSVCh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9nZXRfYnlfaWQpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX3B1dF9ieV9pZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9nZW5lcmljKSk7Ci19Ci0KIHZvaWQgRXZhbENvZGVD
YWNoZTo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBFdmFsQ2Fj
aGVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2FjaGVNYXAuZW5kKCk7CkBAIC0xNTI0LDMwICsxNDcz
LDI0IEBAIHZvaWQgQ29kZUJsb2NrOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNr
KQogICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmY2FsbExpbmtJbmZvKGkpLmNhbGxlZSk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKLSAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIEluc3RydWN0aW9uKiB2UEMgPSAmbV9pbnN0cnVjdGlvbnNbbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07Ci0gICAgICAgIGlmICh2UENbMF0udS5vcGNvZGUg
PT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hh
aW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9jdXN0b21fY2hhaW4pKQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzVd
LnUuc3RydWN0dXJlQ2hhaW4pOwotICAgICAgICBlbHNlIGlmICh2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpCi0gICAgICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbik7Ci0gICAgfQor
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIG1hcmtTdHJ1Y3R1cmVzKG1hcmtTdGFj
aywgJm1faW5zdHJ1Y3Rpb25zW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKICNl
bmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVz
b2x2ZUluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKFN0
cnVjdHVyZSogc3RydWN0dXJlID0gbV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlKQot
ICAgICAgICAgICAgc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAg
IGlmIChtX2dsb2JhbFJlc29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUpCisgICAgICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKCZtX2dsb2JhbFJlc29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUpOwogICAgIH0K
IAogICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3N0cnVjdHVyZVN0dWJJbmZvcy5zaXplKCksIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXS5tYXJr
QWdncmVnYXRlKG1hcmtTdGFjayk7CiAKICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9tZXRob2RD
YWxsTGlua0luZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYg
KFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFN0
cnVjdHVyZSkgeworICAgICAgICBpZiAobV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFN0
cnVjdHVyZSkgewogICAgICAgICAgICAgLy8gQm90aCBtZW1iZXJzIG11c3QgYmUgZmlsbGVkIGF0
IHRoZSBzYW1lIHRpbWUKLSAgICAgICAgICAgIHN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJr
U3RhY2spOworICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9tZXRob2RDYWxsTGlua0lu
Zm9zW2ldLmNhY2hlZFN0cnVjdHVyZSk7CiAgICAgICAgICAgICBBU1NFUlQoISFtX21ldGhvZENh
bGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICAgICAgICAgIG1f
bWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUtPm1hcmtBZ2dy
ZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fbWV0aG9k
Q2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggMjVlNjVmNDc1M2NmMzU1Y2ViODlhY2MzMjQ0YmVjODk1MmU4MjI1YS4uYWY2OGViNTgx
Y2FkYWQyNzVhOWNmZjQ4ZDgwNDQxODBjNjI5NWU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTIyLDggKzEyMiw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgc3RydWN0IE1ldGhvZENhbGxMaW5rSW5mbyB7CiAgICAgICAgIE1ldGhvZENhbGxM
aW5rSW5mbygpCi0gICAgICAgICAgICA6IGNhY2hlZFN0cnVjdHVyZSgwKQotICAgICAgICAgICAg
LCBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUoMCkKICAgICAgICAgewogICAgICAgICB9CiAKQEAg
LTE0MiwyNCArMTQwLDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gICAgIC0g
T25jZSB0aGlzIHRyYW5zaXRpb24gaGFzIGJlZW4gdGFrZW4gb25jZSwgY2FjaGVkU3RydWN0dXJl
IGlzCiAgICAgICAgICAgICAvLyAgICAgICBudWxsIGFuZCBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1
cmUgaXMgc2V0IHRvIGEgbnVuLW51bGwgdmFsdWUuCiAgICAgICAgICAgICAvLyAgICAgLSBPbmNl
IHRoZSBjYWxsIGlzIGxpbmtlZCBib3RoIHN0cnVjdHVyZXMgYXJlIHNldCB0byBub24tbnVsbCB2
YWx1ZXMuCi0gICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUgPSAoU3RydWN0dXJl
KikxOworICAgICAgICAgICAgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIoKFN0cnVjdHVyZSopMSk7CiAgICAgICAgIH0KIAogICAgICAgICBDb2RlTG9jYXRp
b25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
UHRyIHN0cnVjdHVyZUxhYmVsOwotICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZTsK
LSAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmU7CisgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IGNhY2hlZFN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOwogICAgIH07CiAKICAgICBz
dHJ1Y3QgR2xvYmFsUmVzb2x2ZUluZm8gewogICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgIDogc3RydWN0dXJlKDApCi0gICAgICAg
ICAgICAsIG9mZnNldCgwKQorICAgICAgICAgICAgOiBvZmZzZXQoMCkKICAgICAgICAgICAgICwg
Ynl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmU7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgfTsKQEAgLTIxNSw4ICsyMTIsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdmlydHVhbCB+Q29kZUJsb2NrKCk7CiAKICAgICAgICAgdm9pZCBtYXJr
QWdncmVnYXRlKE1hcmtTdGFjayYpOwotICAgICAgICB2b2lkIHJlZlN0cnVjdHVyZXMoSW5zdHJ1
Y3Rpb24qIHZQQykgY29uc3Q7Ci0gICAgICAgIHZvaWQgZGVyZWZTdHJ1Y3R1cmVzKEluc3RydWN0
aW9uKiB2UEMpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7
CiAKQEAgLTQ4Niw2ICs0ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcmlu
dEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46
OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHBy
aW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
Pjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAjZW5kaWYKKyAgICAg
ICAgdm9pZCBtYXJrU3RydWN0dXJlcyhNYXJrU3RhY2smLCBJbnN0cnVjdGlvbiogdlBDKSBjb25z
dDsKIAogICAgICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IGI1
ZTVjNTJmMGY1YzRjODU5NTMxNDlkZWQ1ZDQzNmNkNWFiODU5NjUuLmQ5Y2JiMTFhZDg2NjBhNGZk
YTBjMjQ5MGJhYmUyY2YzODkyMDAxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCkBAIC02MSw0NSArNjEsNDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0cnVjdCBQb2x5bW9ycGhpY1N0dWJJbmZvIHsKICAgICAgICAgICAgIGJvb2wgaXND
aGFpbjsKICAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0
aW5lVHlwZSBzdHViUm91dGluZTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZTsKKyAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IGJhc2U7CiAgICAgICAgICAgICB1bmlvbiB7
Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90bzsKKyAgICAgICAgICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gcHJvdG87CiAgICAgICAgICAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gY2hhaW47CiAgICAgICAgICAgICB9IHU7CiAKLSAgICAg
ICAgICAgIHZvaWQgc2V0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5l
VHlwZSBfc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogX2Jhc2UpCisgICAgICAgICAgICB2b2lkIHNl
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSog
X2Jhc2UpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3R1YlJvdXRpbmUgPSBfc3R1
YlJvdXRpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IF9iYXNlOwotICAgICAgICAgICAgICAg
IHUucHJvdG8gPSAwOworICAgICAgICAgICAgICAgIGJhc2Uuc2V0KGdsb2JhbERhdGEsIG93bmVy
LCBfYmFzZSk7CisgICAgICAgICAgICAgICAgdS5wcm90by5jbGVhcigpOwogICAgICAgICAgICAg
ICAgIGlzQ2hhaW4gPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAg
ICAgICAgdm9pZCBzZXQoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVU
eXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlKiBfcHJvdG8pCisg
ICAgICAgICAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3du
ZXIsIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJv
dXRpbmUsIFN0cnVjdHVyZSogX2Jhc2UsIFN0cnVjdHVyZSogX3Byb3RvKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lID0gX3N0dWJSb3V0aW5lOwotICAgICAgICAg
ICAgICAgIGJhc2UgPSBfYmFzZTsKLSAgICAgICAgICAgICAgICB1LnByb3RvID0gX3Byb3RvOwor
ICAgICAgICAgICAgICAgIGJhc2Uuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBfYmFzZSk7CisgICAg
ICAgICAgICAgICAgdS5wcm90by5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIF9wcm90byk7CiAgICAg
ICAgICAgICAgICAgaXNDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCog
b3duZXIsIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1
YlJvdXRpbmUsIFN0cnVjdHVyZSogX2Jhc2UsIFN0cnVjdHVyZUNoYWluKiBfY2hhaW4pCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3R1YlJvdXRpbmUgPSBfc3R1YlJvdXRpbmU7Ci0g
ICAgICAgICAgICAgICAgYmFzZSA9IF9iYXNlOworICAgICAgICAgICAgICAgIGJhc2Uuc2V0KGds
b2JhbERhdGEsIG93bmVyLCBfYmFzZSk7CiAgICAgICAgICAgICAgICAgdS5jaGFpbi5zZXQoZ2xv
YmFsRGF0YSwgb3duZXIsIF9jaGFpbik7CiAgICAgICAgICAgICAgICAgaXNDaGFpbiA9IHRydWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gbGlzdFtQT0xZTU9SUEhJQ19MSVNUX0NBQ0hFX1NJ
WkVdOwogICAgICAgICAKLSAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwg
U3RydWN0dXJlKiBmaXJzdEJhc2UpCisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0dXJl
KiBmaXJzdEJhc2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGxpc3RbMF0uc2V0KHN0dWJSb3V0
aW5lLCBmaXJzdEJhc2UpOworICAgICAgICAgICAgbGlzdFswXS5zZXQoZ2xvYmFsRGF0YSwgb3du
ZXIsIHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0
dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0dXJlKiBmaXJzdEJhc2UsIFN0cnVjdHVy
ZSogZmlyc3RQcm90bykKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIGZpcnN0
QmFzZSwgU3RydWN0dXJlKiBmaXJzdFByb3RvKQogICAgICAgICB7Ci0gICAgICAgICAgICBsaXN0
WzBdLnNldChzdHViUm91dGluZSwgZmlyc3RCYXNlLCBmaXJzdFByb3RvKTsKKyAgICAgICAgICAg
IGxpc3RbMF0uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHViUm91dGluZSwgZmlyc3RCYXNlLCBm
aXJzdFByb3RvKTsKICAgICAgICAgfQogCiAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0
dXJlKiBmaXJzdEJhc2UsIFN0cnVjdHVyZUNoYWluKiBmaXJzdENoYWluKQpAQCAtMTA3LDI3ICsx
MDcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBsaXN0WzBdLnNldChnbG9iYWxE
YXRhLCBvd25lciwgc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RDaGFpbik7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGRlcmVmU3RydWN0dXJlcyhpbnQgY291bnQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAg
ICAgICAgIFBvbHltb3JwaGljU3R1YkluZm8mIGluZm8gPSBsaXN0W2ldOwotCi0gICAgICAgICAg
ICAgICAgQVNTRVJUKGluZm8uYmFzZSk7Ci0gICAgICAgICAgICAgICAgaW5mby5iYXNlLT5kZXJl
ZigpOwotCi0gICAgICAgICAgICAgICAgaWYgKGluZm8udS5wcm90bykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWluZm8uaXNDaGFpbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm8u
dS5wcm90by0+ZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQogICAgICAgICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2ss
IGludCBjb3VudCkKICAgICAgICAgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICAgICAgUG9seW1vcnBoaWNTdHViSW5mbyYgaW5mbyA9
IGxpc3RbaV07CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluZm8uYmFzZSk7CiAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaW5mby5iYXNlKTsKKyAg
ICAgICAgICAgICAgICBpZiAoaW5mby51LnByb3RvICYmICFpbmZvLmlzQ2hhaW4pCisgICAgICAg
ICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmluZm8udS5wcm90byk7CiAgICAgICAgICAg
ICAgICAgaWYgKGluZm8udS5jaGFpbiAmJiBpbmZvLmlzQ2hhaW4pCiAgICAgICAgICAgICAgICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQoJmluZm8udS5jaGFpbik7CiAgICAgICAgICAgICB9CkBAIC0x
NTMsNyArMTQxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdS5vcGVyYW5kID0g
b3BlcmFuZDsKICAgICAgICAgfQogCi0gICAgICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKSB7IHUuc3RydWN0dXJlID0gc3RydWN0dXJlOyB9CisgICAgICAgIEluc3RydWN0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgICAgICB1LnN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHN0cnVjdHVyZSk7Cisg
ICAgICAgIH0KICAgICAgICAgSW5zdHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4pCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKQEAgLTE3MCw3ICsxNjIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9w
Y29kZTsKICAgICAgICAgICAgIGludCBvcGVyYW5kOwotICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gc3RydWN0
dXJlOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0
dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwog
ICAgICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0
cnVjdHVyZXM7CkBAIC0xNzksNiArMTcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZUNoYWluKik7CisgICAg
ICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZSopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAKaW5kZXggZTEwZGM1Y2Y1ZTE3MDU4NjNjNzIzZTcyOGVmOWVkZGJiNWYwNGM1Yy4u
YmU1NzYwYTFhOGRiNDc1OTAxMjk5ZWJkZWJkNjUyYWUyNTU4MDU5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0z
NSw0MiArMzUsMjggQEAgbmFtZXNwYWNlIEpTQyB7CiB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpk
ZXJlZigpCiB7CiAgICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7Ci0gICAgY2FzZSBhY2Nlc3NfZ2V0
X2J5X2lkX3NlbGY6Ci0gICAgICAgIHUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+
ZGVyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90
bzoKLSAgICAgICAgdS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZS0+ZGVyZWYoKTsK
LSAgICAgICAgdS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLT5kZXJlZigpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOgotICAgICAgICB1
LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLT5kZXJlZigpOwotICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGZfbGlzdDogewogICAgICAgICBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcyA9IHUuZ2V0
QnlJZFNlbGZMaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJl
cy0+ZGVyZWZTdHJ1Y3R1cmVzKHUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplKTsKICAgICAgICAg
ZGVsZXRlIHBvbHltb3JwaGljU3RydWN0dXJlczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG9fbGlzdDogewogICAgICAgICBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcyA9IHUuZ2V0QnlJZFBy
b3RvTGlzdC5zdHJ1Y3R1cmVMaXN0OwotICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPmRl
cmVmU3RydWN0dXJlcyh1LmdldEJ5SWRQcm90b0xpc3QubGlzdFNpemUpOwogICAgICAgICBkZWxl
dGUgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNh
c2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOgorICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90
bzoKKyAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46CiAgICAgY2FzZSBhY2Nlc3NfcHV0
X2J5X2lkX3RyYW5zaXRpb246Ci0gICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNT
dHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJl
LT5kZXJlZigpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3Jl
cGxhY2U6Ci0gICAgICAgIHUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+ZGVy
ZWYoKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZDoKICAgICBj
YXNlIGFjY2Vzc19wdXRfYnlfaWQ6CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM6
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX2dlbmVyaWM6CiAgICAgY2FzZSBhY2Nlc3NfZ2V0
X2FycmF5X2xlbmd0aDoKICAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0aDoKLSAgICAg
ICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IHJlZiB0aGVpciBTdHJ1Y3R1cmVzLgorICAg
ICAgICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgaGF2ZSB0byByZWxlYXNlIGFueSBhbGxv
Y2F0ZWQgbWVtb3J5CiAgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTgxLDE0ICs2NywxNCBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJ
bmZvOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIHN3aXRjaCAo
YWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOgotICAgICAgICB1
LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNr
KTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90
bzoKLSAgICAgICAgdS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3Jl
Z2F0ZShtYXJrU3RhY2spOwotICAgICAgICB1LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1
cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
dS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJnUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46Ci0gICAgICAgIHUuZ2V0QnlJZENo
YWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmdS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSk7
CiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUuZ2V0QnlJZENoYWluLmNoYWluKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmX2xpc3Q6IHsKQEAgLTEw
MiwxMiArODgsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6bWFya0FnZ3JlZ2F0ZShNYXJr
U3RhY2smIG1hcmtTdGFjaykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIGFjY2Vz
c19wdXRfYnlfaWRfdHJhbnNpdGlvbjoKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2
aW91c1N0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwotICAgICAgICB1LnB1dEJ5
SWRUcmFuc2l0aW9uLnN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJl
KTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1
cmUpOwogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWlu
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOgot
ICAgICAgICB1LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdh
dGUobWFya1N0YWNrKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5wdXRCeUlkUmVwbGFj
ZS5iYXNlT2JqZWN0U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNz
X2dldF9ieV9pZDoKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWQ6CkBAIC0xMTUsNyArMTAxLDcg
QEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtT
dGFjaykKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfZ2VuZXJpYzoKICAgICBjYXNlIGFjY2Vz
c19nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGNhc2UgYWNjZXNzX2dldF9zdHJpbmdfbGVuZ3RoOgot
ICAgICAgICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgcmVmIHRoZWlyIFN0cnVjdHVyZXMu
CisgICAgICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCBuZWVkIHRvIG1hcmsgYW55dGhp
bmcKICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAppbmRleCA2NzAyZGNlY2Q0OTc5ZTM1NjUyNmQ4NTk4Yzg0MzdjYWU0NDgwNjVh
Li5iZmVlYjFlYWQwMzFkZjQ5YjlmNTFlYTA1OWQ0YTgxYjNhMmFmNDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTgs
MzIgKzU4LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGluaXRHZXRCeUlkU2VsZihTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUp
CisgICAgICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlKQogICAgICAgICB7
CiAgICAgICAgICAgICBhY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9zZWxmOwogCi0gICAg
ICAgICAgICB1LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0U3Ry
dWN0dXJlOwotICAgICAgICAgICAgYmFzZU9iamVjdFN0cnVjdHVyZS0+cmVmKCk7CisgICAgICAg
ICAgICB1LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93
bmVyLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5p
dEdldEJ5SWRQcm90byhTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlKQorICAgICAgICB2b2lkIGluaXRHZXRCeUlkUHJvdG8oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RT
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBhY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9wcm90bzsKIAotICAgICAgICAg
ICAgdS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZSA9IGJhc2VPYmplY3RTdHJ1Y3R1
cmU7Ci0gICAgICAgICAgICBiYXNlT2JqZWN0U3RydWN0dXJlLT5yZWYoKTsKLQotICAgICAgICAg
ICAgdS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG90eXBlU3RydWN0dXJl
OwotICAgICAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlLT5yZWYoKTsKKyAgICAgICAgICAgIHUu
Z2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBi
YXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICAgICAgICAgIHUuZ2V0QnlJZFByb3RvLnByb3RvdHlw
ZVN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHByb3RvdHlwZVN0cnVjdHVyZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGluaXRHZXRCeUlkQ2hhaW4oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbikKICAgICAgICAgewogICAgICAgICAgICAgYWNjZXNzVHlw
ZSA9IGFjY2Vzc19nZXRfYnlfaWRfY2hhaW47CiAKLSAgICAgICAgICAgIHUuZ2V0QnlJZENoYWlu
LmJhc2VPYmplY3RTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0U3RydWN0dXJlOwotICAgICAgICAgICAg
YmFzZU9iamVjdFN0cnVjdHVyZS0+cmVmKCk7Ci0KKyAgICAgICAgICAgIHUuZ2V0QnlJZENoYWlu
LmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBiYXNlT2JqZWN0U3Ry
dWN0dXJlKTsKICAgICAgICAgICAgIHUuZ2V0QnlJZENoYWluLmNoYWluLnNldChnbG9iYWxEYXRh
LCBvd25lciwgY2hhaW4pOwogICAgICAgICB9CiAKQEAgLTEwOSwyMSArMTAzLDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBhY2Nlc3NUeXBlID0gYWNjZXNzX3B1
dF9ieV9pZF90cmFuc2l0aW9uOwogCi0gICAgICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnBy
ZXZpb3VzU3RydWN0dXJlID0gcHJldmlvdXNTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBwcmV2aW91
c1N0cnVjdHVyZS0+cmVmKCk7Ci0KLSAgICAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uc3Ry
dWN0dXJlID0gc3RydWN0dXJlOwotICAgICAgICAgICAgc3RydWN0dXJlLT5yZWYoKTsKLQorICAg
ICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS5zZXQoZ2xvYmFs
RGF0YSwgb3duZXIsIHByZXZpb3VzU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHUucHV0QnlJZFRy
YW5zaXRpb24uc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3RydWN0dXJlKTsKICAg
ICAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uc2V0KGdsb2JhbERhdGEsIG93bmVy
LCBjaGFpbik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShT
dHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUpCisgICAgICAgIHZvaWQgaW5pdFB1dEJ5SWRS
ZXBsYWNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJl
KiBiYXNlT2JqZWN0U3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBhY2Nlc3NUeXBl
ID0gYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOwogICAgIAotICAgICAgICAgICAgdS5wdXRCeUlk
UmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlID0gYmFzZU9iamVjdFN0cnVjdHVyZTsKLSAgICAg
ICAgICAgIGJhc2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOworICAgICAgICAgICAgdS5wdXRCeUlk
UmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgYmFzZU9i
amVjdFN0cnVjdHVyZSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRlcmVmKCk7CkBAIC0x
NDQsMTQgKzEzMywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0
cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gYmFz
ZU9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgICAgIH0gZ2V0QnlJZFNlbGY7CiAgICAgICAgICAg
ICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVy
ZTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZTsKKyAgICAg
ICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gYmFzZU9iamVjdFN0cnVjdHVy
ZTsKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gcHJvdG90eXBl
U3RydWN0dXJlOwogICAgICAgICAgICAgfSBnZXRCeUlkUHJvdG87CiAgICAgICAgICAgICBzdHJ1
Y3QgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZTsKKyAg
ICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gYmFzZU9iamVjdFN0cnVj
dHVyZTsKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBj
aGFpbjsKICAgICAgICAgICAgIH0gZ2V0QnlJZENoYWluOwogICAgICAgICAgICAgc3RydWN0IHsK
QEAgLTE2MywxMiArMTUyLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGlu
dCBsaXN0U2l6ZTsKICAgICAgICAgICAgIH0gZ2V0QnlJZFByb3RvTGlzdDsKICAgICAgICAgICAg
IHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZTsK
LSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gcHJldmlvdXNTdHJ1Y3R1cmU7CisgICAgICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IHN0cnVjdHVyZTsKICAgICAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBjaGFpbjsKICAgICAgICAgICAg
IH0gcHV0QnlJZFRyYW5zaXRpb247CiAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gYmFzZU9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgICAg
IH0gcHV0QnlJZFJlcGxhY2U7CiAgICAgICAgIH0gdTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCA1MGJhNzQ2
ZWVkMTZkYjMwYWJkMjhlY2M0MDRkZjdjMGI3YTgwNzM5Li42N2E3OTZhNmFjNzQ4NGMxZTdjMzJj
MDNlOWRmOTc1ODk5ZTA5MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIERlYnVnZ2VyQWN0aXZhdGlvbjo6RGVidWdnZXJBY3RpdmF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGFjdGl2YXRpb24pCi0gICAgOiBKU05vbkZp
bmFsT2JqZWN0KERlYnVnZ2VyQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbERhdGEs
IGpzTnVsbCgpKSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgRGVidWdnZXJB
Y3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwganNOdWxsKCkpKQogewogICAg
IEFTU0VSVChhY3RpdmF0aW9uKTsKICAgICBBU1NFUlQoYWN0aXZhdGlvbi0+aXNBY3RpdmF0aW9u
T2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5oCmluZGV4IGYyMmQyZmZiZDkxOTQzYWU0OGZjOTNmM2M3ZTgwYTIxYWJh
NGM5NmQuLmJmYjM2ZGI1MzNiN2ZkZDM2YWJlMzVjNzk5NDhlODQ3OTg2YTMzYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1
ZSBsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cFNldHRlcihFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsgCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxl
LmgKaW5kZXggNDczNGU0MjIwMDgzYTNhOGQ5NDEyNmQ5ZTRiYWVjNzI3ZmJmMTIzYy4uNTMxZDUz
NTQ3MmVhMTMzNWJkZWQyM2Q1NWIyMmNmZjI5ZDA3MjcxMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlLmgKQEAgLTQ0LDkgKzQ0LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBI
YW5kbGU7CiAvLyBDcmVhdGluZyBhIEpTVmFsdWUgSGFuZGxlIGlzIGludmFsaWQKIHRlbXBsYXRl
IDw+IGNsYXNzIEhhbmRsZTxKU1ZhbHVlPjsKIAorLy8gRm9yd2FyZCBkZWNsYXJlIFdlYWtHQ01h
cAordGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZSwgdHlwZW5h
bWUgRmluYWxpemVyQ2FsbGJhY2ssIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0
c0FyZz4gY2xhc3MgV2Vha0dDTWFwOworCiBjbGFzcyBIYW5kbGVCYXNlIHsKICAgICBmcmllbmQg
Y2xhc3MgSGFuZGxlSGVhcDsKICAgICBmcmllbmQgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRh
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlLCB0
eXBlbmFtZSBGaW5hbGl6ZXJDYWxsYmFjaywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnPiBmcmllbmQgY2xhc3MgV2Vha0dDTWFwOwogCiBwdWJsaWM6CiAgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zbG90IHx8ICEqbV9zbG90OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGYxMDJjMThlZTQ0M2VhYTU1YWRmNjYwYjMyMmI2
OTllZWQ3MGIyYWYuLjFhOGFlZGM5NWI3OTQxYWY4M2FlMjFhNjMwZGFmZTEyNTY2MWUyNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVk
ZSAiVHJhY2luZy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAotI2RlZmluZSBDT0xMRUNUX09O
X0VWRVJZX1NMT1dfQUxMT0NBVElPTiAwCisjZGVmaW5lIENPTExFQ1RfT05fRVZFUllfU0xPV19B
TExPQ0FUSU9OIDEKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggNWI0YWM1YTAxOGMwOTc4ZjQ4MmMxNjgxNDZkZmFh
ZTIyZjA2ODRkZi4uM2ZiMWE5OGRmYmFlYjU5Yjg1MTZlMDAxYTU5ZjBiMGViM2EyODljZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC01Nyw3ICs1NywxMyBA
QCB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVS
b290cykKIGlubGluZSB2b2lkIE1hcmtTdGFjazo6bWFya0NoaWxkcmVuKEpTQ2VsbCogY2VsbCkK
IHsKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOworICAgIGlmIChjZWxsLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsKKyAgICAgICAgY2Vs
bC0+SlNDZWxsOjptYXJrQ2hpbGRyZW4oKnRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgaWYgKCFjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNNYXJrQ2hp
bGRyZW4oKSkgeworICAgICAgICBBU1NFUlQoY2VsbC0+aXNPYmplY3QoKSk7CiAjaWZkZWYgTkRF
QlVHCiAgICAgICAgIGFzT2JqZWN0KGNlbGwpLT5tYXJrQ2hpbGRyZW5EaXJlY3QoKnRoaXMpOwog
I2Vsc2UKQEAgLTEwNSw2ICsxMTEsNyBAQCB2b2lkIE1hcmtTdGFjazo6ZHJhaW4oKQogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
dHlwZSgpIDwgQ29tcG91bmRUeXBlKSB7CisgICAgICAgICAgICAgICAgY2VsbC0+SlNDZWxsOjpt
YXJrQ2hpbGRyZW4oKnRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Lm1fdmFsdWVz
ID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBtX21hcmtTZXRzLnJlbW92ZUxhc3QoKTsK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5jcHAKaW5kZXggMzk4ZDQzMzI1YzY0ZDJjZTJkYjQ0ZWViNzUyZDIzY2Zm
ZjkzY2Y3OC4uYTEwYTc3ODVjM2Q5NmY2MzM3NmFmNGNlNjNiNjkwYjQxMWQ5NDNkNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAtNjAsMTQgKzYwLDEy
IEBAIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQm
IGFsbG9jYXRpb24sIEpTR2xvYmFsRGF0YSoKIAogICAgIFN0cnVjdHVyZSogZHVtbXlNYXJrYWJs
ZUNlbGxTdHJ1Y3R1cmUgPSBnbG9iYWxEYXRhLT5kdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZS5n
ZXQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkg
Kz0gbV9hdG9tc1BlckNlbGwpCi0gICAgICAgIG5ldyAoJmF0b21zKClbaV0pIEpTQ2VsbChkdW1t
eU1hcmthYmxlQ2VsbFN0cnVjdHVyZSk7CisgICAgICAgIG5ldyAoJmF0b21zKClbaV0pIEpTQ2Vs
bCgqZ2xvYmFsRGF0YSwgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUpOwogfQogCiB2b2lkIE1h
cmtlZEJsb2NrOjpzd2VlcCgpCiB7Ci0jaWYgIUVOQUJMRShKU0NfWk9NQklFUykKICAgICBTdHJ1
Y3R1cmUqIGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlID0gbV9oZWFwLT5nbG9iYWxEYXRhKCkt
PmR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlLmdldCgpOwotI2VuZGlmCiAKICAgICBmb3IgKHNp
emVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwp
IHsKICAgICAgICAgaWYgKG1fbWFya3MuZ2V0KGkpKQpAQCAtNzUsMTUgKzczLDE1IEBAIHZvaWQg
TWFya2VkQmxvY2s6OnN3ZWVwKCkKIAogICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJl
dF9jYXN0PEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKICNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0g
ICAgICAgIGlmICghY2VsbC0+aXNab21iaWUoKSkgeworICAgICAgICBpZiAoY2VsbC0+c3RydWN0
dXJlKCkgJiYgY2VsbC0+c3RydWN0dXJlKCkgIT0gZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUg
JiYgIWNlbGwtPmlzWm9tYmllKCkpIHsKICAgICAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogaW5m
byA9IGNlbGwtPmNsYXNzSW5mbygpOwogICAgICAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOwotICAg
ICAgICAgICAgbmV3IChjZWxsKSBKU1pvbWJpZShpbmZvLCBKU1pvbWJpZTo6bGVha2VkWm9tYmll
U3RydWN0dXJlKCptX2hlYXAtPmdsb2JhbERhdGEoKSkpOworICAgICAgICAgICAgbmV3IChjZWxs
KSBKU1pvbWJpZSgqbV9oZWFwLT5nbG9iYWxEYXRhKCksIGluZm8sIG1faGVhcC0+Z2xvYmFsRGF0
YSgpLT56b21iaWVTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9tYXJrcy5zZXQoaSk7
CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGNlbGwtPn5KU0NlbGwoKTsKLSAgICAgICAgbmV3
IChjZWxsKSBKU0NlbGwoZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUpOworICAgICAgICBuZXcg
KGNlbGwpIEpTQ2VsbCgqbV9oZWFwLT5nbG9iYWxEYXRhKCksIGR1bW15TWFya2FibGVDZWxsU3Ry
dWN0dXJlKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1N0cm9uZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgK
aW5kZXggZTViNDdjNzkyYmYzZDEzYjNmMzU5YzkxM2EyOTk2MWMwMWJlOWQ1YS4uOWYyYWEwNWUy
NWUwYTlhNWY3MzhjYWM4MzA3ZDU2YmE4YTdlYjI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Ryb25nLmgKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKICNp
bmNsdWRlICJIYW5kbGUuaCIKICNpbmNsdWRlICJIYW5kbGVIZWFwLmgiCi0jaW5jbHVkZSAiSlNH
bG9iYWxEYXRhLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU0dsb2JhbERhdGE7CitI
YW5kbGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKEpTR2xvYmFsRGF0YSYpOworCiAvLyBBIHN0
cm9uZ2x5IHJlZmVyZW5jZWQgaGFuZGxlIHRoYXQgcHJldmVudHMgdGhlIG9iamVjdCBpdCBwb2lu
dHMgdG8gZnJvbSBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBTdHJvbmcgOiBwdWJsaWMgSGFuZGxlPFQ+IHsKICAgICB1c2luZyBIYW5kbGU8VD46
OnNsb3Q7CkBAIC00NywxMyArNDksMTMgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBTdHJv
bmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeHRlcm5hbFR5cGUgdmFsdWUgPSBFeHRlcm5h
bFR5cGUoKSkKLSAgICAgICAgOiBIYW5kbGU8VD4oZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhh
bmRsZSgpKQorICAgICAgICA6IEhhbmRsZTxUPihhbGxvY2F0ZUdsb2JhbEhhbmRsZShnbG9iYWxE
YXRhKSkKICAgICB7CiAgICAgICAgIHNldCh2YWx1ZSk7CiAgICAgfQogCiAgICAgU3Ryb25nKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSGFuZGxlPFQ+IGhhbmRsZSkKLSAgICAgICAgOiBIYW5k
bGU8VD4oZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpKQorICAgICAgICA6IEhhbmRs
ZTxUPihhbGxvY2F0ZUdsb2JhbEhhbmRsZShnbG9iYWxEYXRhKSkKICAgICB7CiAgICAgICAgIHNl
dChoYW5kbGUuZ2V0KCkpOwogICAgIH0KQEAgLTk2LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCFzbG90KCkpCi0gICAgICAgICAgICBzZXRTbG90KGdsb2JhbERhdGEu
YWxsb2NhdGVHbG9iYWxIYW5kbGUoKSk7CisgICAgICAgICAgICBzZXRTbG90KGFsbG9jYXRlR2xv
YmFsSGFuZGxlKGdsb2JhbERhdGEpKTsKICAgICAgICAgc2V0KHZhbHVlKTsKICAgICB9CiAKQEAg
LTEzNyw3ICsxMzksNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKHNsb3QoKSk7
CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBIYW5kbGVUeXBlczxUPjo6dG9KU1ZhbHVlKGV4dGVy
bmFsVHlwZSk7Ci0gICAgICAgIEFTU0VSVCghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpIHx8IEhl
YXA6OmlzTWFya2VkKHZhbHVlLmFzQ2VsbCgpKSk7CiAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBG
b3Ioc2xvdCgpKS0+d3JpdGVCYXJyaWVyKHNsb3QoKSwgdmFsdWUpOwogICAgICAgICAqc2xvdCgp
ID0gdmFsdWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggZDc5YzU4MWUzNjE3MWY0Y2NjZmFkNTdiYzMzYmQ1MzY1
NzI0OTRiYS4uNzI0ZjY4ZjM0ZTk5YzM4NjIyMjVhY2JlZTFlMGRiNmFjNmJhOTlhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC0xNjQsNyArMTY0LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVH
bG9iYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9uKgogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwogICAgIEFTU0VS
VChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOwogICAgIGludCBwcm9wZXJ0eSA9IHZQ
Q1syXS51Lm9wZXJhbmQ7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbM10udS5zdHJ1
Y3R1cmU7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbM10udS5zdHJ1Y3R1cmUuZ2V0
KCk7CiAgICAgaW50IG9mZnNldCA9IHZQQ1s0XS51Lm9wZXJhbmQ7CiAKICAgICBpZiAoc3RydWN0
dXJlID09IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpIHsKQEAgLTE3NywxMCArMTc3LDcgQEAg
TkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEluc3RydWN0aW9uKgogICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5
U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7CiAgICAgICAgIGlmIChzbG90LmlzQ2Fj
aGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7Ci0gICAg
ICAgICAgICBpZiAodlBDWzNdLnUuc3RydWN0dXJlKQotICAgICAgICAgICAgICAgIHZQQ1szXS51
LnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c3RydWN0dXJl
KCktPnJlZigpOwotICAgICAgICAgICAgdlBDWzNdID0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUo
KTsKKyAgICAgICAgICAgIHZQQ1szXS51LnN0cnVjdHVyZS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgdlBDWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShyZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDQsNyArMjAxLDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBJbnN0cnUKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKTsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgp
KTsKICAgICBpbnQgcHJvcGVydHkgPSB2UENbMl0udS5vcGVyYW5kOwotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdlBDWzNdLnUuc3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdlBDWzNdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGludCBvZmZzZXQgPSB2UENbNF0udS5v
cGVyYW5kOwogICAgIGludCBza2lwID0gdlBDWzVdLnUub3BlcmFuZDsKICAgICAKQEAgLTI1NSwx
MCArMjUyLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxE
eW5hbWljKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnUKICAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwogICAgICAgICBp
ZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9i
amVjdCkgewotICAgICAgICAgICAgaWYgKHZQQ1szXS51LnN0cnVjdHVyZSkKLSAgICAgICAgICAg
ICAgICB2UENbM10udS5zdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5yZWYoKTsKLSAgICAgICAgICAgIHZQQ1szXSA9IGdsb2JhbE9iamVj
dC0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICB2UENbM10udS5zdHJ1Y3R1cmUuc2V0KGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxP
YmplY3QtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHZQQ1s0XSA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShyZXN1bHQpOwpAQCAtMTIyNSwxMSArMTIxOSwx
MSBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVQdXRCeUlEKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqCiAgICAgfQogCiAgICAgLy8gQ2FjaGUgbWlzczog
cmVjb3JkIFN0cnVjdHVyZSB0byBjb21wYXJlIGFnYWluc3QgbmV4dCB0aW1lLgotICAgIFN0cnVj
dHVyZSogbGFzdFN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUq
IGxhc3RTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgaWYgKHN0cnVj
dHVyZSAhPSBsYXN0U3RydWN0dXJlKSB7CiAgICAgICAgIC8vIEZpcnN0IG1pc3M6IHJlY29yZCBT
dHJ1Y3R1cmUgdG8gY29tcGFyZSBhZ2FpbnN0IG5leHQgdGltZS4KICAgICAgICAgaWYgKCFsYXN0
U3RydWN0dXJlKSB7Ci0gICAgICAgICAgICB2UENbNF0gPSBzdHJ1Y3R1cmU7CisgICAgICAgICAg
ICB2UENbNF0udS5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTEyNTUsMjQgKzEyNDksMjMgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50
ZXJwcmV0ZXI6OnRyeUNhY2hlUHV0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2Nr
KgogCiAgICAgICAgIC8vIHB1dF9ieV9pZF90cmFuc2l0aW9uIGNoZWNrcyB0aGUgcHJvdG90eXBl
IGNoYWluIGZvciBzZXR0ZXJzLgogICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxs
RnJhbWUsIGJhc2VDZWxsKTsKLQorICAgICAgICBKU0NlbGwqIG93bmVyID0gY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKTsKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCk7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbik7Ci0gICAgICAgIHZQQ1s0XSA9IHN0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpOwotICAgICAgICB2UENbNV0gPSBzdHJ1Y3R1cmU7Ci0gICAgICAgIHZQQ1s2XSA9IEluc3Ry
dWN0aW9uKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSkpOworICAgICAgICB2UENb
NF0udS5zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKSk7CisgICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIs
IHN0cnVjdHVyZSk7CisgICAgICAgIHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLnNldChjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
LT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKKyAgICAgICAgQVNTRVJUKHZQQ1s2XS51LnN0
cnVjdHVyZUNoYWluKTsKICAgICAgICAgdlBDWzddID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKLSAg
ICAgICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1cmVzKHZQQyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpOwogICAg
IHZQQ1s1XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Ci0gICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1
cmVzKHZQQyk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjp1bmNhY2hlUHV0
QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHZQQykKK05FVkVSX0lOTElO
RSB2b2lkIEludGVycHJldGVyOjp1bmNhY2hlUHV0QnlJRChDb2RlQmxvY2sqLCBJbnN0cnVjdGlv
biogdlBDKQogewotICAgIGNvZGVCbG9jay0+ZGVyZWZTdHJ1Y3R1cmVzKHZQQyk7CiAgICAgdlBD
WzBdID0gZ2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgdlBDWzRdID0gMDsKIH0KQEAgLTEz
MTQsMTEgKzEzMDcsMTEgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hl
R2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogICAgIH0KIAogICAgIC8v
IENhY2hlIG1pc3MKLSAgICBTdHJ1Y3R1cmUqIGxhc3RTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1
Y3R1cmU7CisgICAgU3RydWN0dXJlKiBsYXN0U3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJl
LmdldCgpOwogICAgIGlmIChzdHJ1Y3R1cmUgIT0gbGFzdFN0cnVjdHVyZSkgewogICAgICAgICAv
LyBGaXJzdCBtaXNzOiByZWNvcmQgU3RydWN0dXJlIHRvIGNvbXBhcmUgYWdhaW5zdCBuZXh0IHRp
bWUuCiAgICAgICAgIGlmICghbGFzdFN0cnVjdHVyZSkgewotICAgICAgICAgICAgdlBDWzRdID0g
c3RydWN0dXJlOworICAgICAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLnNldChjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzQ0LDggKzEzMzcsNiBAQCBO
RVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBDb2RlQmxvY2sqCiAgICAgICAgICAgICB2UENbNV0gPSBzbG90LmNhY2hlZE9m
ZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAgICAgICBjb2RlQmxv
Y2stPnJlZlN0cnVjdHVyZXModlBDKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4
Myw5ICsxMzc0LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0
QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogICAgICAgICAgICAgdlBDWzZd
ID0gb2Zmc2V0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdlBDWzVd
ID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKCk7Ci0KLSAgICAgICAgY29kZUJsb2NrLT5yZWZTdHJ1
Y3R1cmVzKHZQQyk7CisgICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZS5zZXQoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGJhc2VPYmplY3QtPnN0
cnVjdHVyZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQxMSwxNSArMTQwMCwx
MyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqCiAgICAgICAgIHZQQ1s3XSA9IG9mZnNldDsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHZQQ1s0XSA9IHN0cnVjdHVyZTsKLSAgICB2UENbNV0g
PSBJbnN0cnVjdGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKKyAgICB2
UENbNF0udS5zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgIHZQQ1s1XS51LnN0cnVjdHVyZUNo
YWluLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKICAgICB2UENbNl0g
PSBjb3VudDsKLSAgICBjb2RlQmxvY2stPnJlZlN0cnVjdHVyZXModlBDKTsKIH0KIAotTkVWRVJf
SU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnVuY2FjaGVHZXRCeUlEKENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogdlBDKQorTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnVu
Y2FjaGVHZXRCeUlEKENvZGVCbG9jayosIEluc3RydWN0aW9uKiB2UEMpCiB7Ci0gICAgY29kZUJs
b2NrLT5kZXJlZlN0cnVjdHVyZXModlBDKTsKICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfZ2V0
X2J5X2lkKTsKICAgICB2UENbNF0gPSAwOwogfQpAQCAtMjUyOCw3ICsyNTE1LDcgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3Rl
ckZpbGUqIHJlZ2lzdGVyRmkKIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwo
KSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsK
KyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdl
dCgpOwogCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBz
dHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VDZWxsLT5pc09iamVjdCgp
KTsKQEAgLTI1NTksMTIgKzI1NDYsMTIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4
ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKIAogICAg
ICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2Vs
bCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICBpZiAo
TElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkuaXNP
YmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gYXNPYmpl
Y3Qoc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7Ci0gICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1Y3R1cmU7
CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSB2UENbNV0u
dS5zdHJ1Y3R1cmUuZ2V0KCk7CiAKICAgICAgICAgICAgICAgICBpZiAoTElLRUxZKHByb3RvT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSA9PSBwcm90b3R5cGVTdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwpAQCAtMjU5OCwxMiArMjU4NSwxMiBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAKICAgICAgICAgaWYgKExJS0VMWShi
YXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENb
NF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0
XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VM
WShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpLmlzT2JqZWN0
KCkpOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IGFzT2JqZWN0KHN0
cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAgICAgICAgICAg
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0dXJlOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gdlBDWzVdLnUuc3Ry
dWN0dXJlLmdldCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChMSUtF
TFkocHJvdG9PYmplY3QtPnN0cnVjdHVyZSgpID09IHByb3RvdHlwZVN0cnVjdHVyZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CkBAIC0yNjQzLDEy
ICsyNjMwLDEyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlv
bkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIAogICAgICAgICBp
ZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFz
ZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdlBDWzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoTElLRUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFt
ZSkuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0g
YXNPYmplY3Qoc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7Ci0gICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSB2UENbNV0udS5zdHJ1
Y3R1cmU7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSB2
UENbNV0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaWYgKExJS0VMWShwcm90b09iamVjdC0+c3RydWN0dXJlKCkgPT0gcHJvdG90eXBlU3RydWN0
dXJlKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsK
QEAgLTI3MTIsNiArMjY5OSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIHZQ
QyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZF9wcm90b19saXN0KTsKICAgICAgICAgTkVY
VF9JTlNUUlVDVElPTigpOwogICAgIH0KKyNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FS
T1VORCkKKyAgICBnb3RvICooJiZza2lwX2dldF9ieV9pZF9jaGFpbik7CisjZW5kaWYKICAgICBE
RUZJTkVfT1BDT0RFKG9wX2dldF9ieV9pZF9jaGFpbikgewogICAgICAgICAvKiBvcF9nZXRfYnlf
aWRfY2hhaW4gZHN0KHIpIGJhc2UocikgcHJvcGVydHkoaWQpIHN0cnVjdHVyZShzSUQpIHN0cnVj
dHVyZUNoYWluKGNoYWluKSBjb3VudChuKSBvZmZzZXQobikKIApAQCAtMjcyNCwxMiArMjcxNCwx
MiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZs
YWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogCiAgICAgICAgIGlmIChMSUtFTFkoYmFzZVZh
bHVlLmlzQ2VsbCgpKSkgewogICAgICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUu
c3RydWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5z
dHJ1Y3R1cmUuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmIChMSUtFTFkoYmFzZUNlbGwtPnN0cnVj
dHVyZSgpID09IHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJl
PiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOworICAgICAgICAgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLT5o
ZWFkKCk7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gdlBDWzZdLnUub3BlcmFuZDsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsKKyAg
ICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBjb3VudDsK
IAogICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZUNlbGwtPnN0cnVjdHVyZSgpLT5wcm90
b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7CkBAIC0yNzU5LDYgKzI3NDksNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVy
RmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQogI2lm
IFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EKQorICAgIHNraXBfZ2V0X2J5X2lkX2No
YWluOgogICAgIGdvdG8gKigmJnNraXBfaWRfZ2V0dGVyX3NlbGYpOwogI2VuZGlmCiAgICAgREVG
SU5FX09QQ09ERShvcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGYpIHsKQEAgLTI3NzMsNyArMjc2NCw3
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxh
ZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQ
Q1s0XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBD
WzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoTElL
RUxZKGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGJhc2VDZWxsLT5pc09iamVjdCgpKTsKQEAgLTI4MTYsNyArMjgwNyw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVn
aXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIAogICAgICAgICBpZiAoTElLRUxZKGJhc2VW
YWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFs
dWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQQ1s0XS51
LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUu
c3RydWN0dXJlLmdldCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJh
c2VDZWxsLT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2VDZWxsLT5pc09iamVjdCgpKTsKQEAgLTI4NzMsMTIgKzI4NjQsMTIgQEAgc2tpcF9p
ZF9jdXN0b21fc2VsZjoKICAgICAgICAgCiAgICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlz
Q2VsbCgpKSkgewogICAgICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBDWzRdLnUuc3RydWN0
dXJlOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1
cmUuZ2V0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChMSUtFTFkoYmFzZUNlbGwt
PnN0cnVjdHVyZSgpID09IHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiogaXQgPSB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOworICAgICAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IHZQQ1s1XS51LnN0cnVjdHVyZUNo
YWluLT5oZWFkKCk7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gdlBDWzZdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBjb3Vu
dDsKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogZW5kID0gaXQgKyBj
b3VudDsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VD
ZWxsLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwpAQCAtMjky
OCwxMiArMjkxOSwxMiBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAKICAgICAgICAg
aWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmU7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0dXJlKCkgPT0gc3RydWN0dXJlKSkgewotICAg
ICAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IHZQQ1s1XS51LnN0cnVjdHVyZUNo
YWluLT5oZWFkKCk7CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0
ID0gdlBDWzVdLnUuc3RydWN0dXJlQ2hhaW4tPmhlYWQoKTsKICAgICAgICAgICAgICAgICBzaXpl
X3QgY291bnQgPSB2UENbNl0udS5vcGVyYW5kOwotICAgICAgICAgICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+KiBlbmQgPSBpdCArIGNvdW50OworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KiBlbmQgPSBpdCArIGNvdW50OwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBiYXNl
T2JqZWN0ID0gYXNPYmplY3QoYmFzZUNlbGwtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29r
dXAoY2FsbEZyYW1lKSk7CkBAIC0yOTY0LDYgKzI5NTUsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxm
OgogICAgIH0KICNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAgICBza2lw
X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBnb3RvICooJiZza2lwX2dldF9hcnJheV9sZW5ndGgpOwog
I2VuZGlmCiAgICAgREVGSU5FX09QQ09ERShvcF9nZXRfYXJyYXlfbGVuZ3RoKSB7CiAgICAgICAg
IC8qIG9wX2dldF9hcnJheV9sZW5ndGggZHN0KHIpIGJhc2UocikgcHJvcGVydHkoaWQpIG5vcChz
SUQpIG5vcChuKSBub3Aobikgbm9wKG4pCkBAIC0yOTg1LDYgKzI5NzcsMTAgQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKICAgICAgICAgdW5jYWNoZUdldEJ5SUQoY29kZUJsb2NrLCB2UEMpOwogICAg
ICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQorI2lmIFVTRShHQ0NfQ09NUFVURURfR09U
T19XT1JLQVJPVU5EKQorICAgIHNraXBfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBnb3RvICooJiZz
a2lwX2dldF9zdHJpbmdfbGVuZ3RoKTsKKyNlbmRpZgogICAgIERFRklORV9PUENPREUob3BfZ2V0
X3N0cmluZ19sZW5ndGgpIHsKICAgICAgICAgLyogb3BfZ2V0X3N0cmluZ19sZW5ndGggZHN0KHIp
IGJhc2UocikgcHJvcGVydHkoaWQpIG5vcChzSUQpIG5vcChuKSBub3Aobikgbm9wKG4pCiAKQEAg
LTMwMDUsNiArMzAwMSwxMCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICB1bmNhY2hl
R2V0QnlJRChjb2RlQmxvY2ssIHZQQyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAg
ICB9CisjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQpCisgICAgc2tpcF9nZXRf
c3RyaW5nX2xlbmd0aDoKKyAgICBnb3RvICooJiZza2lwX3B1dF9ieV9pZCk7CisjZW5kaWYKICAg
ICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZCkgewogICAgICAgICAvKiBwdXRfYnlfaWQgYmFz
ZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgbm9wKG4pIG5vcChuKSBub3Aobikgbm9wKG4pIGRp
cmVjdChiKQogCkBAIC0zMDM4LDYgKzMwMzgsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWQpOwogICAgICAgICBORVhUX0lO
U1RSVUNUSU9OKCk7CiAgICAgfQorI2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5E
KQorICAgICAgc2tpcF9wdXRfYnlfaWQ6CisjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uKSB7CiAgICAgICAgIC8qIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
IGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIpIG9sZFN0cnVjdHVyZShzSUQpIG5ld1N0cnVj
dHVyZShzSUQpIHN0cnVjdHVyZUNoYWluKGNoYWluKSBvZmZzZXQobikgZGlyZWN0KGIpCiAgICAg
ICAgICAKQEAgLTMwNTQsOCArMzA1Nyw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAg
IAogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAg
IEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZQQ1s0XS51LnN0cnVjdHVyZTsKLSAgICAgICAgICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gdlBDWzVdLnUuc3RydWN0dXJlOworICAgICAgICAgICAg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSB2UENbNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHZQQ1s1XS51LnN0cnVjdHVyZS5nZXQo
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKExJS0VMWShiYXNlQ2VsbC0+c3RydWN0
dXJlKCkgPT0gb2xkU3RydWN0dXJlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlQ2Vs
bC0+aXNPYmplY3QoKSk7CkBAIC0zMDYzLDcgKzMwNjYsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxm
OgogICAgICAgICAgICAgICAgIGludCBkaXJlY3QgPSB2UENbOF0udS5vcGVyYW5kOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghZGlyZWN0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLT5o
ZWFkKCk7CisgICAgICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9
IHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CiAKICAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBwcm90byA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29r
dXAoY2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFwcm90by5pc051bGwo
KSkgewpAQCAtMzA3NSwxMSArMzA3OCwxMSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvdG8gPSBhc09iamVjdChwcm90byktPnN0cnVjdHVyZSgpLT5w
cm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT50cmFuc2l0aW9uVG8o
bmV3U3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT50cmFuc2l0aW9uVG8o
Kmdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiAKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUg
PSB2UENbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQ
Q1s3XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNl
dEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBv
ZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2Nh
dGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbigqZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAg
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCks
IG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAg
ICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pOwpAQCAtMzEw
Niw3ICszMTA5LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSkpIHsKICAgICAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZQ
Q1s0XS51LnN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdlBD
WzRdLnUuc3RydWN0dXJlLmdldCgpOwogCiAgICAgICAgICAgICBpZiAoTElLRUxZKGJhc2VDZWxs
LT5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJh
c2VDZWxsLT5pc09iamVjdCgpKTsKQEAgLTMxMTQsNyArMzExNyw3IEBAIHNraXBfaWRfY3VzdG9t
X3NlbGY6CiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JM
b2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbihjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24o
YmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oKmdsb2JhbERhdGEsIGNvZGVCbG9jay0+aWRl
bnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAgICAgICAgICAgICAgICAg
YmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBvZmZz
ZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIAogICAgICAgICAgICAgICAgIHZQ
QyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9ieV9pZF9yZXBsYWNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IDNkODdlNTExMWQwMmZkYjllYzY4MzM5ZWY4YzVkMzMyOTllNzBlYzguLjZi
OGM2ZGQ0Njg5Y2M1ODlmOTg1M2Y4MjA1OTY3YWNhZTY0YTk2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtMjM1LDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0
YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNlbGYoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVw
bGFjZShDb2RlQmxvY2sqIGNvZGVibG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBTdHJ1Y3R1cmUq
LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJv
b2wgZGlyZWN0KTsKLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hNZXRob2RDYWxsUHJvdG8oQ29k
ZUJsb2NrKiBjb2RlYmxvY2ssIE1ldGhvZENhbGxMaW5rSW5mbyYsIEpTRnVuY3Rpb24qLCBTdHJ1
Y3R1cmUqLCBKU09iamVjdCosIFJldHVybkFkZHJlc3NQdHIpOworICAgICAgICBzdGF0aWMgdm9p
ZCBwYXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmLCBDb2RlQmxvY2sqIGNvZGVibG9j
aywgTWV0aG9kQ2FsbExpbmtJbmZvJiwgSlNGdW5jdGlvbiosIFN0cnVjdHVyZSosIEpTT2JqZWN0
KiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVBhdGNo
R2V0QXJyYXlMZW5ndGgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDc2MzNi
NmE2YWM3ZjQzN2JhOWQ0MWM2MGE3YjQ2OGM4ZDQyOGIwODIuLmExZjFmZTY2ODNkMGJlMzk4N2M1
OWNlNmQzYTAxMjk3OWZhNjYxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBT
dHJ1Y3R1cmUKIAogICAgIC8vIGVjeCA9IGJhc2VPYmplY3QtPm1fc3RydWN0dXJlCiAgICAgaWYg
KCFkaXJlY3QpIHsKLSAgICAgICAgZm9yIChSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+
aGVhZCgpOyAqaXQ7ICsraXQpCisgICAgICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4q
IGl0ID0gY2hhaW4tPmhlYWQoKTsgKml0OyArK2l0KQogICAgICAgICAgICAgdGVzdFByb3RvdHlw
ZSgoKml0KS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAgICAgfQogCkBAIC02
MDYsMTEgKzYwNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9u
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlCiAgICAgICAgIHJlc3RvcmVS
ZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QzKTsKICAgICB9CiAKLSAgICAvLyBBc3N1bWVz
IG1fcmVmQ291bnQgY2FuIGJlIGRlY3JlbWVudGVkIGVhc2lseSwgcmVmY291bnQgZGVjcmVtZW50
IGlzIHNhZmUgYXMgCi0gICAgLy8gY29kZWJsb2NrIHNob3VsZCBlbnN1cmUgb2xkU3RydWN0dXJl
LT5tX3JlZkNvdW50ID4gMAotICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRy
ZXNzKG9sZFN0cnVjdHVyZS0+YWRkcmVzc09mQ291bnQoKSkpOwotICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKG5ld1N0cnVjdHVyZS0+YWRkcmVzc09mQ291bnQoKSkp
OwotICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIHN0b3JlUHRyV2l0aFdyaXRlQmFy
cmllcihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIHJlZ1QwLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAKICAgICAvLyB3cml0ZSB0aGUgdmFsdWUKICAg
ICBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KHJlZ1QwLCByZWdUMSwgbmV3U3RydWN0dXJlLCBjYWNo
ZWRPZmZzZXQpOwpAQCAtNjUyLDE3ICs2NDgsMTUgQEAgdm9pZCBKSVQ6OnBhdGNoR2V0QnlJZFNl
bGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3QK
ICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5kYXRhTGFi
ZWwzMkF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZFByb3BlcnR5TWFwT2Zmc2V0KSwgb2Zmc2V0
KTsKIH0KIAotdm9pZCBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKENvZGVCbG9jayogY29kZUJs
b2NrLCBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbywgSlNGdW5jdGlvbiog
Y2FsbGVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHByb3RvLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lkIEpJVDo6cGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExp
bmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNhbGxlZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90bywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogCiAg
ICAgQVNTRVJUKCFtZXRob2RDYWxsTGlua0luZm8uY2FjaGVkU3RydWN0dXJlKTsKLSAgICBtZXRo
b2RDYWxsTGlua0luZm8uY2FjaGVkU3RydWN0dXJlID0gc3RydWN0dXJlOwotICAgIHN0cnVjdHVy
ZS0+cmVmKCk7CisgICAgbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZS5zZXQoZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKIAogICAg
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG8tPnN0cnVjdHVyZSgpOwotICAg
IG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGVT
dHJ1Y3R1cmU7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlLT5yZWYoKTsKKyAgICBtZXRob2RDYWxs
TGlua0luZm8uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwogCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKG1ldGhvZENhbGxMaW5rSW5mby5zdHJ1Y3R1cmVMYWJlbCwgc3RydWN0
dXJlKTsKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2gobWV0aG9kQ2FsbExpbmtJbmZvLnN0cnVj
dHVyZUxhYmVsLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90
b09iaiksIHByb3RvKTsKQEAgLTczNSw3ICs3MjksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0
cgogICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1
cmUpOwogCiAgICAgLy8gQ2hlY2sgdGhlIHByb3RvdHlwZSBvYmplY3QncyBTdHJ1Y3R1cmUgaGFk
IG5vdCBjaGFuZ2VkLgotICAgIFN0cnVjdHVyZSogY29uc3QgKiBwcm90b3R5cGVTdHJ1Y3R1cmVB
ZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOworICAgIGNvbnN0IHZv
aWQqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSBwcm90b09iamVjdC0+YWRkcmVzc09mU3Ry
dWN0dXJlKCk7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvdG90
eXBlU3RydWN0dXJlKSwgcmVnVDMpOwogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFB0
cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCBy
ZWdUMyk7CkBAIC04MzksOCArODMzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWMKIAogICAg
IENvZGVMb2NhdGlvbkxhYmVsIGVudHJ5TGFiZWwgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGVB
ZGRlbmR1bSgpOwogCi0gICAgc3RydWN0dXJlLT5yZWYoKTsKLSAgICBwb2x5bW9ycGhpY1N0cnVj
dHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlKTsKKyAg
ICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoKm1fZ2xvYmFs
RGF0YSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1
cmUpOwogCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBp
biB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVt
cCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRj
aE9mZnNldEdldEJ5SWRCcmFuY2hUb1Nsb3dDYXNlKTsKQEAgLTg1OCw3ICs4NTEsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgUG9seW1vcnBoaQogICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGNoZWNrU3RydWN0
dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwogCiAgICAgLy8gQ2hlY2sgdGhlIHByb3RvdHlwZSBvYmpl
Y3QncyBTdHJ1Y3R1cmUgaGFkIG5vdCBjaGFuZ2VkLgotICAgIFN0cnVjdHVyZSogY29uc3QgKiBw
cm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVjdHVy
ZSgpOworICAgIGNvbnN0IHZvaWQqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSBwcm90b09i
amVjdC0+YWRkcmVzc09mU3RydWN0dXJlKCk7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIocHJvdG90eXBlU3RydWN0dXJlKSwgcmVnVDMpOwogICAgIEp1bXAgZmFpbHVy
ZUNhc2VzMiA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0
cnVjdHVyZUFkZHJlc3MpLCByZWdUMyk7CkBAIC05MDcsMTAgKzkwMCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBQb2x5bW9ycGhpCiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90
UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkUHV0UmVzdWx0KSk7CiAK
ICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVsID0gcGF0Y2hCdWZmZXIuZmluYWxpemVD
b2RlQWRkZW5kdW0oKTsKLQotICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3Ry
dWN0dXJlLT5yZWYoKTsKLSAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRl
eF0uc2V0KGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlKTsKKyAgICBw
cm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KCptX2dsb2JhbERhdGEs
IG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0dXJlLCBw
cm90b3R5cGVTdHJ1Y3R1cmUpOwogCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBz
bG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAg
Q29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1
bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFuY2hUb1Nsb3dDYXNlKTsKQEAgLTkyOCw3
ICs5MTgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogICAgIGJ1Y2tldHNPZkZhaWwuYXBw
ZW5kKGJhc2VPYmplY3RDaGVjayk7CiAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBz
dHJ1Y3R1cmU7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKKyAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2Jq
ZWN0KiBwcm90b09iamVjdCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50
OyArK2ksICsraXQpIHsKICAgICAgICAgcHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0
dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7CkBAIC05NzgsNyArOTY4LDYgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIFBvbHltb3JwaGkKICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbnRyeUxhYmVs
ID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlQWRkZW5kdW0oKTsKIAogICAgIC8vIFRyYWNrIHRo
ZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4K
LSAgICBzdHJ1Y3R1cmUtPnJlZigpOwogICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3Vy
cmVudEluZGV4XS5zZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0dXJlLCBjaGFpbik7CiAKICAgICAvLyBG
aW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0
byBqdW1wIGhlcmUgaW5zdGVhZC4KQEAgLTk5Nyw3ICs5ODYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqIHN0cgogICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBz
dHJ1Y3R1cmUpKTsKIAogICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsK
LSAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOworICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CiAgICAgSlNPYmplY3QqIHByb3Rv
T2JqZWN0ID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytp
dCkgewogICAgICAgICBwcm90b09iamVjdCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3Rv
dHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDkzNzlmN2FjM2Y3ZjNlZGIy
NmViOTQ0YjljOTJiNTYxYWVhNjJjOWEuLmQwYzM2ODgyNmMxY2I2MzFjZDI2YThkNDZiZmQ2ZDhj
YTFiNDkwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3Ry
dWN0dXJlCiAgICAgCiAgICAgaWYgKCFkaXJlY3QpIHsKICAgICAgICAgLy8gVmVyaWZ5IHRoYXQg
bm90aGluZyBpbiB0aGUgcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlciBmb3IgdGhpcyBwcm9w
ZXJ0eS4gCi0gICAgICAgIGZvciAoUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQo
KTsgKml0OyArK2l0KQorICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9
IGNoYWluLT5oZWFkKCk7ICppdDsgKytpdCkKICAgICAgICAgICAgIHRlc3RQcm90b3R5cGUoKCpp
dCktPnN0b3JlZFByb3RvdHlwZSgpLCBmYWlsdXJlQ2FzZXMpOwogICAgIH0KIApAQCAtNjE5LDEw
ICs2MTksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZQogICAgICAgICAKICAgICAgICAgcmVz
dG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDMpOwogICAgIH0KLSAgICAKLSAgICBz
dWIzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcyhvbGRTdHJ1Y3R1cmUtPmFkZHJl
c3NPZkNvdW50KCkpKTsKLSAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVz
cyhuZXdTdHJ1Y3R1cmUtPmFkZHJlc3NPZkNvdW50KCkpKTsKLSAgICBzdG9yZVB0cihUcnVzdGVk
SW1tUHRyKG5ld1N0cnVjdHVyZSksIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpKTsKKworICAgIHN0b3JlUHRyV2l0aFdyaXRlQmFycmllcihUcnVzdGVkSW1tUHRyKG5l
d1N0cnVjdHVyZSksIHJlZ1QwLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CiAgICAgCiAjaWYgQ1BVKE1JUFMpIHx8IENQVShTSDQpCiAgICAgLy8gRm9yIE1JUFMs
IHdlIGRvbid0IGFkZCBzaXplb2Yodm9pZCopIHRvIHRoZSBzdGFjayBvZmZzZXQuCkBAIC02NzQs
MTcgKzY3MiwxNCBAQCB2b2lkIEpJVDo6cGF0Y2hHZXRCeUlkU2VsZihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdAogICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby0+aG90UGF0aEJlZ2luLmRhdGFMYWJlbDMyQXRPZmZzZXQocGF0Y2hP
ZmZzZXRHZXRCeUlkUHJvcGVydHlNYXBPZmZzZXQyKSwgb2Zmc2V0ICsgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOyAvLyB0YWcKIH0KIAotdm9pZCBKSVQ6OnBhdGNoTWV0
aG9kQ2FsbFByb3RvKENvZGVCbG9jayogY29kZUJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mIG1l
dGhvZENhbGxMaW5rSW5mbywgSlNGdW5jdGlvbiogY2FsbGVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNPYmplY3QqIHByb3RvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit2b2lk
IEpJVDo6cGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8s
IEpTRnVuY3Rpb24qIGNhbGxlZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90
bywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogICAgIFJlcGF0Y2hCdWZmZXIg
cmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgIAogICAgIEFTU0VSVCghbWV0aG9kQ2FsbExp
bmtJbmZvLmNhY2hlZFN0cnVjdHVyZSk7Ci0gICAgbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0
cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBzdHJ1Y3R1cmUtPnJlZigpOwotICAgIAorICAgIG1l
dGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgU3RydWN0dXJlKiBwcm90b3R5
cGVTdHJ1Y3R1cmUgPSBwcm90by0+c3RydWN0dXJlKCk7Ci0gICAgbWV0aG9kQ2FsbExpbmtJbmZv
LmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0cnVjdHVyZTsKLSAgICBwcm90
b3R5cGVTdHJ1Y3R1cmUtPnJlZigpOworICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90
b3R5cGVTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KG1ldGhvZENhbGxMaW5rSW5mby5zdHJ1Y3R1cmVMYWJlbCwgc3RydWN0dXJlKTsKICAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2gobWV0aG9kQ2FsbExpbmtJbmZvLnN0cnVjdHVyZUxhYmVsLmRhdGFM
YWJlbFB0ckF0T2Zmc2V0KHBhdGNoT2Zmc2V0TWV0aG9kQ2hlY2tQcm90b09iaiksIHByb3RvKTsK
QEAgLTc2Miw3ICs3NTcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8o
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIHN0cgogICAgIEp1bXAgZmFp
bHVyZUNhc2VzMSA9IGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpOwogICAgIAogICAg
IC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhhZCBub3QgY2hhbmdl
ZC4KLSAgICBTdHJ1Y3R1cmUqIGNvbnN0ICogcHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyA9IHBy
b3RvT2JqZWN0LT5hZGRyZXNzT2ZTdHJ1Y3R1cmUoKTsKKyAgICBjb25zdCB2b2lkKiBwcm90b3R5
cGVTdHJ1Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOwog
I2lmIENQVShYODZfNjQpCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb3RvdHlwZVN0cnVjdHVy
ZSksIHJlZ1QzKTsKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hQdHIoTm90RXF1YWws
IEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVnVDMpOwpAQCAt
ODY3LDkgKzg2Miw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGljCiAgICAgcGF0Y2hCdWZmZXIu
bGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQocGF0Y2hP
ZmZzZXRHZXRCeUlkUHV0UmVzdWx0KSk7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbnRyeUxh
YmVsID0gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlQWRkZW5kdW0oKTsKLSAgICAKLSAgICBzdHJ1
Y3R1cmUtPnJlZigpOwotICAgIHBvbHltb3JwaGljU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5k
ZXhdLnNldChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUpOworCisgICAgcG9seW1vcnBoaWNTdHJ1Y3R1
cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KCptX2dsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgZW50cnlMYWJlbCwgc3RydWN0dXJlKTsKICAgICAKICAgICAvLyBG
aW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0
byBqdW1wIGhlcmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9
IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZEJy
YW5jaFRvU2xvd0Nhc2UpOwpAQCAtODg5LDcgKzg4Myw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9y
cGhpCiAgICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVj
dHVyZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhlIHByb3RvdHlwZSBvYmplY3QncyBTdHJ1Y3R1
cmUgaGFkIG5vdCBjaGFuZ2VkLgotICAgIFN0cnVjdHVyZSogY29uc3QgKiBwcm90b3R5cGVTdHJ1
Y3R1cmVBZGRyZXNzID0gcHJvdG9PYmplY3QtPmFkZHJlc3NPZlN0cnVjdHVyZSgpOworICAgIGNv
bnN0IHZvaWQqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSBwcm90b09iamVjdC0+YWRkcmVz
c09mU3RydWN0dXJlKCk7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
cHJvdG90eXBlU3RydWN0dXJlKSwgcmVnVDMpOwogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJy
YW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJl
c3MpLCByZWdUMyk7CkBAIC05MzUsMTAgKzkyOSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
CiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxh
YmVsQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkUHV0UmVzdWx0KSk7CiAgICAgCiAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJlbCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZUFkZGVu
ZHVtKCk7Ci0gICAgCi0gICAgc3RydWN0dXJlLT5yZWYoKTsKLSAgICBwcm90b3R5cGVTdHJ1Y3R1
cmUtPnJlZigpOwotICAgIHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5z
ZXQoZW50cnlMYWJlbCwgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOworCisgICAgcHJv
dG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBlbnRyeUxhYmVsLCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBwYXRjaCB0
aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGlu
c3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90
UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFuY2hUb1Nsb3dDYXNl
KTsKQEAgLTk1Nyw3ICs5NDksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW5MaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogICAgIGJ1Y2tl
dHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKICAgICAK
ICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgUmVmUHRyPFN0
cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQpIHsKICAgICAgICAg
cHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAo
Y2FsbEZyYW1lKSk7CkBAIC0xMDA2LDcgKzk5OCw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhp
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZW50cnlMYWJlbCA9IHBhdGNoQnVmZmVyLmZpbmFsaXpl
Q29kZUFkZGVuZHVtKCk7CiAgICAgCiAgICAgLy8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVh
dGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVyLgotICAgIHN0cnVjdHVyZS0+cmVm
KCk7CiAgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBlbnRy
eUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKICAgICAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRo
ZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5z
dGVhZC4KQEAgLTEwMjYsNyArMTAxNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAgICAg
YnVja2V0c09mRmFpbC5hcHBlbmQoY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSkpOwog
ICAgIAogICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBSZWZQ
dHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CiAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0g
MDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytpdCkgewogICAg
ICAgICBwcm90b09iamVjdCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxv
b2t1cChjYWxsRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5k
ZXggZmUyNmRjYWExNjMyYjQ2N2MxZjE4Y2Y3MzRmNjNmMTBjYWQ1M2Y2MC4uYWM0MzgyOTg0ZGFh
YWE3NjIyNzdhNTI4ZTkxOTJmYzg1MTkyMjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAKQEAgLTg0OCw3ICs4NDgsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVu
a3M6OnRyeUNhY2hlUHV0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHN0dWJJbmZvLT5pbml0UHV0QnlJZFJl
cGxhY2Uoc3RydWN0dXJlKTsKKyAgICBzdHViSW5mby0+aW5pdFB1dEJ5SWRSZXBsYWNlKGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUpOwogCiAgICAgSklUOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKGNvZGVCbG9jaywgc3R1YkluZm8s
IHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcmV0dXJuQWRkcmVzcywgZGlyZWN0KTsK
IH0KQEAgLTg5Niw3ICs4OTYsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNh
Y2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogCiAgICAgaWYg
KHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgLy8gc2V0IHRoaXMgdXAs
IHNvIGRlcmVmU3RydWN0dXJlcyBjYW4gZG8gaXQncyBqb2IuCi0gICAgICAgIHN0dWJJbmZvLT5p
bml0R2V0QnlJZFNlbGYoc3RydWN0dXJlKTsKKyAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlk
U2VsZihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlKTsKICAgICAgICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0g
UHJvcGVydHlTbG90OjpWYWx1ZSkKICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhjb2RlQmxvY2ssIHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlf
aWRfc2VsZl9mYWlsKSk7CiAgICAgICAgIGVsc2UKQEAgLTkyMiw3ICs5MjIsNyBAQCBORVZFUl9J
TkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ29kZUJsb2NrKiBjbwogICAgICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0
cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFByb3RvKHN0
cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgc3R1YkluZm8t
PmluaXRHZXRCeUlkUHJvdG8oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpKTsK
IAogICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgICAgICBB
U1NFUlQoIXNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpOwpAQCAt
MTU2MCw3ICsxNTYwLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
X2dldF9ieV9pZF9tZXRob2RfY2hlY2spCiAKICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRo
ZSBmdW5jdGlvbiBpcyBvbiB0aGUgb2JqZWN0J3MgcHJvdG90eXBlLiAgUGF0Y2ggdXAgdGhlIGNv
ZGUgdG8gb3B0aW1pemUuCiAgICAgICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gc3RydWN0dXJl
LT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSkgewotICAgICAgICAgICAgSklUOjpwYXRj
aE1ldGhvZENhbGxQcm90byhjb2RlQmxvY2ssIG1ldGhvZENhbGxMaW5rSW5mbywgY2FsbGVlLCBz
dHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKKyAgICAgICAg
ICAgIEpJVDo6cGF0Y2hNZXRob2RDYWxsUHJvdG8oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jaywgbWV0aG9kQ2FsbExpbmtJbmZvLCBjYWxsZWUsIHN0cnVjdHVyZSwgc2xvdEJhc2VP
YmplY3QsIFNUVUJfUkVUVVJOX0FERFJFU1MpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogICAgICAgICB9CiAKQEAgLTE1NzEsNyArMTU3MSw3IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNr
KQogICAgICAgICAvLyBmb3Igbm93LiAgRm9yIG5vdyBpdCBwZXJmb3JtcyBhIGNoZWNrIG9uIGEg
c3BlY2lhbCBvYmplY3Qgb24gdGhlIGdsb2JhbCBvYmplY3Qgb25seSB1c2VkIGZvciB0aGlzCiAg
ICAgICAgIC8vIHB1cnBvc2UuICBUaGUgb2JqZWN0IGlzIGluIG5vIHdheSBleHBvc2VkLCBhbmQg
YXMgc3VjaCB0aGUgY2hlY2sgd2lsbCBhbHdheXMgcGFzcy4KICAgICAgICAgaWYgKHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKLSAgICAgICAgICAgIEpJVDo6cGF0Y2hNZXRob2RDYWxs
UHJvdG8oY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0luZm8sIGNhbGxlZSwgc3RydWN0dXJlLCBj
YWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5tZXRob2RDYWxsRHVtbXkoKSwg
U1RVQl9SRVRVUk5fQUREUkVTUyk7CisgICAgICAgICAgICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFBy
b3RvKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2ssIG1ldGhvZENhbGxMaW5rSW5m
bywgY2FsbGVlLCBzdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmpl
Y3QtPm1ldGhvZENhbGxEdW1teSgpLCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2
MzAsNyArMTYzMCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9n
ZXRfYnlfaWRfc2VsZl9mYWlsKQogCiAgICAgICAgIGlmIChzdHViSW5mby0+YWNjZXNzVHlwZSA9
PSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGYpIHsKICAgICAgICAgICAgIEFTU0VSVCghc3R1YkluZm8t
PnN0dWJSb3V0aW5lKTsKLSAgICAgICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlTGlzdCA9IG5l
dyBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoQ29kZUxvY2F0aW9uTGFiZWwoKSwgc3R1
YkluZm8tPnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgICAgICAgICBw
b2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBDb2RlTG9jYXRpb25MYWJlbCgpLCBzdHViSW5mby0+dS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0
U3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFNlbGZM
aXN0KHBvbHltb3JwaGljU3RydWN0dXJlTGlzdCwgMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZUxpc3QgPSBzdHViSW5mby0+dS5nZXRCeUlkU2Vs
Zkxpc3Quc3RydWN0dXJlTGlzdDsKQEAgLTE2NTUsMTIgKzE2NTUsMTIgQEAgc3RhdGljIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0U2xvdChKU0cKIAogICAgIHN3aXRjaCAoc3R1YkluZm8tPmFjY2Vzc1R5cGUpIHsKICAgICBj
YXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG86Ci0gICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZUxp
c3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KHN0dWJJbmZvLT5zdHViUm91
dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUsIHN0dWJJ
bmZvLT51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5
cGVTdHJ1Y3R1cmVMaXN0ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChnbG9i
YWxEYXRhLCBvd25lciwgc3R1YkluZm8tPnN0dWJSb3V0aW5lLCBzdHViSW5mby0+dS5nZXRCeUlk
UHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwgc3R1YkluZm8tPnUuZ2V0QnlJZFByb3Rv
LnByb3RvdHlwZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIHN0dWJJbmZvLT5zdHViUm91dGlu
ZSA9IENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFBy
b3RvTGlzdChwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCAyKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOgotICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmVM
aXN0ID0gbmV3IFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChnbG9iYWxEYXRhLCBvd25l
ciwgc3R1YkluZm8tPnN0dWJSb3V0aW5lLCBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4uYmFzZU9i
amVjdFN0cnVjdHVyZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmNoYWluLmdldCgpKTsKKyAg
ICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QoZ2xvYmFsRGF0YSwgb3duZXIsIHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1Yklu
Zm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCksIHN0dWJJbmZvLT51
LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKSk7CiAgICAgICAgIHN0dWJJbmZvLT5zdHViUm91dGlu
ZSA9IENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFBy
b3RvTGlzdChwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCAyKTsKICAgICAgICAgYnJlYWs7CkBAIC0y
NzUzLDEwICsyNzUzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
X3Jlc29sdmVfZ2xvYmFsKQogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUo
Y2FsbEZyYW1lLCBpZGVudCk7CiAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAm
JiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSAm
JiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgICAgICBHbG9iYWxS
ZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8gPSBjb2RlQmxvY2stPmdsb2JhbFJlc29sdmVJ
bmZvKGdsb2JhbFJlc29sdmVJbmZvSW5kZXgpOwotICAgICAgICAgICAgaWYgKGdsb2JhbFJlc29s
dmVJbmZvLnN0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICBnbG9iYWxSZXNvbHZlSW5mby5zdHJ1
Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgICAgICBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5y
ZWYoKTsKLSAgICAgICAgICAgIGdsb2JhbFJlc29sdmVJbmZvLnN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICBnbG9iYWxSZXNvbHZlSW5mby5zdHJ1Y3R1
cmUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGdsb2JhbFJlc29s
dmVJbmZvLm9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCBmZWFmNDY3NTE1OTE1ZjQ1YTMzNzZlZDE2MmQ0
OTk1MDY0NjM3NDkxLi5lMWQ5MzUzY2JiNmYyYjY4ZGIwM2E3Y2E2YTU0NGFmZjIyMGM1ZWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xOTMsNiAr
MTkzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgSnVtcCBlbWl0TG9hZElu
dDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRzdCk7CiAgICAg
ICAgIGlubGluZSBKdW1wIGVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3Rlcklu
ZGV4LCBGUFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwogCisgICAgICAgIGlu
bGluZSB2b2lkIHN0b3JlUHRyV2l0aFdyaXRlQmFycmllcihUcnVzdGVkSW1tUHRyIHB0ciwgUmVn
aXN0ZXJJRCAvKiBvd25lciAqLywgQWRkcmVzcyBkZXN0KQorICAgICAgICB7CisgICAgICAgICAg
ICBzdG9yZVB0cihwdHIsIGRlc3QpOworICAgICAgICB9CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgICAgICBpbmxpbmUgSnVtcCBlbWl0SnVtcElmTm90SlNDZWxsKHVuc2lnbmVkIHZpcnR1
YWxSZWdpc3RlckluZGV4KTsKICAgICAgICAgaW5saW5lIEFkZHJlc3MgdGFnRm9yKGludCBpbmRl
eCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCA4Y2NiMDM5ODUwNmJkOWEzMWJkYTZhNzljOTA2ZDdiMTRkNDE0ZjgyLi43MjlkY2U5
OTg2YjAwY2Q1ZmEyZjAwZmQ4MTI0OTkxOGRkMWM0MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApA
QCAtMzY2LDYgKzM2Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHN0YXRp
YyB2b2lkIGNsZWFudXBHbG9iYWxEYXRhKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIGdsb2JhbERhdGEtPmNs
ZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKICAgICBnbG9iYWxEYXRhLT5oZWFwLmRlc3Ryb3koKTsK
ICAgICBnbG9iYWxEYXRhLT5kZXJlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAppbmRleCA5NTBiYjRlYjEzMjMzZmY2OGQ0MjNlZTBkNjg0MjMwMWI1OGE0
ZTEyLi5iNWFhNDZiZjA3MjQwYTM4ODY1ZDY3OTE1MTc2MmMxZjVkN2E2ZGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtOTIsNyArOTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIGQtPnJlZ2lzdGVycyA9ICZhY3RpdmF0aW9uLT5yZWdp
c3RlckF0KDApOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkgCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKICAg
ICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsgCiAgICAgICAgIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB9CiAKICAgICBpbmxpbmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0dXJlKCkpCisgICAgICAgIDogSlNOb25GaW5h
bE9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQogICAgICAgICAsIGQoYWRvcHRQdHIobmV3
IEFyZ3VtZW50c0RhdGEpKQogICAgIHsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKQEAgLTE4NSw3ICsxODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxp
bmUgQXJndW1lbnRzOjpBcmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE5vUGFyYW1ldGVy
c1R5cGUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChjYWxsRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+YXJndW1lbnRzU3RydWN0dXJlKCkpCisgICAgICAgIDogSlNOb25GaW5hbE9i
amVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPmFyZ3VtZW50c1N0cnVjdHVyZSgpKQogICAgICAgICAsIGQoYWRvcHRQdHIobmV3IEFy
Z3VtZW50c0RhdGEpKQogICAgIHsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
QEAgLTI0Nyw3ICsyNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHJlZ2lzdGVy
T2Zmc2V0ID0gbV9udW1QYXJhbWV0ZXJzTWludXNUaGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJh
bWVIZWFkZXJTaXplOwogICAgICAgICBzaXplX3QgcmVnaXN0ZXJBcnJheVNpemUgPSBudW1Mb2Nh
bHMgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAKLSAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdpc3Rl
ckFycmF5KGdsb2JhbERhdGEsIG1fcmVnaXN0ZXJzIC0gcmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVy
QXJyYXlTaXplKTsKKyAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
cmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdpc3RlckFycmF5KGdsb2JhbERhdGEsIG1fcmVnaXN0ZXJz
IC0gcmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVyQXJyYXlTaXplLCBtX251bVBhcmFtZXRlcnNNaW51
c1RoaXMgKyAxKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSBy
ZWdpc3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7CiAgICAgICAgIHNldFJlZ2lzdGVy
cyhyZWdpc3RlcnMsIHJlZ2lzdGVyQXJyYXkucmVsZWFzZSgpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IGUw
ZjRiMjNmNDZiNDc4MmViMzhmMWViNTE3YWRjNGRhNzQ3OTA1NjYuLjA1MGU5ODk2NjQ1NDNmMjJl
OWI3MjY3Y2JmMTE3MjlhYWY3OGQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoQXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShFeGVjU3RhdGUq
KTsKIAotQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUsIFN0cnVjdHVyZSog
ZnVuY3Rpb25TdHJ1Y3R1cmUpCitBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSwgU3RydWN0dXJlKiBmdW5j
dGlvblN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEo
KSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgYXJyYXlQcm90b3R5
cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIC8vIEVDTUEgMTUuNC4zLjEgQXJy
YXkucHJvdG90eXBlCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpCiAg
ICAgICAgIHVpbnQzMl90IG4gPSBhcmdzLmF0KDApLnRvVUludDMyKGV4ZWMpOwogICAgICAgICBp
ZiAobiAhPSBhcmdzLmF0KDApLnRvTnVtYmVyKGV4ZWMpKQogICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQXJyYXkgc2l6ZSBpcyBub3Qg
YSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSk7Ci0gICAgICAgIHJldHVybiBuZXcg
KGV4ZWMpIEpTQXJyYXkoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpLCBuLCBDcmVhdGVJ
bml0aWFsaXplZCk7CisgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCksIG4sIENyZWF0ZUluaXRp
YWxpemVkKTsKICAgICB9CiAKICAgICAvLyBvdGhlcndpc2UgdGhlIGFycmF5IGlzIGNvbnN0cnVj
dGVkIHdpdGggdGhlIGFyZ3VtZW50cyBpbiBpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCmluZGV4IDVlMTQwOGY1M2Q1NDMwOTk2Yzg2ZGNj
MzNhN2U1NDYxZGY4MDJjOTYuLjk3YjI2YzU4YjdhMDI4ZDU2ZmYxNzc3YTI4Y2NkODNkMGVkNDQy
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJh
eUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEFycmF5UHJvdG90eXBlKiwgU3RydWN0dXJlKik7Cisg
ICAgICAgIEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBBcnJheVByb3RvdHlwZSosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHZpcnR1YWwg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAg
dmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGI4NDNhM2QyOWQy
Nzk3YTBiNDZiOGMwYTQzYmFhNDc0ZmU4ZGVhYmIuLjI5Y2FlY2VhMmI0NTVjYjEyYTEwM2FkOTEw
Y2VmNWRlNTJjNWYyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKQEAgLTExNCw4ICsxMTQsOCBAQCBjb25zdCBDbGFzc0luZm8gQXJy
YXlQcm90b3R5cGU6OnNfaW5mbyA9IHsiQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCBFeGVj
U3RhdAogKi8KIAogLy8gRUNNQSAxNS40LjQKLUFycmF5UHJvdG90eXBlOjpBcnJheVByb3RvdHlw
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTQXJyYXkoc3RydWN0dXJlKQorQXJyYXlQcm90b3R5cGU6
OkFycmF5UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIDogSlNBcnJheShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgcHV0QW5vbnlt
b3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIDAsIGdsb2JhbE9iamVjdCk7CkBA
IC01NzQsNyArNTc0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBkZWxldGVDb3VudCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZWxldGVEb3VibGUpOwogICAgIH0KIAotICAgIEpTQXJyYXkq
IHJlc09iaiA9IG5ldyAoZXhlYykgSlNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmFycmF5U3RydWN0dXJlKCksIGRlbGV0ZUNvdW50LCBDcmVhdGVDb21wYWN0KTsKKyAgICBKU0Fy
cmF5KiByZXNPYmogPSBuZXcgKGV4ZWMpIEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCksIGRlbGV0ZUNvdW50LCBD
cmVhdGVDb21wYWN0KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHJlc09iajsKICAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBrID0gMDsgayA8IGRlbGV0ZUNvdW50OyBrKyspCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAppbmRleCA5NjY0MWJkMmJiYmM0NDFmMTBmYzc0NTQ2
MDJjYzcxOWI4ZTVlZWYzLi42ZGFkZjUxMWEwY2E0ODk4MmVjMzdiODRmOTMxMjA5NTE2ZmI1MmU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgK
QEAgLTI4LDE0ICsyOCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFycmF5UHJv
dG90eXBlIDogcHVibGljIEpTQXJyYXkgewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQg
QXJyYXlQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+KTsKKyAgICAgICAgZXhwbGljaXQgQXJyYXlQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKIAogICAgICAgICBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oCmluZGV4IGVkZWVjNTc1NmExZDNkYTIxY2ZiYWViYWI4
Zjk4ODY3MzgyODE2OWYuLmRmN2I3ZjYxZGM3YTg4NTg5ODA3ODRlOGNmMDk0OWIyOWVjYjFjMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hl
ZFRyYW5zaXRpb25PcHRpbWl6ZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgICAgICAg
ICAgbV9vYmplY3QtPnNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFy
eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9vYmplY3QtPnN0cnVjdHVyZSgpKSk7CisgICAgICAg
ICAgICAgICAgbV9vYmplY3QtPnNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnRv
Q2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9vYmplY3QtPnN0cnVj
dHVyZSgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICB+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5jcHAKaW5kZXggZTViMGYzZDgzZjZlY2Y4MjFmMGRiYWQxNzlhODZjNTA2MTIzMzg0
Zi4uYTFhNGVkNDhiZmIyYzhkZGI2ZWE4ODFjYmU3OTE1N2JiODAyNWIwZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCkBA
IC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEJvb2xlYW5Db25zdHJ1Y3Rvcik7CiAKLUJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUq
IGJvb2xlYW5Qcm90b3R5cGUpCitCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQogICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgSWRlbnRpZmllcihleGVjLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xh
c3NOYW1lKSkKIHsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Qcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgKaW5kZXggMjU1MGIzYjM1NDdk
NmEwOWMzMmYwNTBlMjliZWU3NmZlOTZjMjJmZi4uZmEwZDA1ZTU4ODdmMTAxMjY5NjFmMTNhYzJl
ODExMTUzODg0MjIyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhbkNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBCb29sZWFuQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CiAgICAgcHVibGljOgotICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBCb29sZWFuUHJvdG90
eXBlKik7CisgICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEJvb2xlYW5Qcm90b3R5cGUqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERh
dGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5P
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5j
cHAKaW5kZXggMjk0NWMwZWViNWYzOWY5NTRkYmM1NTBhZjkxZTUzMzJiOWMwZDhmOS4uZTI0YTMw
YTRiYjU0YWU1MDBlZDBlOWQ3MTY1ZmM5Y2U3YTVkOWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKQEAgLTI3LDggKzI3LDggQEAgQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZv
IEJvb2xlYW5PYmplY3Q6OnNfaW5mbyA9IHsgIkJvb2xlYW4iLCAmSlNXcmFwcGVyT2JqZWN0Ojpz
X2luZm8sIDAsIDAgfTsKIAotQm9vbGVhbk9iamVjdDo6Qm9vbGVhbk9iamVjdChKU0dsb2JhbERh
dGEmLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTV3Jh
cHBlck9iamVjdChzdHJ1Y3R1cmUpCitCb29sZWFuT2JqZWN0OjpCb29sZWFuT2JqZWN0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU1dyYXBw
ZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2Jq
ZWN0LmgKaW5kZXggZWYyZDQwMzRkNTUzNGY0ODBjZWM2MTE4NWNkYzRjYWQwNzNmNzAxZS4uZGVm
NDRiNDRkY2Q4NGZjZTAzMjY5MTkwZmY2N2NhYmI1MDAyNzJiMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaApAQCAtMjcsMTEgKzI3LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQm9vbGVhbk9iamVjdCA6IHB1YmxpYyBKU1dyYXBw
ZXJPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQm9vbGVhbk9iamVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwor
ICAgICAgICBleHBsaWNpdCBCb29sZWFuT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRl
eCBkMGE2NGFmYjc4OWI2N2YyODA3MDM3MjQ1ZDVjMzQ3MzQ5YmIzMjJlLi4yMDk5MGUxNjY5NmMw
ZWYzZTY5ZmM5YzgzYTJmNTNmODU3OGYwMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihF
eGVjU3RhdGUqKTsKIAogLy8gRUNNQSAxNS42LjQKIAotQm9vbGVhblByb3RvdHlwZTo6Qm9vbGVh
blByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0
aW9uU3RydWN0dXJlKQorQm9vbGVhblByb3RvdHlwZTo6Qm9vbGVhblByb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQogICAgIDogQm9vbGVhbk9iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4
ZWMtPmdsb2JhbERhdGEoKSwganNCb29sZWFuKGZhbHNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKaW5kZXggZDZkM2Q5ZmIyOGY2MTM3
ZGJjMDViNDE0MmY2OGQ5ZDE5ZGM5NmJmZC4uNWNjYmQyYjRiNmRlZGQyMmE2NDdiZTExMzkzZDNh
ZmNhYmY4YmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhblByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuaApAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEJvb2xlYW5Qcm90b3R5cGUgOiBwdWJsaWMgQm9vbGVhbk9iamVjdCB7CiAgICAgcHVibGlj
OgotICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVy
ZSk7CisgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IDBhMDYxNDgxZmFmN2FlYzJlNDlkN2JhOGVkMDQwZTRi
MmQyNzRiN2UuLjliYmI2ODgxNGUwMTI2MTg5YzE1MzBiZmM2MzYyYjQwMWQyOWNlYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApA
QCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UGFyc2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlTm93KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVVUQyhFeGVjU3RhdGUqKTsKIAotRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVy
ZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKK0RhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIERhdGVQ
cm90b3R5cGUqIGRhdGVQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGRh
dGVQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQogewogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
aAppbmRleCBiZDUyOWYxNmYxODc4ODM1MGYxMTJjMmNjODY3MjU2M2Q5ODk2ODEyLi4yM2EwMzEx
YWM4ZTkxZGU1ZDUyYzNhZmYyNDEzMmUxMTdkMTlhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaApAQCAtMjksNyArMjksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVj
dHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqKTsKKyAgICAgICAgRGF0ZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSopOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5j
cHAKaW5kZXggNzRhZGRhNDdmYWIzZmE2ZTExMmI4OGE1Zjc3NmM0NzY3NjE4MTNjZi4uZDhjYTA3
MjQ5MWI4NTgzZGZjODFlMTI5NWEyZDhiMzkyYTY0NDdkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCkBAIC0zNCwxNSArMzQsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBEYXRlSW5zdGFuY2U6OnNfaW5mbyA9IHsi
RGF0ZSIsICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMH07CiAKLURhdGVJbnN0YW5jZTo6
RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUpCi0gICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQorRGF0ZUluc3Rh
bmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEpTV3JhcHBlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIHNldEludGVybmFsVmFsdWUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBqc05hTigpKTsKIH0KIAotRGF0ZUluc3RhbmNlOjpEYXRlSW5zdGFu
Y2UoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSwgZG91YmxlIHRpbWUpCi0gICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQorRGF0ZUlu
c3RhbmNlOjpEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgZG91YmxlIHRpbWUpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJ
bnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdW1iZXIodGltZUNsaXAodGltZSkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKaW5kZXgg
ZDBkY2YwYmMzNDZkZDc3Mjk1YzMxMDA5MTMxNjYzZDM0MjIyZjJhYy4uNjE5NWM4NTQ5ZjU1MzRj
NTc1ZmU4ODBlYmZjMWM3ZmRjMmE5MzY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUluc3RhbmNlLmgKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+LCBkb3VibGUpOwotICAgICAgICBleHBsaWNpdCBEYXRlSW5zdGFuY2UoRXhl
Y1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIERhdGVJbnN0
YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBkb3VibGUpOworICAgICAgICBleHBsaWNpdCBE
YXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgZG91YmxlIGlu
dGVybmFsTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gaW50ZXJuYWxWYWx1ZSgpLnVuY2hlY2tlZEdl
dE51bWJlcigpOyB9CiAKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gY2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CiAgICAgICAg
IH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmlu
ZGV4IDMxNGJhYTRjMmM5Y2FhMjlmM2UyOGZiYWFjZjY5OWNiOTljNTM4MmUuLjQ0NGZhOThiOTE3
M2VkYmRhNjhiOWJiMWYxMDdlNDkyN2MzYzEwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIERhdGVQcm90b3R5cGU6OnNfaW5mbyA9IHsiRGF0ZSIsICZEYXRlSW5zdGFuY2U6
OnNfaW5mbywgMCwgRXhlY1MKIAogLy8gRUNNQSAxNS45LjQKIAotRGF0ZVByb3RvdHlwZTo6RGF0
ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQorRGF0ZVByb3RvdHlwZTo6
RGF0ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVj
dHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCmluZGV4IDBlYmJlZGM3ZTMwMmQwYWQ3
NzcyNzUyMTdmN2EzMWExYmRmNWI0MjguLjJlMTAzMGRmZmJkMTg2OTczZTJiYjlkOTQwNmQ0ZjA0
Y2QzMDQzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmgKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERh
dGVQcm90b3R5cGUgOiBwdWJsaWMgRGF0ZUluc3RhbmNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IERhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgRGF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAKaW5kZXggYjg0ZjVlYWMwYjMyZTkwNzkxMjc3ZGIxNDYxNDNhOWNlODIyMzRjYS4u
N2VkYTE5ZjU0YmM2NTBmMDIxYjc2MGE2NDFhOWYyMTZiZWFkNzRmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpTT2JqZWN0KiB0
aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIAogY2xhc3MgU3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgotICAgIFN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICA6IEludGVybmFsRnVu
Y3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGV4ZWMt
Pmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpCiAgICAgICAgICwg
bV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA3ZjRmODJjZWM1ZWJjNDU4YWFkOTQ3
ZjRhMzg4N2EzNjYxYTQ0MGI2Li5kZjExMmRkMjIyMWY5Yzk4ZjdiZGU5MGJjMGJjOGU5MTMwMjRi
ZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0
cnVjdG9yLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChFcnJvckNvbnN0cnVjdG9yKTsKIAotRXJyb3JDb25zdHJ1Y3Rvcjo6
RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBFcnJvclByb3Rv
dHlwZSogZXJyb3JQcm90b3R5cGUpCitFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSkKICAgICA6IEludGVy
bmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IElkZW50aWZpZXIoZXhlYywgZXJyb3JQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUp
KQogewogICAgIC8vIEVDTUEgMTUuMTEuMy4xIEVycm9yLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDNkMGQ3MDY1
MGRhMmQ2NzYxZmI2NTBmZTY1ODhiNjY3OTZlYTk1MDQuLmNlZWMwMDViZTgwMmZkMzUyOTE0MTE0
NjA3MmJmMjFjNTM3ZWFmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBFcnJvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEVycm9yUHJvdG90eXBlKik7
CisgICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCAw
ZGIyYWY4YTY5ZTUzMGU2YjE3OGY4NjBlOWI1ODQxMjc0MGM4ZTRlLi5lZDk1YmE0YTE3NzhkZWYy
YTRhYWU5ODZlNDBlMmIwZjgyMTU0NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMjUsMjggKzI1LDI4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjb25zdCBDbGFzc0luZm8gRXJyb3JJbnN0YW5jZTo6c19pbmZvID0geyAiRXJyb3Ii
LCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLUVycm9ySW5zdGFuY2U6OkVy
cm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQor
RXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCgqZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7CiAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKGdsb2JhbERhdGEsICIi
KSk7CiB9CiAKLUVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQorRXJyb3JJ
bnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgIDogSlNOb25GaW5hbE9i
amVjdCgqZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3Nh
Z2UoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBwdXREaXJl
Y3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3Ry
aW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsKIH0KIAotRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0
YW5jZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitFcnJvckluc3Rh
bmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4g
bmV3IChnbG9iYWxEYXRhKSBFcnJvckluc3RhbmNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbWVz
c2FnZSk7CiB9CiAKLUVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU1ZhbHVl
IG1lc3NhZ2UpCitFcnJvckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogewogICAgIGlm
IChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEVycm9y
SW5zdGFuY2UoJmV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCA4MmRiZjBmNTYzODJlYmMw
ODU0MmQ1NzE0YjE2M2JlYzliNmI3NDIxLi5hZmNmMTU4YWQzYWU3ZTcwY2UzODRkY2E0NGM1NGU1
NzRlZjllODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5oCkBAIC0yOSwxMyArMjksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIEVy
cm9ySW5zdGFuY2UqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7Ci0gICAgICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBKU1Zh
bHVlIG1lc3NhZ2UpOworICAgICAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIEVy
cm9ySW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIG1lc3Nh
Z2UpOwogCiAKICAgICAgICAgYm9vbCBhcHBlbmRTb3VyY2VUb01lc3NhZ2UoKSB7IHJldHVybiBt
X2FwcGVuZFNvdXJjZVRvTWVzc2FnZTsgfQpAQCAtNDUsOCArNDUsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdmlydHVhbCBib29sIGlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5j
ZShKU0dsb2JhbERhdGEqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKLSAgICAgICAg
ZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEqLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIGV4cGxpY2l0IEVycm9ySW5zdGFu
Y2UoSlNHbG9iYWxEYXRhKiwgU3RydWN0dXJlKik7CisgICAgICAgIGV4cGxpY2l0IEVycm9ySW5z
dGFuY2UoSlNHbG9iYWxEYXRhKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAg
ICAgIGJvb2wgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2U7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAppbmRleCBlMTMyNTFjZTYz
NDI4NjBjY2UzOGM5MWNhOTQ0YjJiYmNkYTIyMzY0Li5hNTdlOTQ3ZmRhZDNiYjI5MGM0ODdiZDkw
MTc1YzY0NTgyNzg5MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoRXJyb3JQcm90b3R5cGUpOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIAogLy8gRUNNQSAxNS45LjQK
LUVycm9yUHJvdG90eXBlOjpFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKQorRXJyb3JQcm90b3R5cGU6OkVycm9y
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAg
OiBFcnJvckluc3RhbmNlKCZleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICAv
LyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRlZCBsYXRlciBpbiBFcnJvckNvbnN0cnVjdG9y
J3MgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5oCmluZGV4IDNjMmZlZDMwMzI5MzhmMWUyMmM2NzYzNTU0NDliNDMzZmQ2NjFiYTQu
Ljk0MzdkM2E2MjkxMDI1NTAxZDZiYTUxOWIzMTg0NGIzZDMwYzkwYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaApAQCAtMjksNyArMjksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEVycm9yUHJvdG90eXBlIDogcHVibGljIEVy
cm9ySW5zdGFuY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXJyb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1
Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICAgICAgRXJyb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDNjNjM3ZTRj
NDQ4MjYzYzQ0NzkwZmJmNzNlMDk0YTA0MGMxYTUzZS4uMWQ3NDMxNTNjYTE3NmFlNTE1MTNhYWNk
ZmZkYjJkNjI4ODdiYzczNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgogICAgIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YS0+aW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZSkKKyAgICAgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5pbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yU3Ry
dWN0dXJlLmdldCgpKQogICAgIHsKICAgICB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgSlNPYmplY3Qq
IGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKIGNsYXNzIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YS0+
dGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlKQorICAgICAgICA6IEpTTm9uRmluYWxP
YmplY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0
cnVjdHVyZS5nZXQoKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDVjZDAyZjczM2JlNDJjY2UyMGYzYWM3YmYxMjFi
Njc5ODViOTA0NDEuLmZhMTRhZDUwNjBlMGVhNzA1YWU5MjQ1MjY0YTE0M2M4NTAwMjk1N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC00OCwx
MCArNDgsNiBAQCBOYXRpdmVFeGVjdXRhYmxlOjp+TmF0aXZlRXhlY3V0YWJsZSgpCiB7CiB9CiAK
LVZQdHJIYWNrRXhlY3V0YWJsZTo6flZQdHJIYWNrRXhlY3V0YWJsZSgpCi17Ci19Ci0KIGNvbnN0
IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAm
U2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCAwIH07CiAKIEV2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpblN0cmljdENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKaW5kZXggMTE4NTJiZThlZGQ5MWRiNzk5MjliYTNhZGJhYWJkNTJjZTQ5YWJlYi4uZmJl
MzNjZjk4Mjg4ZjliYWM2NWNhZjA0OTc1ZjFhN2E2ZmUyYmZlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTIsOCArNTIsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElM
RUQgPSAtMTsKICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4ZWN1dGFibGVCYXNlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQgbnVtUGFyYW1ldGVycykKLSAgICAgICAgICAgIDogSlNDZWxs
KHN0cnVjdHVyZSkKKyAgICAgICAgRXhlY3V0YWJsZUJhc2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IG51bVBhcmFtZXRlcnMpCisgICAgICAgICAg
ICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICAsIG1fbnVtUGFy
YW1ldGVyc0ZvckNhbGwobnVtUGFyYW1ldGVycykKICAgICAgICAgICAgICwgbV9udW1QYXJhbWV0
ZXJzRm9yQ29uc3RydWN0KG51bVBhcmFtZXRlcnMpCiAgICAgICAgIHsKQEAgLTY1LDcgKzY1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9udW1QYXJhbWV0ZXJzRm9y
Q2FsbCA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUOwogICAgICAgICB9CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFu
b255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykg
eyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENv
bXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IDA7CkBAIC0xMTYsMTIgKzExNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0K
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
bywgVHlwZUluZm8oTGVhZlR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsgfQogCiAgICAgcHJpdmF0ZToKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBO
YXRpdmVFeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSBjYWxsVGh1
bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBKSVRDb2RlIGNvbnN0cnVjdFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKLSAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xv
YmFsRGF0YS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19J
U19IT1NUKQorICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShnbG9iYWxEYXRhLCBnbG9iYWxE
YXRhLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hP
U1QpCiAgICAgICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICAgICAsIG1f
Y29uc3RydWN0b3IoY29uc3RydWN0b3IpCiAgICAgICAgIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgTmF0aXZlRXhlY3V0YWJs
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKLSAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoZ2xv
YmFsRGF0YS5uYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19J
U19IT1NUKQorICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShnbG9iYWxEYXRhLCBnbG9iYWxE
YXRhLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hP
U1QpCiAgICAgICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICAgICAsIG1f
Y29uc3RydWN0b3IoY29uc3RydWN0b3IpCiAgICAgICAgIHsKQEAgLTE0NiwyMCArMTQ2LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
ICAgICB9OwogCi0gICAgY2xhc3MgVlB0ckhhY2tFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFi
bGVCYXNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFZQdHJIYWNrRXhlY3V0YWJsZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2Uoc3RydWN0dXJlLCBO
VU1fUEFSQU1FVEVSU19JU19IT1NUKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB+
VlB0ckhhY2tFeGVjdXRhYmxlKCk7Ci0gICAgfTsKLQogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFi
bGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgU2NyaXB0
RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpCi0gICAg
ICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NP
TVBJTEVEKQorICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZSgqZ2xvYmFsRGF0YSwgc3RydWN0
dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgICAgICAgICAsIG1fc291cmNl
KHNvdXJjZSkKICAgICAgICAgICAgICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0
cmljdE1vZGVGZWF0dXJlIDogMCkKICAgICAgICAgewpAQCAtMTczLDcgKzE2Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgaXNJblN0cmljdENvbnRleHQpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHN0
cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQorICAgICAgICAgICAgOiBFeGVj
dXRhYmxlQmFzZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNf
Tk9UX0NPTVBJTEVEKQogICAgICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICAg
ICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDAp
CiAgICAgICAgIHsKQEAgLTI0Miw3ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwogICAgICAgICB9CiAjZW5kaWYK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8s
IFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291
bnQsIDApOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxl
OjpTdHJ1Y3R1cmVGbGFnczsKQEAgLTI4OSw3ICsyNzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBl
SW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAm
c19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgMCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtD
aGlsZHJlbiB8IFNjcmlwdEV4ZWN1dGFibGU6OlN0cnVjdHVyZUZsYWdzOwpAQCAtMzgyLDcgKzM3
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGRpc2NhcmRDb2RlKCk7CiAgICAg
ICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICBzdGF0aWMgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRl
KiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3Vu
dCwgMCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShKU0ds
b2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGJvb2wsIGludCBmaXJz
dExpbmUsIGludCBsYXN0TGluZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGE5ZjBhMDY2MmQ5ZmUwODc4NTVm
OGI0MWMxZGU3ZDI4ZDRjMTlhYmEuLjllN2Q4ZDU0MDEwYWIyNWM0OTI0ZmI3OWVjOTRlNjU0NDA5
YzBkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9uQ29uc3RydWN0b3IpOwogCi1GdW5jdGlv
bkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSkKK0Z1bmN0aW9uQ29u
c3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5
cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBmdW5j
dGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oCmluZGV4IDdmMjFiMjBmYzUxYTYxNzE4NTNkM2RlYmRlZmNhOGEwODQw
MjJiZmUuLjMxYTA0Yzk5ZmYyNmE1ZjNhNjgxYjQyNGUwZDJkMzgzYjYwNjczYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgK
QEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEZ1bmN0aW9uUHJvdG90eXBlKik7CisgICAgICAgIEZ1
bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBGdW5jdGlvblByb3RvdHlwZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4
IGMyZDhhZDM3N2E2ZDRkOGYwZGFlZjE3ZDU3ZDFhNTIxZjViNzNhM2QuLmUyYTQ5NDE2ZGRlZTNj
NGI3NWYxZmEzMjYwNzU1ODM1MTc5NTdmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUHJvdG9GdW5jQXBwbHkoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY0NhbGwoRXhlY1N0YXRlKik7CiAKLUZ1bmN0aW9u
UHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQorRnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIpCiB7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmgKaW5kZXggNDQ3ZjAwYmQ4MTBmNWU1OWVmNzk2YTU4ODJlYTFjZjZkNGYyNWM4MS4u
YWI3MDhkZDdkZTMzYTE5MDBhNDNiMGFhNThlYzZjYWE2ZDUxMTdiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBAIC0yNywxMCAr
MjcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZSA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9u
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CisgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgYWRkRnVuY3Rpb25Qcm9wZXJ0
aWVzKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSwgSlNGdW5jdGlvbioqIGNhbGxGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGFwcGx5RnVuY3Rp
b24pOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykKKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90bykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggMGNkZmVjNDk4ODYy
ZjQ5MDQ2ZGNiMDhlM2ZkMzU4MWQ2Y2U4NzhlMS4uYTIyMmM3YTRiYTFkNDgwODg0OTYwZGJiZjhh
ZjI5ZDdjZDhiNzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRl
KiBleGVjKQotICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLmdldHRlclNl
dHRlclN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKICAg
ICAgICAgewogICAgICAgICB9CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgc2V0R2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3Qq
IGdldHRlcikgeyBtX2dldHRlci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZ2V0dGVyKTsgfQogICAg
ICAgICBKU09iamVjdCogc2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXIuZ2V0KCk7IH0K
ICAgICAgICAgdm9pZCBzZXRTZXR0ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVj
dCogc2V0dGVyKSB7IG1fc2V0dGVyLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzZXR0ZXIpOyB9Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhHZXR0ZXJTZXR0ZXJUeXBlLCBP
dmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCmluZGV4IGFlZjYwYzg3NjUwMWIyNWY4YzM4MTc5Y2M3ZTY3YTIwNGEwMzRkZTku
LjI3NjExYjc1N2IzNGJlNWM1NjRjZTAzYmIwNTUzYmE3MzZlNjQ2NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBA
IC01OSw3ICs1OSw2IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmdPbmNlKCkKICAg
ICBzX2R0b2FQNU11dGV4ID0gbmV3IE11dGV4OwogICAgIGluaXRpYWxpemVEYXRlcygpOwogICAg
IFJlZ2lzdGVyRmlsZTo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIFN0cnVjdHVyZTo6aW5p
dGlhbGl6ZVRocmVhZGluZygpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggNjA5MTgzMWE1ZmE4MGIw
NjE1MDczYmZlNjk1MjliMDlkMWUzZjUwYy4uYzNiMDdmODI5NzAyOGU5NmYyZmY1MDNkOTUxNzhm
MWNjZjk4ZjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTM2LDEzICszNiwxMiBAQCBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEludGVybmFsRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSW50ZXJuYWxGdW5j
dGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Ojpz
X2luZm8sIDAsIDAgfTsKIAotSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICA6IEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdChzdHJ1Y3R1cmUpCitJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9u
KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQorICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KFZQ
dHJTdGVhbGluZ0hhY2spCiB7Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAot
SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorSW50ZXJuYWxGdW5jdGlv
bjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggMDhjOThhNTM4
MGYxNzI5NTM2ZWQ5OTE5ZmZiYmI4NjU0OTBhYTE5NC4uMjhlMjYwZTMwMTMwZGRkOGMwYWU3OTZk
NjYzMzM3Mjk4ZmU5Y2ZhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29u
c3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykg
CiAgICAgICAgIHsgCiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsgCiAgICAgICAgIH0KQEAgLTQ4LDkgKzQ4LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAog
ICAgICAgICAvLyBPbmx5IHVzZWQgdG8gYWxsb3cgdXMgdG8gZGV0ZXJtaW5lIHRoZSBKU0Z1bmN0
aW9uIHZwdHIKLSAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSk7CisgICAgICAgIEludGVybmFsRnVuY3Rpb24oVlB0clN0ZWFsaW5n
SGFja1R5cGUpOwogCi0gICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiwgSlNH
bG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBJZGVudGlm
aWVyJik7CisgICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKaW5k
ZXggMDBmZTBhMDEzMzkwNjA1MzE5NDIyZDAwODEzOTc1Y2NjMTYzMGYzZS4uMDE2NTQ4ODViZDdi
ZDFlNTkzMjI1MGYyNjRjMzVmYzdlZmY3ZWViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsKICAgICAgICAgfQpAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgSlNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQotICAg
ICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLmFwaVdyYXBwZXJTdHJ1Y3R1cmUu
Z2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5hcGlXcmFwcGVyU3RydWN0dXJlLmdldCgpKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX3ZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKICAgICAg
ICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggODNiNmExYzEyYzRjOGRkNWRlOTBlMDQ3
NzM1MjEwODM1OTQ3MGI4Yy4uNGUzNjY0MWQwZTVjODA1ZWM5YmYwYzhmZDZmZjEyZDFhNTc4MTY1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNBY3RpdmF0aW9u
KTsKIGNvbnN0IENsYXNzSW5mbyBKU0FjdGl2YXRpb246OnNfaW5mbyA9IHsgIkpTQWN0aXZhdGlv
biIsICZCYXNlOjpzX2luZm8sIDAsIDAgfTsKIAogSlNBY3RpdmF0aW9uOjpKU0FjdGl2YXRpb24o
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlKQotICAgIDogQmFzZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5hY3RpdmF0aW9uU3RydWN0
dXJlLCBmdW5jdGlvbkV4ZWN1dGFibGUtPnN5bWJvbFRhYmxlKCksIGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkpCisgICAgOiBCYXNlKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPmds
b2JhbERhdGEoKS5hY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpLCBmdW5jdGlvbkV4ZWN1dGFibGUt
PnN5bWJvbFRhYmxlKCksIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpCiAgICAgLCBtX251bVBhcmFt
ZXRlcnNNaW51c1RoaXMoc3RhdGljX2Nhc3Q8aW50PihmdW5jdGlvbkV4ZWN1dGFibGUtPnBhcmFt
ZXRlckNvdW50KCkpKQogICAgICwgbV9udW1DYXB0dXJlZFZhcnMoZnVuY3Rpb25FeGVjdXRhYmxl
LT5jYXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fcmVxdWlyZXNEeW5hbWljQ2hlY2tz
KGZ1bmN0aW9uRXhlY3V0YWJsZS0+dXNlc0V2YWwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5kZXggNzQ2M2Y0NzNkYzhjNDYwNWI2NDA4MzZmYTg0
ZDg0ZGNlM2RhODk1Yi4uNjU2NDJmMTEyNjJiMzVlNDhjNzdmZGZmOWJlMmYxYjFlNjVjNjRjZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKQEAgLTY2
LDcgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzTWFya0NoaWxk
cmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRl
eCAxZDYyMWZlOWY5MGQwNGMzNGZkY2EyMjJhOWVmYmU0MTI1MGI1ZTIzLi5iZjYxMDk3YWNmODg1
OGQ3MjkyNzNmNmRiNjI2NDRkOTljNmMxMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcApAQCAtMTI3LDI2ICsxMjcsMTIgQEAgaW5saW5lIHZvaWQgSlNBcnJh
eTo6Y2hlY2tDb25zaXN0ZW5jeShDb25zaXN0ZW5jeUNoZWNrVHlwZSkKICNlbmRpZgogCiBKU0Fy
cmF5OjpKU0FycmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgIDogSlNOb25GaW5hbE9iamVj
dChTdHJ1Y3R1cmU6OmNyZWF0ZShTdHJ1Y3R1cmU6OlZQdHJTdGVhbGluZ0hhY2ssICZzX2luZm8p
KQorICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQogewotICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7Ci0KLSAgICB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkgPSAw
OwotCi0gICAgbV9zdG9yYWdlID0gc3RhdGljX2Nhc3Q8QXJyYXlTdG9yYWdlKj4oZmFzdFplcm9l
ZE1hbGxvYyhzdG9yYWdlU2l6ZShpbml0aWFsQ2FwYWNpdHkpKSk7Ci0gICAgbV9zdG9yYWdlLT5t
X2FsbG9jQmFzZSA9IG1fc3RvcmFnZTsKLSAgICBtX2luZGV4QmlhcyA9IDA7Ci0gICAgbV92ZWN0
b3JMZW5ndGggPSBpbml0aWFsQ2FwYWNpdHk7Ci0KLSAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0g
ICAgCi0gICAgLy8gSXQncyBub3Qgc2FmZSB0byBjYWxsIEhlYXA6OmhlYXAodGhpcykgaW4gb3Jk
ZXIgdG8gcmVwb3J0IGV4dHJhIG1lbW9yeQotICAgIC8vIGNvc3QgaGVyZSwgYmVjYXVzZSB0aGUg
VlB0clN0ZWFsaW5nSGFja1R5cGUgSlNBcnJheSBpcyBub3QgYWxsb2NhdGVkIG9uCi0gICAgLy8g
dGhlIGhlYXAuIEZvciB0aGUgc2FtZSByZWFzb24sIGl0J3MgT0sgbm90IHRvIHJlcG9ydCBleHRy
YSBjb3N0LgogfQogCi1KU0FycmF5OjpKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCitKU0FycmF5
OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKICAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCkBAIC0xNjIsOCArMTQ4LDggQEAgSlNBcnJheTo6
SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICBIZWFw
OjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc3RvcmFnZVNpemUoMCkpOwogfQog
Ci1KU0FycmF5OjpKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLCBBcnJheUNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUp
Ci0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK0pTQXJyYXk6OkpTQXJyYXkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgaW5p
dGlhbExlbmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQorICAgIDogSlNOb25G
aW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKIApAQCAtMjA0LDggKzE5MCw4IEBAIEpTQXJyYXk6OkpTQXJyYXkoTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgs
CiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0b3JhZ2VTaXpl
KGluaXRpYWxDYXBhY2l0eSkpOwogfQogCi1KU0FycmF5OjpKU0FycmF5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0
IEFyZ0xpc3QmIGxpc3QpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK0pTQXJy
YXk6OkpTQXJyYXkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgQXJnTGlzdCYgbGlzdCkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAxYTZlYmE4YjBmOWY1NmM3ZTVl
Yjc5NDYwZGZjOGM4YTRmMWUyZjlkLi44YmU4NTEzNmI0OWQxMDdmNWZiNmU5NTJkZmFjOTAyOWU1
NmZhYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC02MSwx
MiArNjEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7
CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRy
U3RlYWxpbmdIYWNrIH07CiAgICAgICAgIEpTQXJyYXkoVlB0clN0ZWFsaW5nSGFja1R5cGUpOwog
Ci0gICAgICAgIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7
Ci0gICAgICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgdW5zaWduZWQg
aW5pdGlhbExlbmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUpOwotICAgICAgICBKU0FycmF5KEpTR2xv
YmFsRGF0YSYsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IEFyZ0xpc3QmIGlu
aXRpYWxWYWx1ZXMpOworICAgICAgICBleHBsaWNpdCBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSopOworICAgICAgICBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIHVu
c2lnbmVkIGluaXRpYWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlKTsKKyAgICAgICAgSlNBcnJh
eShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVz
KTsKICAgICAgICAgdmlydHVhbCB+SlNBcnJheSgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTEyNCw3ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBmaWxsQXJnTGlzdChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciYpOwogICAgICAgICB2b2lkIGNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUqLCBSZWdpc3Rlcios
IHVpbnQzMl90KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5
dGVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5j
cHAKaW5kZXggZmJhZWExZGY2YWEyY2VmODBkNjdkNDExZGUyNDk5ZTVjZjVlMWM0OC4uYzJhYmFl
ZTFjOGZiZmMxZWI4NDZmOTkwOGQ2NDdkMWFhYTRlMTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApAQCAtMzUsOCArMzUsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTQnl0ZUFycmF5OjpzX2RlZmF1bHRJbmZvID0g
eyAiQnl0ZUFycmF5IiwgJkJhc2U6OnNfaW5mbywgMCwgMCB9OwogCi1KU0J5dGVBcnJheTo6SlNC
eXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9yYWdlKQotICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1
Y3R1cmUpCitKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9yYWdlKQorICAgIDogSlNOb25GaW5hbE9iamVj
dChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIG1fc3RvcmFnZShzdG9yYWdl
KQogewogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEo
KS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOwpAQCAtNTAsNyArNTAsNyBAQCBKU0J5dGVBcnJheTo6fkpT
Qnl0ZUFycmF5KCkKICNlbmRpZgogCiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBKU0J5dGVBcnJh
eTo6Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8pCitTdHJ1Y3R1cmUqIEpTQnl0
ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbykKIHsKICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgY2xhc3NJbmZvKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCmluZGV4IGU2
NzQ5NTgwYjEyNDMzMmNiOGJhNGQxMGY0YzRmNWJmNTRlZDRkZDguLmM0ODFiYjRjOGI5M2VjMTYx
Mjk3MWRhMTQ5NWE3NmU3MmJkZjViNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCeXRlQXJyYXkuaApAQCAtNzUsOCArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAKLSAgICAgICAg
SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgV1RG
OjpCeXRlQXJyYXkqIHN0b3JhZ2UpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29u
c3QgSlNDOjpDbGFzc0luZm8qID0gJnNfZGVmYXVsdEluZm8pOworICAgICAgICBKU0J5dGVBcnJh
eShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSk7CisgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU1Zh
bHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0gJnNfZGVmYXVsdEluZm8pOwog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKQEAgLTEwMCw5
ICsxMDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdIYWNr
IH07CiAgICAgICAgIEpTQnl0ZUFycmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQotICAgICAgICAg
ICAgOiBKU05vbkZpbmFsT2JqZWN0KFN0cnVjdHVyZTo6Y3JlYXRlKFN0cnVjdHVyZTo6VlB0clN0
ZWFsaW5nSGFjaywgJnNfaW5mbykpCisgICAgICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoVlB0
clN0ZWFsaW5nSGFjaykKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IGNlN2ZlMjI3OGIzZTY1ODFhNGI0OTBlNzZjNDRj
MGMxNmNhMzJjODEuLmFmZDg0NTAyNDdkMjc3ZGFlMjljNjc1OGIxNWE5ZmFjN2I0YmEwMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMjA5LDQgKzIwOSwx
NCBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCopIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgaXNab21iaWUoY29uc3QgSlNDZWxs
KiBjZWxsKQoreworI2lmIEVOQUJMRShKU0NfWk9NQklFUykKKyAgICByZXR1cm4gY2VsbCAmJiBj
ZWxsLT5pc1pvbWJpZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBjYmZjMTEzNzNjYmE2OTRhZjQ3OTFjNDMzOTM0
ZDRiNzEwNjU1ZGZlLi43ZWU4NzFjMWM2OTAyNGI3ZDQ4MmJhMGM1NDUwMmY1YTU4NTE5ZjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMzAsNyArMzAsNiBAQAog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCiAj
aW5jbHVkZSAiTWFya1N0YWNrLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTY5LDE0ICs2OCwxOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAg
ICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTY29wZUNo
YWluTm9kZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKICAgICAgICAgZnJpZW5k
IGNsYXNzIFN0cnVjdHVyZUNoYWluOwogCisgICAgcHJvdGVjdGVkOgorICAgICAgICBlbnVtIFZQ
dHJTdGVhbGluZ0hhY2tUeXBlIHsgVlB0clN0ZWFsaW5nSGFjayB9OworCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgZXhwbGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOworICAgICAgICBleHBsaWNpdCBK
U0NlbGwoVlB0clN0ZWFsaW5nSGFja1R5cGUpIHsgfQorICAgICAgICBKU0NlbGwoSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZUR1bW15U3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVE
dW1teVN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKIAogICAgICAgICAvLyBRdWVyeWluZyB0aGUg
dHlwZS4KICAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwpAQCAtMTQyLDcgKzE0Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Nl
bGwsIG1fc3RydWN0dXJlKTsKICAgICAgICAgfQogCi0gICAgICAgIFN0cnVjdHVyZSogY29uc3Qg
KiBhZGRyZXNzT2ZTdHJ1Y3R1cmUoKSBjb25zdAorICAgICAgICBjb25zdCB2b2lkKiBhZGRyZXNz
T2ZTdHJ1Y3R1cmUoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gJm1fc3Ry
dWN0dXJlOwogICAgICAgICB9CkBAIC0xNTUsMTIgKzE1OSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIG1fc3Ry
dWN0dXJlOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAg
ICB9OwogCi0gICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKKyAgICBpbmxpbmUgSlNDZWxsOjpKU0Nl
bGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBtX3N0cnVjdHVyZShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpCiAgICAgeworICAg
ICAgICAvLyBWZXJ5IGZpcnN0IHNldCBvZiBhbGxvY2F0aW9ucyB3b24ndCBoYXZlIGEgcmVhbCBz
dHJ1Y3R1cmUuCisgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSB8fCAhZ2xvYmFsRGF0YS5kdW1t
eU1hcmthYmxlQ2VsbFN0cnVjdHVyZSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQ2VsbDo6fkpT
Q2VsbCgpCkBAIC0xNjksMTEgKzE3NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGlu
ZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAg
IH0KIAotICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpCisg
ICAgaW5saW5lIHZvaWQgSlNDZWxsOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2sp
CiAgICAgeworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3N0cnVjdHVyZSk7CiAgICAgfQog
CiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC0zNDAsNyArMzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEpTQ19aT01C
SUVTKQogICAgIGlubGluZSBib29sIEpTVmFsdWU6OmlzWm9tYmllKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNab21iaWUo
KTsKKyAgICAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpID4gKEpTQ2VsbCopMHgxZmZm
ZmZmZmZMICYmIGFzQ2VsbCgpLT5pc1pvbWJpZSgpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGI4ZTQ5OWI2ODc5
Y2IzYmUxMWU5YzU3NzIxYmU5NGVhYzVlMDdlYTkuLmExOGU5NzMwNmJiZjc0Nzg0OGJkOWZjMmNi
NTliNTAyY2NiYTUyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCkBAIC01NiwxNCArNTYsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCk7CiB9CiAK
LUpTRnVuY3Rpb246OkpTRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUsIFZQdHJIYWNrRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKLSAgICA6IEJhc2Uoc3RydWN0
dXJlKQorSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSkKKyAgICA6
IEJhc2UoVlB0clN0ZWFsaW5nSGFjaykKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwotICAgIG1fZXhlY3V0YWJsZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGV4ZWN1dGFibGUpOwog
fQogCi1KU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUV4ZWN1dGFibGUqIHRo
dW5rKQorSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVuaykKICAgICA6IEJhc2Uo
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCB0aHVuaykKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQpAQCAtNzMsNyArNzEs
NyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhcwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAotSlNGdW5jdGlvbjo6SlNGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQorSlNGdW5jdGlvbjo6SlNGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVG
dW5jdGlvbiBmdW5jKQogICAgIDogQmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAs
IG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGdsb2JhbE9iamVjdC0+Z2xv
YmFsU2NvcGVDaGFpbigpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCmluZGV4IDUwNWI5ZGUyNzJiNWQ0ZDVjYWRiMDBhYjEwYzRiZWY5ZmIzYjYyM2QuLjE3
NGNkMzg0ZTcxNDU0ODQzYmU1ZDIzOTA0MzkyMjExYzM5NGFmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVu
dGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKKyAgICAgICAgSlNGdW5j
dGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAgIEpTRnVuY3Rpb24o
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiwgTmF0aXZlRXhlY3V0YWJsZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4
ZWNTdGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAg
IHZpcnR1YWwgfkpTRnVuY3Rpb24oKTsKIApAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIAorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgICAgIHsgCiAgICAgICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IAogICAgICAg
ICB9CkBAIC04Nyw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBzdGF0
aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgSlNGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBW
UHRySGFja0V4ZWN1dGFibGUqKTsKKyAgICAgICAgZXhwbGljaXQgSlNGdW5jdGlvbihWUHRyU3Rl
YWxpbmdIYWNrVHlwZSk7CiAKICAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAppbmRleCA2MjkwZmY4YzdhMTY0MDZjMmE0ODVhMzhmNTAwOTY3ODMxMDcxOTViLi41ZjY4
ZGU5M2I2NDc0NzA1NTQ0MmU5Y2FjNGVlNjMzMDI0OTcyYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1pvbWJp
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAi
Tm9kZXMuaCIKQEAgLTExNSwyNiArMTE2LDE4IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpzdG9yZVZQ
dHJzKCkKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNBcnJheSkgPD0gc2l6ZW9mKHN0b3Jh
Z2UpLCBzaXplb2ZfSlNBcnJheV9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKICAgICBKU0Nl
bGwqIGpzQXJyYXkgPSBuZXcgKHN0b3JhZ2UpIEpTQXJyYXkoSlNBcnJheTo6VlB0clN0ZWFsaW5n
SGFjayk7CiAgICAgSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0ciA9IGpzQXJyYXktPnZwdHIoKTsK
LSAgICBqc0FycmF5LT5+SlNDZWxsKCk7CiAKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNC
eXRlQXJyYXkpIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTQnl0ZUFycmF5X211c3RfYmVf
bGVzc190aGFuX3N0b3JhZ2UpOwogICAgIEpTQ2VsbCoganNCeXRlQXJyYXkgPSBuZXcgKHN0b3Jh
Z2UpIEpTQnl0ZUFycmF5KEpTQnl0ZUFycmF5OjpWUHRyU3RlYWxpbmdIYWNrKTsKICAgICBKU0ds
b2JhbERhdGE6OmpzQnl0ZUFycmF5VlB0ciA9IGpzQnl0ZUFycmF5LT52cHRyKCk7Ci0gICAganNC
eXRlQXJyYXktPn5KU0NlbGwoKTsKIAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU1N0cmlu
ZykgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNTdHJpbmdfbXVzdF9iZV9sZXNzX3RoYW5f
c3RvcmFnZSk7CiAgICAgSlNDZWxsKiBqc1N0cmluZyA9IG5ldyAoc3RvcmFnZSkgSlNTdHJpbmco
SlNTdHJpbmc6OlZQdHJTdGVhbGluZ0hhY2spOwogICAgIEpTR2xvYmFsRGF0YTo6anNTdHJpbmdW
UHRyID0ganNTdHJpbmctPnZwdHIoKTsKLSAgICBqc1N0cmluZy0+fkpTQ2VsbCgpOwogCiAgICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTRnVuY3Rpb24pIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6
ZW9mX0pTRnVuY3Rpb25fbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7Ci0gICAgY2hhciBleGVj
dXRhYmxlU3RvcmFnZVtzaXplb2YoVlB0ckhhY2tFeGVjdXRhYmxlKV07Ci0gICAgUmVmUHRyPFN0
cnVjdHVyZT4gZXhlY3V0YWJsZVN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y3JlYXRlKFN0cnVjdHVy
ZTo6VlB0clN0ZWFsaW5nSGFjaywgMCk7Ci0gICAgSlNDZWxsKiBleGVjdXRhYmxlID0gbmV3IChl
eGVjdXRhYmxlU3RvcmFnZSkgVlB0ckhhY2tFeGVjdXRhYmxlKGV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCkpOwotICAgIEpTQ2VsbCoganNGdW5jdGlvbiA9IG5ldyAoc3RvcmFnZSkgSlNGdW5jdGlv
bihTdHJ1Y3R1cmU6OmNyZWF0ZShTdHJ1Y3R1cmU6OlZQdHJTdGVhbGluZ0hhY2ssICZKU0Z1bmN0
aW9uOjpzX2luZm8pLCBzdGF0aWNfY2FzdDxWUHRySGFja0V4ZWN1dGFibGUqPihleGVjdXRhYmxl
KSk7CisgICAgSlNDZWxsKiBqc0Z1bmN0aW9uID0gbmV3IChzdG9yYWdlKSBKU0Z1bmN0aW9uKEpT
Q2VsbDo6VlB0clN0ZWFsaW5nSGFjayk7CiAgICAgSlNHbG9iYWxEYXRhOjpqc0Z1bmN0aW9uVlB0
ciA9IGpzRnVuY3Rpb24tPnZwdHIoKTsKLSAgICBleGVjdXRhYmxlLT5+SlNDZWxsKCk7Ci0gICAg
anNGdW5jdGlvbi0+fkpTQ2VsbCgpOwogfQogCiBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShH
bG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZFN0YWNr
VHlwZSkKQEAgLTE2OCwyOSArMTYxLDM5IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkCiAgICAg
LCBleGNsdXNpdmVUaHJlYWQoMCkKICNlbmRpZgogewotICAgIGFjdGl2YXRpb25TdHJ1Y3R1cmUg
PSBKU0FjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIGlu
dGVycnVwdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUgPSBKU05vbkZpbmFsT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICB0ZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3JTdHJ1Y3R1cmUgPSBKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKTsKLSAgICBzdGF0aWNTY29wZVN0cnVjdHVyZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIHN0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlID0gU3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywganNOdWxsKCkpOwotICAgIHN0cmluZ1N0cnVjdHVyZSA9IEpTU3RyaW5nOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBub3RBbk9iamVjdFN0cnVjdHVyZSA9IEpTTm90
QW5PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIHByb3BlcnR5
TmFtZUl0ZXJhdG9yU3RydWN0dXJlID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0gICAgZ2V0dGVyU2V0dGVyU3RydWN0dXJlID0gR2V0
dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLSAgICBhcGlXcmFw
cGVyU3RydWN0dXJlID0gSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
anNOdWxsKCkpOwotICAgIHNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlID0gU2NvcGVDaGFpbk5vZGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIGV4ZWN1dGFibGVTdHJ1Y3R1
cmUgPSBFeGVjdXRhYmxlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0g
ICAgbmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlID0g
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIHBy
b2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywganNOdWxsKCkpOwotICAgIGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZSA9
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7Ci0g
ICAgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUgPSBKU0NlbGw6OmNyZWF0ZUR1bW15U3RydWN0
dXJlKCp0aGlzKTsKLSAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZSA9IFN0cnVjdHVyZUNoYWlu
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKLQogICAgIGludGVycHJldGVyID0g
bmV3IEludGVycHJldGVyKCp0aGlzKTsKICAgICBpZiAoZ2xvYmFsRGF0YVR5cGUgPT0gRGVmYXVs
dCkKICAgICAgICAgbV9zdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwogCisgICAgLy8g
TmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50IGhlcmUKKyAg
ICBJZGVudGlmaWVyVGFibGUqIGV4aXN0aW5nRW50cnlJZGVudGlmaWVyVGFibGUgPSB3dGZUaHJl
YWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShpZGVudGlmaWVyVGFibGUpOworICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgc3RydWN0dXJlU3RydWN0
dXJlLnNldCgqdGhpcywgU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMpKTsKKyAgICBh
Y3RpdmF0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgSlNBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgaW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTTm9uRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
anNOdWxsKCkpKTsKKyAgICB0ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU05vbkZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7
CisgICAgc3RhdGljU2NvcGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1N0YXRpY1Njb3BlT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgc3RyaWN0RXZhbEFjdGl2
YXRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIHN0cmluZ1N0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgbm90QW5P
YmplY3RTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU05vdEFuT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIGpzTnVsbCgpKSk7CisgICAgcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKSk7CisgICAgZ2V0dGVyU2V0dGVyU3RydWN0dXJlLnNldCgqdGhpcywgR2V0dGVyU2V0
dGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CisgICAgYXBpV3JhcHBlclN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIGpzTnVsbCgpKSk7CisgICAgc2NvcGVDaGFpbk5vZGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBT
Y29wZUNoYWluTm9kZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIGV4
ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGVjdXRhYmxlQmFzZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIG5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgp
KSk7CisgICAgZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSkpOworICAgIHByb2dyYW1FeGVjdXRh
YmxlU3RydWN0dXJlLnNldCgqdGhpcywgUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywganNOdWxsKCkpKTsKKyAgICBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxs
KCkpKTsKKyAgICBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQ2VsbDo6
Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoKnRoaXMpKTsKKyAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVs
bCgpKSk7CisKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgem9tYmllU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNab21iaWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKKyNl
bmRpZgorCisgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZXhp
c3RpbmdFbnRyeUlkZW50aWZpZXJUYWJsZSk7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3Rh
cnRQcm9maWxlclNlcnZlcklmTmVlZGVkKCk7CiAjZW5kaWYKQEAgLTIyMiw2ICsyMjUsMzMgQEAg
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUs
IFRocmVhZFN0YWNrVHlwZSB0aHJlYWQKICNlbmRpZgogfQogCit2b2lkIEpTR2xvYmFsRGF0YTo6
Y2xlYXJCdWlsdGluU3RydWN0dXJlcygpCit7CisgICAgc3RydWN0dXJlU3RydWN0dXJlLmNsZWFy
KCk7CisgICAgYWN0aXZhdGlvblN0cnVjdHVyZS5jbGVhcigpOworICAgIGludGVycnVwdGVkRXhl
Y3V0aW9uRXJyb3JTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICB0ZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3JTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBzdGF0aWNTY29wZVN0cnVjdHVyZS5jbGVhcigpOwor
ICAgIHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmNsZWFyKCk7CisgICAgc3RyaW5nU3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgbm90QW5PYmplY3RTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBw
cm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5jbGVhcigpOworICAgIGdldHRlclNldHRlclN0
cnVjdHVyZS5jbGVhcigpOworICAgIGFwaVdyYXBwZXJTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBz
Y29wZUNoYWluTm9kZVN0cnVjdHVyZS5jbGVhcigpOworICAgIGV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICBuYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLmNsZWFyKCk7CisgICAgZXZh
bEV4ZWN1dGFibGVTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICBwcm9ncmFtRXhlY3V0YWJsZVN0cnVj
dHVyZS5jbGVhcigpOworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5jbGVhcigpOwor
ICAgIGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlLmNsZWFyKCk7CisgICAgc3RydWN0dXJlQ2hh
aW5TdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAg
em9tYmllU3RydWN0dXJlLmNsZWFyKCk7CisjZW5kaWYKK30KKwogSlNHbG9iYWxEYXRhOjp+SlNH
bG9iYWxEYXRhKCkKIHsKICAgICAvLyBCeSB0aGUgdGltZSB0aGlzIGlzIGRlc3Ryb3llZCwgaGVh
cC5kZXN0cm95KCkgbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjYWxsZWQuCkBAIC0yODIsMTAgKzMx
Miw3IEBAIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJl
YWRTdGFja1R5cGUgdHlwZSkKIAogUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFsRGF0
YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSB0eXBlKQogewotICAgIFN0cnVjdHVyZTo6
c3RhcnRJZ25vcmluZ0xlYWtzKCk7Ci0gICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZGF0YSA9IGNy
ZWF0ZSh0eXBlKTsKLSAgICBTdHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtzKCk7Ci0gICAgcmV0
dXJuIGRhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBjcmVhdGUodHlwZSk7CiB9CiAKIGJvb2wg
SlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDBjMzdjZGE5MjkyYjNhOWViNTRhNTI3
MzMxNTg4MzBhMDM3YTlhMmEuLmYxMDg1YWY0MmIxOTA4MDFlY2Y4ZWI1NzViMTI3NDkxODUwN2U5
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5j
ZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIlN0
cm9uZy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIk51bWVyaWNTdHJpbmdzLmgiCkBAIC0xNDUsMjQgKzE0NiwyOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOwog
ICAgICAgICBjb25zdCBIYXNoVGFibGUqIHN0cmluZ1RhYmxlOwogICAgICAgICAKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gYWN0aXZhdGlvblN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gaW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZTsKLSAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwotICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBzdGF0aWNTY29wZVN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRy
PFN0cnVjdHVyZT4gc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHN0cmluZ1N0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
bm90QW5PYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHByb3BlcnR5
TmFtZUl0ZXJhdG9yU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBnZXR0ZXJT
ZXR0ZXJTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGFwaVdyYXBwZXJTdHJ1
Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJl
OwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBleGVjdXRhYmxlU3RydWN0dXJlOwotICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBuYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlOwotICAgICAgICBS
ZWZQdHI8U3RydWN0dXJlPiBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRy
PFN0cnVjdHVyZT4gcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGFjdGl2YXRp
b25TdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVycnVwdGVkRXhlY3V0
aW9uRXJyb3JTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvclN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RhdGlj
U2NvcGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3Rp
dmF0aW9uU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1
cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG5vdEFuT2JqZWN0U3RydWN0dXJlOworICAg
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZTsKKyAg
ICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVyU3RydWN0dXJlOworICAgICAgICBT
dHJvbmc8U3RydWN0dXJlPiBhcGlXcmFwcGVyU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBzY29wZUNoYWluTm9kZVN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gZXhlY3V0YWJsZVN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gbmF0aXZl
RXhlY3V0YWJsZVN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXZhbEV4ZWN1
dGFibGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb2dyYW1FeGVjdXRh
YmxlU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGR1bW15TWFya2FibGVDZWxs
U3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVj
dHVyZTsKKworI2lmIEVOQUJMRShKU0NfWk9NQklFUykKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gem9tYmllU3RydWN0dXJlOworI2VuZGlmCiAKICAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVW
UHRycygpOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0FycmF5VlB0cjsK
QEAgLTI2MSw2ICsyNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkdW1wUmVn
RXhwVHJhY2UoKTsKICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRsZSgpIHsg
cmV0dXJuIGhlYXAuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKTsgfQogICAgICAgICBIYW5kbGVTbG90
IGFsbG9jYXRlTG9jYWxIYW5kbGUoKSB7IHJldHVybiBoZWFwLmFsbG9jYXRlTG9jYWxIYW5kbGUo
KTsgfQorICAgICAgICB2b2lkIGNsZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBl
KTsKQEAgLTI3Miw2ICsyNzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YWNrQm91
bmRzIG1fc3RhY2s7CiAgICAgfTsKIAorICAgIGlubGluZSBIYW5kbGVTbG90IGFsbG9jYXRlR2xv
YmFsSGFuZGxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7CisgICAgfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTR2xvYmFsRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggODRjODVhZTdhY2Y4MmZj
YmE5MzdkNDVkN2IyYWVkNzMzM2VmNjYzMy4uYjgyOTQ5YWJlZGI4YTRiOThjOGIwNjhmZGFmY2Zl
ZmVhZTgzNzg2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtODQsMTIgKzg0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIFdyaXQK
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh2KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIG1h
cmtJZk5lZWRlZChNYXJrU3RhY2smIG1hcmtTdGFjaywgY29uc3QgUmVmUHRyPFN0cnVjdHVyZT4m
IHMpCi17Ci0gICAgaWYgKHMpCi0gICAgICAgIHMtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsK
LX0KLQogSlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCiB7CiAgICAgQVNTRVJUKEpT
TG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CkBAIC0xNzYsNDYgKzE3MCw0NiBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAvLyBQ
cm90b3R5cGVzCiAKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIG5ldyAoZXhlYykgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgdGhpcywgRnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgp
KSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5
cGUgaXMgY3JlYXRlZC4KLSAgICBtX2Z1bmN0aW9uU3RydWN0dXJlID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSk7Ci0gICAgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSk7CisgICAgbV9mdW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
ICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24gPSAwOwogICAgIEpTRnVuY3Rpb24qIGFwcGx5
RnVuY3Rpb24gPSAwOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPmFkZEZ1bmN0aW9uUHJvcGVy
dGllcyhleGVjLCB0aGlzLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAmY2FsbEZ1bmN0aW9u
LCAmYXBwbHlGdW5jdGlvbik7CiAgICAgbV9jYWxsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKICAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9vYmplY3RQcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBPYmplY3RQcm90b3R5
cGUoZXhlYywgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBqc051bGwoKSksIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICBt
X2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5z
aXRpb24obV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUt
PnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKIAotICAgIG1fZW1wdHlPYmplY3RTdHJ1
Y3R1cmUgPSBtX29iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgp
KTsKKyAgICBtX2VtcHR5T2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpKTsK
IAotICAgIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSA9IEpTQ2FsbGJhY2tGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSk7Ci0gICAgbV9hcmd1bWVudHNTdHJ1Y3R1cmUgPSBBcmd1bWVudHM6OmNyZWF0ZVN0cnVj
dHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKLSAgICBt
X2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKLSAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlID0gSlNDYWxsYmFja09iamVjdDxKU09i
amVjdFdpdGhHbG9iYWxPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSkpOworICAgIG1fYXJndW1lbnRzU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
OworICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgSlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+OjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwog
CiAgICAgbV9hcnJheVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcg
KGV4ZWMpIEFycmF5UHJvdG90eXBlKHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKLSAgICBt
X2FycmF5U3RydWN0dXJlID0gSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7Ci0gICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUgPSBSZWdFeHBNYXRjaGVzQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fYXJyYXlTdHJ1Y3R1cmUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIFJlZ0V4
cE1hdGNoZXNBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9hcnJh
eVByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9zdHJpbmdQcm90b3R5cGUuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBTdHJpbmdQcm90b3R5cGUoZXhlYywgdGhpcywg
U3RyaW5nUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpKTsKLSAgICBtX3N0cmluZ09iamVjdFN0cnVjdHVyZSA9IFN0
cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJpbmdQ
cm90b3R5cGUuZ2V0KCkpOworICAgIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIFN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fYm9vbGVhblBy
b3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIEJvb2xlYW5Q
cm90b3R5cGUoZXhlYywgdGhpcywgQm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpKSk7Ci0gICAgbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlID0gQm9vbGVhbk9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9ib29sZWFuUHJvdG90
eXBlLmdldCgpKTsKKyAgICBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpcywgQm9vbGVhbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbV9ib29sZWFuUHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX251bWJlclByb3Rv
dHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE51bWJlclByb3Rv
dHlwZShleGVjLCB0aGlzLCBOdW1iZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKSkpOwotICAgIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlID0gTnVtYmVyT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX251bWJlclByb3RvdHlwZS5nZXQo
KSk7CisgICAgbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgTnVtYmVyT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBt
X251bWJlclByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9kYXRlUHJvdG90eXBlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG5ldyAoZXhlYykgRGF0ZVByb3RvdHlwZShleGVjLCB0aGlz
LCBEYXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpKTsKLSAgICBtX2RhdGVTdHJ1Y3R1cmUgPSBEYXRlSW5zdGFu
Y2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZGF0ZVByb3RvdHlwZS5n
ZXQoKSk7CisgICAgbV9kYXRlU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IERhdGVJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9kYXRl
UHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIFJlZ0V4cFByb3RvdHlwZShleGVjLCB0aGlzLCBS
ZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKSkpOwotICAgIG1f
cmVnRXhwU3RydWN0dXJlID0gUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9yZWdFeHBTdHJ1Y3R1
cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogCiAg
ICAgbV9tZXRob2RDYWxsRHVtbXkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYykpOwogCiAgICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90
eXBlID0gbmV3IChleGVjKSBFcnJvclByb3RvdHlwZShleGVjLCB0aGlzLCBFcnJvclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpKTsKLSAgICBtX2Vycm9yU3RydWN0dXJl
ID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXJy
b3JQcm90b3R5cGUpOworICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXJyb3JQcm90b3R5cGUpKTsKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCkBAIC0yMzEsOCAr
MjI1LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAK
ICAgICBtX2Vycm9yQ29uc3RydWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3
IChleGVjKSBFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIEVycm9yQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBlcnJvclByb3RvdHlwZSkpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyb3JQcm90b3R5cGUpOwotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IG5hdGl2ZUVycm9yU3RydWN0dXJlID0gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSk7CisgICAgU3RydWN0dXJlKiBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSA9IE5hdGl2
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBlcnJv
clByb3RvdHlwZSk7CisgICAgU3RydWN0dXJlKiBuYXRpdmVFcnJvclN0cnVjdHVyZSA9IE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fZXZhbEVycm9yQ29uc3RydWN0b3Iuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJvclByb3RvdHlw
ZVN0cnVjdHVyZSwgIkV2YWxFcnJvciIpKTsKICAgICBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IoZXhlYywgdGhpcywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG5hdGl2ZUVycm9yUHJvdG90
eXBlU3RydWN0dXJlLCAiUmFuZ2VFcnJvciIpKTsKICAgICBtX3JlZmVyZW5jZUVycm9yQ29uc3Ry
dWN0b3Iuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbmV3IChleGVjKSBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKGV4ZWMsIHRoaXMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBuYXRpdmVFcnJv
clByb3RvdHlwZVN0cnVjdHVyZSwgIlJlZmVyZW5jZUVycm9yIikpOwpAQCAtMzQyLDIxICszMzYs
MjEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0
YWNrKQogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2RhdGVQcm90b3R5cGUpOwogICAg
IG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX3JlZ0V4cFByb3RvdHlwZSk7CiAKLSAgICBtYXJr
SWZOZWVkZWQobWFya1N0YWNrLCBtX2FyZ3VtZW50c1N0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgbV9hcnJheVN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZCht
YXJrU3RhY2ssIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgbV9kYXRlU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCBtX2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBt
X2Vycm9yU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX2Z1bmN0aW9u
U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX251bWJlck9iamVjdFN0
cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIG1fcmVnRXhwU3RydWN0
dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBtX3N0cmluZ09iamVjdFN0cnVjdHVy
ZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0
dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9hcmd1bWVudHNTdHJ1Y3R1cmUp
OworICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2FycmF5U3RydWN0dXJlKTsKKyAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKKyAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsK
KyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJl
KTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9jYWxsYmFja09iamVjdFN0cnVjdHVy
ZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZGF0ZVN0cnVjdHVyZSk7CisgICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIG1h
cmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCAmbV9mdW5jdGlvblN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJm1fbnVtYmVyT2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssICZtX3JlZ0V4cFN0cnVjdHVyZSk7CisgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJm1fc3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCAmbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKIAogICAgIGlmIChtX3JlZ2lzdGVy
QXJyYXkpIHsKICAgICAgICAgLy8gT3V0c2lkZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2Rl
LCB3aGVuIG91ciB2YXJpYWJsZXMgYXJlIHRvcm4gb2ZmLApAQCAtMzkxLDcgKzM4NSw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmNvcHlHbG9iYWxzRnJvbShSZWdpc3RlckZpbGUmIHJlZ2lzdGVy
RmlsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxE
YXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJG
aWxlLmxhc3RHbG9iYWwoKSksIG51bUdsb2JhbHMpOworICAgIE93bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBjb3B5UmVnaXN0ZXJBcnJheShnbG9iYWxE
YXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJG
aWxlLmxhc3RHbG9iYWwoKSksIG51bUdsb2JhbHMsIG51bUdsb2JhbHMpOwogICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIG51bUdsb2Jh
bHM7CiAgICAgc2V0UmVnaXN0ZXJzKHJlZ2lzdGVycywgcmVnaXN0ZXJBcnJheS5yZWxlYXNlKCks
IG51bUdsb2JhbHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggMzAwZjRiMDQ5ODU4OTY1ZTNjMTI5MGZmMTNhMTQ3YjNkOGI0MDU3
NS4uMGUzNjkyMDg2MDkxZTM3ZWEyODIwYzA4MzdmNWE0YTkzODM2OWJkZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC04NywyMSArODcs
MjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxEYXRlUHJvdG90eXBl
PiBtX2RhdGVQcm90b3R5cGU7CiAgICAgICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+
IG1fcmVnRXhwUHJvdG90eXBlOwogCi0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fYXJndW1l
bnRzU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2FycmF5U3RydWN0dXJl
OwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmU7Ci0g
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZTsK
LSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwot
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwotICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2RhdGVTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7Ci0g
ICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlOwotICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJndW1lbnRzU3RydWN0dXJlOworICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FycmF5U3RydWN0dXJlOworICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZTsKKyAgICAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwor
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJl
OworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RhdGVTdHJ1Y3R1cmU7CisgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmU7CisgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CisgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlOworICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CisgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlOworICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CiAKICAg
ICAgICAgdW5zaWduZWQgbV9wcm9maWxlR3JvdXA7CiAgICAgICAgIERlYnVnZ2VyKiBtX2RlYnVn
Z2VyOwpAQCAtMTE1LDcgKzExNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBKU0dsb2JhbERhdGEqKTsKICAgICAgICAgCiAgICAgICAgIGV4
cGxpY2l0IEpTR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKLSAgICAgICAg
ICAgIDogSlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGds
b2JhbERhdGEsIGpzTnVsbCgpKSwgJm1fc3ltYm9sVGFibGUsIDApCisgICAgICAgICAgICA6IEpT
VmFyaWFibGVPYmplY3QoZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShnbG9iYWxEYXRhLCBqc051bGwoKSksICZtX3N5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAg
LCBtX3JlZ2lzdGVyQXJyYXlTaXplKDApCiAgICAgICAgICAgICAsIG1fZ2xvYmFsU2NvcGVDaGFp
bigpCiAgICAgICAgICAgICAsIG1fd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFu
ZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4w
KSkpCkBAIC0xMjUsOCArMTI1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpbml0
KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9i
amVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKLSAgICAgICAgICAg
IDogSlNWYXJpYWJsZU9iamVjdChzdHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQorICAgICAg
ICBleHBsaWNpdCBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsIDApCiAgICAgICAgICAgICAsIG1fcmVnaXN0
ZXJBcnJheVNpemUoMCkKICAgICAgICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKICAgICAg
ICAgICAgICwgbV93ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIo
KSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKQEAgLTEz
Nyw4ICsxMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVk
OgotICAgICAgICBKU0dsb2JhbE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKLSAgICAgICAgICAgIDogSlNWYXJpYWJsZU9i
amVjdChzdHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQorICAgICAgICBKU0dsb2JhbE9iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVj
dCogdGhpc1ZhbHVlKQorICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsIDApCiAgICAgICAgICAgICAsIG1fcmVnaXN0ZXJB
cnJheVNpemUoMCkKICAgICAgICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKICAgICAgICAg
ICAgICwgbV93ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAq
IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKQEAgLTIzOSw3
ICsyMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEoKSBjb25zdCB7IHJldHVybiAqbV9nbG9iYWxEYXRhLmdldCgpOyB9CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAtMzYzLDcgKzM2
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBXZSBjYWNoZSBvdXIgcHJvdG90eXBl
IGNoYWluIHNvIG91ciBjbGllbnRzIGNhbiBzaGFyZSBpdC4KICAgICAgICAgaWYgKCFpc1ZhbGlk
KGV4ZWMsIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpKSB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckxvb2t1cChleGVjKTsKLSAgICAgICAgICAgIG1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgU3RydWN0dXJlQ2hh
aW46OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZS5pc051bGwoKSA/IDAgOiBh
c09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSksIDApOworICAgICAgICAgICAgbV9jYWNo
ZWRQcm90b3R5cGVDaGFpbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBTdHJ1Y3R1cmVD
aGFpbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlLmlzTnVsbCgpID8gMCA6
IGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7CiAgICAgfQpAQCAtMzc0LDkgKzM3
NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gcHJvdG90eXBlRm9yTG9va3VwKGV4ZWMpOwotICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gY2FjaGVkUHJvdG90eXBlQ2hh
aW4tPmhlYWQoKTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVj
dHVyZSA9IGNhY2hlZFByb3RvdHlwZUNoYWluLT5oZWFkKCk7CiAgICAgICAgIHdoaWxlKCpjYWNo
ZWRTdHJ1Y3R1cmUgJiYgIXByb3RvdHlwZS5pc051bGwoKSkgewotICAgICAgICAgICAgaWYgKGFz
T2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgpICE9ICpjYWNoZWRTdHJ1Y3R1cmUpCisgICAg
ICAgICAgICBpZiAoYXNPYmplY3QocHJvdG90eXBlKS0+c3RydWN0dXJlKCkgIT0gY2FjaGVkU3Ry
dWN0dXJlLT5nZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICArK2NhY2hlZFN0cnVjdHVyZTsKICAgICAgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KHBy
b3RvdHlwZSktPnByb3RvdHlwZSgpOwpAQCAtNDA3LDE3ICs0MDcsMTcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAgICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0
YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNBcnJheShleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCkpOworICAgICAgICByZXR1
cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpKTsKICAgICB9CiAgICAgCiAgICAgaW5saW5l
IEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNB
cnJheShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCkpOworICAgICAgICByZXR1cm4gbmV3
IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZSgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlB
cnJheShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+YXJyYXlTdHJ1Y3R1cmUoKSwgaW5pdGlhbExlbmd0aCwgQ3JlYXRlSW5pdGlhbGl6ZWQpOwor
ICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpLCBpbml0aWFsTGVuZ3Ro
LCBDcmVhdGVJbml0aWFsaXplZCk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQXJyYXkqIGNvbnN0
cnVjdEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzaW5nbGVJdGVtVmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKaW5kZXggNzViY2Ex
OGQ4MDVkZjc3YjBjOTQzOWU0MmI0NDkwMzdiMWI0MmRjMC4uNGM2ODA2YTVmMTI1MGViMjJjMzA3
NDJjMzA1MjRhOTRmODdmZmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOb3RBbk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTm90QW5PYmplY3QuaApAQCAtMzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTTm90QW5PYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgcHVi
bGljOgogICAgICAgICBKU05vdEFuT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKLSAgICAgICAgICAg
IDogSlNOb25GaW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCkubm90QW5PYmplY3RTdHJ1Y3R1
cmUpCisgICAgICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkubm90QW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
aW5kZXggOGZjN2FjOWNmZDM0MjJmN2U1NGYyOWY5NzRlZDQwMzUxMWIxYmM1Ni4uMjdmYzU2OWVh
YWY5YjFmZThjYjY4ZmJiNDA0ODMyYTRmNTk1Mjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUq
KTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTT05PYmplY3Q6OkpTT05PYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUpCitKU09OT2JqZWN0OjpKU09OT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKaW5kZXggYTUyYzU0
MzhkMDVjOWU2ODM4Yjk5ODBlYmZhYTMzODQzODhjZTFlNC4uYzg3YzY0MTliOWM2ZTk2NGJmOGJk
NzY1NzExZGMwODJiMzM3YTZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEpTT05PYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpOworICAgICAgICBKU09OT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCmluZGV4IGFiNDcyZDQ2OTM3ZDgzZjI4Mzk4MTFhZGJiN2EwOTBjYjFi
NGZkYTIuLjk2NzdmMjMyMWU5ZmJlOTEwZDY0Yjk1NTFiOTFiOTNkZTQ0MTlhNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTMyOCwxMCArMzI4LDgg
QEAgdm9pZCBKU09iamVjdDo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU08KICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0
aG91Z2gsIHdlIGFsc28gbmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQogICAgIC8vIGlmIHdl
IG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAo
c2xvdC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICBp
ZiAoIW1fc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGds
b2JhbERhdGEsIG1fc3RydWN0dXJlKTsKLSAgICAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1
cmUucmVsZWFzZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIW1fc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkKKyAgICAgICAgICAgIHNldFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCks
IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVy
ZS5nZXQoKSkpOwogICAgIH0KIAogICAgIG1fc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKHRydWUpOwpAQCAtMzU1LDEwICszNTMsOCBAQCB2b2lkIEpTT2JqZWN0OjpkZWZp
bmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTTwogICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBuZWVkIHRv
IGNoYW5nZSBvdXIgU3RydWN0dXJlCiAgICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcg
bm9uLWdldHRlciBvciBub24tc2V0dGVyLgogICAgIGlmIChzbG90LnR5cGUoKSAhPSBQdXRQcm9w
ZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAgICAgIGlmICghbV9zdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBT
dHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX3N0
cnVjdHVyZSk7Ci0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisg
ICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmU6Omdl
dHRlclNldHRlclRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX3N0cnVjdHVyZS5nZXQo
KSkpOwogICAgIH0KIAogICAgIG1fc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKHRydWUpOwpAQCAtNTEyLDE4ICs1MDgsMTggQEAgSlNPYmplY3QqIEpTT2JqZWN0Ojp1bndy
YXBwZWRPYmplY3QoKQogCiB2b2lkIEpTT2JqZWN0OjpzZWFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKIHsKLSAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBtX3N0cnVjdHVyZSkpOworICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLmdldCgpKSk7CiB9
CiAKIHZvaWQgSlNPYmplY3Q6OmZyZWV6ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7Ci0g
ICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBt
X3N0cnVjdHVyZSkpOworICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OmZy
ZWV6ZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9p
ZCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQog
ewogICAgIGlmIChpc0V4dGVuc2libGUoKSkKLSAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVy
ZTo6cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlKSk7
CisgICAgICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRl
bnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2
b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCkBAIC01MzYsOCArNTMyLDcgQEAgdm9pZCBKU09i
amVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGds
b2JhbERhdGEsIG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7Ci0gICAgc2V0U3Ry
dWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOworICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVj
dHVyZS5nZXQoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKICAgICBpZiAob2Zmc2V0ICE9IFdU
Rjo6bm90Rm91bmQpCiAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7
CiB9CkBAIC01NzUsNyArNTcwLDggQEAgTkVWRVJfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxH
ZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiBzbG90LCBXcml0ZUJhcnIKIAogU3RydWN0
dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQogewotICAgIG1faW5oZXJpdG9ySUQgPSBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShnbG9i
YWxEYXRhLCB0aGlzKTsKKyAgICBtX2luaGVyaXRvcklELnNldChnbG9iYWxEYXRhLCB0aGlzLCBj
cmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShnbG9iYWxEYXRhLCB0aGlzKSk7CisgICAgQVNTRVJU
KG1faW5oZXJpdG9ySUQtPmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1faW5oZXJpdG9ySUQuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGI1
M2FlZmNkMDAzNmFjZGI2NTYwMzY0Y2RhMDhkOTZiZTgyMWE2YWEuLjgwNzM1ZjhjNDIxMDgxYTAw
OTc3ZDRkM2RmMzA1ZWQxZTZjNDg1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAg
ICBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUg
cHJvdG90eXBlKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0U3RydWN0dXJlKE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgICAgICB2b2lkIHNldFN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0ds
b2JhbERhdGEmKTsKIAogICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7
CkBAIC0xNzAsNyArMTcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
bG9jYXRpb24gLSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
dHJhbnNpdGlvblRvKFN0cnVjdHVyZSopOworICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBib29s
IGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKTsg
fQpAQCAtMjQ5LDcgKzI0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNf
RVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CkBAIC0yNjMs
NyArMjYzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIFRvIGluc3RhbnRpYXRl
IG9iamVjdHMgeW91IGxpa2VseSB3YW50IEpTRmluYWxPYmplY3QsIGJlbG93LgogICAgICAgICAv
LyBUbyBjcmVhdGUgZGVyaXZlZCB0eXBlcyB5b3UgbGlrZWx5IHdhbnQgSlNOb25GaW5hbE9iamVj
dCwgYmVsb3cuCi0gICAgICAgIEpTT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKKyAgICAgICAgSlNPYmplY3QoSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOworICAg
ICAgICBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrVHlwZSwgUHJvcGVydHlTdG9yYWdlIGlubGlu
ZVN0b3JhZ2UpCisgICAgICAgICAgICA6IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrKQorICAgICAg
ICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZShpbmxpbmVTdG9yYWdlKQorICAgICAgICB7CisgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sg
YW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBh
IEpTT2JqZWN0LgpAQCAtMjk4LDcgKzMwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBT
dHJ1Y3R1cmUqIGNyZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwogCiAgICAgICAgIFBy
b3BlcnR5U3RvcmFnZSBtX3Byb3BlcnR5U3RvcmFnZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gbV9pbmhlcml0b3JJRDsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbmhl
cml0b3JJRDsKICAgICB9OwogCiAKQEAgLTMxOSwxNCArMzI0LDE5IEBAIENPTVBJTEVfQVNTRVJU
KChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0
X2lubGluZVN0CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU09iamVjdDsKIAogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgICAgICAgICAgOiBKU09iamVjdChz
dHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKKyAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9i
amVjdChWUHRyU3RlYWxpbmdIYWNrVHlwZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoVlB0clN0
ZWFsaW5nSGFjaywgbV9pbmxpbmVTdG9yYWdlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAK
KyAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKCEoT0JKRUNUX09GRlNFVE9GKEpTTm9uRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFn
ZSkgJSBzaXplb2YoZG91YmxlKSkpOwogICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVy
ZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTTm9uRmluYWxPYmplY3RfaW5saW5l
U3RvcmFnZUNhcGFjaXR5KTsKQEAgLTM0MiwxOSArMzUyLDE5IEBAIENPTVBJTEVfQVNTRVJUKChK
U0ZpbmFsT2JqZWN0X2lubGluZVN0b3JhZ2VDYXBhY2l0eSA+PSBKU05vbkZpbmFsT2JqZWN0X2lu
bGluZVN0CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU09iamVjdDsKIAogICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQorICAgICAgICBzdGF0aWMgSlNGaW5h
bE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRmluYWxPYmplY3Qoc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRmluYWxPYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5v
bnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogSlNPYmplY3Qoc3RydWN0dXJlLCBtX2lubGluZVN0
b3JhZ2UpCisgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdl
KSAlIHNpemVvZihkb3VibGUpID09IDApOwogICAgICAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVj
dHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcmFnZUNhcGFjaXR5KTsKQEAgLTM3MSwxMiArMzgxLDEyIEBAIGlubGluZSBzaXplX3QgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpCiAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpOwogfQogCi1pbmxpbmUgSlNPYmplY3Qq
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCitpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgcmV0dXJu
IEpTRmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUpOwogfQogCi1pbmxpbmUgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZUVtcHR5T2JqZWN0U3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCitpbmxpbmUgU3RydWN0dXJlKiBjcmVh
dGVFbXB0eU9iamVjdFN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQogewogICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsRGF0YSwgcHJvdG90eXBlKTsKIH0KQEAgLTM5Miw4ICs0MDIsOCBAQCBpbmxpbmUgSlNP
YmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVl
LmFzQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2Up
Ci0gICAgOiBKU0NlbGwoc3RydWN0dXJlLnJlbGVhc2VSZWYoKSkgLy8gfkpTT2JqZWN0IGJhbGFu
Y2VzIHRoaXMgcmVmKCkKK2lubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0
b3JhZ2UpCisgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9wcm9w
ZXJ0eVN0b3JhZ2UoaW5saW5lU3RvcmFnZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwpAQCAtNDAxLDE0ICs0MTEsMTMgQEAgaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWcKICAgICBB
U1NFUlQobV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlz
TnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOwog
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDx2b2lkKj4oaW5saW5lU3RvcmFnZSkgPT0gc3RhdGljX2Nh
c3Q8dm9pZCo+KHRoaXMgKyAxKSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJlLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0Ojp+SlNPYmplY3Qo
KQogewotICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CiAgICAgaWYgKCFpc1VzaW5nSW5saW5lU3Rv
cmFnZSgpKQogICAgICAgICBkZWxldGUgW10gbV9wcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgbV9zdHJ1
Y3R1cmUtPmRlcmVmKCk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUo
KSBjb25zdApAQCAtNDMyLDIwICs0NDEsMjAgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnNldFBy
b3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWwKIGlu
bGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICBSZWZQ
dHI8U3RydWN0dXJlPiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRy
YW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUsIHByb3RvdHlwZSk7Ci0gICAgc2V0U3Ry
dWN0dXJlKG5ld1N0cnVjdHVyZS5yZWxlYXNlKCkpOworICAgIHNldFN0cnVjdHVyZShnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9z
dHJ1Y3R1cmUuZ2V0KCksIHByb3RvdHlwZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
c2V0U3RydWN0dXJlKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQoraW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIG1fc3RydWN0dXJlLT5kZXJlZigpOwotICAg
IG1fc3RydWN0dXJlID0gc3RydWN0dXJlLmxlYWtSZWYoKTsgLy8gfkpTT2JqZWN0IGJhbGFuY2Vz
IHRoaXMgcmVmKCkKKyAgICBtX3N0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0
dXJlKTsKIH0KIAogaW5saW5lIFN0cnVjdHVyZSogSlNPYmplY3Q6OmluaGVyaXRvcklEKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsKLSAgICBpZiAobV9pbmhlcml0b3JJRCkKKyAgICBpZiAo
bV9pbmhlcml0b3JJRCkgeworICAgICAgICBBU1NFUlQobV9pbmhlcml0b3JJRC0+aXNFbXB0eSgp
KTsKICAgICAgICAgcmV0dXJuIG1faW5oZXJpdG9ySUQuZ2V0KCk7CisgICAgfQogICAgIHJldHVy
biBjcmVhdGVJbmhlcml0b3JJRChnbG9iYWxEYXRhKTsKIH0KIApAQCAtNTk2LDEyICs2MDUsMTIg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgc2l6
ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpOwotICAgIGlmIChSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgeyAgICAKKyAg
ICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgeyAgICAKICAgICAgICAgaWYg
KGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
CiAgICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAKICAgICAgICAgQVNTRVJUKG9m
ZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAgIHNl
dFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRh
LCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJh
bnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUs
CiAgICAgICAgIC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCkBA
IC02MzMsNyArNjQyLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIGNhc2UgKDIpIERl
c3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KLSAgICAgICAgICAgIHNldFN0cnVjdHVyZShT
dHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVj
dHVyZSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0
YSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9z
dHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
Y2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUgcHV0LCByZXR1cm4uCkBAIC02NDUsMTMgKzY1
NCwxMyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIGlmICghaXNFeHRlbnNpYmxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZS5nZXQoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwogCiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0
eSAhPSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFz
ZSgpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICBwdXRE
aXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgLy8gVGhpcyBpcyBh
IG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMgd2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBj
dXJyZW50bHkgY2FjaGFibGUsCiAgICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5jYWNo
YWJsZSBzdGF0ZS4KQEAgLTcyMiwxMSArNzMxLDExIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCi1p
bmxpbmUgdm9pZCBKU09iamVjdDo6dHJhbnNpdGlvblRvKFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
KQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIGlmIChtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKG1fc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpOwotICAgIHNldFN0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpOworICAgIHNldFN0
cnVjdHVyZShnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBK
U09iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CkBAIC04MTUsMTAgKzgyNCwxMSBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgSlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVjdChNYXJrU3RhY2smIG1hcmtTdGFj
aykKIHsKICAgICBKU0NlbGw6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCi0gICAgbV9zdHJ1
Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3Rv
cmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IG1fc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVl
cyhzdG9yYWdlLCBzdG9yYWdlU2l6ZSk7CisgICAgaWYgKG1faW5oZXJpdG9ySUQpCisgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJm1faW5oZXJpdG9ySUQpOwogfQogCiAvLyAtLS0gSlNWYWx1ZSBp
bmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDkzNzAxMzk4NTc4Y2IzOWYxODliMjNlY2JjNDJkYTQxZjBiNjE3OWMuLmZhMGU1NGE3OTFl
YjRiODNlZDRhOWI5ZGExZWY1OTMzYjc0MzI0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmNwcApAQCAt
MzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0OjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZp
bmFsT2JqZWN0KHN0cnVjdHVyZSkKK0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6SlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKSwgc3RydWN0dXJlKQogewogICAgIENPTVBJTEVfQVNTRVJUKEFub255bW91c1Nsb3RDb3Vu
dCA9PSAxLCBBbm9ueW1vdXNTbG90Q291bnRfbXVzdF9iZV9vbmUpOwogICAgIEFTU0VSVCghZ2xv
YmFsT2JqZWN0IHx8IGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CkBAIC00MSw2ICs0
MSwxNyBAQCBKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBwdXRBbm9ueW1vdXNWYWx1
ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgR2xvYmFsT2JqZWN0U2xvdCwgZ2xvYmFsT2Jq
ZWN0KTsKIH0KIAorSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKQoreworICAgIENPTVBJTEVfQVNTRVJUKEFub255bW91c1Nsb3RDb3Vu
dCA9PSAxLCBBbm9ueW1vdXNTbG90Q291bnRfbXVzdF9iZV9vbmUpOworICAgIEFTU0VSVCghZ2xv
YmFsT2JqZWN0IHx8IGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCFn
bG9iYWxPYmplY3QpCisgICAgICAgIGNsZWFyQW5vbnltb3VzVmFsdWUoR2xvYmFsT2JqZWN0U2xv
dCk7CisgICAgZWxzZQorICAgICAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxEYXRhLCBHbG9i
YWxPYmplY3RTbG90LCBnbG9iYWxPYmplY3QpOworfQorCiBKU0dsb2JhbE9iamVjdCogSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0OjpnbG9iYWxPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBh
c0dsb2JhbE9iamVjdCgoZ2V0QW5vbnltb3VzVmFsdWUoR2xvYmFsT2JqZWN0U2xvdCkuYXNDZWxs
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0LmgKaW5kZXggODM4MDUxNGQ1N2FjYmY1ZThiNWIwZWY1NDA1M2U4
MmM4MWMxNzUzNy4uZjBmZDA0NjFlZDE4NGJkZTIwNjM1ZTE2NzRkY2RjMTU2ZTY5MWJiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAK
IGNsYXNzIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90bykKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KQEAgLTQyLDEwICs0MiwxMSBAQCBwdWJs
aWM6CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUpCi0gICAgICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCisgICAgSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQorICAgICAgICA6IEpTTm9uRmlu
YWxPYmplY3QoVlB0clN0ZWFsaW5nSGFjaykKICAgICB7CiAgICAgICAgIC8vIFNob3VsZCBvbmx5
IGJlIHVzZWQgYnkgSlNGdW5jdGlvbiB3aGVuIHdlIGFxdWlyZSB0aGUgSlNGdW5jdGlvbiB2cHRy
LgogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNmYzMWY5OTlkNzA5NWRjYzVjZjZkM2QwNmNj
MzJkMjg2OGViMjhiNy4uZDVhZjA0NDY1NjcxMzQxMjRkNmFmNWVlYmRhMDliZWNhNzExOWNiMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAKQEAgLTM1LDkgKzM1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogCitjb25z
dCBDbGFzc0luZm8gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c19pbmZvID0geyAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciIsIDAsIDAsIDAgfTsKKwogaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3Rz
KQotICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0
cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fY2FjaGVkU3RydWN0dXJlKDApCisgICAgOiBKU0NlbGwo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lSXRlcmF0
b3JTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX251bUNhY2hlYWJsZVNsb3RzKG51bUNhY2hlYWJs
ZVNsb3RzKQogICAgICwgbV9qc1N0cmluZ3NTaXplKHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJv
cGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpKQogICAgICwgbV9qc1N0cmluZ3MoYWRvcHRBcnJheVB0
cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W21fanNTdHJpbmdzU2l6ZV0pKQpAQCAtNzEsMTQg
KzcyLDE0IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgCiAgICAgc2l6ZV90IGNvdW50
ID0gbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgbyk7CiAgICAgU3RydWN0dXJlQ2hhaW4q
IHN0cnVjdHVyZUNoYWluID0gby0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluKGV4ZWMpOwot
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVDaGFpbi0+aGVhZCgp
OworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVDaGFp
bi0+aGVhZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICBpZiAoc3RydWN0dXJlW2ldLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwogICAgIH0K
IAogICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNldENhY2hlZFByb3RvdHlwZUNoYWluKGV4
ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlQ2hhaW4pOwotICAgIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3ItPnNldENhY2hlZFN0cnVjdHVyZShvLT5zdHJ1Y3R1cmUoKSk7CisgICAganNQcm9wZXJ0
eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgby0+
c3RydWN0dXJlKCkpOwogICAgIG8tPnN0cnVjdHVyZSgpLT5zZXRFbnVtZXJhdGlvbkNhY2hlKGV4
ZWMtPmdsb2JhbERhdGEoKSwganNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CiAgICAgcmV0dXJuIGpz
UHJvcGVydHlOYW1lSXRlcmF0b3I7CiB9CkBAIC04Niw3ICs4Nyw3IEBAIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0CiBKU1ZhbHVlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBzaXplX3QgaSkKIHsKICAgICBKU1ZhbHVlIGlkZW50aWZp
ZXIgPSBtX2pzU3RyaW5nc1tpXS5nZXQoKTsKLSAgICBpZiAobV9jYWNoZWRTdHJ1Y3R1cmUgPT0g
YmFzZS0+c3RydWN0dXJlKCkgJiYgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSA9PSBiYXNl
LT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgaWYgKG1fY2FjaGVkU3Ry
dWN0dXJlLmdldCgpID09IGJhc2UtPnN0cnVjdHVyZSgpICYmIG1fY2FjaGVkUHJvdG90eXBlQ2hh
aW4uZ2V0KCkgPT0gYmFzZS0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluKGV4ZWMpKQogICAg
ICAgICByZXR1cm4gaWRlbnRpZmllcjsKIAogICAgIGlmICghYmFzZS0+aGFzUHJvcGVydHkoZXhl
YywgSWRlbnRpZmllcihleGVjLCBhc1N0cmluZyhpZGVudGlmaWVyKS0+dmFsdWUoZXhlYykpKSkK
QEAgLTEwMSwxMiArMTAyLDQgQEAgdm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotCi1KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjp+SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpCi17Ci0gICAgQVNT
RVJUKCFtX2NhY2hlZFN0cnVjdHVyZSB8fCBtX2NhY2hlZFN0cnVjdHVyZS0+ZW51bWVyYXRpb25D
YWNoZSgpICE9IHRoaXMpOwotfQotCi0jZW5kaWYKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCmluZGV4IGY5OGM0MGVmMGY3N2E2MWEzZmNhNGUyZTc1ZjM5NzJlMmZiNzJkMjUuLmI4NTdk
YzA5ZDA2YjI4ODk5MTNhNTA4NWIwYmYwMzFlODRjZjFjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTQ1
LDkgKzQ1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAg
ICAgICAgIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRU
eXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOworICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCBBbm9ueW1vdXNT
bG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
UHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC02NSwxMSAr
NjUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0Kiwgc2l6ZV90IGkpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpIHsgcmV0dXJuIG1f
anNTdHJpbmdzU2l6ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FjaGVkU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgICAgICB2b2lkIHNldENhY2hlZFN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1fY2FjaGVkU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9jYWNoZWRTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Cisg
ICAgICAgICAgICBtX2NhY2hlZFN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0
dXJlKTsKICAgICAgICAgfQogICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fY2FjaGVkU3RydWN0dXJlLmdldCgpOyB9CiAKQEAgLTc3LDEzICs3NywxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNo
YWluKCkgeyByZXR1cm4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsgfQogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBw
cm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKLSAgICAgICAg
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICB2aXJ0dWFsIH5KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKCk7Ci0jZW5kaWYKIAotICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhY2hlZFN0
cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1
cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5
cGVDaGFpbjsKICAgICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVTbG90czsKICAgICAgICAg
dWludDMyX3QgbV9qc1N0cmluZ3NTaXplOwpAQCAtOTMsNyArOTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNh
Y2hlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0RpY3Rpb25hcnkoKSk7Ci0gICAgICAgIG1f
ZW51bWVyYXRpb25DYWNoZS5zZXQoZ2xvYmFsRGF0YSwgZW51bWVyYXRpb25DYWNoZSk7CisgICAg
ICAgIG1fZW51bWVyYXRpb25DYWNoZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgZW51bWVyYXRpb25D
YWNoZSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIFN0cnVj
dHVyZTo6ZW51bWVyYXRpb25DYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKaW5kZXggM2UxOWJiYzIzNjZhOWMxZDhmNGE5
NGNiZjYwYjdiNDM3OTNlY2E2MS4uOGMzYTI0OTVjNjgwM2MwN2Q1NTEwNWY0ZGZmZjMzNDI3N2Qw
ZDVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDewogICAgIGNsYXNz
IEpTU3RhdGljU2NvcGVPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CiAgICAgcHVi
bGljOgogICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi0g
ICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnN0YXRpY1Nj
b3BlU3RydWN0dXJlLCAmbV9zeW1ib2xUYWJsZSwgcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+
KCZtX3JlZ2lzdGVyU3RvcmUgKyAxKSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5zdGF0aWNTY29wZVN0cnVjdHVy
ZS5nZXQoKSwgJm1fc3ltYm9sVGFibGUsIHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPigmbV9y
ZWdpc3RlclN0b3JlICsgMSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fcmVnaXN0ZXJTdG9y
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzeW1i
b2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoLTEsIGF0dHJpYnV0
ZXMpKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAgdmlydHVhbCB2
b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
QW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE5lZWRzVGhpc0NvbnZl
cnNpb24gfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCBhZjZhOTMyOTc5ZjA3OTU3MzFlNWRlMzQ3ZWQ0Nzg5
YzIxZTViMzcxLi4zNDIyZGFkM2QwYzBjYThiYjlhM2ZlMTEwZWFhMmNhYzFjY2E1NmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTE4NSw3ICsxODUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAgICAgICBBTFdBWVNfSU5MSU5FIEpT
U3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUpCi0g
ICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisg
ICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkKICAgICAg
ICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KDApCkBA
IC0xOTYsNyArMTk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZW51bSBIYXNPdGhl
ck93bmVyVHlwZSB7IEhhc090aGVyT3duZXIgfTsKICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSwgSGFzT3RoZXJPd25lclR5cGUp
Ci0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS5sZW5ndGgoKSkKICAg
ICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KDAp
CkBAIC0yMDQsNyArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQo
IW1fdmFsdWUuaXNOdWxsKCkpOwogICAgICAgICB9CiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSwgSGFzT3RoZXJP
d25lclR5cGUpCi0gICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS0+bGVu
Z3RoKCkpCiAgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fZmli
ZXJDb3VudCgwKQpAQCAtMjEyLDcgKzIxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgQVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgfQogICAgICAgICBKU1N0cmlu
ZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8Um9wZUltcGw+IHJvcGUpCi0g
ICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCisg
ICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKQogICAgICAgICAgICAgLCBtX2xlbmd0aChyb3BlLT5sZW5ndGgoKSkKICAgICAg
ICAgICAgICwgbV9maWJlckNvdW50KDEpCiAgICAgICAgIHsKQEAgLTIyMSw3ICsyMjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEg
bmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5nIHMxICYgczIuCiAgICAgICAgIC8vIFRoaXMgc2hv
dWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggZmliZXJDb3VudCA8PSAzLgogICAgICAgICBKU1N0cmlu
ZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyKQotICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGds
b2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgo
czEtPmxlbmd0aCgpICsgczItPmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQo
ZmliZXJDb3VudCkKICAgICAgICAgewpAQCAtMjM0LDcgKzIzNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5
IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBj
YWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBjb25zdCBV
U3RyaW5nJiB1MikKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHMxLT5sZW5n
dGgoKSArIHUyLmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3Vu
dCkKICAgICAgICAgewpAQCAtMjQ3LDcgKzI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVu
YXRpbmcgczEgJiBzMi4KICAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0
aCBmaWJlckNvdW50IDw9IDMuCiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgY29uc3QgVVN0cmluZyYgdTEsIEpTU3RyaW5nKiBz
MikKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkKKyAgICAgICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgczIt
Pmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoZmliZXJDb3VudCkKICAgICAg
ICAgewpAQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyB2YWx1
ZSBtdXN0IHJlcXVpcmUgYSBmaWJlckNvdW50IG9mIGF0IGxlYXN0IG9uZSBpbXBsaWVzIHRoYXQg
dGhlIGxlbmd0aAogICAgICAgICAvLyBmb3IgZWFjaCB2YWx1ZSBtdXN0IGJlIGV4YWN0bHkgMSEK
ICAgICAgICAgSlNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
LCBKU1ZhbHVlIHYzKQotICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAg
ICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJu
YWxSb3BlTGVuZ3RoKQogICAgICAgICB7CkBAIC0yNzUsNyArMjc1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmlu
ZyBieSBjb25jYXRlbmF0aW5nIHUxICYgdTIuCiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyKQotICAg
ICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgodTEubGVuZ3RoKCkgKyB1Mi5sZW5ndGgo
KSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KDIpCiAgICAgICAgIHsKQEAgLTI4Nyw3ICsy
ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNv
bnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgdTEsIHUyICYgdTMuCiAgICAg
ICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdTEs
IGNvbnN0IFVTdHJpbmcmIHUyLCBjb25zdCBVU3RyaW5nJiB1MykKLSAgICAgICAgICAgIDogSlND
ZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgIDogSlND
ZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAg
ICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgdTIubGVuZ3RoKCkgKyB1My5sZW5ndGgo
KSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQog
ICAgICAgICB7CkBAIC0yOTksNyArMjk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJp
bmcmIHZhbHVlLCBKU1N0cmluZ0ZpbmFsaXplckNhbGxiYWNrIGZpbmFsaXplciwgdm9pZCogY29u
dGV4dCkKLSAgICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkKKyAgICAgICAgICAgIDogSlNDZWxsKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHZhbHVlLmxlbmd0aCgp
KQogICAgICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291
bnQoMCkKQEAgLTM0OSwxMiArMzQ5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpT
VmFsdWUgcmVwbGFjZUNoYXJhY3RlcihFeGVjU3RhdGUqLCBVQ2hhciwgY29uc3QgVVN0cmluZyYg
cmVwbGFjZW1lbnQpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKFN0cmlu
Z1R5cGUsIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE5lZWRzVGhpc0NvbnZlcnNpb24p
LCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhTdHJp
bmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9u
KSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZW51
bSBWUHRyU3RlYWxpbmdIYWNrVHlwZSB7IFZQdHJTdGVhbGluZ0hhY2sgfTsKICAgICAgICAgSlNT
dHJpbmcoVlB0clN0ZWFsaW5nSGFja1R5cGUpIAotICAgICAgICAgICAgOiBKU0NlbGwoMCkKKyAg
ICAgICAgICAgIDogSlNDZWxsKFZQdHJTdGVhbGluZ0hhY2spCiAgICAgICAgICAgICAsIG1fZmli
ZXJDb3VudCgwKQogICAgICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmgKaW5kZXggODgyYjIxODhlOTdiODg2ZWI0ODQ0MzdkYzRjZGVmYzM1ZjlhYjE5
Mi4uZGJhMDNmNjNkMTQ4YTRkYmEzNWQ2MDVhNDNkNTRmZTQ2ZGRhZDAxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTMzLDEwICszMywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTnVtYmVyVHlwZSAgICAgICAgPSAzLAogICAgICAgICBOdWxsVHlwZSAg
ICAgICAgICA9IDQsCiAgICAgICAgIFN0cmluZ1R5cGUgICAgICAgID0gNSwKKyAgICAgICAgTGVh
ZlR5cGUgICAgICAgICAgPSA2LAogICAgICAgICAvLyBUaGUgQ29tcG91bmRUeXBlIHZhbHVlIG11
c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IG1heSBoYXZlIGNoaWxkcmVuCi0gICAgICAg
IENvbXBvdW5kVHlwZSAgICAgID0gNiwKLSAgICAgICAgT2JqZWN0VHlwZSAgICAgICAgPSA3LAot
ICAgICAgICBHZXR0ZXJTZXR0ZXJUeXBlICA9IDgKKyAgICAgICAgQ29tcG91bmRUeXBlICAgICAg
PSA3LAorICAgICAgICBPYmplY3RUeXBlICAgICAgICA9IDgsCisgICAgICAgIEdldHRlclNldHRl
clR5cGUgID0gOQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4IDI4NGQyYjI2OTMyYjVmZGViYWVhYmRk
Nzc5Yjc1YjY1MWRiMmU3MGIuLmFjZGU4MWYxNzhlZTMzMTkxYWUxZDE2MWI2NmUxMjVmM2JlOTIz
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTU0
LDYgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChmbGFncyA8PSAweDFGRik7CiAgICAgICAgICAgICBBU1NFUlQodHlwZSA8PSAweEZGKTsKKyAg
ICAgICAgICAgIEFTU0VSVCh0eXBlID49IENvbXBvdW5kVHlwZSB8fCAhKGZsYWdzICYgT3ZlcnJp
ZGVzTWFya0NoaWxkcmVuKSk7CiAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlIG1lYW5zIChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgJiAhT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UpCiAgICAgICAgICAgICBpZiAoKG1fZmxhZ3MgJiAoSW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
T3ZlcnJpZGVzSGFzSW5zdGFuY2UpKSA9PSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UpCiAgICAgICAg
ICAgICAgICAgbV9mbGFncyB8PSBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCmluZGV4IGQ5NzQyNzM1YjY4M2RlYTAwM2Fi
OGIwNjJhZDU5ZmM3MmMwYzhkYWQuLmFlOWQwMmNjYmFkOTA0YTAxNmI1MDNiYmI3YmVlZDUzZWJm
Y2JkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKQEAgLTQ2Niw2
ICs0NjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVybiBhICE9IEpTVmFsdWUoYik7
IH0KICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTQ2VsbCogYSwgY29uc3QgSlNW
YWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpICE9IGI7IH0KIAorICAgIGJvb2wgaXNab21iaWUo
Y29uc3QgSlNDZWxsKik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNWYWx1
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxl
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmgKaW5kZXggODkxYWRhOGM0M2EzN2FhN2JjMTI2ZTMzMDQ3NTA3MDIwYzNlMzFjOS4uODliYjZi
MDJiNjdkOTlhYzJkYzNkNDVjZjUzODM3OWZjZGZjZjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGNvbnN0ICog
YWRkcmVzc09mUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gJm1fcmVnaXN0ZXJzOyB9CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpAQCAtNjYs
OCArNjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgSlNWYXJpYWJsZU9iamVj
dChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlLCBSZWdpc3RlciogcmVnaXN0ZXJzKQotICAgICAgICAgICAgOiBKU05vbkZpbmFs
T2JqZWN0KHN0cnVjdHVyZSkKKyAgICAgICAgSlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCisgICAgICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bWJv
bFRhYmxlKQogICAgICAgICAgICAgLCBtX3JlZ2lzdGVycyhyZWludGVycHJldF9jYXN0PFdyaXRl
QmFycmllcjxVbmtub3duPio+KHJlZ2lzdGVycykpCiAgICAgICAgIHsKQEAgLTc1LDcgKzc1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSA9PSBzaXplb2YoUmVnaXN0ZXIpLCBSZWdpc3Rlcl9zaG91bGRf
YmVfc2FtZV9zaXplX2FzX1dyaXRlQmFycmllcik7CiAgICAgICAgIH0KIAotICAgICAgICBQYXNz
T3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gY29weVJlZ2lzdGVyQXJyYXkoSlNH
bG9iYWxEYXRhJiwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBjb3VudCk7Cisg
ICAgICAgIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBjb3B5UmVnaXN0
ZXJBcnJheShKU0dsb2JhbERhdGEmLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHNyYywgc2l6ZV90
IGNvdW50LCBzaXplX3QgY2FsbGZyYW1lU3RhcnRzKTsKICAgICAgICAgdm9pZCBzZXRSZWdpc3Rl
cnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxXcml0
ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5KTsKIAogICAgICAgICBib29sIHN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTEzNywxMCAr
MTM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBpbmxpbmUgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IEpTVmFy
aWFibGVPYmplY3Q6OmNvcHlSZWdpc3RlckFycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
V3JpdGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBjb3VudCkKKyAgICBpbmxpbmUgUGFz
c093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IEpTVmFyaWFibGVPYmplY3Q6OmNv
cHlSZWdpc3RlckFycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiBzcmMsIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cykKICAgICB7
CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJy
YXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bY291bnRdKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNhbGxmcmFtZVN0YXJ0czsgaSsrKQorICAgICAgICAgICAgcmVnaXN0
ZXJBcnJheVtpXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3JjW2ldLmdldCgpKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IGNhbGxmcmFtZVN0YXJ0cyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZTsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgICAgICByZWdpc3RlckFycmF5W2ld
LnNldChnbG9iYWxEYXRhLCB0aGlzLCBzcmNbaV0uZ2V0KCkpOwogCiAgICAgICAgIHJldHVybiBy
ZWdpc3RlckFycmF5LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5kZXggNjM4MzNlOWYzNzRlYzdjNzlhYTdhZDgyMGU4YTA0
MTJmYmRhZDM4MC4uYTdkYmUwZDkwMmVmYjkwOWVlYTZlMWI1ZGQwMDg1ZmYxMGZiMjdkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKQEAg
LTMwLDEzICszMCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4g
YW5kIERhdGUgd2hpY2ggYXJlIHdyYXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCiAgICAgY2xh
c3MgSlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4pOworICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTVmFsdWUgaW50ZXJu
YWxWYWx1ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNHbG9iYWxE
YXRhJiwgSlNWYWx1ZSk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkgCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKICAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19p
bmZvKTsKICAgICAgICAgfQpAQCAtNTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJuYWxWYWx1ZTsKICAgICB9OwogCi0gICAg
aW5saW5lIEpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVyT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0
dXJlKQorICAgIGlubGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTTm9u
RmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgIHsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcAppbmRleCAzNWUxMzE1NWE3Njk3
NjNkZjRkOGNhYWIzNDc3NTJjZjkzN2RjZGFjLi5lZmFiYzkzZmMxYmMzNTE5NjEwNmNmZDdkMzA3
NTA5YzVhMzU1OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1pvbWJpZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUu
Y3BwCkBAIC0zNSwxNyArMzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZv
IEpTWm9tYmllOjpzX2luZm8gPSB7ICJab21iaWUiLCAwLCAwLCAwIH07CiAKLVN0cnVjdHVyZSog
SlNab21iaWU6OmxlYWtlZFpvbWJpZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Ci17Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsKLSAgICBpZiAoIXN0cnVj
dHVyZSkgewotICAgICAgICBTdHJ1Y3R1cmU6OnN0YXJ0SWdub3JpbmdMZWFrcygpOwotICAgICAg
ICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBqc051bGwoKSwgVHlw
ZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwgJnNfaW5mbykubGVha1JlZigpOwotICAgICAgICBT
dHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtzKCk7Ci0gICAgfQotICAgIHJldHVybiBzdHJ1Y3R1
cmU7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShKU0NfWk9NQklFUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCmluZGV4IGRmZmYxYTdhNjYzNzMxOGQwMDk5MDQ3
NzkxYmQ4ZDc0MGMyMGIyMDcuLjA1NTliOTY5NGI4OTMwY2QwMWEzNzE1MDE3YmY5OTJhMDhhZDU5
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaApAQCAtMjcsMjEg
KzI3LDIxIEBACiAjZGVmaW5lIEpTWm9tYmllX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgogCiAjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEpTWm9tYmllIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6Ci0gICAg
SlNab21iaWUoY29uc3QgQ2xhc3NJbmZvKiBvbGRJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
LSAgICAgICAgOiBKU0NlbGwoc3RydWN0dXJlKQorICAgIEpTWm9tYmllKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgQ2xhc3NJbmZvKiBvbGRJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICAgICAsIG1f
b2xkSW5mbyhvbGRJbmZvKQogICAgIHsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNab21iaWUoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogbGVha2VkWm9tYmllU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYpOwogCiAgICAgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3QgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
QVBJVmFsdWVXcmFwcGVyKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZh
bHNlOyB9CkBAIC02Niw5ICs2Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3Qm
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgMCksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5
cGUsIFR5cGVJbmZvKExlYWZUeXBlLCAwKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggN2I4NTZhMWI1YjQ2OWNm
N2Y1ZmMyZWRlOWJlYjUyNjNiMDMyZTQ4OC4uNTJiZDc2YWQ0YjhiMDM1NmI2ZDNjYjhlNjU4OTJh
ZWE2MDIyNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVj
dC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OnNfaW5m
byA9IHsgIk1hdGgiLCAmSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8KIEBlbmQKICov
CiAKLU1hdGhPYmplY3Q6Ok1hdGhPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkK
K01hdGhPYmplY3Q6Ok1hdGhPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5o
CmluZGV4IDI2ZWFhZTA0NDk5MjhkZTUxYTVjNGRlNWVkZmZjYmEyZWJkYzU3MTMuLjc1NzUzYmUy
OTIyZTliNzk0YmUyYTE0ODIwYmQ1YWY4MTc1ZjQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmgKQEAgLTI3LDE0ICsyNywxNCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIE1hdGhPYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1hdGhPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgTWF0aE9i
amVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IGQ4ZmRhNjlhODQwN2JkNTBiZWRmM2U0ZWU3YTBhZTM3YzI2ODU5NjYuLjlj
ZDVkY2JmN2YzNWQyZDRiYThiMTRhNWZlMmM2YTBkYTQ5ZGVhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
CkBAIC0zMiw3ICszMiw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcik7CiAKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAgfTsK
IAotTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCitOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKICAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgbmFtZUFuZE1lc3NhZ2UpKQogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CkBAIC00MSwxMyArNDEsMjMgQEAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KgogCiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBtX2Vycm9yU3RydWN0dXJlID0gRXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsK
KyAgICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEVycm9y
SW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSkp
OworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7Cit9CisKK3ZvaWQgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQorewor
ICAgIEludGVybmFsRnVuY3Rpb246Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIGlmICht
X2Vycm9yU3RydWN0dXJlKQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2Vycm9yU3RydWN0
dXJlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
V2l0aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFs
dWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApIDog
anNVbmRlZmluZWQoKTsKICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gc3RhdGljX2Nh
c3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKS0+ZXJyb3JTdHJ1Y3R1
cmUoKTsKKyAgICBBU1NFUlQoZXJyb3JTdHJ1Y3R1cmUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdl
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCAyM2Y3OThlNDcyOWJlYmU3YTk4YzYyZDg0ZDNiZDI2
YzdjMWI3ODA3Li5lOTZkYWY2NDRmYTRhMGE5ZDQzYWE5MTA5ZjViMDk5MzUyODMwOGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCkBAIC0zMSwxMSArMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAg
IHB1YmxpYzoKLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYpOworICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CkBAIC00
MywxMCArNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JT
dHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNNYXJrQ2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAg
ICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0
YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAKLSAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmNwcAppbmRleCA0ZTEwMjY4ZWViMmZlMGU2Yjc1MGUwYWRkMTQ2ZjdjZDcyNmRi
ZWIyLi5kZTI3ZDU5ZWU0ZTJlYTA1YWY1YTAwYWM0N2QwZmNiMjAzYWM4MmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUu
Y3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKE5hdGl2ZUVycm9yUHJvdG90eXBlKTsKIAotTmF0aXZlRXJyb3JQcm90b3R5cGU6
Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvcikKK05hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IpCiAgICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwg
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
clByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQ
cm90b3R5cGUuaAppbmRleCAzMDY5MGQ1YmM3ZTczZjg5YjYxMTRhM2FhYjQ0ZTFjY2NmZjRlYWU5
Li5lMWIwNWNlYjgyYmMzZjQwMmYzMWQ3MzY1OWIzODI5MjU3YTEwZjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKQEAg
LTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvclBy
b3RvdHlwZSA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJiwgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciopOworICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YWVlMTQzYTNmMDdkNTYxNmE2MGIxZGJmYTdjY2ViOTg0ZDZmN2JiZS4uNDE5M2Y3OTgxOGY5MzEx
MGI2YTQxOGMwMjZiMmY1Y2FiZmRiY2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtNTQsNyArNTQsNyBAQCBjb25z
dCBDbGFzc0luZm8gTnVtYmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJklu
dGVybmFsRnVuY3Rpb246OnNfaQogQGVuZAogKi8KIAotTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJl
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlw
ZSogbnVtYmVyUHJvdG90eXBlKQorTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAgIDogSW50
ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUpKQog
ewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAppbmRleCBhYjQ1MDdlNTgzZWIyNWIy
N2FmZjIzNDE5YzQyNzhlMWE3OTYxNTgyLi42OWFhOGExMzIwYTcwZDgwODM3NTRkZWVhY2RmMDEz
YWNiMDAzOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgTnVtYmVyUHJvdG90eXBlKik7Cisg
ICAgICAgIE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgTnVtYmVyUHJvdG90eXBlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90
Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIAorICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvKSAKICAgICAgICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5jcHAKaW5kZXgg
NzRiNWU5ODFlM2FkZjVhNTMzOWMyMTMyNzJjM2Q5NDdkZmI0YjE5MC4uNmVlMTAzYjM4NTYyOTUx
ZTUyMmM1ODM1Mjk1YTkwYTYzMTVmMmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJPYmplY3QuY3BwCkBAIC0zMSw4ICszMSw4IEBAIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoTnVtYmVyT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIE51bWJlck9iamVj
dDo6c19pbmZvID0geyAiTnVtYmVyIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwIH07
CiAKLU51bWJlck9iamVjdDo6TnVtYmVyT2JqZWN0KEpTR2xvYmFsRGF0YSYsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KHN0cnVj
dHVyZSkKK051bWJlck9iamVjdDo6TnVtYmVyT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCmluZGV4IDkwZDBiMjZl
MzA4Mjg0NjI4MGViMTRmYTAwZDhiMzg1YzRiMGM4ZDcuLmNiYTY1ZGQwZjcyNDg0OWY4ZGE2YWQ3
ZWUzNzM3NTI1YjM2M2Y3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlck9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlck9iamVjdC5oCkBAIC0yNywxMSArMjcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBOdW1iZXJPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIGV4cGxpY2l0IE51bWJlck9iamVjdChKU0dsb2JhbERhdGEmLCBOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgZXhwbGljaXQgTnVtYmVyT2JqZWN0KEpTR2xv
YmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwCmluZGV4IDZjMDI3YjM2Y2U5YzU1YjQxMDZmY2JiYWMwNTcyNDU2MjM0MjQ3ODMuLjI0
NTMyZGQ1MTI5MjViZDIyYmYwOGMwMWRlYzFiYTE4OTg3YTNmYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNU
b1ByZWNpc2lvbihFeGVjU3RhdGUqKTsKIAogLy8gRUNNQSAxNS43LjQKIAotTnVtYmVyUHJvdG90
eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0
dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKK051bWJlclByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBOdW1iZXJP
YmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2V0SW50ZXJuYWxW
YWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVtYmVyKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKaW5kZXggMTkxYWI0NzhhM2M3NTQ5
Y2U5OTJiY2VmMTU3ODg5ZTJkZTcyNDUzMS4uNDViZGZlN2JiMmZjZDgwNjBlYjNjNmNlNWJjMjMz
ZmU4ZGJlNTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmgKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBOdW1iZXJQcm90b3R5cGUgOiBwdWJsaWMgTnVtYmVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUpOwor
ICAgICAgICBOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAppbmRleCA2YmQyYTI4MzZlNWNmYjM4NzYwYmE2MDNiMjVhNmI4MDNk
MmFlMjEwLi5hZWQ1ZTI0NmE0M2RmZTU2ZTBiZDM1M2U3Y2I2N2M5OWExMjZiOTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiBAZW5kCiAqLwogCi1P
YmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCitPYmplY3RDb25zdHJ1
Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmpl
Y3RQcm90b3R5cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSkKIHsK
ICAgICAvLyBFQ01BIDE1LjIuMy4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCBiN2JmYzFkNzE3YzcxNzhlMzNjMjk2YWQ3YjRi
OTc0MDFlYWU0M2QxLi42ZWJhZmNkYWRmYWE4YzU2ODQxNGEyMDZkZmEwMjQyZWIzNjQ0MWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVj
dENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAg
ICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBPYmplY3RQcm90b3R5cGUqKTsKKyAgICAgICAgT2Jq
ZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBP
YmplY3RQcm90b3R5cGUqKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICAgICAgc3RhdGljIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAm
c19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggMTg3NDU2ZjIyN2ZlZDQ4OGI2YTAyZTcyY2FiNTU4
NWFhZWU4MDkyMi4uNzQ2OTE3MmM4OTZlNzExNzUwMzE4ZjA3Mjg3ZWQxMTkwMzEyODQ5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CkBAIC00MCw4ICs0MCw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY0xvb2t1cFNldHRlcihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7CiAKLU9iamVjdFByb3RvdHlwZTo6T2Jq
ZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHVjdHVyZSwgU3RydWN0dXJlKiBmdW5j
dGlvblN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qoc3R1Y3R1cmUpCitPYmplY3RQ
cm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3R1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25T
dHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3R1
Y3R1cmUpCiAgICAgLCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lcyh0cnVlKQogewog
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250
RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCmluZGV4IDYxYzhmNTdkMTQ4OGQzNTg2NGFmZTNkOTVhNzg5YWQ4M2RjYTc1ZDEuLjlmYjdm
YWU1YzZlNTc2MWNhZmE0MzQ4NTk5MDMxZTBiMGJiYmMxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCkBAIC0yNyw3ICsyNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2JqZWN0UHJvdG90eXBlIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogZnVuY3Rpb25T
dHJ1Y3R1cmUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFi
bGUuaAppbmRleCBlZGJkMzVmNDhhMjZjMjhkNjlkMGUxYzQ3NDYyOGZhY2U3MTgwMWI4Li5mYzE5
NWNkODdjNWIzNmNlOTNhMTU1NDk1ZTdiMGJmMmExMjI2MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTIyLDYg
KzIyLDcgQEAKICNkZWZpbmUgUHJvcGVydHlNYXBIYXNoVGFibGVfaAogCiAjaW5jbHVkZSAiVVN0
cmluZy5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTI0NCw3ICsyNDUsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJs
ZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCiAgICAgQVNTRVJUKGlzUG93ZXJPZjIobV9pbmRl
eFNpemUpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9i
YWxEYXRhJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCitpbmxpbmUgUHJv
cGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIDogbV9pbmRleFNpemUo
b3RoZXIubV9pbmRleFNpemUpCiAgICAgLCBtX2luZGV4TWFzayhvdGhlci5tX2luZGV4TWFzaykK
ICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihmYXN0TWFsbG9jKGRhdGFTaXpl
KCkpKSkKQEAgLTI1Niw4ICsyNTcsMTAgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5
VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlUYWJsZSYKICAgICBt
ZW1jcHkobV9pbmRleCwgb3RoZXIubV9pbmRleCwgZGF0YVNpemUoKSk7CiAKICAgICBpdGVyYXRv
ciBlbmQgPSB0aGlzLT5lbmQoKTsKLSAgICBmb3IgKGl0ZXJhdG9yIGl0ZXIgPSBiZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKQorICAgIGZvciAoaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgaXRlci0+a2V5LT5yZWYoKTsKKyAgICAgICAg
d3JpdGVCYXJyaWVyKGdsb2JhbERhdGEsIG93bmVyLCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgp
KTsKKyAgICB9CiAKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAg
ICBWZWN0b3I8dW5zaWduZWQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVk
T2Zmc2V0cy5nZXQoKTsKQEAgLTI2NSw3ICsyNjgsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJsZTo6
UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBjb25zdCBQcm9wZXJ0eVRhYmxl
JgogICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzLnNldChuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cykpOwogfQogCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlU
YWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNv
bnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQoraW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5
VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBp
bml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIDogbV9pbmRl
eFNpemUoc2l6ZUZvckNhcGFjaXR5KGluaXRpYWxDYXBhY2l0eSkpCiAgICAgLCBtX2luZGV4TWFz
ayhtX2luZGV4U2l6ZSAtIDEpCiAgICAgLCBtX2luZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4o
ZmFzdFplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSkpCkBAIC0yODAsNiArMjgzLDcgQEAgaW5saW5l
IFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgdW5z
aWduZWQgaW5pdGlhbENhcGEKICAgICAgICAgQVNTRVJUKGNhbkluc2VydCgpKTsKICAgICAgICAg
cmVpbnNlcnQoKml0ZXIpOwogICAgICAgICBpdGVyLT5rZXktPnJlZigpOworICAgICAgICB3cml0
ZUJhcnJpZXIoZ2xvYmFsRGF0YSwgb3duZXIsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOwog
ICAgIH0KIAogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDE5YjRiMzYxZTZjODg0ZDk0MWYwYjczZGVlNTVmZjk1NTZlZDIwYmQuLjNkYTAxOTgxY2Jl
ODczZWU5NzhlNDI2ZmI5MDIwNDJhYmY3NjQ4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIEBlbmQKICovCiAKLVJlZ0V4cENvbnN0cnVjdG9yOjpS
ZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBSZWdFeHBQcm90
b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKK1JlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKICAgICA6
IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIlJlZ0V4cCIpKQogICAgICwgZChhZG9wdFB0cihuZXcg
UmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKSkKIHsKQEAgLTEwOSw3ICsxMDksNyBAQCBSZWdFeHBD
b25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZQogfQogCiBSZWdFeHBNYXRjaGVzQXJyYXk6OlJlZ0V4cE1hdGNoZXNB
cnJheShFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSogZGF0YSkKLSAg
ICA6IEpTQXJyYXkoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUoKSwgZGF0YS0+bGFzdE51bVN1YlBhdHRlcm5zICsgMSwgQ3JlYXRlSW5pdGlh
bGl6ZWQpCisgICAgOiBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgZGF0YS0+bGFzdE51
bVN1YlBhdHRlcm5zICsgMSwgQ3JlYXRlSW5pdGlhbGl6ZWQpCiB7CiAgICAgUmVnRXhwQ29uc3Ry
dWN0b3JQcml2YXRlKiBkID0gbmV3IFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZTsKICAgICBkLT5p
bnB1dCA9IGRhdGEtPmxhc3RJbnB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCmluZGV4IDVlMGIyYjg1MGIxYjhhNmMyYzAwMDg4NzU2
MzVjMmZmYzk5MTVjMDQuLjU0ODY2NGU1ODRmZTEyNjZmNzM4M2I3YTQxOTNiYjBlMTA3NGI2ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaApAQCAtNTcsOSArNTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4
cENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBSZWdFeHBQcm90b3R5cGUqKTsKKyAgICAgICAgUmVn
RXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBS
ZWdFeHBQcm90b3R5cGUqKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2lu
Zm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAppbmRleCA0YjUwMjhiZDk3M2M2MmRhMzZlYWNlMDU4MzNiNjkxNzlkMjQ5Nzkz
Li5kODI0ZWNkYjA4YmUzOGM5Y2IwZmY1Mzg1ZjY0NmMxMjE1NDViMmJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cE9iamVjdDo6c19pbmZvID0geyAiUmVnRXhwIiwgJkpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c18KIEBlbmQKICovCiAKLVJlZ0V4cE9iamVjdDo6UmVn
RXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlLCBOb25OdWxsUGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCkK
K1JlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBOb25OdWxsUGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCkK
ICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkK
ICAgICAsIGQoYWRvcHRQdHIobmV3IFJlZ0V4cE9iamVjdERhdGEocmVnRXhwKSkpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IGZhMjAyNGRj
ZDc1ZTdhYzVjMjY4YzE4NzdlMDY5NDEwMDQyMTViOWYuLjQyNzRmZmY0MTQ5MWQyZTU2NjU5NTgz
MWU1NGM2NjU4MGRiZmRjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKIAotICAg
ICAgICBSZWdFeHBPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgTm9uTnVsbFBhc3NSZWZQdHI8UmVnRXhwPik7CisgICAgICAg
IFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE5vbk51bGxQYXNzUmVm
UHRyPFJlZ0V4cD4pOwogICAgICAgICB2aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsKIAogICAgICAg
ICB2b2lkIHNldFJlZ0V4cChQYXNzUmVmUHRyPFJlZ0V4cD4gcikgeyBkLT5yZWdFeHAgPSByOyB9
CkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggNjE3NDdiMWZjNjU3MWM2YWIw
YmQxMDA0ZDQxOWU3OGIxYjVlMzUzZC4uNWJiOGFkOGJiOTM4MmQ4YzlkYjQ0ODE2ODgyZmQyODZl
NDRmMjJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiAvLyBFQ01B
IDE1LjEwLjUKIAotUmVnRXhwUHJvdG90eXBlOjpSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSkKK1JlZ0V4cFBy
b3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogZnVuY3Rpb25T
dHJ1Y3R1cmUpCiAgICAgOiBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFJl
Z0V4cDo6Y3JlYXRlKCZleGVjLT5nbG9iYWxEYXRhKCksICIiLCBOb0ZsYWdzKSkKIHsKICAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uU3RydWN0dXJlLCAyLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY29tcGlsZSwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZSksIERvbnRFbnVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5k
ZXggNzBkNzdkOWM4NDk2MTUxNTdlNzJmYjAxYTA1ODcwMjYxYTEyYTdhMy4uMmNjNTQwNTg2NTBh
YzIzZmMyOWJjYWIwMmFkYjRiYjE5OTFkNDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBQcm90b3R5cGUgOiBwdWJsaWMgUmVnRXhwT2JqZWN0
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlZ0V4cFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0cnVjdHVyZSogZnVu
Y3Rpb25TdHJ1Y3R1cmUpOworICAgICAgICBSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlKTsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBmMGZmNzU3ODk1MmQyZGRmMWVkNjc4MDhjYTEyZDE1ZmMw
ODRhOTU2Li5kMGEyNjcyYjYxODBmMTliYjExZjdlZjJkOTVmOGViZjJlNTRkYjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgcHVibGljOgogICAgICAgICBTY29wZUNoYWluTm9kZShTY29wZUNoYWluTm9kZSog
bmV4dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKLSAgICAgICAgICAg
IDogSlNDZWxsKGdsb2JhbERhdGEtPnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnNjb3BlQ2hhaW5Ob2Rl
U3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgLCBnbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAg
ICAgICAgICAgICAsIG5leHQoKmdsb2JhbERhdGEsIHRoaXMsIG5leHQpCiAgICAgICAgICAgICAs
IG9iamVjdCgqZ2xvYmFsRGF0YSwgdGhpcywgb2JqZWN0KQpAQCAtNjUsNyArNjUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcmludCgpOwogI2VuZGlmCiAgICAgICAgIAotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlw
ZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
KTsKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKaW5kZXggMjRjNTAxZTU3
MDkzNWZkZTY2YTNhMTMyZjQ5NmZlOWZkMDM3NTExMi4uZTY2NmRlZTE1NzkyYjdmYmU4OTdlNjBk
MmM1MDNkNjIzYjc2ZmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApAQCAtMjksNyArMjksNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KS5zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuc3RyaWN0RXZhbEFjdGl2YXRp
b25TdHJ1Y3R1cmUuZ2V0KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCBlZDA4OGU0ZjZkMDczNmQ5YTBi
ZGI4NDcyNTQ1NWQwZDkzYjI3MDg1Li41NjAyMDJhNTU5ZTZkOWJiNWJjYjU4YjFhOWIxNGMxNTA4
MWJjOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMpCiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nQ29uc3RydWN0b3IpOwogCi1TdHJpbmdDb25zdHJ1
Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5
cGUpCitTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5
cGUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgLy8gRUNNQSAxNS41LjMuMSBTdHJpbmcucHJvdG90
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuaAppbmRleCAzYTQyYzdlOTU2MTI4N2U4NjU4NmYwYWQyNzNkN2U2Mzc3ZjVlMzg2Li4xMTdj
Y2U4Y2E5ODBjM2U3MzczOGU2NWQ5N2FjOGU4NTBhYjExZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdHJpbmdDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmluZ0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKik7Cisg
ICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKik7
CiAKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRh
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApp
bmRleCA0N2U1ODYwYWQ5ZjU0MTkyYzcxZmM0MDUyMDk2ZmRkM2JjMzdmNWE3Li42N2RjMjkxYjA5
ZWNmN2Q3ZWJhODhhYWYyOTZmYTUzNDhlYzIyY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTI5LDIyICsyOSwyMiBAQCBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ09iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJp
bmdPYmplY3Q6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywg
MCwgMCB9OwogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2Jq
ZWN0KHN0cnVjdHVyZSkKK1N0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
ICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNFbXB0eVN0cmluZyhl
eGVjKSk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTU3RyaW5n
KiBzdHJpbmcpCi0gICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQorU3RyaW5nT2JqZWN0
OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNTdHJpbmcqIHN0cmluZykKKyAgICA6IEpTV3JhcHBlck9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJ
bnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmluZyk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3Ry
aW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKLSAgICA6IEpTV3JhcHBlck9iamVjdChz
dHJ1Y3R1cmUpCitTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCisgICAgOiBKU1dyYXBw
ZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEo
KSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGFlMzM3NmQyMmFjZTUzYTgxOWEzMDdkNDkzYzUxNWE5
Mjg3OWQwNjYuLjRjMTYwNDRmYmE2OTg1NzRjZWQ3MzJhMjJjY2Y2ZmM2NmQyNDdiZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC0yOCw4ICsy
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGlj
IEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpbmdPYmplY3QoRXhl
Y1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIFN0cmluZ09i
amVjdChFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3Ry
aW5nJik7CisgICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAg
ICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcm
KTsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgSlNTdHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVy
biBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQogCi0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
V3JhcHBlck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgICAgIFN0cmluZ09iamVjdChKU0ds
b2JhbERhdGEmLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBKU1N0cmluZyopOworICAg
ICAgICBTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNTdHJpbmcqKTsK
ICAgICB9OwogCiAgICAgU3RyaW5nT2JqZWN0KiBhc1N0cmluZ09iamVjdChKU1ZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCmluZGV4IGU0YzcwNjEyMmNl
MTcxM2Q0M2VlOTUzZDFiYzg5Zjc1MGU5YjRlN2MuLjMxMzM5NDQ1OGYzZDAxMTg0MTJjNjQ4ODgw
MzQ0MDI3MjM3Y2FjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQuaApAQCAtMzcsMTIgKzM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCisgICAgICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFVTdHJpbmcmIHN0cmluZykKICAgICAgICAgICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0
cnVjdHVyZSwgc3RyaW5nKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG8pIAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSAKICAgICAg
ICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOyAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggYTZiZjRlNjI1MmViYThiOTFhMjg1
NzI0NDBkZTg0ZDhlMmExN2RjYy4uOTExMTJhNTViODk2NzdlNmM3MjVjNWI0ZWQ1YTQ3Nzg2NWFl
YjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3Rv
dHlwZTo6c19pbmZvID0geyAiU3RyaW5nIiwgJlN0cmluZ09iamVjdDo6c19pbmZvLCAwLAogKi8K
IAogLy8gRUNNQSAxNS41LjQKLVN0cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCitTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkKIHsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCA1N2RlZjIyODFiMWQ1YzQ4ZjEzNGFkNWQ0
MjFlMDc3ZWU1YTA4N2E4Li42YzRiNDc1NjQxM2FjMjcwZjlmN2VhMzI0ODAxM2E4N2U4ZTFmMmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
aApAQCAtMjksMTIgKzI5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5n
UHJvdG90eXBlIDogcHVibGljIFN0cmluZ09iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBT
dHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICAgICAgU3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBiZDdk
OWRkYTkwMTcyYWU2MjVjNzNmMDNiNzNhZWZiMjJjY2EwZjdlLi5lMmQ1NGRjYjhiOTRhZmMyM2Fk
ZTJmMzdlNGU0ZDBjOGEyNDg4ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKQEAgLTYxLDIxICs2MSw2IEBAIGludCBudW1SZW1vdmVzOwogCiBuYW1l
c3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKLXN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFr
Q291bnRlciBzdHJ1Y3R1cmVDb3VudGVyKCJTdHJ1Y3R1cmUiKTsKLQotI2lmIEVOQUJMRShKU0Nf
TVVMVElQTEVfVEhSRUFEUykKLXN0YXRpYyBNdXRleCYgaWdub3JlU2V0TXV0ZXgoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7Ci0gICAgcmV0dXJuIG11dGV4
OwotfQotI2VuZGlmCi0KLXN0YXRpYyBib29sIHNob3VsZElnbm9yZUxlYWtzOwotc3RhdGljIEhh
c2hTZXQ8U3RydWN0dXJlKj4mIGlnbm9yZVNldCA9ICoobmV3IEhhc2hTZXQ8U3RydWN0dXJlKj4p
OwotI2VuZGlmCi0KICNpZiBEVU1QX1NUUlVDVFVSRV9JRF9TVEFUSVNUSUNTCiBzdGF0aWMgSGFz
aFNldDxTdHJ1Y3R1cmUqPiYgbGl2ZVN0cnVjdHVyZVNldCA9ICoobmV3IEhhc2hTZXQ8U3RydWN0
dXJlKj4pOwogI2VuZGlmCkBAIC0xMDYsNDEgKzkxLDQxIEBAIGlubGluZSB2b2lkIFN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTo6cmVtb3ZlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAv
LyBtYXAgbW9kZSkuCiAgICAgICAgIC8vIEFzIHN1Y2gsIHRoZSBwYXNzZWQgc3RydWN0dXJlICpt
dXN0KiBiZSB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbi4KICAgICAgICAgQVNTRVJUKHNpbmdsZVRy
YW5zaXRpb24oKSA9PSBzdHJ1Y3R1cmUpOwotICAgICAgICBzZXRTaW5nbGVUcmFuc2l0aW9uKDAp
OworICAgICAgICBjbGVhclNpbmdsZVRyYW5zaXRpb24oKTsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBDaGVjayB3aGV0aGVyIGEgbWFwcGluZyBleGlzdHMgZm9yIHN0cnVjdHVyZSdzIGtleSwg
YW5kIHdoZXRoZXIgdGhlCiAgICAgICAgIC8vIGVudHJ5IGlzIHN0cnVjdHVyZSAodGhlIGxhdHRl
ciBjaGVjayBtYXkgZmFpbCBpZiB3ZSBpbml0aWFsbHkgaGFkIGEKICAgICAgICAgLy8gdHJhbnNp
dGlvbiB3aXRoIGEgc3BlY2lmaWMgdmFsdWUsIGFuZCB0aGlzIGhhcyBiZWVuIGRlc3BlY2lmaWVk
KS4KICAgICAgICAgVHJhbnNpdGlvbk1hcDo6aXRlcmF0b3IgZW50cnkgPSBtYXAoKS0+ZmluZCht
YWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0cmli
dXRlc0luUHJldmlvdXMpKTsKLSAgICAgICAgaWYgKGVudHJ5ICE9IG1hcCgpLT5lbmQoKSAmJiBz
dHJ1Y3R1cmUgPT0gZW50cnktPnNlY29uZCkKKyAgICAgICAgaWYgKGVudHJ5ICE9IG1hcCgpLT5l
bmQoKSAmJiBzdHJ1Y3R1cmUgPT0gZW50cnkuZ2V0KCkuc2Vjb25kKQogICAgICAgICAgICAgbWFw
KCktPnJlbW92ZShlbnRyeSk7CiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGU6OmFkZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2lubGluZSB2b2lkIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgaWYgKGlzVXNpbmdTaW5nbGVTbG90KCkpIHsKICAgICAg
ICAgU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzaW5nbGVUcmFuc2l0aW9uKCk7CiAK
ICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBmaXJzdCB0cmFuc2l0aW9uIGJlaW5nIGFkZGVk
LgogICAgICAgICBpZiAoIWV4aXN0aW5nVHJhbnNpdGlvbikgewotICAgICAgICAgICAgc2V0U2lu
Z2xlVHJhbnNpdGlvbihzdHJ1Y3R1cmUpOworICAgICAgICAgICAgc2V0U2luZ2xlVHJhbnNpdGlv
bihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBzZWNvbmQgdHJhbnNpdGlvbiBiZWluZyBh
ZGRlZAogICAgICAgICAvLyAob3IgdGhlIGZpcnN0IHRyYW5zaXRpb24gYmVpbmcgZGVzcGVjaWZp
ZWQhKQogICAgICAgICBzZXRNYXAobmV3IFRyYW5zaXRpb25NYXAoKSk7Ci0gICAgICAgIGFkZChl
eGlzdGluZ1RyYW5zaXRpb24pOworICAgICAgICBhZGQoZ2xvYmFsRGF0YSwgZXhpc3RpbmdUcmFu
c2l0aW9uKTsKICAgICB9CiAKICAgICAvLyBBZGQgdGhlIHN0cnVjdHVyZSB0byB0aGUgbWFwLgot
ICAgIHN0ZDo6cGFpcjxUcmFuc2l0aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFw
KCktPmFkZChtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCBzdHJ1Y3R1cmUt
Pm1fYXR0cmlidXRlc0luUHJldmlvdXMpLCBzdHJ1Y3R1cmUpOworICAgIHN0ZDo6cGFpcjxUcmFu
c2l0aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwKCktPmFkZChnbG9iYWxEYXRh
LCBtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fYXR0
cmlidXRlc0luUHJldmlvdXMpLCBzdHJ1Y3R1cmUpOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkg
ewogICAgICAgICAvLyBUaGVyZSBhbHJlYWR5IGlzIGFuIGVudHJ5ISAtIHdlIHNob3VsZCBvbmx5
IGhpdCB0aGlzIHdoZW4gZGVzcGVjaWZ5aW5nLgotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0
LT5zZWNvbmQtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBBU1NFUlQocmVz
dWx0LmZpcnN0LmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAgICAg
ICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAgICAg
ICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBzdHJ1Y3R1cmU7CisgICAgICAgIG1hcCgpLT5zZXQo
cmVzdWx0LmZpcnN0LCBzdHJ1Y3R1cmUpOwogICAgIH0KIH0KIApAQCAtMTg5LDEwICsxNzQsMTAg
QEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKCkKICNlbmRpZgogfQogCi1TdHJ1Y3R1
cmU6OlN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZv
LCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KQotICAgIDogbV90eXBlSW5mbyh0eXBlSW5mbykKLSAgICAsIG1fcHJvdG90eXBlKHByb3RvdHlw
ZSkKLSAgICAsIG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMoMCkKK1N0cnVjdHVyZTo6U3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5
cGVJbmZvJiB0eXBlSW5mbywgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbykKKyAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0
cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fdHlwZUluZm8odHlwZUluZm8pCisgICAg
LCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBtX2NsYXNz
SW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KHR5cGVJbmZv
LmlzRmluYWwoKSA/IEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5IDogSlNOb25G
aW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkpCiAgICAgLCBtX29mZnNldChub09mZnNl
dCkKQEAgLTIwNiwyNyArMTkxLDM2IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTVmFsdWUgcHJv
dG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIHVuc2lnbmVkIGFub255CiAgICAgLCBt
X3ByZXZlbnRFeHRlbnNpb25zKGZhbHNlKQogewogICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7Ci0g
ICAgQVNTRVJUKG1fcHJvdG90eXBlLT5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLT5pc051bGwo
KSk7CisgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNO
dWxsKCkpOworfQogCi0jaWZuZGVmIE5ERUJVRwotI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhS
RUFEUykKLSAgICBNdXRleExvY2tlciBwcm90ZWN0KGlnbm9yZVNldE11dGV4KCkpOwotI2VuZGlm
Ci0gICAgaWYgKHNob3VsZElnbm9yZUxlYWtzKQotICAgICAgICBpZ25vcmVTZXQuYWRkKHRoaXMp
OwotICAgIGVsc2UKLSAgICAgICAgc3RydWN0dXJlQ291bnRlci5pbmNyZW1lbnQoKTsKLSNlbmRp
ZgorY29uc3QgQ2xhc3NJbmZvIFN0cnVjdHVyZTo6c19pbmZvID0geyAiU3RydWN0dXJlIiwgMCwg
MCwgMCB9OwogCi0jaWYgRFVNUF9TVFJVQ1RVUkVfSURfU1RBVElTVElDUwotICAgIGxpdmVTdHJ1
Y3R1cmVTZXQuYWRkKHRoaXMpOwotI2VuZGlmCitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCisgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgdGhpcykKKyAgICAs
IG1fdHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pCisgICAgLCBt
X3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBqc051bGwoKSkKKyAgICAsIG1fY2xhc3NJbmZv
KCZzX2luZm8pCisgICAgLCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KDApCisgICAgLCBtX29m
ZnNldChub09mZnNldCkKKyAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5k
KQorICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCisgICAgLCBtX2hhc0dldHRl
clNldHRlclByb3BlcnRpZXMoZmFsc2UpCisgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0
aWVzKGZhbHNlKQorICAgICwgbV9hdHRyaWJ1dGVzSW5QcmV2aW91cygwKQorICAgICwgbV9zcGVj
aWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQoMCkKKyAgICAsIG1fYW5vbnltb3VzU2xvdENvdW50KDAp
CisgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25zKGZhbHNlKQoreworICAgIEFTU0VSVChtX3Byb3Rv
dHlwZSk7CisgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIWds
b2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKIH0KIAotU3RydWN0dXJlOjpTdHJ1Y3R1cmUo
Y29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKLSAgICA6IG1fdHlwZUluZm8ocHJldmlvdXMtPnR5
cGVJbmZvKCkpCi0gICAgLCBtX3Byb3RvdHlwZShwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBlKCkp
Ci0gICAgLCBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKDApCitTdHJ1Y3R1cmU6OlN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCisg
ICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgLCBtX3R5cGVJbmZvKHByZXZpb3VzLT50eXBlSW5mbygpKQorICAgICwgbV9wcm90
b3R5cGUoZ2xvYmFsRGF0YSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAg
ICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV9wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eShwcmV2aW91cy0+bV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSkKICAgICAs
IG1fb2Zmc2V0KG5vT2Zmc2V0KQpAQCAtMjQwLDU4ICsyMzQsMTEgQEAgU3RydWN0dXJlOjpTdHJ1
Y3R1cmUoY29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICAsIG1fcHJldmVudEV4dGVuc2lv
bnMocHJldmlvdXMtPm1fcHJldmVudEV4dGVuc2lvbnMpCiB7CiAgICAgQVNTRVJUKG1fcHJvdG90
eXBlKTsKLSAgICBBU1NFUlQobV9wcm90b3R5cGUtPmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUt
PmlzTnVsbCgpKTsKLQotI2lmbmRlZiBOREVCVUcKLSNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RI
UkVBRFMpCi0gICAgTXV0ZXhMb2NrZXIgcHJvdGVjdChpZ25vcmVTZXRNdXRleCgpKTsKLSNlbmRp
ZgotICAgIGlmIChzaG91bGRJZ25vcmVMZWFrcykKLSAgICAgICAgaWdub3JlU2V0LmFkZCh0aGlz
KTsKLSAgICBlbHNlCi0gICAgICAgIHN0cnVjdHVyZUNvdW50ZXIuaW5jcmVtZW50KCk7Ci0jZW5k
aWYKLQotI2lmIERVTVBfU1RSVUNUVVJFX0lEX1NUQVRJU1RJQ1MKLSAgICBsaXZlU3RydWN0dXJl
U2V0LmFkZCh0aGlzKTsKLSNlbmRpZgorICAgIEFTU0VSVChtX3Byb3RvdHlwZS5pc09iamVjdCgp
IHx8IG1fcHJvdG90eXBlLmlzTnVsbCgpKTsKIH0KIAogU3RydWN0dXJlOjp+U3RydWN0dXJlKCkK
IHsKLSAgICBpZiAobV9wcmV2aW91cykgewotICAgICAgICBBU1NFUlQobV9uYW1lSW5QcmV2aW91
cyk7Ci0gICAgICAgIG1fcHJldmlvdXMtPm1fdHJhbnNpdGlvblRhYmxlLnJlbW92ZSh0aGlzKTsK
LSAgICB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0jaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURT
KQotICAgIE11dGV4TG9ja2VyIHByb3RlY3QoaWdub3JlU2V0TXV0ZXgoKSk7Ci0jZW5kaWYKLSAg
ICBIYXNoU2V0PFN0cnVjdHVyZSo+OjppdGVyYXRvciBpdCA9IGlnbm9yZVNldC5maW5kKHRoaXMp
OwotICAgIGlmIChpdCAhPSBpZ25vcmVTZXQuZW5kKCkpCi0gICAgICAgIGlnbm9yZVNldC5yZW1v
dmUoaXQpOwotICAgIGVsc2UKLSAgICAgICAgc3RydWN0dXJlQ291bnRlci5kZWNyZW1lbnQoKTsK
LSNlbmRpZgotCi0jaWYgRFVNUF9TVFJVQ1RVUkVfSURfU1RBVElTVElDUwotICAgIGxpdmVTdHJ1
Y3R1cmVTZXQucmVtb3ZlKHRoaXMpOwotI2VuZGlmCi19Ci0KLXZvaWQgU3RydWN0dXJlOjpzdGFy
dElnbm9yaW5nTGVha3MoKQotewotI2lmbmRlZiBOREVCVUcKLSAgICBzaG91bGRJZ25vcmVMZWFr
cyA9IHRydWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBTdHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtz
KCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgc2hvdWxkSWdub3JlTGVha3MgPSBmYWxzZTsKLSNl
bmRpZgogfQogCiB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCkBAIC0zMjEsNyArMjY4LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1h
dGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogCiAgICAgZm9y
IChwdHJkaWZmX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpIC0gMjsgaSA+PSAwOyAtLWkpIHsKICAg
ICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKLSAgICAgICAgUHJvcGVydHlNYXBFbnRy
eSBlbnRyeShnbG9iYWxEYXRhLCAwLCBzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCks
IG1fYW5vbnltb3VzU2xvdENvdW50ICsgc3RydWN0dXJlLT5tX29mZnNldCwgc3RydWN0dXJlLT5t
X2F0dHJpYnV0ZXNJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlv
dXMpOworICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5KGdsb2JhbERhdGEsIHRoaXMsIHN0
cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgbV9hbm9ueW1vdXNTbG90Q291bnQgKyBz
dHJ1Y3R1cmUtPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMsIHN0
cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKSk7CiAgICAgICAgIG1fcHJv
cGVydHlUYWJsZS0+YWRkKGVudHJ5KTsKICAgICB9CiB9CkBAIC0zNDgsMTMgKzI5NSwxMyBAQCB2
b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbgogICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7
CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBPYmplY3RUeXBlKTsKIAogICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlv
biA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHByb3BlcnR5TmFtZS5pbXBsKCks
IGF0dHJpYnV0ZXMpKSB7Ci0gICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMg
PSBleGlzdGluZ1RyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXM7CisgICAgICAg
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBleGlzdGluZ1RyYW5zaXRpb24tPm1f
c3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIGlmIChzcGVjaWZpY1ZhbHVl
SW5QcmV2aW91cyAmJiBzcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyAhPSBzcGVjaWZpY1ZhbHVlKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24t
Pm1fb2Zmc2V0ICE9IG5vT2Zmc2V0KTsKQEAgLTM2Nyw3ICszMTQsNyBAQCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKFN0cnVjdAogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQor
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6
ZV90JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9uLCB3
ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVhZHkg
YSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmlidXRl
cywgYnV0CkBAIC0zODcsMjMgKzMzNCwyMyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLAogICAg
ICAgICBzcGVjaWZpY1ZhbHVlID0gMDsKIAogICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25D
b3VudCgpID4gc19tYXhUcmFuc2l0aW9uTGVuZ3RoKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSk7CisgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvQ2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKICAgICAgICAgb2Zmc2V0ID0gdHJhbnNp
dGlvbi0+cHV0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNW
YWx1ZSk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPj0gc3RydWN0dXJlLT5tX2Fub255bW91c1Ns
b3RDb3VudCk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50
ID09IHRyYW5zaXRpb24tPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAgICAgICAgaWYgKHRyYW5z
aXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKTsKLSAgICAgICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgICAg
ICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFu
c2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0g
Y3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKLSAgICB0cmFuc2l0aW9uLT5tX2NhY2hl
ZFByb3RvdHlwZUNoYWluLnNldChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4uZ2V0KCksIDApOwotICAgIHRyYW5zaXRpb24tPm1fcHJldmlvdXMgPSBzdHJ1Y3R1
cmU7CisgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXQoZ2xvYmFsRGF0
YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsK
KyAgICB0cmFuc2l0aW9uLT5tX3ByZXZpb3VzLnNldChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBz
dHJ1Y3R1cmUpOwogICAgIHRyYW5zaXRpb24tPm1fbmFtZUluUHJldmlvdXMgPSBwcm9wZXJ0eU5h
bWUuaW1wbCgpOwogICAgIHRyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRy
aWJ1dGVzOwotICAgIHRyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPSBzcGVj
aWZpY1ZhbHVlOworICAgIHRyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuc2V0
KGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHNwZWNpZmljVmFsdWUpOwogCiAgICAgaWYgKHN0cnVj
dHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm1faXNQaW5u
ZWRQcm9wZXJ0eVRhYmxlKQpAQCAtNDI1LDUwICszNzIsNTAgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwKIAogICAgIHRyYW5zaXRpb24tPm1fb2Zmc2V0ID0gb2Zmc2V0IC0gc3RydWN0dXJlLT5t
X2Fub255bW91c1Nsb3RDb3VudDsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90
Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7Ci0gICAgc3RydWN0
dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodHJhbnNpdGlvbi5nZXQoKSk7Ci0gICAgcmV0dXJu
IHRyYW5zaXRpb24ucmVsZWFzZSgpOworICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUu
YWRkKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOworICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQog
Ci1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKK1N0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBz
aXplX3QmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSk7CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gdG9VbmNh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAg
U3RydWN0dXJlKiB0cmFuc2l0aW9uID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5yZW1v
dmUocHJvcGVydHlOYW1lKTsKICAgICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9u
eW1vdXNTbG90Q291bnQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENv
dW50ID09IHRyYW5zaXRpb24tPm1fYW5vbnltb3VzU2xvdENvdW50KTsKIAotICAgIHJldHVybiB0
cmFuc2l0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAotUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgcHJv
dG90eXBlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3Ry
dWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKTsKIAotICAgIHRyYW5zaXRpb24tPm1fcHJvdG90eXBlID0gcHJvdG90eXBlOwor
ICAgIHRyYW5zaXRpb24tPm1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBw
cm90b3R5cGUpOwogCiAgICAgLy8gRG9uJ3Qgc2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0
cmFuc2l0aW9uIHRvIHRoaXMuCiAKICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFi
bGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEpOworICAgIHRyYW5z
aXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xv
YmFsRGF0YSwgdHJhbnNpdGlvbik7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUgPSB0cnVlOwogICAgIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RD
b3VudCgpID09IHRyYW5zaXRpb24tPmFub255bW91c1Nsb3RDb3VudCgpKTsKLSAgICByZXR1cm4g
dHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiByZXBsYWNlRnVuY3Rpb24pCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5
RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHJlcGxhY2VGdW5jdGlvbikKIHsKICAgICBBU1NF
UlQoc3RydWN0dXJlLT5tX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA8IG1heFNwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudCk7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9
IGNyZWF0ZShzdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgKyt0cmFuc2l0aW9uLT5tX3NwZWNpZmljRnVu
Y3Rpb25UaHJhc2hDb3VudDsKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNh
biBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9w
ZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAg
ICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRh
YmxlKGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQ
cm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAogICAgIGlmICh0cmFuc2l0aW9uLT5tX3NwZWNpZmljRnVu
Y3Rpb25UaHJhc2hDb3VudCA9PSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpCkBAIC00
NzksNTIgKzQyNiw1MiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpkZXNwZWNp
ZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgIH0KICAgICAKICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5h
bm9ueW1vdXNTbG90Q291bnQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwor
ICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0
dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsK
KyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KTsKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlv
biB0byB0aGlzLgogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNl
c3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3Ry
dWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5t
X3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEs
IHRyYW5zaXRpb24pOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0g
dHJ1ZTsKICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQoKSA9
PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7Ci0gICAgcmV0dXJuIHRyYW5zaXRp
b24ucmVsZWFzZSgpOworICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCi1QYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBEaWN0aW9uYXJ5S2luZCBraW5kKQog
ewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAg
ICAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7
CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CiAKICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShn
bG9iYWxEYXRhKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUt
PmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVy
dHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgdHJhbnNp
dGlvbik7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwog
ICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFyeUtpbmQgPSBraW5kOwogICAgIAogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFub255bW91
c1Nsb3RDb3VudCgpKTsKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHRyYW5zaXRpb247CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRv
Q2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjp0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7CiAgICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5S2luZCk7CiB9CiAKLVBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIHJldHVybiB0b0RpY3Rp
b25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5
S2luZCk7CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHRyYW5z
aXRpb24uCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9
IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAg
IFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgaWYgKHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJs
ZSkgewogICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5t
X3Byb3BlcnR5VGFibGUtPmVuZCgpOwpAQCAtNTMyLDEzICs0NzksMTMgQEAgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3QKICAgICAgICAgICAgIGl0ZXItPmF0dHJpYnV0ZXMgfD0gRG9udERlbGV0ZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRy
YW5zaXRpb247CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHRy
YW5zaXRpb24uCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5z
aXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIGlmICh0cmFuc2l0aW9uLT5tX3Byb3Bl
cnR5VGFibGUpIHsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNp
dGlvbi0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKQEAgLTU0NiwyMyArNDkzLDIzIEBAIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1CiAgICAgICAgICAgICBpdGVyLT5hdHRyaWJ1dGVzIHw9IChEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAotICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3
YW50IHRvIGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnByZXZlbnRF
eHRlbnNpb25zVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUo
c3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKTsKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBu
b3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0
eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKKyAgICB0
cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxl
KGdsb2JhbERhdGEsIHRyYW5zaXRpb24pOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9w
ZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICB0cmFuc2l0aW9uLT5tX3ByZXZlbnRFeHRlbnNpb25zID0g
dHJ1ZTsKIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRy
YW5zaXRpb24tPmFub255bW91c1Nsb3RDb3VudCgpKTsKLSAgICByZXR1cm4gdHJhbnNpdGlvbi5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBt
YXkgd2FudCB0byBjYWNoZSB0aGlzIHByb3BlcnR5LgpAQCAtNjAxLDcgKzU0OCw3IEBAIGJvb2wg
U3RydWN0dXJlOjppc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVj
dCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlz
RGljdGlvbmFyeSgpKTsKICAgICBpZiAoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewpAQCAt
Njg4LDkgKzYzNSw5IEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6Y2hlY2tDb25zaXN0ZW5jeSgp
CiAKICNlbmRpZgogCi1Qcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK1Byb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29w
eVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG93bmVy
KQogewotICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZShnbG9i
YWxEYXRhLCAwLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IDA7CisgICAgcmV0dXJuIG1fcHJvcGVydHlU
YWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCAqbV9wcm9wZXJ0eVRh
YmxlKSA6IDA7CiB9CiAKIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpCkBAIC03NTgsNyArNzA1LDcgQEAgc2l6ZV90IFN0cnVjdHVy
ZTo6cHV0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLAogICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSArIG1f
YW5vbnltb3VzU2xvdENvdW50OwogICAgIEFTU0VSVChuZXdPZmZzZXQgPj0gbV9hbm9ueW1vdXNT
bG90Q291bnQpOwogCi0gICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShn
bG9iYWxEYXRhLCAwLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkp
OworICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwg
dGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIAogICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICByZXR1cm4gbmV3T2Zmc2V0OwpAQCAtODE4LDExICs3
NjUsMjYgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXMoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHIKICAgICB9CiB9CiAKLXZvaWQgU3RydWN0
dXJlOjppbml0aWFsaXplVGhyZWFkaW5nKCkKLXsKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmIEVO
QUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLSAgICBpZ25vcmVTZXRNdXRleCgpOwotI2VuZGlm
Cit2b2lkIFN0cnVjdHVyZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQorewor
ICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgaWYgKG1fcHJvdG90eXBl
KQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3Byb3RvdHlwZSk7CisgICAgaWYgKG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fY2FjaGVkUHJv
dG90eXBlQ2hhaW4pOworICAgIGlmIChtX3ByZXZpb3VzKQorICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKCZtX3ByZXZpb3VzKTsKKyAgICBpZiAobV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cykKKyAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAg
aWYgKG1fZW51bWVyYXRpb25DYWNoZSkKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lbnVt
ZXJhdGlvbkNhY2hlKTsKKyAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgIFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CisgICAgICAg
IGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgcHRyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdp
bigpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAgICAgaWYgKHB0ci0+c3BlY2lmaWNW
YWx1ZSkKKyAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZwdHItPnNwZWNpZmljVmFs
dWUpOworICAgICAgICB9CisgICAgfQogfQogCiAjaWYgRE9fUFJPUEVSVFlNQVBfQ09OU1RFTkNZ
X0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDk0
YTA2YjJmOTY5ZjJlZDNmZjdkZGUwYmU2ZjExY2I4NDhkY2I4MTAuLjAxMGZkZmQyZWM4NjhlNTky
YmE1MDllM2YzZjk4YWIwODdhZTIwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCkBAIC01NSw0OSArNTUsNDEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMKICAgICB9OwogCi0gICAgY2xhc3MgU3RydWN0dXJl
IDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlPiB7CisgICAgY2xhc3MgU3RydWN0dXJlIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8m
IHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZv
LCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cnVjdHVyZShw
cm90b3R5cGUsIHR5cGVJbmZvLCBhbm9ueW1vdXNTbG90Q291bnQsIGNsYXNzSW5mbykpOworICAg
ICAgICAgICAgQVNTRVJUKGdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgKCZnbG9iYWxEYXRhKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCB0eXBlSW5mbywgYW5vbnltb3VzU2xvdENvdW50LCBjbGFzc0luZm8pOwogICAgICAgICB9
CiAKLSAgICAgICAgZW51bSBWUHRyU3RlYWxpbmdIYWNrVHlwZSB7IFZQdHJTdGVhbGluZ0hhY2sg
fTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGUoVlB0clN0ZWFs
aW5nSGFja1R5cGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cnVjdHVyZShqc051bGwoKSwgVHlwZUluZm8o
VW5zcGVjaWZpZWRUeXBlKSwgMCwgY2xhc3NJbmZvKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgdm9pZCBzdGFydElnbm9yaW5nTGVha3MoKTsKLSAgICAgICAgc3RhdGljIHZvaWQgc3Rv
cElnbm9yaW5nTGVha3MoKTsKLQogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygp
OwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXpl
X3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b1VuY2FjaGVhYmxl
RGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZnJl
ZXplVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3Bl
cnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lm
eUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGdldHRlclNldHRlclRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogc2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGZyZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKik7CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHByZXZlbnRFeHRlbnNpb25zVHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICBib29sIGlzU2VhbGVk
KEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwog
ICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRl
bnNpb25zOyB9CiAKLSAgICAgICAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CisgICAgICAgIFN0cnVjdHVy
ZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsK
IAogICAgICAgICB+U3RydWN0dXJlKCk7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVz
ZWQgd2l0aCBjYXV0aW9uLiAgCiAgICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90
IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0
VHJhbnNpdGlvbihKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsg
fQorICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2Jh
bERhdGEsIHRoaXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0
aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFy
eUtpbmQ7IH0KICAgICAgICAgYm9vbCBpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgPT0gVW5jYWNoZWREaWN0aW9uYXJ5S2luZDsgfQpAQCAt
MTA3LDExICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIHN0b3JlZFBy
b3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1
Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZv
aWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fcHJvdG90eXBlKQotICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
Jm1fcHJvdG90eXBlKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJr
U3RhY2smKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IHJldHVy
biBtX3ByZXZpb3VzLmdldCgpOyB9CiAKQEAgLTE0Nyw4ICsxMzUsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1fY2xhc3NJbmZvOyB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGlu
ZygpOwotCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJvdG90eXBlT2Zmc2V0KCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJv
dG90eXBlKTsKQEAgLTE2NCwyMSArMTUwLDMxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8pICsgVHlwZUlu
Zm86OnR5cGVPZmZzZXQoKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoJmdsb2JhbERhdGEpIFN0cnVjdHVyZShnbG9iYWxEYXRhKTsKKyAg
ICAgICAgfQorCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90
eXBlLCBjb25zdCBUeXBlSW5mbyYsIHVuc2lnbmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3Qg
Q2xhc3NJbmZvKik7Ci0gICAgICAgIFN0cnVjdHVyZShjb25zdCBTdHJ1Y3R1cmUqKTsKKyAgICAg
ICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBl
SW5mbyYsIHVuc2lnbmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZvKik7Cisg
ICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CisgICAgICAgICAgICBBU1NFUlQoZ2xvYmFs
RGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoJmdsb2Jh
bERhdGEpIFN0cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAg
ICAgIAorCisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOworCiAgICAgICAg
IHR5cGVkZWYgZW51bSB7IAogICAgICAgICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwKICAg
ICAgICAgICAgIENhY2hlZERpY3Rpb25hcnlLaW5kID0gMSwKICAgICAgICAgICAgIFVuY2FjaGVk
RGljdGlvbmFyeUtpbmQgPSAyCiAgICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBEaWN0aW9uYXJ5S2luZCk7CisgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
RGljdGlvbmFyeUtpbmQpOwogCiAgICAgICAgIHNpemVfdCBwdXQoSlNHbG9iYWxEYXRhJiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwq
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgcmVtb3ZlKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSk7CkBAIC0xODksNyArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYpOwogICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsK
IAotICAgICAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEm
KTsKKyAgICAgICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiBvd25lcik7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CkBAIC0yMTMsMTgg
KzIwOSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBUeXBlSW5mbyBtX3R5cGVJbmZv
OwogCi0gICAgICAgIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4gbV9wcm90b3R5cGU7Ci0gICAgICAg
IG11dGFibGUgV2VhazxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKKyAg
ICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fcHJvdG90eXBlOworICAgICAgICBtdXRhYmxl
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKIAot
ICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3ByZXZpb3VzOworICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3ByZXZpb3VzOwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9u
YW1lSW5QcmV2aW91czsKLSAgICAgICAgSlNDZWxsKiBtX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
OworICAgICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBtX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
OwogCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAKICAgICAgICAgU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlIG1fdHJhbnNpdGlvblRhYmxlOwogCi0gICAgICAgIFdlYWs8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4gbV9lbnVtZXJhdGlvbkNhY2hlOworICAgICAgICBXcml0
ZUJhcnJpZXI8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4gbV9lbnVtZXJhdGlvbkNhY2hlOwogCiAg
ICAgICAgIE93blB0cjxQcm9wZXJ0eVRhYmxlPiBtX3Byb3BlcnR5VGFibGU7CiAKQEAgLTI3Nyw3
ICsyNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5j
bGFzc0luZm8oKTsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IEpT
Q2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAg
IGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIGpzTnVsbCgpLCBUeXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpLCBBbm9ueW1v
dXNTbG90Q291bnQsIDApOwogICAgIH0KQEAgLTI5OSw2ICsyOTUsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoY2VsbCk7CiAgICAgfQogCisgICAgaW5s
aW5lIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6S2V5IFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZTo6V2Vha0dDTWFwRmluYWxpemVyQ2FsbGJhY2s6OmtleUZvckZpbmFsaXplcih2b2lk
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gSGFzaDo6S2V5
KHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgc3RydWN0dXJlLT5tX2F0dHJpYnV0
ZXNJblByZXZpb3VzKTsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
U3RydWN0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmNwcAppbmRleCBhYjUxYzAyNGRjYjQzYzBkODgwNjE0ZTMyNjI4NzQ3YjA5MDY1M2I3
Li5hZDZhYmZmODE2MDM5NGQ2NDBjNDhiZTI1MTIzMzFiNWJlZDM4OTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC0zNCwxOSAr
MzQsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiBDbGFzc0luZm8gU3RydWN0dXJlQ2hhaW46
OnNfaW5mbyA9IHsgIlN0cnVjdHVyZUNoYWluIiwgMCwgMCwgMCB9OwogCi1TdHJ1Y3R1cmVDaGFp
bjo6U3RydWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogaGVhZCkKLSAgICA6IEpTQ2VsbChzdHJ1Y3R1cmUucmVsZWFzZVJlZigpKQor
U3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogaGVhZCkKKyAgICA6IEpTQ2VsbChnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgc2l6ZV90IHNpemUgPSAwOwogICAgIGZvciAoU3Ry
dWN0dXJlKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3Jl
ZFByb3RvdHlwZSgpLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3Rv
dHlwZSgpKS0+c3RydWN0dXJlKCkpCiAgICAgICAgICsrc2l6ZTsKICAgICAKLSAgICBtX3ZlY3Rv
ciA9IGFkb3B0QXJyYXlQdHIobmV3IFJlZlB0cjxTdHJ1Y3R1cmU+W3NpemUgKyAxXSk7CisgICAg
bV92ZWN0b3IgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPltzaXpl
ICsgMV0pOwogCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50
ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpLmlz
TnVsbCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpKS0+c3RydWN0
dXJlKCkpCi0gICAgICAgIG1fdmVjdG9yW2krK10gPSBjdXJyZW50OwotICAgIG1fdmVjdG9yW2ld
ID0gMDsKKyAgICAgICAgbV92ZWN0b3JbaSsrXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgY3VycmVu
dCk7CisgICAgbV92ZWN0b3JbaV0uY2xlYXIoKTsKIH0KIAogU3RydWN0dXJlQ2hhaW46On5TdHJ1
Y3R1cmVDaGFpbigpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgU3RydWN0dXJlQ2hhaW46Om1hcmtD
aGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBzaXplX3QgaSA9IDA7CiAgICAg
d2hpbGUgKG1fdmVjdG9yW2ldKQotICAgICAgICBtX3ZlY3RvcltpKytdLT5tYXJrQWdncmVnYXRl
KG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fdmVjdG9yW2krK10pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCmluZGV4IDgzNDk2OWZjN2IwOWE4YmFhMWUxNmE4NWQwZWE5N2Fj
NDBhZTk1MjIuLmI5ODRiZTZhNmRjOGE2N2JiODAxN2E2MTQxMGZiOTU0ODVkZTQ3N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNDIs
MTYgKzQyLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3ICgmZ2xv
YmFsRGF0YSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVy
ZSwgaGVhZCk7IH0KLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBt
X3ZlY3Rvci5nZXQoKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3ICgm
Z2xvYmFsRGF0YSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgICAgICB2b2lk
IG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgMCwg
JnNfaW5mbyk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBl
LCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCAwLCAmc19pbmZvKTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgU3RydWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3Ry
dWN0dXJlKiBoZWFkKTsKKyAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgU3RydWN0dXJlKiBoZWFkKTsKICAgICAgICAgflN0cnVjdHVyZUNoYWluKCk7Ci0g
ICAgICAgIE93bkFycmF5UHRyPFJlZlB0cjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CisgICAgICAg
IE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgICAg
IHN0YXRpYyBDbGFzc0luZm8gc19pbmZvOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXgg
ZGE3OGUxYjk5NjgzMjZlZGEzNjY0MTZkY2YxZWI0MTk2ODYwMTRhNi4uNWY2ZTVmYTRlZjI0YmUw
YmVhYzNkYWVlOTA4NWJhNzhiODc3ZmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTI3LDggKzI3
LDggQEAKICNkZWZpbmUgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlX2gKIAogI2luY2x1ZGUgIlVT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWFrR0NNYXAuaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0
aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFp
dHMuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtNjksNyArNjksMTYgQEAgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIHsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyBy
ZXR1cm4gRmlyc3RUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKHZhbHVlLmZpcnN0KTsgfQogICAgIH07
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8SGFzaDo6S2V5LCBTdHJ1Y3R1cmUqLCBIYXNoLCBIYXNo
VHJhaXRzPiBUcmFuc2l0aW9uTWFwOworICAgIHN0cnVjdCBXZWFrR0NNYXBGaW5hbGl6ZXJDYWxs
YmFjayB7CisgICAgICAgIHN0YXRpYyB2b2lkKiBmaW5hbGl6ZXJDb250ZXh0Rm9yKEhhc2g6Oktl
eSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBIYXNoOjpLZXkga2V5Rm9yRmluYWxpemVyKHZvaWQqIGNvbnRleHQs
IFN0cnVjdHVyZSopOworICAgIH07CisKKyAgICB0eXBlZGVmIFdlYWtHQ01hcDxIYXNoOjpLZXks
IFN0cnVjdHVyZSwgV2Vha0dDTWFwRmluYWxpemVyQ2FsbGJhY2ssIEhhc2gsIEhhc2hUcmFpdHM+
IFRyYW5zaXRpb25NYXA7CiAKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUo
KQpAQCAtODEsOSArOTAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFpc1VzaW5n
U2luZ2xlU2xvdCgpKQogICAgICAgICAgICAgZGVsZXRlIG1hcCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjbGVhclNpbmdsZVRyYW5zaXRpb24oKTsKICAgICB9CiAKLSAgICBpbmxpbmUg
dm9pZCBhZGQoU3RydWN0dXJlKik7CisgICAgaW5saW5lIHZvaWQgYWRkKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogICAgIGlubGluZSB2b2lkIHJlbW92ZShTdHJ1Y3R1cmUqKTsKICAgICBp
bmxpbmUgYm9vbCBjb250YWlucyhTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
IGNvbnN0OwogICAgIGlubGluZSBTdHJ1Y3R1cmUqIGdldChTdHJpbmdJbXBsKiByZXAsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpIGNvbnN0OwpAQCAtMTAwLDkgKzExMSwxOCBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUcmFuc2l0aW9uTWFwKj4obV9kYXRhKTsKICAg
ICB9CiAKKyAgICBIYW5kbGVTbG90IHNsb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzVXNpbmdTaW5nbGVTbG90KCkpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxI
YW5kbGVTbG90PihtX2RhdGEgJiB+VXNpbmdTaW5nbGVTbG90RmxhZyk7CisgICAgfQorCiAgICAg
dm9pZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFwKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlz
VXNpbmdTaW5nbGVTbG90KCkpOworICAgICAgICAKKyAgICAgICAgaWYgKEhhbmRsZVNsb3Qgc2xv
dCA9IHRoaXMtPnNsb3QoKSkKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCkt
PmRlYWxsb2NhdGUoc2xvdCk7CiAKICAgICAgICAgLy8gVGhpcyBpbXBsaWNpdGx5IGNsZWFycyB0
aGUgZmxhZyB0aGF0IGluZGljYXRlcyB3ZSdyZSB1c2luZyBhIHNpbmdsZSB0cmFuc2l0aW9uCiAg
ICAgICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1hcCk7CkBAIC0xMTMs
MTMgKzEzMywyOSBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogc2luZ2xlVHJhbnNpdGlvbigp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNVc2luZ1NpbmdsZVNsb3QoKSk7Ci0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KG1fZGF0YSAmIH5Vc2luZ1Np
bmdsZVNsb3RGbGFnKTsKKyAgICAgICAgaWYgKEhhbmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3Qo
KSkKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KHNsb3Qt
PmFzQ2VsbCgpKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgdm9pZCBzZXRTaW5n
bGVUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIAorICAgIHZvaWQgY2xlYXJT
aW5nbGVUcmFuc2l0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xv
dCgpKTsKKyAgICAgICAgaWYgKEhhbmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKSkKKyAgICAg
ICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc2V0U2luZ2xlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVXNp
bmdTaW5nbGVTbG90KCkpOwotICAgICAgICBtX2RhdGEgPSByZWludGVycHJldF9jYXN0PGludHB0
cl90PihzdHJ1Y3R1cmUpIHwgVXNpbmdTaW5nbGVTbG90RmxhZzsKKyAgICAgICAgSGFuZGxlU2xv
dCBzbG90ID0gdGhpcy0+c2xvdCgpOworICAgICAgICBpZiAoIXNsb3QpIHsKKyAgICAgICAgICAg
IHNsb3QgPSBnbG9iYWxEYXRhLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7CisgICAgICAgICAgICBI
YW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCAwLCAwKTsKKyAgICAgICAg
ICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHNsb3QpIHwgVXNpbmdTaW5n
bGVTbG90RmxhZzsKKyAgICAgICAgfQorICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3Qp
LT53cml0ZUJhcnJpZXIoc2xvdCwgcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihzdHJ1Y3R1cmUp
KTsKKyAgICAgICAgKnNsb3QgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHN0cnVjdHVyZSk7
CiAgICAgfQogCiAgICAgaW50cHRyX3QgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrR0NNYXAuaAppbmRleCAyYWZmMDlhMTJjYmJkMzQ1NzNlZTZhZDA1NzFiMTFmNjc1
ZTc3NmYxLi41YWQxYzYyYTNlOTcyOThkMjQwNDdmNjQ5ODc4ZDE5NzI1OWUyMmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAtMzQsMTcgKzM0LDMxIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAvLyBBIEhhc2hNYXAgZm9yIEdDJ2QgdmFsdWVzIHRoYXQgcmVt
b3ZlcyBlbnRyaWVzIHdoZW4gdGhlIGFzc29jaWF0ZWQgdmFsdWUKIC8vIGRpZXMuCi10ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBjbGFzcyBXZWFrR0NNYXAg
OiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5VHlwZSwg
dHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IERlZmF1bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxs
YmFjayB7CisgICAgc3RhdGljIHZvaWQqIGZpbmFsaXplckNvbnRleHRGb3IoS2V5VHlwZSBrZXkp
CisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oa2V5KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgS2V5VHlwZSBrZXlGb3JGaW5hbGl6ZXIodm9pZCogY29udGV4dCwg
dHlwZW5hbWUgSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OkV4dGVybmFsVHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEtleVR5cGU+KGNvbnRleHQpOworICAgIH0K
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5
cGVuYW1lIEZpbmFsaXplckNhbGxiYWNrID0gRGVmYXVsdFdlYWtHQ01hcEZpbmFsaXplckNhbGxi
YWNrPEtleVR5cGUsIE1hcHBlZFR5cGU+LCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVm
YXVsdEhhc2g8S2V5VHlwZT46Okhhc2gsIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFp
dHM8S2V5VHlwZT4gPgorY2xhc3MgV2Vha0dDTWFwIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYWtHQ01hcCk7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8S2V5VHlwZSwgSGFuZGxlU2xvdD4g
TWFwVHlwZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8S2V5VHlwZSwgSGFuZGxlU2xvdCwgSGFzaEFy
ZywgS2V5VHJhaXRzQXJnPiBNYXBUeXBlOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlVHlw
ZXM8TWFwcGVkVHlwZT46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBtYXBfaXRlcmF0b3I7CiAKIHB1YmxpYzoKIAogICAg
IHN0cnVjdCBpdGVyYXRvciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBXZWFrR0NNYXA7CiAgICAg
ICAgIGl0ZXJhdG9yKG1hcF9pdGVyYXRvciBpdGVyKQogICAgICAgICAgICAgOiBtX2l0ZXJhdG9y
KGl0ZXIpCiAgICAgICAgIHsKQEAgLTYyLDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yICE9IG90aGVyLm1faXRlcmF0b3I7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgICAgIG1hcF9pdGVyYXRvciBtX2l0ZXJhdG9yOworICAgICAgICBtYXBfaXRlcmF0b3IgbV9p
dGVyYXRvcjsKICAgICB9OwogCiAgICAgV2Vha0dDTWFwKCkKQEAgLTc4LDYgKzkyLDI1IEBAIHB1
YmxpYzoKICAgICAgICAgbV9tYXAuY2xlYXIoKTsKICAgICB9CiAKKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hcC5j
b250YWlucyhrZXkpOworICAgIH0KKworICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYg
a2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFwLmZpbmQoa2V5KTsKKyAgICB9CisKKyAg
ICB2b2lkIHJlbW92ZShpdGVyYXRvciBpdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGl0ZXIu
bV9pdGVyYXRvciAhPSBtX21hcC5lbmQoKSk7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGl0
ZXIubV9pdGVyYXRvci0+c2Vjb25kOworICAgICAgICBBU1NFUlQoc2xvdCk7CisgICAgICAgIEhh
bmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPmRlYWxsb2NhdGUoc2xvdCk7CisgICAgICAgIG1fbWFw
LnJlbW92ZShpdGVyLm1faXRlcmF0b3IpOworICAgIH0KKwogICAgIEV4dGVybmFsVHlwZSBnZXQo
Y29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEhhbmRsZVR5
cGVzPE1hcHBlZFR5cGU+OjpnZXRGcm9tU2xvdChtX21hcC5nZXQoa2V5KSk7CkBAIC04OCw2ICsx
MjEsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tYXAuZ2V0KGtleSk7CiAgICAgfQog
CisgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgeworICAgICAgICBw
YWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtl
eSwgMCk7CisgICAgICAgIGlmIChpdGVyLnNlY29uZCkgeworICAgICAgICAgICAgSGFuZGxlU2xv
dCBzbG90ID0gZ2xvYmFsRGF0YS5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpOworICAgICAgICAgICAg
aXRlci5maXJzdC0+c2Vjb25kID0gc2xvdDsKKyAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBG
b3Ioc2xvdCktPm1ha2VXZWFrKHNsb3QsIHRoaXMsIEZpbmFsaXplckNhbGxiYWNrOjpmaW5hbGl6
ZXJDb250ZXh0Rm9yKGtleSkpOworICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90
KS0+d3JpdGVCYXJyaWVyKHNsb3QsIHZhbHVlKTsKKyAgICAgICAgICAgICpzbG90ID0gdmFsdWU7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl0ZXI7CisgICAgfQorICAgIAorICAgIHZvaWQg
c2V0KGl0ZXJhdG9yIGl0ZXIsIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEhh
bmRsZVNsb3Qgc2xvdCA9IGl0ZXIubV9pdGVyYXRvci0+c2Vjb25kOworICAgICAgICBBU1NFUlQo
c2xvdCk7CisgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihz
bG90LCB2YWx1ZSk7CisgICAgICAgICpzbG90ID0gdmFsdWU7CisgICAgfQorCiAgICAgdm9pZCBz
ZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFs
VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHBhaXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0
b3IsIGJvb2w+IGl0ZXIgPSBtX21hcC5hZGQoa2V5LCAwKTsKQEAgLTEyMiw5ICsxNzYsOSBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUo
SGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KQorICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6
ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogICAgIHsKLSAgICAgICAg
SGFuZGxlU2xvdCBzbG90ID0gbV9tYXAudGFrZShzdGF0aWNfY2FzdDxLZXlUeXBlPihjb250ZXh0
KSk7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IG1fbWFwLnRha2UoRmluYWxpemVyQ2FsbGJh
Y2s6OmtleUZvckZpbmFsaXplcihjb250ZXh0LCBIYW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6Z2V0
RnJvbVNsb3QoaGFuZGxlLnNsb3QoKSkpKTsKICAgICAgICAgQVNTRVJUKHNsb3QpOwogICAgICAg
ICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5kZWFsbG9jYXRlKHNsb3QpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKaW5kZXggMzRkZWJh
MmE2MDQ4ODI1MGFiMWY1YjBmMjU5ZTdhOWY0OWFmY2Q5MS4uZjkzYzI1MDM5ZTQxNGQ1ZjVjODZi
OTk4N2U2YjJjZmQ1NGI0MDMzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V3JpdGVCYXJyaWVyLmgKQEAgLTMyLDYgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
SlNDZWxsOwogY2xhc3MgSlNHbG9iYWxEYXRhOwogCitpbmxpbmUgdm9pZCB3cml0ZUJhcnJpZXIo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSkKK3sKK30KKworaW5saW5lIHZv
aWQgd3JpdGVCYXJyaWVyKEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopCit7
Cit9CisKIHR5cGVkZWYgZW51bSB7IH0gVW5rbm93bjsKIHR5cGVkZWYgSlNWYWx1ZSogSGFuZGxl
U2xvdDsKIApAQCAtOTIsNyArMTAwLDE2IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBKU1ZhbHVlQ2hl
Y2tlcjxKU1ZhbHVlPiB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVy
QmFzZSB7CiBwdWJsaWM6CiAgICAgQ09NUElMRV9BU1NFUlQoIUpTVmFsdWVDaGVja2VyPFQ+OjpJ
c0pTVmFsdWUsIFdyaXRlQmFycmllcl9KU1ZhbHVlX2lzX2ludmFsaWRfX3VzZV91bmtub3duKTsK
LSAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqLCBUKiB2YWx1ZSkgeyB0
aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsgfQorICAgIHZv
aWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCog
dmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG93bmVyLCBvd25lcik7CisgICAg
ICAgIHRoaXMtPm1fY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOworICAg
ICAgICB3cml0ZUJhcnJpZXIoZ2xvYmFsRGF0YSwgb3duZXIsIHRoaXMtPm1fY2VsbCk7CisjaWYg
RU5BQkxFKEpTQ19aT01CSUVTKQorICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG93bmVyKSk7Cisg
ICAgICAgIEFTU0VSVCghaXNab21iaWUobV9jZWxsKSk7CisjZW5kaWYKKyAgICB9CiAgICAgCiAg
ICAgVCogZ2V0KCkgY29uc3QKICAgICB7CkBAIC0xMDEsMTEgKzExOCwxNiBAQCBwdWJsaWM6CiAK
ICAgICBUKiBvcGVyYXRvciooKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2VsbCk7
CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG1fY2Vs
bCkpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsKICAg
ICB9CiAKICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVCht
X2NlbGwpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7CiAgICAgfQog
CkBAIC0xMTgsNyArMTQwLDEzIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX2NlbGw7IH0KIAotICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFy
cmllcihUKiB2YWx1ZSkgeyB0aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+
KHZhbHVlKTsgfQorICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihUKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHRoaXMtPm1fY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFs
dWUpOworI2lmIEVOQUJMRShKU0NfWk9NQklFUykKKyAgICAgICAgQVNTRVJUKCFtX2NlbGwgfHwg
IWlzWm9tYmllKG1fY2VsbCkpOworI2VuZGlmCisgICAgfQogCiBwcml2YXRlOgogICAgIEpTQ2Vs
bCogbV9jZWxsOwpAQCAtMTI2LDE4ICsxNTQsMzMgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPD4g
Y2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXQo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0g
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQotICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmll
cihKU1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyB9Ci0g
ICAgSlNWYWx1ZSBnZXQoKSBjb25zdAorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQob3duZXIsIG93bmVyKTsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisg
ICAgICAgIEFTU0VSVCghaXNab21iaWUob3duZXIpKTsKKyAgICAgICAgQVNTRVJUKCF2YWx1ZS5p
c1pvbWJpZSgpKTsKKyNlbmRpZgorICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKGdsb2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7Cisg
ICAgfQorICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlIHZhbHVlKQogICAg
IHsKICNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghSlNWYWx1ZTo6ZGVj
b2RlKG1fdmFsdWUpIHx8ICFKU1ZhbHVlOjpkZWNvZGUobV92YWx1ZSkuaXNab21iaWUoKSk7Cisg
ICAgICAgIEFTU0VSVCghdmFsdWUuaXNab21iaWUoKSk7CiAjZW5kaWYKKyAgICAgICAgbV92YWx1
ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgfQorCisgICAgSlNWYWx1ZSBnZXQoKSBj
b25zdAorICAgIHsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX3ZhbHVlKTsKICAg
ICB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOyB9CiAgICAgdm9pZCBzZXRVbmRlZmluZWQoKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7IH0KICAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
Z2V0KCkuaXNOdW1iZXIoKTsgfQorICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBn
ZXQoKS5pc09iamVjdCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBnZXQo
KS5pc051bGwoKTsgfQogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBn
ZXQoKS5pc0dldHRlclNldHRlcigpOyB9CiAgICAgCiAgICAgSlNWYWx1ZSogc2xvdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0NoYW5nZUxvZwppbmRleCA5ZTNjZDc5MzExNTc1MDQ1Y2Q1MGVlODUzZTE0MDAwNTBj
ZjVmYTQzLi5lODc0MTUyMjI5MDQ4YWI1OTA2YzQ5MTBiMmI3ODMzMzhlZWY3ZTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdDIGFsbG9jYXRlIFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODMKKworICAgICAgICBGaXggdXAgSlNH
IHRvIGNvcnJlY3RseSBtYXJrIFN0cnVjdHVyZSwgZXQgYWwuCisKKyAgICAgICAgKiBKU1J1bi5j
cHA6CisgICAgICAgIChKU0dsdWVHbG9iYWxPYmplY3Q6OkpTR2x1ZUdsb2JhbE9iamVjdCk6Cisg
ICAgICAgICogSlNSdW4uaDoKKyAgICAgICAgKiBKU1V0aWxzLmNwcDoKKyAgICAgICAgKEpTT2Jq
ZWN0S0pTVmFsdWUpOgorICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAgICAoVXNl
ck9iamVjdEltcDo6VXNlck9iamVjdEltcCk6CisgICAgICAgICogVXNlck9iamVjdEltcC5oOgor
ICAgICAgICAoVXNlck9iamVjdEltcDo6Y3JlYXRlU3RydWN0dXJlKToKKwogMjAxMS0wNC0wOCAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5jcHAKaW5kZXggYTgwOTZhYTRiYWM3MzVl
NWI3NjQ2ZDk1MzkyYmExZGViMDk4YTIxYS4uM2I5ZDI0NWVhMzg0MmQ4Nzg1OTk0Njc4YTM4MTUz
ZTk1YzlmZGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uY3BwCkBAIC0zMywxMCArMzMsMTAgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU291cmNlQ29kZS5oPgogCi1KU0dsdWVHbG9iYWxPYmplY3Q6OkpTR2x1ZUdsb2Jh
bE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIEpTRmxhZ3MgZmxhZ3MpCi0gICAgOiBKU0dsb2JhbE9iamVjdChzdHJ1Y3R1cmUp
CitKU0dsdWVHbG9iYWxPYmplY3Q6OkpTR2x1ZUdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0ZsYWdzIGZsYWdzKQorICAgIDogSlNH
bG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9mbGFncyhmbGFncykK
LSAgICAsIG1fdXNlck9iamVjdFN0cnVjdHVyZShVc2VyT2JqZWN0SW1wOjpjcmVhdGVTdHJ1Y3R1
cmUoZ2xvYmFsRGF0YSwganNOdWxsKCkpKQorICAgICwgbV91c2VyT2JqZWN0U3RydWN0dXJlKGds
b2JhbERhdGEsIFVzZXJPYmplY3RJbXA6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxEYXRhLCBqc051
bGwoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5o
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgKaW5kZXggMWY1MGYzNzY5NmYzNzE4OGEy
YjYzZDFmZDU2YzdjOWE4MzQ5OGNmOC4uOWZlNzc2NzllNGM5MzVkMTY4OGJlYzZhMzE1YjVkMjU1
ZWVkNjQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgKQEAgLTM1LDE0ICszNSwxNCBAQAogCiBjbGFz
cyBKU0dsdWVHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgSlNHbHVlR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgSlNGbGFncyA9IGtKU0ZsYWdOb25lKTsKKyAgICAgICAgSlNHbHVlR2xvYmFs
T2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTRmxhZ3MgPSBrSlNGbGFnTm9uZSk7
CiAKICAgICAgICAgSlNGbGFncyBGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAg
ICAgICAgU3RydWN0dXJlKiB1c2VyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV91
c2VyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBKU0Zs
YWdzIG1fZmxhZ3M7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fdXNlck9iamVjdFN0cnVj
dHVyZTsKKyAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gbV91c2VyT2JqZWN0U3RydWN0dXJlOwog
fTsKIAogY2xhc3MgSlNSdW4gOiBwdWJsaWMgSlNCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1V0aWxz
LmNwcAppbmRleCBiNjJlN2JmYjZlODk4YzhmMmRhNjIyNzllYzhhMWM5OWE0ZWJjMWE1Li43ZGI2
NTBmMTY3N2RiODZjYjAyZDA1MGMzMmZkNmVjNDJjYjY1ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0pT
VXRpbHMuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgSlNWYWx1ZSBKU09iamVjdEtKU1ZhbHVlKEpT
VXNlck9iamVjdCogcHRyKQogICAgICAgICBpZiAoIWhhbmRsZWQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpOwotICAg
ICAgICAgICAgcmVzdWx0ID0gbmV3IChleGVjKSBVc2VyT2JqZWN0SW1wKGdldFRocmVhZEdsb2Jh
bE9iamVjdCgpLT51c2VyT2JqZWN0U3RydWN0dXJlKCksIHB0cik7CisgICAgICAgICAgICByZXN1
bHQgPSBuZXcgKGV4ZWMpIFVzZXJPYmplY3RJbXAoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnZXRUaHJl
YWRHbG9iYWxPYmplY3QoKS0+dXNlck9iamVjdFN0cnVjdHVyZSgpLCBwdHIpOwogICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvVXNlck9iamVjdEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVj
dEltcC5jcHAKaW5kZXggYTA0ZjU4ZTQ2NDBkYTE0NDE4ZDY4NThmMTJiZGI0OTI1ZTkxYjlmYS4u
YzkzNzQ4ZjAwMTBhN2ZjNmVlZmIwMzM2NTEyYjNhM2M1NzRhOGE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcApAQCAtMzQsOCArMzQsOCBAQAogCiBjb25zdCBDbGFz
c0luZm8gVXNlck9iamVjdEltcDo6c19pbmZvID0geyAiVXNlck9iamVjdCIsICZKU05vbkZpbmFs
T2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotVXNlck9iamVjdEltcDo6VXNlck9iamVjdEltcChQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU1VzZXJPYmplY3QqIHVzZXJPYmplY3Qp
Ci0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0cnVjdHVyZSkKK1VzZXJPYmplY3RJbXA6OlVzZXJP
YmplY3RJbXAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNVc2VyT2JqZWN0KiB1c2VyT2JqZWN0KQorICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpCiAgICAgLCBmSlNVc2VyT2JqZWN0KChKU1VzZXJPYmplY3QqKXVzZXJP
YmplY3QtPlJldGFpbigpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVl
L1VzZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgK
aW5kZXggYzZiOGQ4NmY1ZDlhYjY5YzFlMWU1NjllYzgyYzZiZTI1MTJkODU1MS4uOWJkNmYwZmUw
NjRmMTYyNDY4YjAyMzE4N2U4OTFkNTZjZWVmNmVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNl
ck9iamVjdEltcC5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFVzZXJPYmplY3RJbXAgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgVXNlck9iamVjdEltcChQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIEpTVXNlck9iamVjdCopOworICAgIFVzZXJPYmplY3RJbXAoSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNVc2VyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+VXNl
ck9iamVjdEltcCgpOwogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC01
OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIEpTVXNlck9iamVjdCAqR2V0SlNVc2VyT2JqZWN0
KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0
UHJvcGVydHlOYW1lcyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBjMTg5MGY5MTEwZjZlZDY5OTlkMTA1N2MwNTNkOTM4MDM4Nzk1NDcuLmI2Yjcw
MTA4NmFhZWVlYzhiN2I2YzYwODllNzhiZjJiYWI5YzczYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw4NCBAQAorMjAxMS0wNC0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdDIGFsbG9jYXRl
IFN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTg0ODMKKworICAgICAgICBVcGRhdGUgV2ViQ29yZSBmb3IgU3RydWN0dXJlIGJlaW5nIGEg
R0MgYWxsb2NhdGVkIG9iamVjdAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U0F1ZGlvQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NU3RydWN0dXJl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXI6OkRPTU9iamVjdFdpdGhHbG9i
YWxQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ29uc3RydWN0b3JPYmplY3Q6OkRP
TUNvbnN0cnVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50OjpET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9i
YWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xv
YmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3dCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVs
bDo6SlNET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxs
OjpzZXRXaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpE
T01PYmplY3Q6OkRPTU9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU09wdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0QmFzZTo6SlNXb3JrZXJDb250ZXh0QmFzZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJDb250ZXh0QmFzZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9jL0NSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpDUnVudGltZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50
aW1lTWV0aG9kOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0ph
dmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgIChKYXZhUnVudGltZU1ldGhvZDo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6Ok9iakNSdW50aW1lT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpDUnVudGlt
ZU1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6UnVudGltZUFycmF5KToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAg
KEpTQzo6UnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmg6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJy
aWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6
CisKIDIwMTEtMDQtMTMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggYzEwNTQ5ZjliYmMzODk3ZGMxOWQ3YmU2NmRkOWQ0MjQ3MjFmYmE1Mi4uZTU1OWIz
YzVmNTk1ZTg1Zjk3MWQyYjM1ZjFhOTg2OGFjMWE3YzkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTE1ODQsNyArMTU4NCw3IEBAIF9fTlBOX1NldFByb3BlcnR5CiBfX05QTl9VVEY4RnJvbUlk
ZW50aWZpZXIKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjIwd2luZG93U2NyaXB0TlBP
YmplY3RFdgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjljbGVhbnVwU2NyaXB0T2Jq
ZWN0c0ZvclBsdWdpbkVQdgotX19aTjdXZWJDb3JlMTZqc1N0cmluZ1Nsb3dDYXNlRVBOM0pTQzlF
eGVjU3RhdGVFUk5TMF85V2Vha0dDTWFwSVBOM1dURjEwU3RyaW5nSW1wbEVOUzBfOEpTU3RyaW5n
RUVFUzZfCitfX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVS
TlMwXzlXZWFrR0NNYXBJUE4zV1RGMTBTdHJpbmdJbXBsRU5TMF84SlNTdHJpbmdFTlMwXzMzRGVm
YXVsdFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrSVM2X1M3X0VFTlM0XzEwU3RyaW5nSGFzaEVO
UzRfMTBIYXNoVHJhaXRzSVM2X0VFRUVTNl8KIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1l
bnQxMWdldE5QT2JqZWN0RXYKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luOWNhbkFjY2Vz
c0VQS1MwXwogX19aTks3V2ViQ29yZTRLVVJMMTBwcm90b2NvbElzRVBLYwpAQCAtMTYwMSw3ICsx
NjAxLDcgQEAgX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxMWdldENhbGxEYXRhRVJOU184Q2FsbERh
dGFFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTNS
dW50aW1lTWV0aG9kMjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1bnRp
bWVNZXRob2Q2c19pbmZvRQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2RDMkVQTlNfOUV4ZWNTdGF0
ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVj
dHVyZUVFRVJLTlNfMTBJZGVudGlmaWVyRVJOUzVfNlZlY3RvcklQTlNfOEJpbmRpbmdzNk1ldGhv
ZEVMbTBFRUUKK19fWk4zSlNDMTNSdW50aW1lTWV0aG9kQzJFUE5TXzlFeGVjU3RhdGVFUE5TXzE0
SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUktOU18xMElkZW50aWZpZXJFUk4zV1RGNlZl
Y3RvcklQTlNfOEJpbmRpbmdzNk1ldGhvZEVMbTBFRUUKIF9fWk4zSlNDOEJpbmRpbmdzMTBSb290
T2JqZWN0RDFFdgogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMWdldENhbGxEYXRh
RVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE0ZGVsZXRl
UHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCkBAIC0xNjExLDE0ICsx
NjExLDE0IEBAIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTlnZXRPd25Qcm9wZXJ0
eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVu
dGltZU9iamVjdDI0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNf
MTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183
SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGlt
ZU9iamVjdDZzX2luZm9FCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdEMyRVBOU185
RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklO
U185U3RydWN0dXJlRUVFTlM2XzEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCitfX1pOM0pT
QzhCaW5kaW5nczEzUnVudGltZU9iamVjdEMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFs
T2JqZWN0RVBOU185U3RydWN0dXJlRU4zV1RGMTBQYXNzUmVmUHRySU5TMF84SW5zdGFuY2VFRUUK
IF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0RDJFdgogX19aTjNKU0M4QmluZGluZ3M4
SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVPYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhC
aW5kaW5nczhJbnN0YW5jZUMyRU4zV1RGMTBQYXNzUmVmUHRySU5TMF8xMFJvb3RPYmplY3RFRUUK
IF9fWk4zSlNDOEJpbmRpbmdzOEluc3RhbmNlRDJFdgogX19aTjdXZWJDb3JlMTNJZGVudGlmaWVy
UmVwN2lzVmFsaWRFUFMwXwogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTZjcmVhdGVS
b290T2JqZWN0RVB2Ci1fX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pTRE9N
R2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOM0pTQzlTdHJ1Y3R1cmVFRUVQ
S05TNF85Q2xhc3NJbmZvRQorX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCiBfX1pO
N1dlYkNvcmUyMWdldENhY2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
S04zSlNDOUNsYXNzSW5mb0UKIF9fWk5LM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDEyZGVm
YXVsdFZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzIyUHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKIF9f
WlRWTjNKU0MxM1J1bnRpbWVNZXRob2RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9Db25zdHJ1Y3Rvci5oCmluZGV4IGJlMGI4MDAwMDViZjIyMWFiZWQ3YTk4NDZkOGEx
M2FlYzM1YjQ0MzEuLjE0NDAzNTVhODAwOGM3ZTVmNDVkNmM3OWMyNTI0OWMxYmU5YmFlMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IEpTQXVkaW9Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggNjljMGRiNTkxMWViZDY0Y2Ex
NmYwY2YwMGJjMTk5YjYwNTQzODA3Ny4uOTMyYWQwYjcyNDEyOTM0NWI1YmVjYzBiOTJhYzQ4NmNi
MzQ4NmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CkBAIC02NTYsMTEgKzY1NiwxMSBAQCBTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFzc0luZgogICAgIHJldHVy
biBzdHJ1Y3R1cmVzLmdldChjbGFzc0luZm8pLmdldCgpOwogfQogCi1TdHJ1Y3R1cmUqIGNhY2hl
RE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykK
K1N0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQog
ewogICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmVzKCk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5mbykpOwot
ICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIHN0cnVjdHVyZSkuZmlyc3QtPnNl
Y29uZC5nZXQoKTsKKyAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpKS5maXJzdC0+c2Vjb25kLmdldCgpOwogfQogCiBKU0M6OkpTT2JqZWN0KiB0
b0pTU2VxdWVuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5MzRk
OWIzMWE0NjFiMjE3OWRiZDQxOWZkZWUwMDJhODBlMzI4M2M1Li5lZTQxNTAxN2ZmZmZjZDhmMmUw
ODI5ZTEyNmJkZWZiOGU4YmY4MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaApAQCAtNjQsMTMgKzY0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihOb25OdWxs
UGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorICAgICAgICBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcihKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
ICAgICAgICAgOiBET01PYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIEFTU0VSVCBpcyB2YWxpZCwgYnV0IGZpcmVzIGlu
IGZhc3QvZG9tL2djLTYuaHRtbCB3aGVuIHRyeWluZyB0byBjcmVhdGUKQEAgLTgzLDE0ICs4Mywx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gQmFzZSBjbGFzcyBmb3IgYWxsIGNvbnN0
cnVjdG9yIG9iamVjdHMgaW4gdGhlIEpTQyBiaW5kaW5ncy4KICAgICBjbGFzcyBET01Db25zdHJ1
Y3Rvck9iamVjdCA6IHB1YmxpYyBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlciB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQorICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CiAKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpT
Qzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNDOjpPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBE
T01PYmplY3RXaXRoR2xvYmFsUG9pbnRlcjo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgICAgIERPTUNv
bnN0cnVjdG9yT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIERPTUNvbnN0cnVj
dG9yT2JqZWN0KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgICAgICAgICA6IERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTEwNiw3ICsx
MDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoTm9uTnVsbFBhc3NSZWZQdHI8SlND
OjpTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICAgICAgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIDogRE9N
Q29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNEb2N1bWVudCgpKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgYm9vbCBoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tlZChEb2N1bWVudCosIE5vZGUq
KTsKIAogICAgIEpTQzo6U3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9i
YWxPYmplY3QqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwotICAgIEpTQzo6U3RydWN0dXJlKiBj
YWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPEpT
Qzo6U3RydWN0dXJlPiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKKyAgICBKU0M6OlN0cnVjdHVy
ZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSos
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CiAKICAgICBpbmxpbmUgSlNET01HbG9iYWxPYmplY3Qq
IGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDJjZWY5OTA2ZTkwNzRhOWM5MWE5MWYxMzBhM2Q2ZGMwYmUyNTNhZDguLjNl
M2QwMzc3MmI4OGExZDEwNWIwMjM4MjhlYTQ4YTZjZDE2NTJkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQyLDggKzQyLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNET01HbG9iYWxPYmpl
Y3Q6OnNfaW5mbyA9IHsgIkRPTUdsb2JhbE9iamVjdCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZv
LCAwLCAwIH07CiAKLUpTRE9NR2xvYmFsT2JqZWN0OjpKU0RPTUdsb2JhbE9iamVjdChOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29y
bGQ+IHdvcmxkLCBKU09iamVjdCogdGhpc1ZhbHVlKQotICAgIDogSlNHbG9iYWxPYmplY3Qoc3Ry
dWN0dXJlLCB0aGlzVmFsdWUpCitKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0
cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkLCBKU09iamVjdCogdGhpc1ZhbHVlKQorICAgIDogSlNH
bG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCB0aGlzVmFsdWUpCiAgICAgLCBtX2N1
cnJlbnRFdmVudCgwKQogICAgICwgbV93b3JsZCh3b3JsZCkKIHsKQEAgLTU2LDcgKzU2LDcgQEAg
dm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNr
KQogCiAgICAgSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGVuZCA9IHN0cnVjdHVyZXMoKS5l
bmQoKTsKICAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBpdCA9IHN0cnVjdHVy
ZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT5zZWNvbmQtPm1hcmtB
Z2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaXQtPnNlY29u
ZCk7CiAKICAgICBKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBlbmQyID0gY29uc3RydWN0
b3JzKCkuZW5kKCk7CiAgICAgZm9yIChKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBpdDIg
PSBjb25zdHJ1Y3RvcnMoKS5iZWdpbigpOyBpdDIgIT0gZW5kMjsgKytpdDIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCAxZTk5MmM1Yjcx
ZmRjNjI4ZTY1MWRjYjJmNzJjMTUxNjRlZmIyNDA0Li45MTkwZTAxYjM2NGQzYzUzOTIyM2I0NDEy
MzIwOGNhZmM2ZmRkYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEpTRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiwgUmVmUHRyPEpT
Qzo6U3RydWN0dXJlPiA+IEpTRE9NU3RydWN0dXJlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBKU0M6OkNsYXNzSW5mbyosIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6U3RydWN0dXJlPiA+
IEpTRE9NU3RydWN0dXJlTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBKU0M6OkNsYXNz
SW5mbyosIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+ID4gSlNET01Db25zdHJ1Y3Rv
ck1hcDsKIAogICAgIGNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0IDogcHVibGljIEpTQzo6SlNHbG9i
YWxPYmplY3QgewpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBzdHJ1Y3QgSlNET01HbG9iYWxPYmplY3REYXRhOwogCi0gICAgICAg
IEpTRE9NR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgUGFz
c1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OkpTT2JqZWN0KiB0aGlzVmFsdWUpOworICAg
ICAgICBKU0RPTUdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6U3RydWN0dXJl
KiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OkpTT2JqZWN0KiB0aGlzVmFsdWUp
OwogCiAgICAgcHVibGljOgogICAgICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygp
IHsgcmV0dXJuIG1fc3RydWN0dXJlczsgfQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJl
KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQor
ICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA1ODRmNjEwY2NlOTExM2E3
OWM4ZTdlNjI0MjQwZGIzYzk5YzBlOTZhLi4xMGY3Y2Q5OTdlOGVmMmUxOGIxNWZkMzY4YjdhZTc0
MzFiMmFiYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBD
bGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9i
YWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1KU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93
QmFzZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxE
T01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCi0gICAgOiBKU0RPTUds
b2JhbE9iamVjdChzdHJ1Y3R1cmUsIHNoZWxsLT53b3JsZCgpLCBzaGVsbCkKK0pTRE9NV2luZG93
QmFzZTo6SlNET01XaW5kb3dCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hl
bGwqIHNoZWxsKQorICAgIDogSlNET01HbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBzaGVsbC0+d29ybGQoKSwgc2hlbGwpCiAgICAgLCBtX2ltcGwod2luZG93KQogICAgICwgbV9z
aGVsbChzaGVsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmgKaW5kZXggZDE5MjY1MDE4N2Y4Yzg0YWE4Y2IxYTJhYTc4NTdjMGZmZDJkNTQwNS4uOTQ2
Zjk1YzdkNDMyMDM5NThjMzhhMzJiMDJlNjY2MjkxYjk4YjhlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEpTRE9NV2luZG93QmFzZSA6IHB1YmxpYyBKU0RPTUds
b2JhbE9iamVjdCB7CiAgICAgICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsKICAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTRE9NV2luZG93QmFzZShOb25OdWxsUGFzc1JlZlB0cjxK
U0M6OlN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8RE9NV2luZG93PiwgSlNET01XaW5kb3dTaGVsbCop
OworICAgICAgICBKU0RPTVdpbmRvd0Jhc2UoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVj
dHVyZSosIFBhc3NSZWZQdHI8RE9NV2luZG93PiwgSlNET01XaW5kb3dTaGVsbCopOwogCiAgICAg
cHVibGljOgogICAgICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CkBAIC01Nyw3ICs1Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0lu
Zm8gc19pbmZvOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5kZXgg
YmE1YjBjY2I0NWQ5NTAxNTE5ZjljODZmZTg3NTQxN2U3Zjg0NGNhNS4uMGFlYzk2ODg0ZDZlYmM1
YTQ1OWQ1Nzk4MDYwYzU4YTM3ZmMxZWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgQVNTRVJUX0NMQVNT
X0ZJVFNfSU5fQ0VMTChKU0RPTVdpbmRvd1NoZWxsKTsKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdp
bmRvd1NoZWxsOjpzX2luZm8gPSB7ICJKU0RPTVdpbmRvd1NoZWxsIiwgJkJhc2U6OnNfaW5mbywg
MCwgMCB9OwogCiBKU0RPTVdpbmRvd1NoZWxsOjpKU0RPTVdpbmRvd1NoZWxsKFBhc3NSZWZQdHI8
RE9NV2luZG93PiB3aW5kb3csIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCi0gICAgOiBCYXNlKEpT
RE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqd29ybGQtPmdsb2JhbERhdGEoKSwganNO
dWxsKCkpKQorICAgIDogQmFzZSgqd29ybGQtPmdsb2JhbERhdGEoKSwgSlNET01XaW5kb3dTaGVs
bDo6Y3JlYXRlU3RydWN0dXJlKCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSkpCiAgICAg
LCBtX3dvcmxkKHdvcmxkKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBAIC02
MCwxMSArNjAsMTEgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0
cjxET01XaW5kb3c+IGRvbVdpbmRvdykKICAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGds
b2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCiAgICAgLy8gd2hl
biB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3Qg
aXMgZnVsbHkKICAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5
cGUuKQotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRE9NV2lu
ZG93UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2Jh
bERhdGEoKSwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3RvdHlwZT4gcHJv
dG90eXBlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIG5ldyBKU0RPTVdpbmRv
d1Byb3RvdHlwZSgwLCBwcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKSk7CisgICAgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsKKyAg
ICBTdHJvbmc8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5kb3c6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpLCBuZXcgSlNET01XaW5kb3dQcm90b3R5cGUoKkpTRE9NV2luZG93
Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgMCwgcHJvdG90eXBlU3RydWN0dXJlKSk7CiAKLSAgICBS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0dXJl
KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIHByb3RvdHlwZS5nZXQoKSk7Ci0g
ICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gbmV3IChKU0RPTVdpbmRvdzo6Y29tbW9uSlNH
bG9iYWxEYXRhKCkpIEpTRE9NV2luZG93KHN0cnVjdHVyZS5yZWxlYXNlKCksIGRvbVdpbmRvdywg
dGhpcyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3Ry
dWN0dXJlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIHByb3RvdHlwZS5nZXQo
KSk7CisgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gbmV3IChKU0RPTVdpbmRvdzo6Y29t
bW9uSlNHbG9iYWxEYXRhKCkpIEpTRE9NV2luZG93KCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCksIHN0cnVjdHVyZSwgZG9tV2luZG93LCB0aGlzKTsKICAgICBwcm90b3R5cGUtPnB1
dEFub255bW91c1ZhbHVlKCpKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCksIDAsIGpz
RE9NV2luZG93KTsKICAgICBzZXRXaW5kb3coKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKSwganNET01XaW5kb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5oCmluZGV4IDU3NWIyOTZjNDljZWNiMzU4ZTE4NDgyY2Q2YjU4ZGMwZmZj
Y2RiYjUuLmMyYzUzMzZhZWRhNmE2YmUxN2U1YTFmMTdjMDJiNGI3NzQ1YmQzYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKQEAgLTU4LDcgKzU4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpIAorICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkg
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgCiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggMGY4MDMxYzBmYTli
ZjRkMzVkNmNmZjFlMzU5ZjFlNDVkNjJlZTg1YS4uOGRmNTgwMTFlMzlmMjJiZjk3YjA1NjZhNzhi
NTU4NTQ4YzczNjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IFJlbmFt
ZSB0byBKU0RPTVdyYXBwZXIuCiBjbGFzcyBET01PYmplY3QgOiBwdWJsaWMgSlNDOjpKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QgewogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IERPTU9iamVjdChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6
U3RydWN0dXJlPiBzdHJ1Y3R1cmUpIAorICAgIGV4cGxpY2l0IERPTU9iamVjdChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIAogICAg
ICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkK
ICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggZTQ0NGQ4ODg0MDBjODdiOWQ3YzdkYTk4YWMzNmE4MmIwYTAzOTgzNS4u
OGRjMGUxZmI3MjdiOWEyZmIxMjNjNTAzZTM5OTc5YjY4NDZhYWMzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0zOCw3ICszOCwxMSBA
QCBKU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcihKU09iamVjdCogZnVuY3Rpb24sIEpT
T2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQQogICAgICwgbV9pc0F0dHJpYnV0ZShpc0F0dHJpYnV0
ZSkKICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQogewotICAgIG1fanNGdW5j
dGlvbi5zZXQoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlv
bik7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIG1fanNGdW5jdGlvbi5zZXQoKm1faXNvbGF0
ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlvbik7CisgICAgZWxzZQorICAg
ICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKKwogfQogCiBKU0V2ZW50TGlzdGVuZXI6On5KU0V2ZW50
TGlzdGVuZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3Ry
dWN0b3IuaAppbmRleCA2NTRlMjIzZmE4ZGI1YmZhYWFhY2VkZmVkMzVjZjcwMmE3OTkzYTEzLi40
ZWY0MDVkZGNlZWFkYzU3MWEyYjVmOWZkN2QwYWZhNWI5MmNjZDhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaApAQCAtMjksNyArMjksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBKU0ltYWdlQ29uc3Ry
dWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Ns
b3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCBhOTJlZDQ3MGM0OTI5YTcwM2QxMThj
ZmEyYTdjYTBiOWMxZjk0MTdhLi41YjQ0OWU2OWZmYzVhYTk4NzAwY2ViYjU1MzJlM2NmMTM0NmQ1
Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwCkBAIC00OCw4ICs0OCw4IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEltYWdlRGF0YSogaW1hZ2VECiAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fT0JKRUNUX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbWFn
ZURhdGEsIGltYWdlRGF0YSk7CiAgICAgSWRlbnRpZmllciBkYXRhTmFtZShleGVjLCAiZGF0YSIp
OwogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gY3BhQ2xhc3NJbmZvID0geyAiQ2FudmFzUGl4
ZWxBcnJheSIsICZKU0J5dGVBcnJheTo6QmFzZTo6c19pbmZvLCAwLCAwIH07Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWZQdHI8U3RydWN0dXJlPiwgY3BhU3RydWN0dXJlLCAoSlNCeXRlQXJy
YXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpLCAmY3BhQ2xh
c3NJbmZvKSkpOwotICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGRh
dGFOYW1lLCBuZXcgKGV4ZWMpIEpTQnl0ZUFycmF5KGV4ZWMsIGNwYVN0cnVjdHVyZSwgaW1hZ2VE
YXRhLT5kYXRhKCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJvbmc8U3RydWN0dXJlPiwgY3BhU3RydWN0dXJlLCAoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwganNOdWxsKCksICZjcGFDbGFzc0luZm8pKSk7CisgICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUsIG5ldyAoZXhlYykgSlNCeXRlQXJyYXkoZXhlYywg
Y3BhU3RydWN0dXJlLmdldCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChp
bWFnZURhdGEtPmRhdGEoKS0+bGVuZ3RoKCkpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCmlu
ZGV4IDhhMTgwMDcxY2FmMDU2Y2NiMmEyZmM5MGJjZTFlODEwYmRkNDViOTQuLjMzMTc5Nzg1NDg1
Y2ZkMTgyYTg3MmZiMmFlNDczNTliMjBjMzIwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNPcHRpb25Db25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAppbmRleCAxYzkwNGIwOGEwZmQ1MTc4NTFlOTZjODRj
ZmRhYTVlN2RhYmM2M2M1Li5jYmYwMWI3Y2FmZDdiNWJhOWEyMjVlMmY3MWQ5ZjhhNTMxMmZmMTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmNwcApAQCAtNDUsOCArNDUsOCBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTV29y
a2VyQ29udGV4dEJhc2UpOwogCiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJDb250ZXh0QmFzZTo6
c19pbmZvID0geyAiV29ya2VyQ29udGV4dCIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAw
LCAwIH07CiAKLUpTV29ya2VyQ29udGV4dEJhc2U6OkpTV29ya2VyQ29udGV4dEJhc2UoTm9uTnVs
bFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJD
b250ZXh0PiBpbXBsKQotICAgIDogSlNET01HbG9iYWxPYmplY3Qoc3RydWN0dXJlLCBub3JtYWxX
b3JsZCgqaW1wbC0+c2NyaXB0KCktPmdsb2JhbERhdGEoKSksIHRoaXMpCitKU1dvcmtlckNvbnRl
eHRCYXNlOjpKU1dvcmtlckNvbnRleHRCYXNlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IGlt
cGwpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG5vcm1h
bFdvcmxkKGdsb2JhbERhdGEpLCB0aGlzKQogICAgICwgbV9pbXBsKGltcGwpCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEJhc2UuaAppbmRleCBiOWMyMzRhMmJmYmJkODJhMDVmNTgyMTQxZGFj
MTEyMGFhMDI3MjQ4Li5hZjY4YjU4MTExMGY3YzRiMmFiZGRiYzdmOWQ2NjhiYzc0NjYxOGZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5o
CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBKU1dvcmtl
ckNvbnRleHRCYXNlIDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsKICAgICAgICAgdHlwZWRl
ZiBKU0RPTUdsb2JhbE9iamVjdCBCYXNlOwogICAgIHB1YmxpYzoKLSAgICAgICAgSlNXb3JrZXJD
b250ZXh0QmFzZShOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8
V29ya2VyQ29udGV4dD4pOworICAgICAgICBKU1dvcmtlckNvbnRleHRCYXNlKEpTQzo6SlNHbG9i
YWxEYXRhJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KTsKICAg
ICAgICAgdmlydHVhbCB+SlNXb3JrZXJDb250ZXh0QmFzZSgpOwogCiAgICAgICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgV29ya2VyQ29udGV4dCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbC5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2lu
Zm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhY2hlZEZyYW1lRGF0YS5oCmluZGV4IGVlOTgxYTI1MWI2NDk4M2Q1MzhjYjk5YzM5MDVjYTA0
MmI4NWI3ZGUuLmE4NWUxNmY5Nzc1OTk1MzcxZWM3NmUzZjJjMzJjODQyYTk4ZWY5YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5o
CkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIFNjcmlwdENhY2hlZEZyYW1lRGF0YV9oCiAKICNp
bmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMGEwZWI5MTA5M2Y4MTll
N2M4YzEwYmVjMWIxZWU4ZmVkMWRiZDJiNC4uMGU3ZmVkMDA1MmQ0OWVmYzc3NzExZjE2NzI5Yjk5
YTNkMDg3MzQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pT
VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVKU1ZhbHVlKiBKU1ZhbHVlUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1ZDYxYTg0NTBlMjBiMzJl
NWY4ZmEyY2Q2NTNlMDhhM2RjZTM5NjY2Li40ODQ3ODgxYzc2M2Y1MDQzNDdjMTk0NjUzNTI0OTE2
NmQ3MTQzZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjEsNiArNjEsNyBAQCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRl
eHQpCiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcigpCiB7
CiAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5jbGVhcigpOyAvLyBVbnByb3RlY3QgdGhlIGds
b2JhbCBvYmplY3QuCisgICAgbV9nbG9iYWxEYXRhLT5jbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7
CiAgICAgbV9nbG9iYWxEYXRhLT5oZWFwLmRlc3Ryb3koKTsKIH0KIApAQCAtNzMsMjUgKzc0LDI1
IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgLy8gRXhw
bGljaXRseSBwcm90ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0
IGNvbGxlY3RlZAogICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChP
bmNlIHRoZSBnbG9iYWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNh
biBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB3b3JrZXJD
b250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU1dvcmtl
ckNvbnRleHRQcm90b3R5cGU+IHdvcmtlckNvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwg
bmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZSgwLCB3b3Jr
ZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOworICAgIFN0cnVjdHVyZSog
d29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIGpzTnVsbCgpKTsKKyAgICBTdHJvbmc8
SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlKCptX2dsb2Jh
bERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGUo
Km1fZ2xvYmFsRGF0YSwgMCwgd29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOwogCiAg
ICAgaWYgKG1fd29ya2VyQ29udGV4dC0+aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpIHsKLSAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVy
ZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCpt
X2dsb2JhbERhdGEsIHdvcmtlckNvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwotICAgICAgICBTdHJv
bmc8SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJv
dG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVj
dHVyZS5yZWxlYXNlKCkpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0g
SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwg
ZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7CisgICAgICAgIFN0cnVjdHVyZSogZGVk
aWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIHdvcmtlckNvbnRleHRQ
cm90b3R5cGUuZ2V0KCkpOworICAgICAgICBTdHJvbmc8SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAo
bV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoKm1f
Z2xvYmFsRGF0YSwgMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3Jl
YXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUuZ2V0
KCkpOwogCi0gICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEs
IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQoc3RydWN0
dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQo
KSkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBu
ZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCptX2dsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRl
eHQoKSkpOwogICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1
ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICAgICAg
ICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS0+cHV0QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFs
RGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAjaWYgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX3dvcmtlckNvbnRleHQt
PmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc2hh
cmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIHdvcmtlckNvbnRleHRQcm90b3R5
cGUuZ2V0KCkpOwotICAgICAgICBTdHJvbmc8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBl
PiBzaGFyZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRh
LmdldCgpKSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoMCwgc2hhcmVkQ29udGV4dFBy
b3RvdHlwZVN0cnVjdHVyZS5yZWxlYXNlKCkpKTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlID0gSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xv
YmFsRGF0YSwgc2hhcmVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7CisgICAgICAgIFN0cnVjdHVy
ZSogc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIHdvcmtlckNvbnRleHRQ
cm90b3R5cGUuZ2V0KCkpOworICAgICAgICBTdHJvbmc8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJv
dG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9i
YWxEYXRhLmdldCgpKSBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0
YSwgMCwgc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCpt
X2dsb2JhbERhdGEsIHNoYXJlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgICAgIG1f
d29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEsIG5ldyAobV9nbG9iYWxEYXRh
LmdldCgpKSBKU1NoYXJlZFdvcmtlckNvbnRleHQoc3RydWN0dXJlLnJlbGVhc2UoKSwgbV93b3Jr
ZXJDb250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAgICBtX3dvcmtlckNv
bnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkg
SlNTaGFyZWRXb3JrZXJDb250ZXh0KCptX2dsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJD
b250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKSkpOwogICAgICAgICB3b3JrZXJDb250ZXh0
UHJvdG90eXBlLT5wdXRBbm9ueW1vdXNWYWx1ZSgqbV9nbG9iYWxEYXRhLCAwLCBtX3dvcmtlckNv
bnRleHRXcmFwcGVyLmdldCgpKTsKICAgICAgICAgc2hhcmVkQ29udGV4dFByb3RvdHlwZS0+cHV0
QW5vbnltb3VzVmFsdWUoKm1fZ2xvYmFsRGF0YSwgMCwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5n
ZXQoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzE0MTJkMjcxOWU5MzMwNWQzZmNlODAzODI1NTU1NWQz
OWQyOTkwOC4uZTg0ZTRiMGI3ZGIzYmJlY2QyODFhZGI1ZjIwNTAzY2ZmYTIxNGExMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTY4MiwxMSArNjgyLDExIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBDb25zdHJ1
Y3RvcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoTm9uTnVsbFBhc3NSZWZQdHI8SlND
OjpTdHJ1Y3R1cmU+LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4sIEpTRE9NV2luZG93U2hlbGwqKTtc
biIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpK
U0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8JGltcGxUeXBlPiwgSlNE
T01XaW5kb3dTaGVsbCopO1xuIik7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAkY2xhc3NOYW1lKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwg
UGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgICRjbGFzc05hbWUoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0M6OlN0cnVjdHVyZSosIFBh
c3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1
Y3R1cmU+LCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CiAg
ICAgfQogCiAgICAgIyBQcm90b3R5cGUKQEAgLTc0Niw3ICs3NDYsNyBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5lZWRzVGhpc0NvbnZlcnNpb24i
fSA9IDE7CiAgICAgfQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsCi0gICAgICAgICIgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgorICAgICAg
ICAiICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIiAuCiAgICAgICAg
ICIgICAge1xuIiAuCiAgICAgICAgICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTtcbiIgLgogICAg
ICAgICAiICAgIH1cblxuIik7CkBAIC05NTgsNyArOTU4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNNYXJrQ2hpbGRyZW4ifSA9
IDE7CiAgICAgfQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsCi0gICAgICAgICIgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgorICAgICAgICAi
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIiAuCiAgICAgICAgICIg
ICAge1xuIiAuCiAgICAgICAgICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTtcbiIgLgogICAgICAg
ICAiICAgIH1cbiIpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
ICMgQ3VzdG9tIGRlZmluZUdldHRlciBmdW5jdGlvbgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlv
biwgdW5zaWduZWQgYXR0cmlidXRlcyk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Qcm90b3R5cGVEZWZpbmVHZXR0ZXIifTsKIAotICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSkgeyB9XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVBy
b3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSB7
IH1cbiIpOwogCiAgICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHJvdGVjdGVkOlxuIik7CkBAIC0xNDA3LDE0ICsxNDA3LDE0IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NV2luZG93IikgewogICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoIkpTRE9NV2luZG93
U2hlbGwiKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFz
c05hbWUoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8
JGltcGxUeXBlPiBpbXBsLCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbClcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUoc3RydWN0dXJlLCBpbXBs
LCBzaGVsbClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6
JGNsYXNzTmFtZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpXG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKGds
b2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCwgc2hlbGwpXG4iKTsKICAgICB9IGVsc2lmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewogICAgICAg
ICBBZGRJbmNsdWRlc0ZvclR5cGUoJGludGVyZmFjZU5hbWUpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHN0cnVjdHVyZSwg
aW1wbClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNs
YXNzTmFtZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
YXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsKVxu
Iik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFt
ZX06OiRjbGFzc05hbWUoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBs
KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NO
YW1lKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwogICAgICAgICBpZiAoJGhhc1BhcmVu
dCkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NO
YW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKVxuIik7CiAgICAgICAgIH0gZWxzZSB7
CkBAIC0xNDQyLDkgKzE0NDIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0KiAke2NsYXNzTmFtZX06OmNyZWF0ZVByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgaWYgKCRoYXNQYXJl
bnQgJiYgJHBhcmVudENsYXNzTmFtZSBuZSAiSlNDOjpET01Ob2RlRmlsdGVyIikgewotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIG5ldyAoZXhlYykgJHtjbGFzc05h
bWV9UHJvdG90eXBlKGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCAke3BhcmVudENsYXNzTmFtZX1Qcm90b3R5cGU6
OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gbmV3IChleGVjKSAke2NsYXNzTmFtZX1Qcm90b3R5cGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgJHtwYXJlbnRDbGFzc05hbWV9UHJvdG90
eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIG5ldyAoZXhlYykgJHtj
bGFzc05hbWV9UHJvdG90eXBlKGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIG5ldyAoZXhlYykgJHtjbGFzc05hbWV9UHJvdG90eXBlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSkpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgIH0KQEAgLTI4NzIsNyArMjg3Miw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7XG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwog
Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAge1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAppbmRleCA4NTgxNWZiZDQ2
OTg0NWFmZTY1MDRkZjZmNmI5OWJlNzRiNzJmNjcwLi5jOTY4ODdhMzM4M2ExYjM5MTczODljYTY3
OWI4YTZhOTRiMGEwNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVu
dGltZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKaW5kZXggZWYwZWIwMjQxZDk3N2E2ZmRjNjA2MTJlMzhj
YzUxNjIyNjliYmM4ZS4uZDBmYTNjZjNlNzkwNzgwNzYyNzAwNzk4ZGE1NzBiNGQyMmEwMjM0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAppbmRleCA4MDZlZmE2MDEwZTc3NzM0Mzg3
Yjg5Y2Q1ODQ0NWQ0N2JkOGI1Mjk2Li5hYjY0MTMyMGFhNDUwMTFhYWMxNDZlNmJkY2FkYjhmZDkz
NzA1ZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5z
dGFuY2VKU0MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0
YW5jZUpTQy5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGlt
ZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmpl
Y3QuaAppbmRleCAwM2YxMTZmYWRmNWRhNDBlOGQ4OGY3NjhkMzIwZDE2NjNiNDJkMjBiLi44YTM2
MTJmNWI2ZWFjOGE4MjRmMjFmYThkNDM4MzUzODk0MDJjMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNT
bG90Q291bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9PYmpDUnVudGltZU9iamVjdC5oCmluZGV4IGIyOWEzMzM5OTk1YmI5NTljYmVhZWEzNDllM2Zj
MmQ5YjcxZjlhOWYuLmY4ZWFkYTdjY2FiNWNhYzg4NGI4ZGRiNmZjOWI0NDE1MDQ3NzI4YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaApAQCAt
NDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggNGY5M2NmYTZhZjk3MTZkZGRiNGZkMWRl
ZTNjMWM4NDlmNTUzZjllNi4uNjFjNjdjYjkwOWI0NDM2ZmQ2N2QzNjg3ODViMGUyZTFhNTFhNDY2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0x
ODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA0ZWYwYWZkNTczOTdlYTVmNzVmZDU4
MzZhMzY3NDYwNDViYTM3MjgxLi5lZGVkMmZlYTQ1MDY2N2UxMTk5N2ZhZGUyZWFiZDA2NTllYzQ1
ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtMTAz
LDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+b2JqZWN0
UHJvdG90eXBlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCA5MWFlNDBmMWQwYjAz
MTkwMDI0NWI0NDg5MWMyYzFkODMxNmIxOWM0Li4zN2UwMWY0MjBhNmYwY2EzZjI5ZWU5OWY5YWQz
OWVhMDUzYTM1ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5z
dGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgaW5zdGFuY2UtPm1hcmtBZ2dy
ZWdhdGUobWFya1N0YWNrKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGlt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKaW5k
ZXggZGEzZTM4MzEyZDNjODk1MGU5MDUyM2EwMTdjN2YyZGFmOGI3ZmY5NC4uYzQ5ODYzNzkzMDE5
YjAyNzUyZjdmYjAzZDUzZTZjNmQ1MGQ0ZGYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsICBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggMzYw
NmEwMjJiMWQ1ZmQ3MzY5MWEzZWZlZjk2MjQxOTI1M2YzNWMxNy4uZmE1Y2U2MmRjZDEwN2FjMjgw
ZTlkNWY0NTlmNTJiYzcwYzk2ZjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCAgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2lu
Zm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCBh
MTM4NjYwYjcyNzgwMTI4Mzk4ZTM0MTlmOGJjMzQzNTExM2FhYWMzLi5lM2M4ZjU3MzdlMzJiOTIy
MDNkZTk1ODBkNWVmYjljZjViYjgzZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCkBAIC00MCw3ICs0MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6
OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZKU0FycmF5OjpzX2luZm8sIDAsIDAKIFJ1bnRp
bWVBcnJheTo6UnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgQmluZGluZ3M6OkFycmF5KiBh
cnJheSkKICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBw
cm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgLy8gV2UgbmVlZCB0
byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiYXJyYXkiLgotICAgIDogSlNB
cnJheShkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVBcnJheT4oZXhlYykpCisgICAg
OiBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxS
dW50aW1lQXJyYXk+KGV4ZWMpKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAg
ICAgc2V0U3ViY2xhc3NEYXRhKGFycmF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5oCmluZGV4IDk1NTU1NDUyZGVmOTZhZjA2Y2E2OTVkZjVkYjA4ZDA3YThhNmMwNTguLjhmZDMw
NTI5MmMxYWI2NWI0MDhmMmM4MjVlMDYzNzIzMzNhYzNmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNw
cAppbmRleCA0YjVlY2ZmY2NhNDMyODgzN2U5OTRjYjM0YzgxMThhYjZkMmI2ZDZiLi4yOTdmYjZi
ZDVmMjBmYzMyMTBkODljODFmY2IzMmRhMGZmMjEwZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChSdW50aW1lTWV0aG9kKTsKIAogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVNZXRob2Q6
OnNfaW5mbyA9IHsgIlJ1bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAw
LCAwIH07CiAKLVJ1bnRpbWVNZXRob2Q6OlJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEJpbmRpbmdzOjpNZXRob2RMaXN0
JiBtKQorUnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG0pCiAgICAgLy8gQ2FsbGVycyB3
aWxsIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBjb3JyZXNwb25kaW5n
IHRvIHRoaXMgbmF0aXZlIG9iamVjdCAibSIuCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVj
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpZGVudCkKICAgICAsIF9t
ZXRob2RMaXN0KG5ldyBNZXRob2RMaXN0KG0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9t
ZXRob2QuaAppbmRleCA5ZGY3OTZlYjA3MTViZjMyYjM0ZDIyM2ZiNTJiM2M4MjYyYmM2YmUzLi43
MTJhMzA1OTY3M2I0MmU1ZGE0OTYzYzQxODk1OGI1Y2QyYzg5YjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgUnVudGltZU1ldGhvZCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1Ymxp
YzoKLSAgICBSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6
Ok1ldGhvZExpc3QmKTsKKyAgICBSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhv
ZExpc3QmKTsKICAgICBCaW5kaW5nczo6TWV0aG9kTGlzdCogbWV0aG9kcygpIGNvbnN0IHsgcmV0
dXJuIF9tZXRob2RMaXN0LmdldCgpOyB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXgg
ZGUxOTY0YTQ0YWYyZTQ4OGMwMjNjMjdjNGMwNzVkN2NjYjc4Y2RmYS4uNzliY2JjZTYxMmIyOTk0
ZDY4MTMyMjBiOGI3OWU3YTY0M2RmODk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNv
bnN0IENsYXNzSW5mbyBSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJSdW50aW1lT2JqZWN0Iiwg
JkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLVJ1bnRpbWVPYmpl
Y3Q6OlJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5z
dGFuY2U+IGluc3RhbmNlKQorUnVudGltZU9iamVjdDo6UnVudGltZU9iamVjdChFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFz
c1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2luc3RhbmNlKGluc3RhbmNlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCBiYjZkMDUxMGYyOGQ0
M2RiNTc1MTg1MDllMTBiZDEyYTQzZDM0YWI0Li44OTk4MTAyZTg5OGViMDMzMGY3NGEwNmQ1MjAy
NTc4NjQ1NGIxNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjbGFzcyBSdW50aW1lT2JqZWN0
IDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUnVudGlt
ZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKKyAgICBSdW50aW1lT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxJbnN0YW5jZT4p
OwogICAgIHZpcnR1YWwgflJ1bnRpbWVPYmplY3QoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291
bnQsICZzX2luZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRl
eCBiOWM5OTgzZTMyOGIzZWViMzNlMWJkMmYwZjJhZWJjN2JiMzYyNGY1Li5mOTY0NjlmNGM5YjY0
ZWJmN2YxMDVmYjk4ZTAzM2U2ZmUyMzBmY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAwZTlmMmJjNDA5OWE3
ZDdiNGFmYjBlZjdhZTFmZGZhODNhMWQzZWY4Li44MDlmZTUyZmRiYWYzNzRhNWUxMjViYmI3MGJj
YzE3MmFkMTlkYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQt
MTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHQyBhbGxvY2F0ZSBTdHJ1Y3R1cmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NDgzCisKKyAgICAg
ICAgVXBkYXRlIFdlYktpdCBmb3IgdGhlIHdvcmxkIG9mIEdDIGFsbG9jYXRlZCBTdHJ1Y3R1cmUK
KworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5o
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChX
ZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKFdlYktpdDo6UHJv
eHlSdW50aW1lT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorCiAyMDExLTA0LTEzICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFj
bG91Z2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCmluZGV4IDU3ZDU4Nzc0YTY3ODZjZGUz
MmNiNWUzM2QzZmRmZWM2YzZmOTI3MmMuLmJmMzZmYmQ1ZjNkNmUyYTAwNGMxMzE4YjgyZjUyMmY4
ZTMwOTk2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWZuZGVmIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eV9oCiAjZGVmaW5lIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eV9oCiAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2Jh
bERhdGEuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L25wYXBpLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCBmMjZiODVk
Y2VhMmEzOWZhNTM5ZjA4ODYzNDVmNWE1MTgyMDI0MzM2Li4xZjk2YzUzZGI4YjI3Mzc1YTU5ZWE2
MjVmOTRiNWQ5ZjFjZDliOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAm
c19pbmZvKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL1Byb3h5UnVudGltZU9iamVjdC5oCmluZGV4IGEwN2M4NmM4ODhlNzdiYTNiYzE2NGM0ZGFj
MDc3ZTgyZjIwN2YzYjQuLmRhNmRlODhhMDZkMDU3MjI2NGI2MjYzYmY3MjY4MmMxN2YwMzUzNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGlt
ZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVu
dGltZU9iamVjdC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIFByb3h5SW5zdGFu
Y2UqIGdldEludGVybmFsUHJveHlJbnN0YW5jZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggZjIzYzhjZmIyOTk2MDZjYTc5YzcyYzI2MDI0ZmNiNzJjZDkxY2Ri
Mi4uMGMyMDgxOTQ1MzlkMjAxYmM5NzIzMGE5MzMzODRiOTFiMzQyNjY3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDExLTA0LTEzICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR0Mg
YWxsb2NhdGUgU3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01ODQ4MworCisgICAgICAgIFVwZGF0ZSBXSzIgZm9yIHRoZSB3b3JsZCBvZiBH
QyBhbGxvY2F0ZWQgU3RydWN0dXJlCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE1ldGhvZC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisK
IDIwMTEtMDQtMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKaW5kZXggZjBjMjQyNGFk
YmZiMWFiYTM3NzRiMjliZmNhYTQ2MTkzYWI4MzRlOS4uMGZkMDFlYWUyYzM1M2Y0YmEyZGRmNTc4
NDdmMzViYTUyYTAyYmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9ucElk
ZW50aWZpZXI7IH0KIAogcHJpdmF0ZTogICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuaAppbmRleCBlOGEwOGRhZDQ4N2UwMDdjOGY0Njg2Y2FlYjU0YTc0MTkwMmNjMzBjLi5lZDEy
NGI5OGM3ZDY5Y2Y5MmE3ZTUxOTZiOWQzMjdmNTgzY2NhZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNT
bG90Q291bnQsICZzX2luZm8pOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>